From a17e2c9a30d303d933ce70fa7277eecbaa9b33bb Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Mon, 12 Nov 2018 23:29:41 +0800 Subject: [PATCH 01/59] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0mongoos=E5=92=8Cre?= =?UTF-8?q?dis=20=E9=9C=80=E5=9C=A8=E5=AE=89=E8=A3=85=E5=92=8C=E5=90=AF?= =?UTF-8?q?=E5=8A=A8mongodb=E5=92=8Credis=E6=9C=8D=E5=8A=A1=E7=9A=84?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E4=B8=AD=E5=90=AF=E5=8A=A8,=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E6=B3=A8=E5=86=8C=E9=82=AE=E7=AE=B1=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E5=8A=9F=E8=83=BD=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 1317 ++++++++++++++++++++-------- package.json | 22 +- pages/registry.vue | 81 +- server/dbs/config.js | 32 + server/dbs/models/users.js | 20 + server/index.js | 31 +- server/interface/users.js | 191 ++++ server/interface/utils/axios.js | 9 + server/interface/utils/passport.js | 30 + 9 files changed, 1352 insertions(+), 381 deletions(-) create mode 100644 server/dbs/config.js create mode 100644 server/dbs/models/users.js create mode 100644 server/interface/users.js create mode 100644 server/interface/utils/axios.js create mode 100644 server/interface/utils/passport.js diff --git a/package-lock.json b/package-lock.json index 4599785..d70c1a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1059,10 +1059,21 @@ } }, "acorn-jsx": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.0.tgz", - "integrity": "sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg==", - "dev": true + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "http://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } }, "ajv": { "version": "6.5.4", @@ -1209,12 +1220,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -1299,7 +1304,7 @@ }, "axios": { "version": "0.18.0", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { "follow-redirects": "^1.3.0", @@ -1316,9 +1321,8 @@ }, "babel-cli": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "resolved": "http://registry.npm.taobao.org/babel-cli/download/babel-cli-6.26.0.tgz", "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", - "dev": true, "requires": { "babel-core": "^6.26.0", "babel-polyfill": "^6.26.0", @@ -1339,9 +1343,8 @@ "dependencies": { "anymatch": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/anymatch/download/anymatch-1.3.2.tgz", + "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", "optional": true, "requires": { "micromatch": "^2.1.5", @@ -1352,7 +1355,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, "optional": true, "requires": { "arr-flatten": "^1.0.1" @@ -1362,14 +1364,12 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true, "optional": true }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, "optional": true, "requires": { "expand-range": "^1.8.1", @@ -1381,7 +1381,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, "optional": true, "requires": { "anymatch": "^1.3.0", @@ -1399,7 +1398,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, "optional": true, "requires": { "is-posix-bracket": "^0.1.0" @@ -1409,7 +1407,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, "optional": true, "requires": { "is-extglob": "^1.0.0" @@ -1419,7 +1416,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, "optional": true, "requires": { "is-glob": "^2.0.0" @@ -1428,14 +1424,12 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -1444,7 +1438,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "optional": true, "requires": { "is-buffer": "^1.1.5" @@ -1454,7 +1447,6 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, "optional": true, "requires": { "arr-diff": "^2.0.0", @@ -1528,9 +1520,8 @@ }, "babel-core": { "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz", + "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", "requires": { "babel-code-frame": "^6.26.0", "babel-generator": "^6.26.0", @@ -1555,15 +1546,13 @@ "dependencies": { "babylon": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz", + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=" }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -1707,9 +1696,8 @@ }, "babel-generator": { "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/babel-generator/download/babel-generator-6.26.1.tgz", + "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", "requires": { "babel-messages": "^6.23.0", "babel-runtime": "^6.26.0", @@ -1724,8 +1712,7 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" } } }, @@ -1733,7 +1720,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1745,7 +1731,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.26.0", @@ -1757,7 +1742,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, "requires": { "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1770,7 +1754,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1780,7 +1763,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1790,7 +1772,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1800,7 +1781,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", @@ -1811,7 +1791,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, "requires": { "babel-helper-optimise-call-expression": "^6.24.1", "babel-messages": "^6.23.0", @@ -1830,7 +1809,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -1851,7 +1829,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1860,7 +1837,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1869,7 +1845,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1878,7 +1853,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1887,7 +1861,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", @@ -1900,7 +1873,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, "requires": { "babel-helper-define-map": "^6.24.1", "babel-helper-function-name": "^6.24.1", @@ -1917,7 +1889,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -1927,7 +1898,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1936,7 +1906,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1946,7 +1915,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1955,7 +1923,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1966,7 +1933,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1975,7 +1941,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, "requires": { "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1986,7 +1951,6 @@ "version": "6.26.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, "requires": { "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", @@ -1998,7 +1962,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -2009,7 +1972,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, "requires": { "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-runtime": "^6.22.0", @@ -2020,7 +1982,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, "requires": { "babel-helper-replace-supers": "^6.24.1", "babel-runtime": "^6.22.0" @@ -2030,7 +1991,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, "requires": { "babel-helper-call-delegate": "^6.24.1", "babel-helper-get-function-arity": "^6.24.1", @@ -2044,7 +2004,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -2054,7 +2013,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -2063,7 +2021,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -2074,7 +2031,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -2083,7 +2039,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -2092,7 +2047,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -2102,14 +2056,12 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, "requires": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", @@ -2119,14 +2071,12 @@ "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" }, "regjsparser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, "requires": { "jsesc": "~0.5.0" } @@ -2137,7 +2087,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, "requires": { "regenerator-transform": "^0.10.0" }, @@ -2146,7 +2095,6 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, "requires": { "babel-runtime": "^6.18.0", "babel-types": "^6.19.0", @@ -2159,7 +2107,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -2177,7 +2124,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "core-js": "^2.5.0", @@ -2187,8 +2133,7 @@ "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" } } }, @@ -2196,7 +2141,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, "requires": { "babel-plugin-check-es2015-constants": "^6.22.0", "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", @@ -2228,7 +2172,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, "requires": { "babel-core": "^6.26.0", "babel-runtime": "^6.26.0", @@ -2241,9 +2184,8 @@ "dependencies": { "source-map-support": { "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", "requires": { "source-map": "^0.5.6" } @@ -2263,7 +2205,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-traverse": "^6.26.0", @@ -2275,8 +2216,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" } } }, @@ -2284,7 +2224,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-messages": "^6.23.0", @@ -2300,14 +2239,12 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -2315,8 +2252,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" } } }, @@ -2324,7 +2260,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -2335,8 +2270,7 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" } } }, @@ -2611,6 +2545,11 @@ "node-releases": "^1.0.0-alpha.15" } }, + "bson": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/bson/download/bson-1.1.0.tgz", + "integrity": "sha1-vuV9H7aodxNHGvTjK8rjbegUtbA=" + }, "buffer": { "version": "4.9.1", "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -2760,12 +2699,6 @@ "supports-color": "^5.3.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "check-types": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", @@ -2820,8 +2753,8 @@ }, "circular-json": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "resolved": "http://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz", + "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", "dev": true }, "class-utils": { @@ -2885,6 +2818,33 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, + "co-body": { + "version": "6.0.0", + "resolved": "http://registry.npm.taobao.org/co-body/download/co-body-6.0.0.tgz", + "integrity": "sha1-lluTN9f1ZVSAeHRx9CN2ZIIIJ+M=", + "requires": { + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + } + }, + "co-redis": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/co-redis/download/co-redis-2.1.1.tgz", + "integrity": "sha1-i8NxeXfJ7lv7ayjzmuAbz3JNLd4=", + "requires": { + "es6-promisify": "^4.1.0" + } + }, + "co-wrap-all": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/co-wrap-all/download/co-wrap-all-1.0.0.tgz", + "integrity": "sha1-Nwrj6DM1EKU/ay9/375FaKEbfs8=", + "requires": { + "co": "^4.0.0" + } + }, "coa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", @@ -2893,6 +2853,12 @@ "q": "^1.1.2" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -3123,6 +3089,11 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "copy-to": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/copy-to/download/copy-to-2.0.1.tgz", + "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=" + }, "core-js": { "version": "2.5.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", @@ -3143,6 +3114,11 @@ "parse-json": "^4.0.0" } }, + "crc": { + "version": "3.5.0", + "resolved": "http://registry.npm.taobao.org/crc/download/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=" + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -3471,6 +3447,15 @@ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" }, + "d": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/d/download/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -3562,24 +3547,23 @@ } }, "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/del/download/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "^5.0.0", + "globby": "^6.1.0", "is-path-cwd": "^1.0.0", "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", "rimraf": "^2.2.8" }, "dependencies": { "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } @@ -3612,7 +3596,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, "requires": { "repeating": "^2.0.0" } @@ -3629,8 +3612,8 @@ }, "doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz", + "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", "dev": true, "requires": { "esutils": "^2.0.2" @@ -3695,6 +3678,11 @@ "is-obj": "^1.0.0" } }, + "double-ended-queue": { + "version": "2.1.0-0", + "resolved": "http://registry.npm.taobao.org/double-ended-queue/download/double-ended-queue-2.1.0-0.tgz", + "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" + }, "duplexer": { "version": "0.1.1", "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -3851,6 +3839,90 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.46", + "resolved": "http://registry.npm.taobao.org/es5-ext/download/es5-ext-0.10.46.tgz", + "integrity": "sha1-79mfZ8Wn7Hibqj2qf3mHA4j39XI=", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/es6-iterator/download/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/es6-map/download/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "http://registry.npm.taobao.org/es6-promise/download/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "es6-promisify": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/es6-promisify/download/es6-promisify-4.1.0.tgz", + "integrity": "sha1-28waPpP9uOnnCXRBgrfSCAwD/bM=", + "requires": { + "es6-promise": "^3.2.1" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/es6-set/download/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "http://registry.npm.taobao.org/es6-symbol/download/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/es6-weak-map/download/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3861,77 +3933,159 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escope": { + "version": "3.6.0", + "resolved": "http://registry.npm.taobao.org/escope/download/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "eslint": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.7.0.tgz", - "integrity": "sha512-zYCeFQahsxffGl87U2aJ7DPyH8CbWgxBC213Y8+TCanhUTf2gEvfq3EKpHmEcozTLyPmGe9LZdMAwC/CpJBM5A==", + "version": "3.18.0", + "resolved": "http://registry.npm.taobao.org/eslint/download/eslint-3.18.0.tgz", + "integrity": "sha1-ZH6YXErnFQLSCsYsEJ9m1RBMiks=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.12.0", - "json-stable-stringify-without-jsonify": "^1.0.1", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", "natural-compare": "^1.4.0", "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.0.2", - "text-table": "^0.2.0" + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" }, "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "ajv": { + "version": "4.11.8", + "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "ms": "^2.1.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, - "ms": { + "ajv-keywords": { + "version": "1.5.1", + "resolved": "http://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "http://registry.npm.taobao.org/globals/download/globals-9.18.0.tgz", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "http://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "table": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz", - "integrity": "sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg==", + "version": "3.8.3", + "resolved": "http://registry.npm.taobao.org/table/download/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/user-home/download/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", "dev": true, "requires": { - "ajv": "^6.5.3", - "lodash": "^4.17.10", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "os-homedir": "^1.0.0" } } } @@ -3967,12 +4121,6 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true - }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -3985,22 +4133,13 @@ "integrity": "sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==" }, "espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "version": "3.5.4", + "resolved": "http://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz", + "integrity": "sha1-sPRHGHyKi+2US4FaZgvd9d610ac=", "dev": true, "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", - "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", - "dev": true - } + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" } }, "esprima": { @@ -4040,6 +4179,16 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "event-emitter": { + "version": "0.3.5", + "resolved": "http://registry.npm.taobao.org/event-emitter/download/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "event-stream": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", @@ -4103,6 +4252,12 @@ } } }, + "exit-hook": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/exit-hook/download/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -4147,7 +4302,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, "optional": true, "requires": { "fill-range": "^2.1.0" @@ -4155,9 +4309,8 @@ "dependencies": { "fill-range": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-2.2.4.tgz", + "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=", "optional": true, "requires": { "is-number": "^2.1.0", @@ -4171,7 +4324,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, "optional": true, "requires": { "kind-of": "^3.0.2" @@ -4181,7 +4333,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "optional": true, "requires": { "isarray": "1.0.0" @@ -4191,7 +4342,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "optional": true, "requires": { "is-buffer": "^1.1.5" @@ -4284,28 +4434,6 @@ } } }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -4434,7 +4562,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true, "optional": true }, "filesize": { @@ -4511,13 +4638,13 @@ } }, "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "version": "1.3.2", + "resolved": "http://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.2.tgz", + "integrity": "sha1-f4UtcL5XPayHSkxBKdNAo0+6fmU=", "dev": true, "requires": { "circular-json": "^0.3.1", - "del": "^2.0.2", + "del": "^3.0.0", "graceful-fs": "^4.1.2", "write": "^0.2.1" } @@ -4559,7 +4686,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, "optional": true, "requires": { "for-in": "^1.0.1" @@ -4610,9 +4736,8 @@ }, "fs-readdir-recursive": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true + "resolved": "http://registry.npm.taobao.org/fs-readdir-recursive/download/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha1-4y/AMKLM7kSmtTcTCNpUvgs5fSc=" }, "fs-write-stream-atomic": { "version": "1.0.10", @@ -4665,13 +4790,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4688,8 +4811,7 @@ }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", @@ -4818,7 +4940,6 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5101,11 +5222,23 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "generate-function": { + "version": "2.3.1", + "resolved": "http://registry.npm.taobao.org/generate-function/download/generate-function-2.3.1.tgz", + "integrity": "sha1-8GlhdpDBDIaOc7hGV0Z2T5fDR58=", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } }, "get-stream": { "version": "3.0.0", @@ -5135,7 +5268,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, "optional": true, "requires": { "glob-parent": "^2.0.0", @@ -5146,7 +5278,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, "optional": true, "requires": { "is-glob": "^2.0.0" @@ -5155,14 +5286,12 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -5203,13 +5332,12 @@ "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" }, "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "version": "6.1.0", + "resolved": "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { "array-union": "^1.0.1", - "arrify": "^1.0.0", "glob": "^7.0.3", "object-assign": "^4.0.1", "pify": "^2.0.0", @@ -5373,7 +5501,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" @@ -5583,9 +5710,9 @@ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "3.3.10", + "resolved": "http://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", "dev": true }, "ignore-by-default": { @@ -5631,6 +5758,11 @@ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, + "inflation": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz", + "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5640,38 +5772,147 @@ "wrappy": "1" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "http://registry.npm.taobao.org/inquirer/download/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/cli-cursor/download/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "http://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/onetime/download/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/restore-cursor/download/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/interpret/download/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, - "inquirer": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", - "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.0", - "figures": "^2.0.0", - "lodash": "^4.17.10", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.1.0", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -5806,14 +6047,12 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true, "optional": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, "optional": true, "requires": { "is-primitive": "^2.0.0" @@ -5833,7 +6072,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -5866,6 +6104,25 @@ "is-path-inside": "^1.0.0" } }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-my-ip-valid/download/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha1-ezUbjo7dTTmV1NBmaA5mTZRpaCQ=", + "dev": true + }, + "is-my-json-valid": { + "version": "2.19.0", + "resolved": "http://registry.npm.taobao.org/is-my-json-valid/download/is-my-json-valid-2.19.0.tgz", + "integrity": "sha1-j9bkA2PNBrlj+od9REv7Xt3GIXU=", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -5903,8 +6160,8 @@ }, "is-path-in-cwd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "resolved": "http://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", "dev": true, "requires": { "is-path-inside": "^1.0.0" @@ -5931,14 +6188,12 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true, "optional": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true, "optional": true }, "is-promise": { @@ -5946,6 +6201,12 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, + "is-property": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-property/download/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -6046,11 +6307,19 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json-stable-stringify-without-jsonify": { + "json-stable-stringify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "resolved": "http://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { "version": "0.5.1", @@ -6070,6 +6339,17 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/jsonpointer/download/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "kareem": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/kareem/download/kareem-2.3.0.tgz", + "integrity": "sha1-7zPELpAk3OUR7q9EDNaE868fx2k=" + }, "keygrip": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz", @@ -6111,6 +6391,15 @@ "vary": "^1.1.2" } }, + "koa-bodyparser": { + "version": "4.2.1", + "resolved": "http://registry.npm.taobao.org/koa-bodyparser/download/koa-bodyparser-4.2.1.tgz", + "integrity": "sha1-TX2stebbEQZkm1ldnlzLFYtvOyk=", + "requires": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1" + } + }, "koa-compose": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", @@ -6135,11 +6424,87 @@ } } }, + "koa-generic-session": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/koa-generic-session/download/koa-generic-session-2.0.1.tgz", + "integrity": "sha1-1r308oiy9VMGXQSaYwwox22HfM8=", + "requires": { + "copy-to": "~2.0.1", + "crc": "~3.5.0", + "debug": "~3.1.0", + "parseurl": "~1.3.1", + "uid-safe": "~2.1.4" + } + }, "koa-is-json": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=" }, + "koa-json": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/koa-json/download/koa-json-2.0.2.tgz", + "integrity": "sha1-Nq8U5uofXWRtfESihXAcb4Wk/eQ=", + "requires": { + "koa-is-json": "1", + "streaming-json-stringify": "3" + } + }, + "koa-passport": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/koa-passport/download/koa-passport-4.1.1.tgz", + "integrity": "sha1-StH1KWyTMkSnolkbYMckxfi/hCo=", + "requires": { + "passport": "^0.4.0" + } + }, + "koa-redis": { + "version": "3.1.3", + "resolved": "http://registry.npm.taobao.org/koa-redis/download/koa-redis-3.1.3.tgz", + "integrity": "sha1-sQFbwkPQgSJnN6YPc8RjIqb7X3g=", + "requires": { + "co-redis": "^2.1.1", + "co-wrap-all": "^1.0.0", + "debug": "^3.1.0", + "redis": "^2.8.0" + } + }, + "koa-router": { + "version": "7.4.0", + "resolved": "http://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz", + "integrity": "sha1-ruH3rcAtXLMdfWdGXJ6syCXoxeA=", + "requires": { + "debug": "^3.1.0", + "http-errors": "^1.3.1", + "koa-compose": "^3.0.0", + "methods": "^1.0.1", + "path-to-regexp": "^1.1.1", + "urijs": "^1.19.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "koa-compose": { + "version": "3.2.1", + "resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz", + "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", + "requires": { + "any-promise": "^1.1.0" + } + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + } + } + }, "last-call-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", @@ -6280,6 +6645,11 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, + "lodash.get": { + "version": "4.4.2", + "resolved": "http://registry.npm.taobao.org/lodash.get/download/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -6388,7 +6758,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true, "optional": true }, "md5.js": { @@ -6420,6 +6789,12 @@ "readable-stream": "^2.0.1" } }, + "memory-pager": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/memory-pager/download/memory-pager-1.1.0.tgz", + "integrity": "sha1-kwiRXg6XKEn++65vi8ldazUOc0Q=", + "optional": true + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -6593,6 +6968,51 @@ } } }, + "mongodb": { + "version": "3.1.8", + "resolved": "http://registry.npm.taobao.org/mongodb/download/mongodb-3.1.8.tgz", + "integrity": "sha1-34CE/aLv263dBd/WommJH8TMct8=", + "requires": { + "mongodb-core": "3.1.7", + "safe-buffer": "^5.1.2" + } + }, + "mongodb-core": { + "version": "3.1.7", + "resolved": "http://registry.npm.taobao.org/mongodb-core/download/mongodb-core-3.1.7.tgz", + "integrity": "sha1-/mGFOmpqy9IEbJF5TlMl7K2FQoo=", + "requires": { + "bson": "^1.1.0", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.3.11", + "resolved": "http://registry.npm.taobao.org/mongoose/download/mongoose-5.3.11.tgz", + "integrity": "sha1-q3HgcNq8uLKuv/RwKgkZij+KlAE=", + "requires": { + "async": "2.6.1", + "bson": "~1.1.0", + "kareem": "2.3.0", + "lodash.get": "4.4.2", + "mongodb": "3.1.8", + "mongodb-core": "3.1.7", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.5.1", + "mquery": "3.2.0", + "ms": "2.0.0", + "regexp-clone": "0.0.1", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/mongoose-legacy-pluralize/download/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q=" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -6606,6 +7026,30 @@ "run-queue": "^1.0.3" } }, + "mpath": { + "version": "0.5.1", + "resolved": "http://registry.npm.taobao.org/mpath/download/mpath-0.5.1.tgz", + "integrity": "sha1-FxMVAfH/nm5PvI/6h1qnBltXdas=" + }, + "mquery": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/mquery/download/mquery-3.2.0.tgz", + "integrity": "sha1-4nZHKr1RCWhqFesqjgdh24E8gcw=", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "0.0.1", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "bluebird": { + "version": "3.5.1", + "resolved": "http://registry.npm.taobao.org/bluebird/download/bluebird-3.5.1.tgz", + "integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk=" + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6617,9 +7061,9 @@ "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==" }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.5", + "resolved": "http://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", "dev": true }, "nan": { @@ -6662,6 +7106,12 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" }, + "next-tick": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/next-tick/download/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -6725,6 +7175,11 @@ "semver": "^5.3.0" } }, + "nodemailer": { + "version": "4.6.8", + "resolved": "http://registry.npm.taobao.org/nodemailer/download/nodemailer-4.6.8.tgz", + "integrity": "sha1-+C+0B4KL8udtkqzDS4I9g+d0+Jw=" + }, "nodemon": { "version": "1.18.5", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.5.tgz", @@ -6800,8 +7255,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nuxt": { "version": "2.2.0", @@ -6965,7 +7419,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, "optional": true, "requires": { "for-own": "^0.1.4", @@ -7061,20 +7514,17 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "output-file-sync": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true, "requires": { "graceful-fs": "^4.1.4", "mkdirp": "^0.5.1", @@ -7103,6 +7553,12 @@ "p-limit": "^1.1.0" } }, + "p-map": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz", + "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", + "dev": true + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -7159,7 +7615,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, "optional": true, "requires": { "glob-base": "^0.3.0", @@ -7171,14 +7626,12 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "optional": true, "requires": { "is-extglob": "^1.0.0" @@ -7205,6 +7658,28 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, + "passport": { + "version": "0.4.0", + "resolved": "http://registry.npm.taobao.org/passport/download/passport-0.4.0.tgz", + "integrity": "sha1-xQlWkTR71a07XhgCOMORTRbwWBE=", + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1" + } + }, + "passport-local": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/passport-local/download/passport-local-1.0.0.tgz", + "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", + "requires": { + "passport-strategy": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/passport-strategy/download/passport-strategy-1.0.0.tgz", + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -7246,6 +7721,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "pause": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/pause/download/pause-0.0.1.tgz", + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" + }, "pause-stream": { "version": "0.0.11", "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -7296,9 +7776,9 @@ } }, "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/pluralize/download/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", "dev": true }, "posix-character-classes": { @@ -8133,7 +8613,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true, "optional": true }, "prettier": { @@ -8171,9 +8650,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "version": "1.1.8", + "resolved": "http://registry.npm.taobao.org/progress/download/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, "promise-inflight": { @@ -8286,11 +8765,15 @@ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, + "random-bytes": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/random-bytes/download/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, "randomatic": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz", + "integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=", "optional": true, "requires": { "is-number": "^4.0.0", @@ -8300,9 +8783,8 @@ "dependencies": { "is-number": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", "optional": true } } @@ -8404,6 +8886,57 @@ "readable-stream": "^2.0.2" } }, + "readline2": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/readline2/download/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "http://registry.npm.taobao.org/rechoir/download/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redis": { + "version": "2.8.0", + "resolved": "http://registry.npm.taobao.org/redis/download/redis-2.8.0.tgz", + "integrity": "sha1-ICKI4/WMSfYHnZevehDhMDrhSwI=", + "requires": { + "double-ended-queue": "^2.1.0-0", + "redis-commands": "^1.2.0", + "redis-parser": "^2.6.0" + } + }, + "redis-commands": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/redis-commands/download/redis-commands-1.4.0.tgz", + "integrity": "sha1-UvnPmRU+/M5WqPhq+Ya9BOmIYC8=" + }, + "redis-parser": { + "version": "2.6.0", + "resolved": "http://registry.npm.taobao.org/redis-parser/download/redis-parser-2.6.0.tgz", + "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -8432,9 +8965,8 @@ }, "regex-cache": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, + "resolved": "http://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "optional": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -8449,11 +8981,10 @@ "safe-regex": "^1.1.0" } }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true + "regexp-clone": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/regexp-clone/download/regexp-clone-0.0.1.tgz", + "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" }, "regexpu-core": { "version": "4.2.0", @@ -8578,7 +9109,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, "requires": { "is-finite": "^1.0.0" } @@ -8606,6 +9136,22 @@ } } }, + "require_optional": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/require_optional/download/require_optional-1.0.1.tgz", + "integrity": "sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4=", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/resolve-from/download/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + } + } + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -8676,12 +9222,12 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/run-async/download/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "requires": { - "is-promise": "^2.1.0" + "once": "^1.3.0" } }, "run-queue": { @@ -8692,14 +9238,11 @@ "aproba": "^1.1.1" } }, - "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "rx-lite": { + "version": "3.1.2", + "resolved": "http://registry.npm.taobao.org/rx-lite/download/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true }, "safe-buffer": { "version": "5.1.2", @@ -8719,6 +9262,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saslprep": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/saslprep/download/saslprep-1.0.2.tgz", + "integrity": "sha1-2lq5NubqC7rpEf/sd1NL43DJ9S0=", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -8883,6 +9435,17 @@ "jsonify": "~0.0.0" } }, + "shelljs": { + "version": "0.7.8", + "resolved": "http://registry.npm.taobao.org/shelljs/download/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -8906,8 +9469,7 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { "version": "1.0.0", @@ -8917,6 +9479,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "sliced": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/sliced/download/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -9065,6 +9632,15 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "http://registry.npm.taobao.org/sparse-bitfield/download/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", @@ -9187,6 +9763,15 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" }, + "streaming-json-stringify": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/streaming-json-stringify/download/streaming-json-stringify-3.1.0.tgz", + "integrity": "sha1-gCAEN6mTzDnE/gAmO3s7kDrIevU=", + "requires": { + "json-stringify-safe": "5", + "readable-stream": "2" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -9212,6 +9797,12 @@ "ansi-regex": "^3.0.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -9479,15 +10070,6 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -9704,6 +10286,14 @@ } } }, + "uid-safe": { + "version": "2.1.5", + "resolved": "http://registry.npm.taobao.org/uid-safe/download/uid-safe-2.1.5.tgz", + "integrity": "sha1-Kz1cckDo/C5Y+Komnl7knAhXvTo=", + "requires": { + "random-bytes": "~1.0.0" + } + }, "undefsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", @@ -9908,6 +10498,11 @@ "punycode": "^2.1.0" } }, + "urijs": { + "version": "1.19.1", + "resolved": "http://registry.npm.taobao.org/urijs/download/urijs-1.19.1.tgz", + "integrity": "sha1-Ww/1MMDL3oOG9jQiNbpcpumV0lo=" + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -9968,8 +10563,7 @@ "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" }, "util": { "version": "0.10.4", @@ -10012,7 +10606,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, "requires": { "user-home": "^1.1.1" } diff --git a/package.json b/package.json index 6ea8233..ebd79a1 100644 --- a/package.json +++ b/package.json @@ -13,17 +13,27 @@ "precommit": "npm run lint" }, "dependencies": { + "@nuxtjs/axios": "^5.0.0", + "axios": "^0.18.0", + "babel-cli": "^6.26.0", + "babel-preset-es2015": "^6.24.1", "cross-env": "^5.2.0", - "nuxt": "^2.0.0", - "koa": "^2.5.2", "element-ui": "^2.4.6", - "@nuxtjs/axios": "^5.0.0" + "koa": "^2.5.2", + "koa-bodyparser": "^4.2.1", + "koa-generic-session": "^2.0.1", + "koa-json": "^2.0.2", + "koa-passport": "^4.1.1", + "koa-redis": "^3.1.3", + "koa-router": "^7.4.0", + "mongoose": "^5.3.11", + "nodemailer": "^4.6.8", + "nuxt": "^2.0.0", + "passport-local": "^1.0.0" }, "devDependencies": { - "babel-cli": "^6.26.0", "babel-eslint": "^8.2.1", - "babel-preset-es2015": "^6.24.1", - "eslint": "^5.0.1", + "eslint": "^3.18.0", "eslint-loader": "^2.0.0", "eslint-plugin-vue": "^4.0.0", "nodemon": "^1.11.0" diff --git a/pages/registry.vue b/pages/registry.vue index 0dfd9c9..97c9ceb 100644 --- a/pages/registry.vue +++ b/pages/registry.vue @@ -23,10 +23,18 @@ v-model="ruleForm.email" placeholder="EMAIL"/> 发送验证码 - {{ statusMsg }} + {{ statusMsg }} + + + 注册 + @click="registry('ruleForm')">注册
{{ err }}
@@ -67,8 +75,8 @@ export default { cpwd: "", code: "" }, - statusMsg:'', - err:'', + statusMsg: "", + err: "", rules: { email: [ { required: true, message: "请输入邮箱地址", trigger: "blur" }, @@ -82,20 +90,25 @@ export default { { required: true, message: "请输入您的昵称", trigger: "blur" }, { min: 3, message: "昵称最少3个字符", trigger: "blur" } ], + code: [{ required: true, message: "请填写验证码", trigger: "blur" }], cpwd: [ { required: true, message: "请输入确认密码1", trigger: "blur" }, - { validator:(rulse,value,callback)=>{ - console.log(value) - if(value==='') callback(new Error('请输入确认密码')) - else if(value!==this.ruleForm.pwd) callback(new Error('两次输入的密码不一致,请重新输入')) - else callback() - },trigger:"blur"} + { + validator: (rulse, value, callback) => { + console.log(value); + if (value === "") callback(new Error("请输入确认密码")); + else if (value !== this.ruleForm.pwd) + callback(new Error("两次输入的密码不一致,请重新输入")); + else callback(); + }, + trigger: "blur" + } ] } }; }, methods: { - onSubmit(FN) { + registry(FN) { this.$refs[FN].validate(valid => { if (valid) console.log("submit!"); else { @@ -104,7 +117,46 @@ export default { } }); }, - sendMsg() {} + sendMsg() { + const self = this; + let namePass; + let emailPass; + this.$refs["ruleForm"].validateField("name", valid => { + namePass = valid; + }); + if (namePass) { + return false; + } + this.$refs["ruleForm"].validateField("email", valid => { + emailPass = valid; + }); + if (!namePass && !emailPass) { + self.$axios + .post("http://127.0.0.1:3000/users/verify", { + username: encodeURIComponent(self.ruleForm.name), + email: self.ruleForm.email + }) + .then(({ status, data }) => { + if (status === 200 && data && data.code === 0) { + let count = 60 + self.statusMsg = `验证码已发送,剩余${count--}秒` + self.timerid = setInterval(()=>{ + if(count===0){ + clearInterval(self.timerid) + self.statusMsg = '' + return + } + self.statusMsg = `验证码已发送,剩余${count--}秒` + },1000) + }else{ + self.statusMsg= data.msg + let timer = setTimeout(()=>{ + self.statusMsg = '' + },3500) + } + }); + } + } } }; @@ -145,4 +197,9 @@ export default { text-align: center; color: red; } +.statusMsg { + float: right; + color: #aaa; + font-size: 12px; +} \ No newline at end of file diff --git a/server/dbs/config.js b/server/dbs/config.js new file mode 100644 index 0000000..6c2a019 --- /dev/null +++ b/server/dbs/config.js @@ -0,0 +1,32 @@ +export default { + dbs:'mongodb://127.0.0.1:27017/zxdbs', + redis:{ + get host(){ + return '127.0.0.1' + }, + get port(){ + return 6379 + } + }, + smtp:{ + get host(){ + return 'smtp.qq.com' + }, + get user(){ + return '1027091690@qq.com' + }, + get pass(){ + return 'hhofolnijaqfbebe' + }, + get code(){ + return ()=>{ + return Math.random().toString(16).slice(2,6).toUpperCase() + } + }, + get expire(){ + return ()=>{ + return new Date().getTime()+60*1000 + } + } + } +} \ No newline at end of file diff --git a/server/dbs/models/users.js b/server/dbs/models/users.js new file mode 100644 index 0000000..6be9c53 --- /dev/null +++ b/server/dbs/models/users.js @@ -0,0 +1,20 @@ +import mongoose from 'mongoose' +const Schema = mongoose.Schema +const UserSchema = new Schema({ + username:{ + type:String, + require:true, + unique:true + }, + password:{ + type:String, + require:true + }, + email:{ + type:String, + require:true, + unique:true + } +}) + +export default mongoose.model('User',UserSchema) \ No newline at end of file diff --git a/server/index.js b/server/index.js index aa15252..e098c37 100644 --- a/server/index.js +++ b/server/index.js @@ -1,13 +1,40 @@ import Koa from 'koa'; -// const Koa = require('koa') const consola = require('consola') const { Nuxt, Builder } = require('nuxt') +import mongoose from 'mongoose' +import bodyParser from 'koa-bodyparser' +import session from 'koa-generic-session' +import Redis from 'koa-redis' +import json from 'koa-json' +import dbConfig from './dbs/config' +import passport from './interface/utils/passport' +import users from './interface/users' + + + const app = new Koa() const host = process.env.HOST || '127.0.0.1' const port = process.env.PORT || 3000 +app.key=['zx','yuan'] +app.proxy = true +app.use(session({ + key:'zx', + prefix:'zx:uid', + store: new Redis() +})) +app.use(bodyParser({ + extendTypes:['json','form','text'] +})) +app.use(json()) +mongoose.connect(dbConfig.dbs,{ + useNewUrlParser:true +}) +app.use(passport.initialize()) +app.use(passport.session()) + // Import and Set Nuxt.js options let config = require('../nuxt.config.js') config.dev = !(app.env === 'production') @@ -22,6 +49,8 @@ async function start() { await builder.build() } + app.use(users.routes()).use(users.allowedMethods()) + app.use(ctx => { ctx.status = 200 // koa defaults to 404 when it sees that status is unset diff --git a/server/interface/users.js b/server/interface/users.js new file mode 100644 index 0000000..b0d48a4 --- /dev/null +++ b/server/interface/users.js @@ -0,0 +1,191 @@ +import Router from 'koa-router' +import Redis from 'koa-redis' +import nodeMailer from 'nodemailer' +import User from '../dbs/models/users' +import Passport from './utils/passport' +import axios from './utils/axios' +import Email from '../dbs/config' + +let router = new Router({ + prefix: '/users' +}) + +let Store = new Redis().client + +router.post('/signup', async (ctx) => { + const { + username, + password, + email, + code + } = ctx.request.body; + + if (code) { + const saveCode = await Store.hget(`nodemail:${username}`, 'code') + const saveExpire = await Store.hget(`nodemail:${username}`, 'expire') + if (code === saveCode) { + if (new Date().getTime() - saveCode > 0) { + ctx.body = { + code: -1, + msg: '验证码已过期,请重新尝试' + } + return false + } + } else { + ctx.body = { + code: -1, + msg: '请输入正确的验证码' + } + } + } else { + ctx.body = { + code: -1, + msg: '请填写验证码' + } + } + let user = await User.find({ + username + }) + if (user.length) { + ctx.body = { + code: -1, + msg: '用户名已被注册' + } + return + } + let nuser = await User.create({ + username, + password, + email + }) + if (nuser) { + let res = await axioa.post('/users/sigin', { + username, + password + }) + if (res.data && res.data.code === 0) { + ctx.body = { + code: 0, + msg: '注册成功', + user: res.data.user + } + } else { + ctx.body = { + code: -1, + msg: 'error' + } + } + } else { + ctx.body = { + code: -1, + msg: '注册失败' + } + } +}) + + +router.post('/signin', async (ctx, next) => { + return Passport.authenticate('local', function (err, user, info, status) { + if (err) { + ctx.body = { + code: -1, + msg: err + } + } else { + if (user) { + ctx.body = { + code: 0, + msg: '登录成功', + user + } + return ctx.login(user) + } else { + ctx.body = { + code: 1, + msg: info + } + } + } + })(ctx, next) +}) + +router.post('/verify', async (ctx, next) => { + let username = ctx.request.body.username + const saveExpire = await Store.hget(`nodemail:${username}`, 'expire') + if (saveExpire && new Date().getTime() - saveExpire < 0) { + ctx.body = { + code: -1, + msg: '验证请求过于频繁,1分钟只能请求一次' + } + return false + } + let transporter = nodeMailer.createTransport({ + host: Email.smtp.host, + port: 587, + secure: false, + auth: { + user: Email.smtp.user, + pass: Email.smtp.pass + } + }) + let ko = { + code: Email.smtp.code(), + expire: Email.smtp.expire(), + email: ctx.request.body.email, + user: ctx.request.body.username + } + let maiOptions = { + from: `"认证邮件" <${Email.smtp.user}>`, + to: ko.email, + subject: '《知行手账》 邮箱验证码', + html: `您在《知行手账》申请注册,您的验证码是   ${ko.code}` + } + await transporter.sendMail(maiOptions, (error, info) => { + if (error) { + return console.log(error) + } else { + Store.hmset(`nodemail:${ko.user}`, 'code', ko.code, 'expire', ko.expire, 'email', ko.email) + } + }) + ctx.body = { + code: 0, + msg: '验证码已发送,可能有延时,有效期1分钟' + } +}) + +router.get('/exit', async (ctx, next) => { + await ctx.logout() + if (!ctx.isAuthenticated()) { + ctx.body = { + code: 0 + } + } else { + ctx.body = { + code: -1 + } + } +}) + +router.get('/test', async (ctx,next)=>{ + ctx.body = { + name:'feng', + msg:'success' + } +}) + +router.get('/getUser', async (ctx) => { + if(ctx.isAuthenticated()){ + const {username,email} = ctx.session.Passport.user + ctx.body = { + user:username, + email + } + }else{ + ctx.body = { + user:'', + email:'' + } + } +}) + +export default router \ No newline at end of file diff --git a/server/interface/utils/axios.js b/server/interface/utils/axios.js new file mode 100644 index 0000000..233ead9 --- /dev/null +++ b/server/interface/utils/axios.js @@ -0,0 +1,9 @@ +import axios from 'axios' +import { deflate } from 'zlib'; +const instance = axios.create({ + baseURL:`http://${process.env.HOST||'localhost'}:${process.env.PORT||3000}`, + timeout:2000, + header:{} +}) + +export default instance \ No newline at end of file diff --git a/server/interface/utils/passport.js b/server/interface/utils/passport.js new file mode 100644 index 0000000..341a227 --- /dev/null +++ b/server/interface/utils/passport.js @@ -0,0 +1,30 @@ +import passport from 'koa-passport' +import LocalStrategy from 'passport-local' +import UserModel from '../../dbs/models/users' + + +passport.use(new LocalStrategy(async function(username,password,done){ + let where = { + username + } + let result = await UserModel.findOne(where) + if(result!=null){ + if(result.password===password){ + return done(null,result) + }else{ + return done(null,false,'密码错误') + } + }else{ + return done(null,false,'用户不存在') + } +})) + +passport.serializeUser(function(user,done){ + done(null,user) +}) + +passport.deserializeUser(function(user,done){ + return done(null,user) +}) + +export default passport \ No newline at end of file -- Gitee From 5ed616883ba2fc276a5aa3db2e869f6714fa01b0 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Tue, 13 Nov 2018 13:39:56 +0800 Subject: [PATCH 02/59] update --- assets/imgs/postImg/4.jpg | Bin 0 -> 56235 bytes components/snippts/media.vue | 9 +++++- package-lock.json | 28 +++++++++++++----- pages/index.vue | 4 +-- pages/registry.vue | 3 +- server/dbs/models/medias.js | 22 ++++++++++++++ server/index.js | 5 ++++ server/interface/fake_data.js | 54 ++++++++++++++++++++++++++++++++++ server/interface/home.js | 19 ++++++++++++ server/interface/users.js | 39 +++++++++++++----------- store/index.js | 25 ++++++++++++++++ store/modules/home.js | 22 ++++++++++++++ 12 files changed, 201 insertions(+), 29 deletions(-) create mode 100644 assets/imgs/postImg/4.jpg create mode 100644 server/dbs/models/medias.js create mode 100644 server/interface/fake_data.js create mode 100644 server/interface/home.js create mode 100644 store/index.js create mode 100644 store/modules/home.js diff --git a/assets/imgs/postImg/4.jpg b/assets/imgs/postImg/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0973102f5ede7a3dd0bee5293638a054639f8c71 GIT binary patch literal 56235 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 cI6x>Of>of76cL1J$|GEEx ^_^ @@ -29,6 +30,12 @@ export default { data=tags[this.post.tags.tag] return data } + }, + methods:{ + getUrl(url){ + let data = require('~'+url) + return data + } } }; diff --git a/package-lock.json b/package-lock.json index d70c1a7..c27d338 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4790,11 +4790,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4807,15 +4809,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4918,7 +4923,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4928,6 +4934,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4940,17 +4947,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4967,6 +4977,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -5039,7 +5050,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -5049,6 +5061,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -5154,6 +5167,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/pages/index.vue b/pages/index.vue index 87eca7c..074ffee 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -28,8 +28,8 @@ label="活跃" name="first"> diff --git a/pages/registry.vue b/pages/registry.vue index 97c9ceb..7e195b2 100644 --- a/pages/registry.vue +++ b/pages/registry.vue @@ -141,12 +141,11 @@ export default { let count = 60 self.statusMsg = `验证码已发送,剩余${count--}秒` self.timerid = setInterval(()=>{ + self.statusMsg = `验证码已发送,剩余${count--}秒` if(count===0){ clearInterval(self.timerid) self.statusMsg = '' - return } - self.statusMsg = `验证码已发送,剩余${count--}秒` },1000) }else{ self.statusMsg= data.msg diff --git a/server/dbs/models/medias.js b/server/dbs/models/medias.js new file mode 100644 index 0000000..f9da9f2 --- /dev/null +++ b/server/dbs/models/medias.js @@ -0,0 +1,22 @@ +import mongoose from 'mongoose' +const Schema = mongoose.Schema +const MediaSchema = new Schema({ + userId: Number, + tags: { + tag: { + type: String + }, + isActive: Boolean + }, + img: String, + msg: String, + votes: Number, + view: Number, + replys: Number, + date: { + type: Date, + default: Date.now + } +}) + +export default mongoose.model('Medias', MediaSchema) diff --git a/server/index.js b/server/index.js index e098c37..679ce2f 100644 --- a/server/index.js +++ b/server/index.js @@ -10,7 +10,10 @@ import Redis from 'koa-redis' import json from 'koa-json' import dbConfig from './dbs/config' import passport from './interface/utils/passport' + import users from './interface/users' +import home from './interface/home' +import fakeRouter from './interface/fake_data' @@ -50,6 +53,8 @@ async function start() { } app.use(users.routes()).use(users.allowedMethods()) + app.use(home.routes()).use(home.allowedMethods()) + app.use(fakeRouter.routes()).use(fakeRouter.allowedMethods()) app.use(ctx => { ctx.status = 200 // koa defaults to 404 when it sees that status is unset diff --git a/server/interface/fake_data.js b/server/interface/fake_data.js new file mode 100644 index 0000000..c1cfae8 --- /dev/null +++ b/server/interface/fake_data.js @@ -0,0 +1,54 @@ +import Router from 'koa-router' + +import Media from '../dbs/models/medias' + +const tags = ['life', 'blogs', 'notice', 'topLine'] +const MyRandom = (n) => { + return Math.ceil(Math.random() * (n)) +} + +let router = new Router({ + prefix:'/fake' +}) + +router.get('/medias', async (ctx, next) => { + console.log('setdbs') + let arr = [] + for (let i = 0; i < 10; i++) { + let item = new Media({ + userId: MyRandom(1000), + tags: { + tag: tags[MyRandom(2)], + isActive: MyRandom(1) === 1 ? true : false + }, + img: `/assets/imgs/postImg/${MyRandom(4)}.jpg`, + msg: "生活不止眼前的苟且,还有诗和远方!", + votes: MyRandom(1000), + replys: MyRandom(100), + views: MyRandom(10000), + date: Date.now() + }) + let getData = () => { + return new Promise((resolve,reject)=>{ + item.save((err,data)=>{ + if(err) reject(err) + else resolve(data) + }) + }) + } + let aaa = await getData() + arr.push(aaa) + } + if (arr.length > 0) + ctx.body = { + msg: 'set dbs success', + data:{ + arr + } + } + else ctx.body = { + msg: 'set dbs false' + } +}) + +export default router \ No newline at end of file diff --git a/server/interface/home.js b/server/interface/home.js new file mode 100644 index 0000000..94674bf --- /dev/null +++ b/server/interface/home.js @@ -0,0 +1,19 @@ +import Router from 'koa-router' + +import Media from '../dbs/models/medias' + +let router = new Router({ + prefix:'/home' +}) + + + +router.get('/medias',async (ctx,next)=>{ + let data = await Media.find() + ctx.body = { + code:0, + medias:data + } +}) + +export default router \ No newline at end of file diff --git a/server/interface/users.js b/server/interface/users.js index b0d48a4..7a3b766 100644 --- a/server/interface/users.js +++ b/server/interface/users.js @@ -1,11 +1,12 @@ import Router from 'koa-router' import Redis from 'koa-redis' import nodeMailer from 'nodemailer' -import User from '../dbs/models/users' import Passport from './utils/passport' import axios from './utils/axios' import Email from '../dbs/config' +import User from '../dbs/models/users' + let router = new Router({ prefix: '/users' }) @@ -166,26 +167,30 @@ router.get('/exit', async (ctx, next) => { } }) -router.get('/test', async (ctx,next)=>{ +router.get('/test', async (ctx, next) => { ctx.body = { - name:'feng', - msg:'success' + name: 'feng', + msg: 'success' } }) router.get('/getUser', async (ctx) => { - if(ctx.isAuthenticated()){ - const {username,email} = ctx.session.Passport.user - ctx.body = { - user:username, - email - } - }else{ - ctx.body = { - user:'', - email:'' - } - } + if (ctx.isAuthenticated()) { + const { + username, + email + } = ctx.session.Passport.user + ctx.body = { + user: username, + email + } + } else { + ctx.body = { + user: '', + email: '' + } + } }) -export default router \ No newline at end of file + +export default router diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..f01398f --- /dev/null +++ b/store/index.js @@ -0,0 +1,25 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import home from './modules/home' + +Vue.use(Vuex) + +const store = () => new Vuex.Store({ + modules: { + home + }, + actions: { + async nuxtServerInit({ + commit + }, { + req, + app + }) { + const {status,data:{medias,code}} = await app.$axios.get('/home/medias') + commit('home/setMedias',status===200?{medias}:{medias:[]}) + } + } +}) + +export default store \ No newline at end of file diff --git a/store/modules/home.js b/store/modules/home.js new file mode 100644 index 0000000..f5804b6 --- /dev/null +++ b/store/modules/home.js @@ -0,0 +1,22 @@ +const state = () => ({ + medias: {} +}) +const mutations = { + setMedias(state, val) { + state.medias = val + } +} +const actions = { + setMedias: ({ + commit + }, medias) => { + commit('setMedias', medias) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} -- Gitee From ba83ccddfe065774ba865f460b5ec58c16707564 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Tue, 13 Nov 2018 21:58:02 +0800 Subject: [PATCH 03/59] update --- assets/imgs/4.jpg | Bin 0 -> 56235 bytes assets/imgs/postImg/5.jpg | Bin 0 -> 7863 bytes components/snippts/media.vue | 43 ++++++++++++++++++++-------------- pages/index.vue | 11 +++------ server/baseurl.js | 2 ++ server/dbs/config.js | 3 ++- server/interface/fake_data.js | 4 ++-- store/index.js | 9 +++++-- store/modules/imgCDN.js | 22 +++++++++++++++++ 9 files changed, 63 insertions(+), 31 deletions(-) create mode 100644 assets/imgs/4.jpg create mode 100644 assets/imgs/postImg/5.jpg create mode 100644 server/baseurl.js create mode 100644 store/modules/imgCDN.js diff --git a/assets/imgs/4.jpg b/assets/imgs/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0973102f5ede7a3dd0bee5293638a054639f8c71 GIT binary patch literal 56235 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 ^_^ @@ -16,30 +15,39 @@ + \ No newline at end of file diff --git a/pages/index.vue b/pages/index.vue index 074ffee..850fbba 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -30,7 +30,7 @@ @@ -66,6 +66,7 @@ import postItem from "~/components/snippts/media.vue" import rmdAd from "~/components/snippts/recommend.vue" import welTags from '~/components/snippts/welcomeTags.vue' + export default { components: { postItem, @@ -102,14 +103,8 @@ export default { }, ], activeName: 'first', - posts:[ - {userId:213,tags:{tag:'life',isActive:true},img:require('~/assets/imgs/postImg/2.jpg'),msg:'生活不止眼前的苟且,还有诗和远方。',votes:12,replys:8,views:233,date:'2天前'}, - {userId:3301,tags:{tag:'blogs',isActive:true},img:require('~/assets/imgs/postImg/1.jpg'),msg:'生活不止眼前的苟且,还有诗和远方。',votes:12,replys:8,views:233,date:'1天前'}, - {userId:23,tags:{tag:'notice',isActive:false},img:require('~/assets/imgs/postImg/2.jpg'),msg:'生活不止眼前的苟且,还有诗和远方。',votes:12,replys:8,views:233,date:'1周前'}, - {userId:78,tags:{tag:'topLine',isActive:true},img:require('~/assets/imgs/postImg/3.jpg'),msg:'生活不止眼前的苟且,还有诗和远方。',votes:12,replys:8,views:233,date:'1小时前'}, - ] }; - } + }, }; diff --git a/server/baseurl.js b/server/baseurl.js new file mode 100644 index 0000000..f8cd53d --- /dev/null +++ b/server/baseurl.js @@ -0,0 +1,2 @@ +const bassurl = 'http://127.0.0.1:3000/'; +export default bassurl \ No newline at end of file diff --git a/server/dbs/config.js b/server/dbs/config.js index 6c2a019..b4ee451 100644 --- a/server/dbs/config.js +++ b/server/dbs/config.js @@ -28,5 +28,6 @@ export default { return new Date().getTime()+60*1000 } } - } + }, + cdnUrl:'http://pi4vk21be.bkt.clouddn.com' } \ No newline at end of file diff --git a/server/interface/fake_data.js b/server/interface/fake_data.js index c1cfae8..df8e685 100644 --- a/server/interface/fake_data.js +++ b/server/interface/fake_data.js @@ -1,6 +1,7 @@ import Router from 'koa-router' import Media from '../dbs/models/medias' +const fs = require('fs') const tags = ['life', 'blogs', 'notice', 'topLine'] const MyRandom = (n) => { @@ -12,7 +13,6 @@ let router = new Router({ }) router.get('/medias', async (ctx, next) => { - console.log('setdbs') let arr = [] for (let i = 0; i < 10; i++) { let item = new Media({ @@ -21,7 +21,7 @@ router.get('/medias', async (ctx, next) => { tag: tags[MyRandom(2)], isActive: MyRandom(1) === 1 ? true : false }, - img: `/assets/imgs/postImg/${MyRandom(4)}.jpg`, + img: `zx_${MyRandom(5)}.jpg`, msg: "生活不止眼前的苟且,还有诗和远方!", votes: MyRandom(1000), replys: MyRandom(100), diff --git a/store/index.js b/store/index.js index f01398f..5e2a4d7 100644 --- a/store/index.js +++ b/store/index.js @@ -2,12 +2,16 @@ import Vue from 'vue' import Vuex from 'vuex' import home from './modules/home' +import cdnUrl from './modules/imgCDN' + +import Cf from '../server/dbs/config' Vue.use(Vuex) const store = () => new Vuex.Store({ modules: { - home + home, + cdnUrl }, actions: { async nuxtServerInit({ @@ -17,7 +21,8 @@ const store = () => new Vuex.Store({ app }) { const {status,data:{medias,code}} = await app.$axios.get('/home/medias') - commit('home/setMedias',status===200?{medias}:{medias:[]}) + commit('home/setMedias',status===200?{medias,baseUrl:process.env.BASE_URL,testUrl:'~/assets/imgs/logo.png'}:{medias:[]}) + commit('cdnUrl/setcdnUrl',Cf.cdnUrl) } } }) diff --git a/store/modules/imgCDN.js b/store/modules/imgCDN.js new file mode 100644 index 0000000..dd152d1 --- /dev/null +++ b/store/modules/imgCDN.js @@ -0,0 +1,22 @@ +const state = () => ({ + cdnUrl: '' +}) +const mutations = { + setcdnUrl(state, val) { + state.cdnUrl = val + } +} +const actions = { + setcdnUrl: ({ + commit + }, cdnUrl) => { + commit('setcdnUrl', cdnUrl) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} -- Gitee From 6c2efb455f9aff92fff5d2d1ba564f0fc9eb0136 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Wed, 14 Nov 2018 10:53:12 +0800 Subject: [PATCH 04/59] upate --- server/dbs/init.js | 31 +++++++++++++++++++++++++++++++ server/dbs/models/medias.js | 4 +++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 server/dbs/init.js diff --git a/server/dbs/init.js b/server/dbs/init.js new file mode 100644 index 0000000..3be3110 --- /dev/null +++ b/server/dbs/init.js @@ -0,0 +1,31 @@ +import mongoose from 'mongoose' + +import {dbs} from './config' + +export default connect = ()=>{ + let MaxConnectTimes = 0 + return new Promise((resolve,reject)=>{ + if(process.env.NODE_ENV!=='production') + mongoose.set('debug',true) + mongoose.connect(dbs) + + mongoose.connection.on('disconnected',()=>{ + MaxConnectTimes++ + if(MaxConnectTimes<6) + mongoose.connect(dbs) + else throw Error('数据库挂了') + }) + + mongoose.connection.on('error',()=>{ + MaxConnectTimes++ + if(MaxConnectTimes<6) + mongoose.connect(dbs) + else throw Error('数据库挂了') + }) + + mongoose.connection.once('open',()=>{ + resolve() + console.log('数据库成功连接') + }) + }) +} \ No newline at end of file diff --git a/server/dbs/models/medias.js b/server/dbs/models/medias.js index f9da9f2..b8ae5f5 100644 --- a/server/dbs/models/medias.js +++ b/server/dbs/models/medias.js @@ -15,8 +15,10 @@ const MediaSchema = new Schema({ replys: Number, date: { type: Date, - default: Date.now + default: Date.now, + index:true } }) export default mongoose.model('Medias', MediaSchema) + -- Gitee From a0171a0160a3f11bff654b284e2b1ad8abf3429b Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Thu, 15 Nov 2018 00:26:34 +0800 Subject: [PATCH 05/59] 'udate' --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ebd79a1..8380258 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Yuan-github", "private": true, "scripts": { - "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", + "dev": "cross-env PORT=3600 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "build": "nuxt build", "start": "cross-env NODE_ENV=production node server/index.js --exec babel-node", "generate": "nuxt generate", -- Gitee From 66e077335c71f96affe4507e5dfee2dcd418ef13 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Thu, 15 Nov 2018 00:40:03 +0800 Subject: [PATCH 06/59] 'update' --- package.json | 2 +- server/dbs/config.js | 34 ++++++++++++++++++---------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 8380258..877a966 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Yuan-github", "private": true, "scripts": { - "dev": "cross-env PORT=3600 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", + "dev": "cross-env PORT=3600 DB_PORT=20913 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "build": "nuxt build", "start": "cross-env NODE_ENV=production node server/index.js --exec babel-node", "generate": "nuxt generate", diff --git a/server/dbs/config.js b/server/dbs/config.js index b4ee451..59469bb 100644 --- a/server/dbs/config.js +++ b/server/dbs/config.js @@ -1,33 +1,35 @@ +let dbPort = process.env.DB_PORT +console.log(dbPort) export default { - dbs:'mongodb://127.0.0.1:27017/zxdbs', - redis:{ - get host(){ + dbs: `mongodb://127.0.0.1:${dbPort? dbPort:27017}/zxdbs`, + redis: { + get host() { return '127.0.0.1' }, - get port(){ + get port() { return 6379 } }, - smtp:{ - get host(){ + smtp: { + get host() { return 'smtp.qq.com' }, - get user(){ + get user() { return '1027091690@qq.com' }, - get pass(){ + get pass() { return 'hhofolnijaqfbebe' }, - get code(){ - return ()=>{ - return Math.random().toString(16).slice(2,6).toUpperCase() + get code() { + return () => { + return Math.random().toString(16).slice(2, 6).toUpperCase() } }, - get expire(){ - return ()=>{ - return new Date().getTime()+60*1000 + get expire() { + return () => { + return new Date().getTime() + 60 * 1000 } } }, - cdnUrl:'http://pi4vk21be.bkt.clouddn.com' -} \ No newline at end of file + cdnUrl: 'http://pi4vk21be.bkt.clouddn.com' +} -- Gitee From 26cd2c609b87ae4759aeef7fd681aa0a922a3d2f Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Thu, 15 Nov 2018 21:32:24 +0800 Subject: [PATCH 07/59] update --- package.json | 2 +- pages/registry.vue | 2 +- server/dbs/config.js | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 877a966..9bf26e2 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "dev": "cross-env PORT=3600 DB_PORT=20913 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "build": "nuxt build", - "start": "cross-env NODE_ENV=production node server/index.js --exec babel-node", + "start": "cross-env PORT=3600 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" diff --git a/pages/registry.vue b/pages/registry.vue index 7e195b2..a80e846 100644 --- a/pages/registry.vue +++ b/pages/registry.vue @@ -132,7 +132,7 @@ export default { }); if (!namePass && !emailPass) { self.$axios - .post("http://127.0.0.1:3000/users/verify", { + .post("http://127.0.0.1:3600/users/verify", { username: encodeURIComponent(self.ruleForm.name), email: self.ruleForm.email }) diff --git a/server/dbs/config.js b/server/dbs/config.js index 59469bb..f3bca65 100644 --- a/server/dbs/config.js +++ b/server/dbs/config.js @@ -1,5 +1,4 @@ let dbPort = process.env.DB_PORT -console.log(dbPort) export default { dbs: `mongodb://127.0.0.1:${dbPort? dbPort:27017}/zxdbs`, redis: { -- Gitee From a570bc88bf14083e8239e4e8a1b57449ee24d02d Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Thu, 15 Nov 2018 21:45:40 +0800 Subject: [PATCH 08/59] update --- package.json | 4 ++-- pages/registry.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9bf26e2..e554132 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "author": "Yuan-github", "private": true, "scripts": { - "dev": "cross-env PORT=3600 DB_PORT=20913 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", + "dev": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "build": "nuxt build", - "start": "cross-env PORT=3600 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", + "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" diff --git a/pages/registry.vue b/pages/registry.vue index a80e846..2359f27 100644 --- a/pages/registry.vue +++ b/pages/registry.vue @@ -132,7 +132,7 @@ export default { }); if (!namePass && !emailPass) { self.$axios - .post("http://127.0.0.1:3600/users/verify", { + .post("http://127.0.0.1:5000/users/verify", { username: encodeURIComponent(self.ruleForm.name), email: self.ruleForm.email }) -- Gitee From 0c84fa328efa408be1395a3558a47f7ada8b34d5 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 00:01:53 +0800 Subject: [PATCH 09/59] update --- package.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e554132..038969f 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,8 @@ "dev": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", + "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", + "serve": "cross-env NODE_ENV=production node dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" @@ -15,8 +17,6 @@ "dependencies": { "@nuxtjs/axios": "^5.0.0", "axios": "^0.18.0", - "babel-cli": "^6.26.0", - "babel-preset-es2015": "^6.24.1", "cross-env": "^5.2.0", "element-ui": "^2.4.6", "koa": "^2.5.2", @@ -33,6 +33,10 @@ }, "devDependencies": { "babel-eslint": "^8.2.1", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-cli": "^6.26.0", + "babel-preset-es2015": "^6.24.1", + "babel-preset-stage-2": "^6.24.1", "eslint": "^3.18.0", "eslint-loader": "^2.0.0", "eslint-plugin-vue": "^4.0.0", -- Gitee From cac87ae69193b60f7372dbb8926fd9d0ced25582 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 00:02:58 +0800 Subject: [PATCH 10/59] udpate --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 038969f..77b8432 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env NODE_ENV=production node dist/index.js", + "serve": "cross-env NODE_ENV=production pm2 --name zxsz start dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From c149b809e03d0a63e4efe99b83235706b4b1b9a9 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 00:07:52 +0800 Subject: [PATCH 11/59] update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 77b8432..a37b1c3 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env NODE_ENV=production pm2 --name zxsz start dist/index.js", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 --name zxsz start dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From dee4f66d369ec592bc2313137193224fb83c7394 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 12:07:52 +0800 Subject: [PATCH 12/59] =?UTF-8?q?'feat:readme=E5=AE=8C=E5=96=84=EF=BC=8Cpa?= =?UTF-8?q?ckage=EF=BC=8Cnuxt.config=E9=85=8D=E7=BD=AE'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/imgs/4.jpg | Bin 56235 -> 0 bytes components/README.md | 29 +- components/snippts/media.vue | 7 +- nuxt.config.js | 105 +- package-lock.json | 4696 +++++++++++++++++++++++++++++----- package.json | 11 +- plugins/vue-moment.js | 4 + server/dbs/models/medias.js | 2 +- 8 files changed, 4158 insertions(+), 696 deletions(-) delete mode 100644 assets/imgs/4.jpg create mode 100644 plugins/vue-moment.js diff --git a/assets/imgs/4.jpg b/assets/imgs/4.jpg deleted file mode 100644 index 0973102f5ede7a3dd0bee5293638a054639f8c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56235 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 cI6x>Of>of76cL1J$|GEEx -**This directory is not required, you can delete it if you don't want to use it.** + > Node.js + koa + vue + vuex + (NUXT)SSR + nginx + mongodb + redis + online:知行手账 项目线上 -The components directory contains your Vue.js Components. + ## 页面 + - [index 首页](pages/index.vue) + - [login 登录](pages/login.vue) + - [registry 注册](pages/registry.vue) + + ## 项目安装 + + ``` bash +# 依赖包安装 +$ npm install + +# 开发环境 (127.0.0.1:3000 mongodb://127.0.0.1:27017) +$ npm run dev + +# 生产环境 (127.0.0.1:5000 mongodb://127.0.0.1:20913) +$ npm run build +$ npm start + +# 生产环境 (127.0.0.1:5000 mongodb://127.0.0.1:20913) +$ npm run build +$ npm run online +$ npm run serve -_Nuxt.js doesn't supercharge these components._ diff --git a/components/snippts/media.vue b/components/snippts/media.vue index bd89129..869efc6 100644 --- a/components/snippts/media.vue +++ b/components/snippts/media.vue @@ -10,7 +10,12 @@ {{ tag }}  {{ post.msg }}
- {{ post.votes }}  /  {{ post.replys }}  /  {{ post.views }}  |  {{ post.date }}
+ {{ post.votes }} / + {{ post.replys }} / + {{ post.views }} +  | +  {{ post.date | moment().format('MM-DD/hh:mm') }} + diff --git a/nuxt.config.js b/nuxt.config.js index dc5ea34..3d9f8f1 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -4,70 +4,115 @@ module.exports = { mode: 'universal', /* - ** Headers of the page - */ + ** Headers of the page + */ head: { title: pkg.name, - meta: [ - { charset: 'utf-8' }, - { name: 'viewport', content: 'width=device-width, initial-scale=1' }, - { hid: 'description', name: 'description', content: pkg.description } + meta: [{ + charset: 'utf-8' + }, + { + name: 'viewport', + content: 'width=device-width, initial-scale=1' + }, + { + hid: 'description', + name: 'description', + content: pkg.description + } ], - link: [ - { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } - ] + link: [{ + rel: 'icon', + type: 'image/x-icon', + href: '/favicon.ico' + }] }, /* - ** Customize the progress-bar color - */ - loading: { color: '#fff' }, + ** Customize the progress-bar color + */ + loading: { + color: '#fff' + }, /* - ** Global CSS - */ + ** Global CSS + */ css: [ 'element-ui/lib/theme-chalk/index.css', '@assets/css/common.css' ], /* - ** Plugins to load before mounting the App - */ + ** Plugins to load before mounting the App + */ plugins: [ - '@/plugins/element-ui' + '@/plugins/element-ui', + '@/plugins/vue-moment', ], /* - ** Nuxt.js modules - */ + ** Nuxt.js modules + */ modules: [ // Doc: https://github.com/nuxt-community/axios-module#usage '@nuxtjs/axios' ], /* - ** Axios module configuration - */ + ** Axios module configuration + */ axios: { // See https://github.com/nuxt-community/axios-module#options }, /* - ** Build configuration - */ + ** Build configuration + */ build: { /* - ** You can extend webpack config here - */ - extend(config, ctx) { - // Run ESLint on save - if (ctx.isDev && ctx.isClient) { - config.module.rules.push({ + ** You can extend webpack config here + */ + extend(config, { + isDev, + isClient + }) { + if (isDev && isClient) { + config.module.rules.push(...[{ enforce: 'pre', test: /\.(js|vue)$/, loader: 'eslint-loader', exclude: /(node_modules)/ - }) + }, { + test: /\.(gif|png|jpe?g|svg)$/i, + use: [ + 'file-loader', + { + loader: 'image-webpack-loader', + options: { + bypassOnDebug: true, + mozjpeg: { + progressive: true, + quality: 65 + }, + // optipng.enabled: false will disable optipng + optipng: { + enabled: true, + }, + pngquant: { + quality: '65-90', + speed: 4 + }, + gifsicle: { + interlaced: false, + }, + // the webp option will enable WEBP + webp: { + quality: 75 + } + }, + }, + ], + }]) } } } diff --git a/package-lock.json b/package-lock.json index c27d338..5c905a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -821,6 +821,11 @@ "stack-trace": "0.0.10" } }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "http://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-0.7.0.tgz", + "integrity": "sha1-mgb08TfuhNffBGDB/bETX/psUP0=" + }, "@vue/component-compiler-utils": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.3.0.tgz", @@ -1120,6 +1125,14 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -1138,6 +1151,11 @@ "color-convert": "^1.9.0" } }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/ansi-wrap/download/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -1157,6 +1175,19 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "arch": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz", + "integrity": "sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=" + }, + "archive-type": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/archive-type/download/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "requires": { + "file-type": "^4.2.0" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -1180,11 +1211,21 @@ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, + "array-differ": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/array-differ/download/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" }, + "array-find-index": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1204,7 +1245,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, "requires": { "array-uniq": "^1.0.1" } @@ -1212,8 +1252,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { "version": "0.3.2", @@ -1271,6 +1310,11 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, + "async-each-series": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/async-each-series/download/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=" + }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -1323,6 +1367,7 @@ "version": "6.26.0", "resolved": "http://registry.npm.taobao.org/babel-cli/download/babel-cli-6.26.0.tgz", "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, "requires": { "babel-core": "^6.26.0", "babel-polyfill": "^6.26.0", @@ -1345,6 +1390,7 @@ "version": "1.3.2", "resolved": "http://registry.npm.taobao.org/anymatch/download/anymatch-1.3.2.tgz", "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "dev": true, "optional": true, "requires": { "micromatch": "^2.1.5", @@ -1355,6 +1401,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "optional": true, "requires": { "arr-flatten": "^1.0.1" @@ -1364,12 +1411,14 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true, "optional": true }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, "optional": true, "requires": { "expand-range": "^1.8.1", @@ -1381,6 +1430,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, "optional": true, "requires": { "anymatch": "^1.3.0", @@ -1398,6 +1448,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "optional": true, "requires": { "is-posix-bracket": "^0.1.0" @@ -1407,6 +1458,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, "optional": true, "requires": { "is-extglob": "^1.0.0" @@ -1416,6 +1468,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, "optional": true, "requires": { "is-glob": "^2.0.0" @@ -1424,12 +1477,14 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { "is-extglob": "^1.0.0" } @@ -1438,6 +1493,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "optional": true, "requires": { "is-buffer": "^1.1.5" @@ -1447,6 +1503,7 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, "optional": true, "requires": { "arr-diff": "^2.0.0", @@ -1522,6 +1579,7 @@ "version": "6.26.3", "resolved": "http://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz", "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", + "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-generator": "^6.26.0", @@ -1547,12 +1605,14 @@ "babylon": { "version": "6.18.0", "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=" + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "dev": true }, "debug": { "version": "2.6.9", "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, "requires": { "ms": "2.0.0" } @@ -1698,6 +1758,7 @@ "version": "6.26.1", "resolved": "http://registry.npm.taobao.org/babel-generator/download/babel-generator-6.26.1.tgz", "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", + "dev": true, "requires": { "babel-messages": "^6.23.0", "babel-runtime": "^6.26.0", @@ -1712,14 +1773,38 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true } } }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-helper-bindify-decorators/download/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-helper-builder-binary-assignment-operator-visitor/download/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1731,6 +1816,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.26.0", @@ -1738,10 +1824,34 @@ "lodash": "^4.17.4" } }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-helper-explode-assignable-expression/download/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-helper-explode-class/download/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, "requires": { "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1754,6 +1864,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1763,6 +1874,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1772,6 +1884,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1781,16 +1894,31 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-types": "^6.26.0", "lodash": "^4.17.4" } }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-helper-remap-async-to-generator/download/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, "requires": { "babel-helper-optimise-call-expression": "^6.24.1", "babel-messages": "^6.23.0", @@ -1809,6 +1937,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -1829,6 +1958,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1837,14 +1967,111 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-async-functions/download/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-async-generators/download/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-class-properties/download/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-decorators/download/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-dynamic-import/download/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-exponentiation-operator/download/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-object-rest-spread/download/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-trailing-function-commas/download/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-async-generator-functions/download/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-async-to-generator/download/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", "babel-runtime": "^6.22.0" } }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-class-properties/download/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-decorators/download/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1853,6 +2080,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1861,6 +2089,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-template": "^6.26.0", @@ -1873,6 +2102,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, "requires": { "babel-helper-define-map": "^6.24.1", "babel-helper-function-name": "^6.24.1", @@ -1889,6 +2119,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-template": "^6.24.1" @@ -1898,6 +2129,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1906,6 +2138,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -1915,6 +2148,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1923,6 +2157,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, "requires": { "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1933,6 +2168,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -1941,6 +2177,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, "requires": { "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1951,6 +2188,7 @@ "version": "6.26.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, "requires": { "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", @@ -1962,6 +2200,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, "requires": { "babel-helper-hoist-variables": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1972,6 +2211,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, "requires": { "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-runtime": "^6.22.0", @@ -1982,6 +2222,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, "requires": { "babel-helper-replace-supers": "^6.24.1", "babel-runtime": "^6.22.0" @@ -1991,6 +2232,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, "requires": { "babel-helper-call-delegate": "^6.24.1", "babel-helper-get-function-arity": "^6.24.1", @@ -2004,6 +2246,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -2013,6 +2256,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -2021,6 +2265,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -2031,6 +2276,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -2039,6 +2285,7 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, "requires": { "babel-runtime": "^6.22.0" } @@ -2047,6 +2294,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, "requires": { "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", @@ -2056,12 +2304,14 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, "requires": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", @@ -2071,22 +2321,46 @@ "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true }, "regjsparser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, "requires": { "jsesc": "~0.5.0" } } } }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-exponentiation-operator/download/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-object-rest-spread/download/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, "babel-plugin-transform-regenerator": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, "requires": { "regenerator-transform": "^0.10.0" }, @@ -2095,6 +2369,7 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, "requires": { "babel-runtime": "^6.18.0", "babel-types": "^6.19.0", @@ -2103,10 +2378,20 @@ } } }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-runtime/download/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, "requires": { "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" @@ -2124,6 +2409,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "core-js": "^2.5.0", @@ -2133,7 +2419,8 @@ "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true } } }, @@ -2141,6 +2428,7 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, "requires": { "babel-plugin-check-es2015-constants": "^6.22.0", "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", @@ -2168,10 +2456,36 @@ "babel-plugin-transform-regenerator": "^6.24.1" } }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-preset-stage-2/download/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "http://registry.npm.taobao.org/babel-preset-stage-3/download/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, "requires": { "babel-core": "^6.26.0", "babel-runtime": "^6.26.0", @@ -2186,6 +2500,7 @@ "version": "0.4.18", "resolved": "http://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz", "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "dev": true, "requires": { "source-map": "^0.5.6" } @@ -2205,6 +2520,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "babel-traverse": "^6.26.0", @@ -2216,7 +2532,8 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true } } }, @@ -2224,6 +2541,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, "requires": { "babel-code-frame": "^6.26.0", "babel-messages": "^6.23.0", @@ -2239,12 +2557,14 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -2252,7 +2572,8 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true } } }, @@ -2260,6 +2581,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -2270,7 +2592,8 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true } } }, @@ -2340,6 +2663,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, + "beeper": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/beeper/download/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" + }, "bfj": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz", @@ -2356,49 +2684,238 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" - }, - "bluebird": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", - "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==" + "bin-build": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/bin-build/download/bin-build-3.0.0.tgz", + "integrity": "sha1-xXgKJaip+WbYJEIX5sH1CCoUOGE=", + "requires": { + "decompress": "^4.0.0", + "download": "^6.2.2", + "execa": "^0.7.0", + "p-map-series": "^1.0.0", + "tempfile": "^2.0.0" + } }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "bin-check": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/bin-check/download/bin-check-4.1.0.tgz", + "integrity": "sha1-/ElZcL3Ii7HVo1/BfmXEoUn8Skk=", + "requires": { + "execa": "^0.7.0", + "executable": "^4.1.0" + } }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "bin-version": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/bin-version/download/bin-version-3.0.0.tgz", + "integrity": "sha1-GovgP2UhcXE7GxzMSw6+pGCwiBg=", "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" + "execa": "^1.0.0", + "find-versions": "^3.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" + "execa": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "get-stream": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "bin-version-check": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/bin-version-check/download/bin-version-check-4.0.0.tgz", + "integrity": "sha1-fYGcYklpkfgNiT5uAqMDI2Fgj3E=", + "requires": { + "bin-version": "^3.0.0", + "semver": "^5.6.0", + "semver-truncate": "^1.1.2" + } + }, + "bin-wrapper": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/bin-wrapper/download/bin-wrapper-4.1.0.tgz", + "integrity": "sha1-mTSPLPhQMePvfvzn5TAK6q6WBgU=", + "requires": { + "bin-check": "^4.1.0", + "bin-version-check": "^4.0.0", + "download": "^7.1.0", + "import-lazy": "^3.1.0", + "os-filter-obj": "^2.0.0", + "pify": "^4.0.1" + }, + "dependencies": { + "download": { + "version": "7.1.0", + "resolved": "http://registry.npm.taobao.org/download/download/download-7.1.0.tgz", + "integrity": "sha1-kFmqnXC1A+52oTKJe+beyOVYcjM=", + "requires": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "file-type": { + "version": "8.1.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-8.1.0.tgz", + "integrity": "sha1-JE87fvZBu+DMoZbHJ25LMyOZ9ow=" + }, + "got": { + "version": "8.3.2", + "resolved": "http://registry.npm.taobao.org/got/download/got-8.3.2.tgz", + "integrity": "sha1-HSP2Q5Dpf3dsrFLluTbl9RTS6Tc=", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "import-lazy": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/import-lazy/download/import-lazy-3.1.0.tgz", + "integrity": "sha1-iRJ5ICyKIoD9vWZ029jaGh38Z8w=" + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "http://registry.npm.taobao.org/p-cancelable/download/p-cancelable-0.4.1.tgz", + "integrity": "sha1-NfNj1n1SCByNlYXje8zrfgu8sqA=" + }, + "p-event": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/p-event/download/p-event-2.1.0.tgz", + "integrity": "sha1-dN5Hek5rOqgmckDHCZ54rFLLTbQ=", + "requires": { + "p-timeout": "^2.0.1" + } + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/p-timeout/download/p-timeout-2.0.1.tgz", + "integrity": "sha1-2N0ZeVldLcATnh/ka4tkbLPN8Dg=", + "requires": { + "p-finally": "^1.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + } + } + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" + }, + "bl": { + "version": "1.2.2", + "resolved": "http://registry.npm.taobao.org/bl/download/bl-1.2.2.tgz", + "integrity": "sha1-oWCRFxcQPAdBDO9j71Gzl8Alr5w=", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { "depd": "~1.1.2", @@ -2560,16 +3077,68 @@ "isarray": "^1.0.0" } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz", + "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "http://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/buffer-to-vinyl/download/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "requires": { + "file-type": "^3.1.0", + "readable-stream": "^2.0.2", + "uuid": "^2.0.1", + "vinyl": "^1.0.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "uuid": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + } + } + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -2637,6 +3206,50 @@ "schema-utils": "^0.4.2" } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "http://registry.npm.taobao.org/cacheable-request/download/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/normalize-url/download/normalize-url-2.0.1.tgz", + "integrity": "sha1-g1qdoVUfom9w6SMpBpojqmV01+Y=", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -2667,6 +3280,22 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -2686,8 +3315,18 @@ "capture-stack-trace": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + }, + "caw": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/caw/download/caw-2.0.1.tgz", + "integrity": "sha1-bDygcfwZRyCIPC3F2psHS/x+npU=", + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + } }, "chalk": { "version": "2.4.1", @@ -2813,6 +3452,24 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "clone": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/clone-response/download/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/clone-stats/download/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -2899,6 +3556,11 @@ "simple-swizzle": "^0.2.2" } }, + "color-support": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz", + "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=" + }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", @@ -2967,6 +3629,15 @@ "typedarray": "^0.0.6" } }, + "config-chain": { + "version": "1.1.12", + "resolved": "http://registry.npm.taobao.org/config-chain/download/config-chain-1.1.12.tgz", + "integrity": "sha1-D96NCRIA616AjK8l/mGMAvSOTvo=", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "configstore": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", @@ -3021,6 +3692,11 @@ "date-now": "^0.1.4" } }, + "console-stream": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/console-stream/download/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=" + }, "consolidate": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", @@ -3132,7 +3808,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, "requires": { "capture-stack-trace": "^1.0.0" } @@ -3442,102 +4117,782 @@ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" - }, - "d": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/d/download/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "http://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "requires": { - "object-keys": "^1.0.12" + "array-find-index": "^1.0.1" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "cwebp-bin": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/cwebp-bin/download/cwebp-bin-4.0.0.tgz", + "integrity": "sha1-7it/YzPTQm+1K7QF+m8uyLYolPQ=", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "bin-build": "^2.2.0", + "bin-wrapper": "^3.0.1", + "logalot": "^2.0.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "archive-type": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/archive-type/download/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", "requires": { - "kind-of": "^6.0.0" + "file-type": "^3.1.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "bin-build": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/bin-build/download/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", "requires": { - "kind-of": "^6.0.0" + "archive-type": "^3.0.1", + "decompress": "^3.0.0", + "download": "^4.1.2", + "exec-series": "^1.0.0", + "rimraf": "^2.2.6", + "tempfile": "^1.0.0", + "url-regex": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "bin-check": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/bin-check/download/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "requires": { + "executable": "^1.0.0" + } + }, + "bin-version": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/bin-version/download/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "requires": { + "find-versions": "^1.0.0" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/bin-version-check/download/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "requires": { + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/bin-wrapper/download/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "requires": { + "bin-check": "^2.0.0", + "bin-version-check": "^2.1.0", + "download": "^4.0.0", + "each-async": "^1.1.1", + "lazy-req": "^1.0.0", + "os-filter-obj": "^1.0.0" + } + }, + "caw": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/caw/download/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "requires": { + "get-proxy": "^1.0.1", + "is-obj": "^1.0.0", + "object-assign": "^3.0.0", + "tunnel-agent": "^0.4.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + } + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "clone": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "decompress": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/decompress/download/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "requires": { + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-tar/download/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "requires": { + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-tarbz2/download/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "requires": { + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-targz/download/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "requires": { + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "http://registry.npm.taobao.org/decompress-unzip/download/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "requires": { + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "download": { + "version": "4.4.3", + "resolved": "http://registry.npm.taobao.org/download/download/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "requires": { + "caw": "^1.0.1", + "concat-stream": "^1.4.7", + "each-async": "^1.0.0", + "filenamify": "^1.0.1", + "got": "^5.0.0", + "gulp-decompress": "^1.2.0", + "gulp-rename": "^1.2.0", + "is-url": "^1.2.0", + "object-assign": "^4.0.1", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.2", + "stream-combiner2": "^1.1.1", + "vinyl": "^1.0.0", + "vinyl-fs": "^2.2.0", + "ware": "^1.2.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "executable": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/executable/download/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "requires": { + "meow": "^3.1.0" + } + }, + "file-type": { + "version": "3.9.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=" + }, + "filenamify": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/filenamify/download/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/find-versions/download/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "requires": { + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" + } + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/get-proxy/download/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "requires": { + "rc": "^1.1.2" + } + }, + "got": { + "version": "5.7.1", + "resolved": "http://registry.npm.taobao.org/got/download/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/is-natural-number/download/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "object-assign": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/os-filter-obj/download/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "semver": { + "version": "4.3.6", + "resolved": "http://registry.npm.taobao.org/semver/download/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/semver-regex/download/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/strip-dirs/download/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "requires": { + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "tempfile": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/tempfile/download/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "timed-out": { + "version": "3.1.3", + "resolved": "http://registry.npm.taobao.org/timed-out/download/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/unzip-response/download/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" + }, + "uuid": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + }, + "vinyl": { + "version": "0.4.6", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, + "d": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/d/download/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "dateformat": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/dateformat/download/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress": { + "version": "4.2.0", + "resolved": "http://registry.npm.taobao.org/decompress/download/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "http://registry.npm.taobao.org/decompress-response/download/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/decompress-tar/download/decompress-tar-4.1.1.tgz", + "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/decompress-tarbz2/download/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-6.2.0.tgz", + "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/decompress-targz/download/decompress-targz-4.1.1.tgz", + "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/decompress-unzip/download/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3596,6 +4951,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, "requires": { "repeating": "^2.0.0" } @@ -3683,16 +5039,74 @@ "resolved": "http://registry.npm.taobao.org/double-ended-queue/download/double-ended-queue-2.1.0-0.tgz", "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" }, + "download": { + "version": "6.2.5", + "resolved": "http://registry.npm.taobao.org/download/download/download-6.2.5.tgz", + "integrity": "sha1-rNalQuTNC7Qspwz8mMnkOwcDlxQ=", + "requires": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + }, + "got": { + "version": "7.1.0", + "resolved": "http://registry.npm.taobao.org/got/download/got-7.1.0.tgz", + "integrity": "sha1-BUUP2ECU5rvqVvRRpDqcKJFmOFo=", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "duplexer": { "version": "0.1.1", "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, + "duplexer2": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "duplexify": { "version": "3.6.1", @@ -3705,6 +5119,22 @@ "stream-shift": "^1.0.0" } }, + "each-async": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/each-async/download/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "requires": { + "onetime": "^1.0.0", + "set-immediate-shim": "^1.0.0" + }, + "dependencies": { + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/onetime/download/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + } + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4224,11 +5654,38 @@ "safe-buffer": "^5.1.1" } }, + "exec-buffer": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/exec-buffer/download/exec-buffer-3.2.0.tgz", + "integrity": "sha1-sWhtvZBMfPmC5lLB9aebHlVzCCs=", + "requires": { + "execa": "^0.7.0", + "p-finally": "^1.0.0", + "pify": "^3.0.0", + "rimraf": "^2.5.4", + "tempfile": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/exec-series/download/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "requires": { + "async-each-series": "^1.1.0", + "object-assign": "^4.1.0" + } + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, "requires": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -4243,7 +5700,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -4252,6 +5708,21 @@ } } }, + "executable": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/executable/download/executable-4.1.1.tgz", + "integrity": "sha1-QVMr/zYdPlevTXY7cFgtsY9dEzw=", + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, "exit-hook": { "version": "1.1.1", "resolved": "http://registry.npm.taobao.org/exit-hook/download/exit-hook-1.1.1.tgz", @@ -4302,7 +5773,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "optional": true, "requires": { "fill-range": "^2.1.0" }, @@ -4311,7 +5781,6 @@ "version": "2.2.4", "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-2.2.4.tgz", "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=", - "optional": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", @@ -4324,7 +5793,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "optional": true, "requires": { "kind-of": "^3.0.2" } @@ -4333,7 +5801,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "optional": true, "requires": { "isarray": "1.0.0" } @@ -4342,7 +5809,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -4415,6 +5881,28 @@ } } }, + "ext-list": { + "version": "2.2.2", + "resolved": "http://registry.npm.taobao.org/ext-list/download/ext-list-2.2.2.tgz", + "integrity": "sha1-C5jmTtgvWs8PKTG6v2khLvUt3Tc=", + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "http://registry.npm.taobao.org/ext-name/download/ext-name-5.0.0.tgz", + "integrity": "sha1-cHgZgdGD7hXROZPIgiBFxQbI8KY=", + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -4493,6 +5981,16 @@ } } }, + "fancy-log": { + "version": "1.3.2", + "resolved": "http://registry.npm.taobao.org/fancy-log/download/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -4514,6 +6012,14 @@ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -4539,8 +6045,8 @@ }, "file-loader": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", - "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "resolved": "http://registry.npm.taobao.org/file-loader/download/file-loader-2.0.0.tgz", + "integrity": "sha1-OXScgvAguehZAdz/mOgATmQBz94=", "requires": { "loader-utils": "^1.0.2", "schema-utils": "^1.0.0" @@ -4548,8 +6054,8 @@ "dependencies": { "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "resolved": "http://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", "requires": { "ajv": "^6.1.0", "ajv-errors": "^1.0.0", @@ -4558,11 +6064,30 @@ } } }, + "file-type": { + "version": "4.4.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "optional": true + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" + }, + "filenamify": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/filenamify/download/filenamify-2.1.0.tgz", + "integrity": "sha1-iPr0lfsbR6v9YSMAACoWIoxnfuk=", + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } }, "filesize": { "version": "3.6.1", @@ -4637,6 +6162,27 @@ "locate-path": "^2.0.0" } }, + "find-versions": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/find-versions/download/find-versions-3.0.0.tgz", + "integrity": "sha1-LAWoboOcJJEBkQEAs1QZZ4WiwGU=", + "requires": { + "array-uniq": "^2.0.0", + "semver-regex": "^2.0.0" + }, + "dependencies": { + "array-uniq": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/array-uniq/download/array-uniq-2.0.0.tgz", + "integrity": "sha1-AAnjAwbjem3S4uJIDbUxb9reFYM=" + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, "flat-cache": { "version": "1.3.2", "resolved": "http://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.2.tgz", @@ -4686,7 +6232,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "optional": true, "requires": { "for-in": "^1.0.1" } @@ -4724,6 +6269,11 @@ "readable-stream": "^2.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz", + "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=" + }, "fs-extra": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz", @@ -4737,7 +6287,8 @@ "fs-readdir-recursive": { "version": "1.1.0", "resolved": "http://registry.npm.taobao.org/fs-readdir-recursive/download/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha1-4y/AMKLM7kSmtTcTCNpUvgs5fSc=" + "integrity": "sha1-4y/AMKLM7kSmtTcTCNpUvgs5fSc=", + "dev": true }, "fs-write-stream-atomic": { "version": "1.0.10", @@ -4770,626 +6321,1180 @@ "bundled": true, "optional": true }, - "ansi-regex": { - "version": "2.1.1", + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", "bundled": true }, - "aproba": { - "version": "1.2.0", + "ini": { + "version": "1.3.5", "bundled": true, "optional": true }, - "are-we-there-yet": { - "version": "1.1.4", + "is-fullwidth-code-point": { + "version": "1.0.0", "bundled": true, - "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "number-is-nan": "^1.0.0" } }, - "balanced-match": { + "isarray": { "version": "1.0.0", "bundled": true, "optional": true }, - "brace-expansion": { - "version": "1.1.11", + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", "bundled": true, "optional": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "minipass": "^2.2.1" } }, - "chownr": { + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", "bundled": true, "optional": true }, - "code-point-at": { - "version": "1.1.0", + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", "bundled": true, "optional": true }, - "concat-map": { - "version": "0.0.1", + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", "bundled": true, "optional": true }, - "console-control-strings": { - "version": "1.1.0", + "rc": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", "bundled": true, "optional": true }, - "core-util-is": { - "version": "1.0.2", + "sax": { + "version": "1.2.4", "bundled": true, "optional": true }, - "debug": { - "version": "2.6.9", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", + "semver": { + "version": "5.5.0", "bundled": true, "optional": true }, - "delegates": { - "version": "1.0.0", + "set-blocking": { + "version": "2.0.0", "bundled": true, "optional": true }, - "detect-libc": { - "version": "1.0.3", + "signal-exit": { + "version": "3.0.2", "bundled": true, "optional": true }, - "fs-minipass": { - "version": "1.2.5", + "string-width": { + "version": "1.0.2", "bundled": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", + "string_decoder": { + "version": "1.1.1", "bundled": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "safe-buffer": "~5.1.0" } }, - "glob": { - "version": "7.1.2", + "strip-ansi": { + "version": "3.0.1", "bundled": true, - "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ansi-regex": "^2.0.0" } }, - "has-unicode": { + "strip-json-comments": { "version": "2.0.1", "bundled": true, "optional": true }, - "iconv-lite": { - "version": "0.4.21", + "tar": { + "version": "4.4.1", "bundled": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, - "ignore-walk": { - "version": "3.0.1", + "util-deprecate": { + "version": "1.0.2", "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } + "optional": true }, - "inflight": { - "version": "1.0.6", + "wide-align": { + "version": "1.1.2", "bundled": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "string-width": "^1.0.2" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true + "wrappy": { + "version": "1.0.2", + "bundled": true }, - "is-fullwidth-code-point": { + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "generate-function": { + "version": "2.3.1", + "resolved": "http://registry.npm.taobao.org/generate-function/download/generate-function-2.3.1.tgz", + "integrity": "sha1-8GlhdpDBDIaOc7hGV0Z2T5fDR58=", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-proxy": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/get-proxy/download/get-proxy-2.1.0.tgz", + "integrity": "sha1-NJ8rTZHUTE1NTpy6KtkBQ/rF75M=", + "requires": { + "npm-conf": "^1.1.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "gifsicle": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/gifsicle/download/gifsicle-4.0.1.tgz", + "integrity": "sha1-MOHmHj7kiE73AmQbLpihXCEnsuI=", + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0", + "execa": "^1.0.0", + "logalot": "^2.0.0" + }, + "dependencies": { + "execa": { "version": "1.0.0", - "bundled": true, - "optional": true, + "resolved": "http://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", "requires": { - "number-is-nan": "^1.0.0" + "pump": "^3.0.0" + } + } + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" } }, - "isarray": { + "is-extglob": { "version": "1.0.0", - "bundled": true, - "optional": true + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": true, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "brace-expansion": "^1.1.7" + "is-extglob": "^1.0.0" } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "optional": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "optional": true, + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" + "is-extglob": "^2.1.0" } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "optional": true, + } + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "http://registry.npm.taobao.org/glob-stream/download/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "minipass": "^2.2.1" + "arr-flatten": "^1.0.1" } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "optional": true, + "array-unique": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "http://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "minimist": "0.0.8" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "optional": true, + "expand-brackets": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "is-posix-bracket": "^0.1.0" } }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "optional": true, + "extglob": { + "version": "0.3.2", + "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "is-extglob": "^1.0.0" } }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, + "glob": { + "version": "5.0.15", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "optional": true + "is-extglob": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "optional": true, + "is-glob": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "is-extglob": "^1.0.0" } }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "is-buffer": "^1.1.5" } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, + "micromatch": { + "version": "2.3.11", + "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "wrappy": "1" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } + } + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" + }, + "globby": { + "version": "6.1.0", + "resolved": "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/glogg/download/glogg-1.0.1.tgz", + "integrity": "sha1-3PdY5EeJzD89MsHzVio2duajSBA=", + "requires": { + "sparkles": "^1.0.0" + } + }, + "got": { + "version": "6.7.1", + "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/graceful-readlink/download/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/gulp-decompress/download/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "requires": { + "archive-type": "^3.0.0", + "decompress": "^3.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "rc": { - "version": "1.2.7", - "bundled": true, - "optional": true, + "archive-type": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/archive-type/download/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } + "file-type": "^3.1.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, + "clone": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "decompress": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/decompress/download/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" } }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "optional": true, + "decompress-tar": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-tar/download/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", "requires": { - "glob": "^7.0.5" + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" } }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-tarbz2/download/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "requires": { + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + } }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true + "decompress-targz": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-targz/download/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "requires": { + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "http://registry.npm.taobao.org/decompress-unzip/download/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "requires": { + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "through2": { + "version": "2.0.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true + "file-type": { + "version": "3.9.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" }, - "semver": { - "version": "5.5.0", - "bundled": true, - "optional": true + "is-natural-number": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/is-natural-number/download/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=" }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true + "object-assign": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "replace-ext": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" }, "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } + "version": "0.10.31", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "optional": true, + "strip-dirs": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/strip-dirs/download/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "requires": { - "string-width": "^1.0.2" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } } }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true + "vinyl": { + "version": "0.4.6", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "generate-function": { - "version": "2.3.1", - "resolved": "http://registry.npm.taobao.org/generate-function/download/generate-function-2.3.1.tgz", - "integrity": "sha1-8GlhdpDBDIaOc7hGV0Z2T5fDR58=", - "dev": true, - "requires": { - "is-property": "^1.0.2" - } - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "gulp-rename": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/gulp-rename/download/gulp-rename-1.4.0.tgz", + "integrity": "sha1-3hxxjnxAla6GH3KW708ySGSCQL0=" }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "optional": true, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "http://registry.npm.taobao.org/gulp-sourcemaps/download/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" }, "dependencies": { - "glob-parent": { + "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "optional": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-extglob": "^1.0.0" + "is-utf8": "^0.2.0" } } } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "gulp-util": { + "version": "3.0.8", + "resolved": "http://registry.npm.taobao.org/gulp-util/download/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "http://registry.npm.taobao.org/lodash.template/download/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "http://registry.npm.taobao.org/lodash.templatesettings/download/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "object-assign": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "is-extglob": "^2.1.0" + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "vinyl": { + "version": "0.5.3", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" } } } }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", - "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" - }, - "globby": { - "version": "6.1.0", - "resolved": "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "got": { - "version": "6.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, + "gulplog": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/gulplog/download/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "glogg": "^1.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, "gzip-size": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", @@ -5434,11 +7539,32 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/has-gulplog/download/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "http://registry.npm.taobao.org/has-symbol-support-x/download/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha1-FAn5i8ACR9pF2mfO4KNvKC/yZFU=" + }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "http://registry.npm.taobao.org/has-to-string-tag-x/download/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha1-oEWrOD17SyASoAFIqwql8pAETU0=", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5515,6 +7641,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" @@ -5525,6 +7652,11 @@ "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "http://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.7.1.tgz", + "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc=" + }, "hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", @@ -5637,6 +7769,11 @@ "http-errors": "~1.7.1" } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "http://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-3.8.1.tgz", + "integrity": "sha1-ObDhat2bYFvwqe89nar0hDtMrNI=" + }, "http-errors": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.1.tgz", @@ -5735,6 +7872,142 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "image-webpack-loader": { + "version": "4.5.0", + "resolved": "http://registry.npm.taobao.org/image-webpack-loader/download/image-webpack-loader-4.5.0.tgz", + "integrity": "sha1-qw2kMCpY8r96LrYvFmyCxkle/o0=", + "requires": { + "imagemin": "^5.3.1", + "imagemin-gifsicle": "^6.0.0", + "imagemin-mozjpeg": "^8.0.0", + "imagemin-optipng": "^6.0.0", + "imagemin-pngquant": "^6.0.0", + "imagemin-svgo": "^7.0.0", + "imagemin-webp": "^4.1.0", + "loader-utils": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "imagemin": { + "version": "5.3.1", + "resolved": "http://registry.npm.taobao.org/imagemin/download/imagemin-5.3.1.tgz", + "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", + "requires": { + "file-type": "^4.1.0", + "globby": "^6.1.0", + "make-dir": "^1.0.0", + "p-pipe": "^1.1.0", + "pify": "^2.3.0", + "replace-ext": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "imagemin-gifsicle": { + "version": "6.0.1", + "resolved": "http://registry.npm.taobao.org/imagemin-gifsicle/download/imagemin-gifsicle-6.0.1.tgz", + "integrity": "sha1-arrU6VVm1S5aEEq6HCS087SFgbM=", + "requires": { + "exec-buffer": "^3.0.0", + "gifsicle": "^4.0.0", + "is-gif": "^3.0.0" + } + }, + "imagemin-mozjpeg": { + "version": "8.0.0", + "resolved": "http://registry.npm.taobao.org/imagemin-mozjpeg/download/imagemin-mozjpeg-8.0.0.tgz", + "integrity": "sha1-0spOjJgsfG7aVQaa+J3uTBzrzf0=", + "requires": { + "execa": "^1.0.0", + "is-jpg": "^2.0.0", + "mozjpeg": "^6.0.0" + }, + "dependencies": { + "execa": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "imagemin-optipng": { + "version": "6.0.0", + "resolved": "http://registry.npm.taobao.org/imagemin-optipng/download/imagemin-optipng-6.0.0.tgz", + "integrity": "sha1-pr/HtUL8CPxofoPfsTEkkXmlGmg=", + "requires": { + "exec-buffer": "^3.0.0", + "is-png": "^1.0.0", + "optipng-bin": "^5.0.0" + } + }, + "imagemin-pngquant": { + "version": "6.0.0", + "resolved": "http://registry.npm.taobao.org/imagemin-pngquant/download/imagemin-pngquant-6.0.0.tgz", + "integrity": "sha1-fAyVYzj6mjpTXetjlzwciUUZzHg=", + "requires": { + "execa": "^0.10.0", + "is-png": "^1.0.0", + "is-stream": "^1.1.0", + "pngquant-bin": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "0.10.0", + "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.10.0.tgz", + "integrity": "sha1-/0Vqj1P5D47MxxqW0Rvfx/CCy1A=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "imagemin-svgo": { + "version": "7.0.0", + "resolved": "http://registry.npm.taobao.org/imagemin-svgo/download/imagemin-svgo-7.0.0.tgz", + "integrity": "sha1-oi0KWReg0PN+Q2kyww9eAA+pGxw=", + "requires": { + "is-svg": "^3.0.0", + "svgo": "^1.0.5" + } + }, + "imagemin-webp": { + "version": "4.1.0", + "resolved": "http://registry.npm.taobao.org/imagemin-webp/download/imagemin-webp-4.1.0.tgz", + "integrity": "sha1-7/0AFg2EVrlcveX9JsMtZLAxgGI=", + "requires": { + "cwebp-bin": "^4.0.0", + "exec-buffer": "^3.0.0", + "is-cwebp-readable": "^2.0.1" + } + }, "import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -5762,6 +8035,14 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "indent-string": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -5794,8 +8075,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { "version": "0.12.0", @@ -5927,6 +8207,15 @@ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/into-stream/download/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -5940,11 +8229,24 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, + "ip-regex": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/ip-regex/download/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=" + }, "ipaddr.js": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" }, + "is-absolute": { + "version": "0.1.7", + "resolved": "http://registry.npm.taobao.org/is-absolute/download/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "requires": { + "is-relative": "^0.1.0" + } + }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -5986,6 +8288,19 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-builtin-module/download/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-bzip2/download/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=" + }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", @@ -6012,6 +8327,14 @@ "rgba-regex": "^1.0.0" } }, + "is-cwebp-readable": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/is-cwebp-readable/download/is-cwebp-readable-2.0.1.tgz", + "integrity": "sha1-r7k7DAq9CiUQEBauM66ort+SbSY=", + "requires": { + "file-type": "^4.3.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -6060,14 +8383,12 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "optional": true + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "optional": true, "requires": { "is-primitive": "^2.0.0" } @@ -6100,6 +8421,21 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==" }, + "is-gif": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/is-gif/download/is-gif-3.0.0.tgz", + "integrity": "sha1-xL5gsmowHWlbuDOyDZtdZsbPg7E=", + "requires": { + "file-type": "^10.4.0" + }, + "dependencies": { + "file-type": { + "version": "10.4.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-10.4.0.tgz", + "integrity": "sha1-5zDpP/3zCZLAt9OPwvFcQ3E1PUQ=" + } + } + }, "is-glob": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", @@ -6108,6 +8444,11 @@ "is-extglob": "^2.1.1" } }, + "is-gzip": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-gzip/download/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=" + }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", @@ -6118,6 +8459,11 @@ "is-path-inside": "^1.0.0" } }, + "is-jpg": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/is-jpg/download/is-jpg-2.0.0.tgz", + "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=" + }, "is-my-ip-valid": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/is-my-ip-valid/download/is-my-ip-valid-1.0.0.tgz", @@ -6137,6 +8483,11 @@ "xtend": "^4.0.0" } }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/is-natural-number/download/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -6166,6 +8517,11 @@ "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, + "is-object": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-object/download/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -6190,6 +8546,11 @@ "path-is-inside": "^1.0.1" } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -6198,17 +8559,20 @@ "isobject": "^3.0.1" } }, + "is-png": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/is-png/download/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=" + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "optional": true + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "optional": true + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, "is-promise": { "version": "2.1.0", @@ -6224,8 +8588,7 @@ "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" }, "is-regex": { "version": "1.0.4", @@ -6235,6 +8598,11 @@ "has": "^1.0.1" } }, + "is-relative": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/is-relative/download/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=" + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -6248,8 +8616,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-svg": { "version": "3.0.0", @@ -6267,11 +8634,36 @@ "has-symbols": "^1.0.0" } }, + "is-tar": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-tar/download/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=" + }, + "is-url": { + "version": "1.2.4", + "resolved": "http://registry.npm.taobao.org/is-url/download/is-url-1.2.4.tgz", + "integrity": "sha1-BKTfRtKMTP89c9Af8Gq+sxihqlI=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/is-valid-glob/download/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, + "is-zip": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-zip/download/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6287,6 +8679,15 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isurl": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isurl/download/isurl-1.0.0.tgz", + "integrity": "sha1-sn9PSfPNqj6kSgpbfzRi5u3DnWc=", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "js-levenshtein": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", @@ -6311,6 +8712,11 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -6325,7 +8731,6 @@ "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, "requires": { "jsonify": "~0.0.0" } @@ -6369,6 +8774,14 @@ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz", "integrity": "sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==" }, + "keyv": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/keyv/download/keyv-3.0.0.tgz", + "integrity": "sha1-RJI7o55osSp87H32wyaMAx8u83M=", + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -6554,6 +8967,19 @@ "launch-editor": "^2.2.1" } }, + "lazy-req": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/lazy-req/download/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=" + }, + "lazystream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/lazystream/download/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -6564,6 +8990,41 @@ "type-check": "~0.3.2" } }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "loader-fs-cache": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", @@ -6639,16 +9100,56 @@ "path-exists": "^3.0.0" } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/lodash._basecopy/download/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/lodash._basetostring/download/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/lodash._basevalues/download/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "http://registry.npm.taobao.org/lodash._getnative/download/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "http://registry.npm.taobao.org/lodash._isiterateecall/download/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/lodash._reescape/download/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/lodash._reevaluate/download/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, + "lodash._root": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/lodash._root/download/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -6659,21 +9160,59 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/lodash.escape/download/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "requires": { + "lodash._root": "^3.0.0" + } + }, "lodash.get": { "version": "4.4.2", "resolved": "http://registry.npm.taobao.org/lodash.get/download/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/lodash.isarray/download/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "http://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "http://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "http://registry.npm.taobao.org/lodash.restparam/download/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, "lodash.template": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", @@ -6706,6 +9245,31 @@ "wrap-ansi": "^3.0.1" } }, + "logalot": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/logalot/download/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "requires": { + "figures": "^1.3.5", + "squeak": "^1.0.0" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "http://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6714,6 +9278,15 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "http://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -6722,8 +9295,18 @@ "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/lpad-align/download/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "requires": { + "get-stdin": "^4.0.1", + "indent-string": "^2.1.0", + "longest": "^1.0.0", + "meow": "^3.3.0" + } }, "lru-cache": { "version": "4.1.3", @@ -6754,6 +9337,11 @@ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, + "map-obj": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, "map-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", @@ -6771,8 +9359,7 @@ "math-random": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "optional": true + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" }, "md5.js": { "version": "1.3.5", @@ -6809,6 +9396,23 @@ "integrity": "sha1-kwiRXg6XKEn++65vi8ldazUOc0Q=", "optional": true }, + "meow": { + "version": "3.7.0", + "resolved": "http://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -6829,6 +9433,14 @@ } } }, + "merge-stream": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "^2.0.1" + } + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6886,6 +9498,11 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, + "mimic-response": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/mimic-response/download/mimic-response-1.0.1.tgz", + "integrity": "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=" + }, "mini-css-extract-plugin": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz", @@ -6982,6 +9599,12 @@ } } }, + "moment": { + "version": "2.22.2", + "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", + "dev": true + }, "mongodb": { "version": "3.1.8", "resolved": "http://registry.npm.taobao.org/mongodb/download/mongodb-3.1.8.tgz", @@ -7040,6 +9663,16 @@ "run-queue": "^1.0.3" } }, + "mozjpeg": { + "version": "6.0.1", + "resolved": "http://registry.npm.taobao.org/mozjpeg/download/mozjpeg-6.0.1.tgz", + "integrity": "sha1-Vpad3bV0HvK8sa8GbK4h5hqRons=", + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0", + "logalot": "^2.1.0" + } + }, "mpath": { "version": "0.5.1", "resolved": "http://registry.npm.taobao.org/mpath/download/mpath-0.5.1.tgz", @@ -7069,6 +9702,45 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multipipe": { + "version": "0.1.2", + "resolved": "http://registry.npm.taobao.org/multipipe/download/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "requires": { + "readable-stream": "~1.1.9" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "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": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "mustache": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", @@ -7189,6 +9861,11 @@ "semver": "^5.3.0" } }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/node-status-codes/download/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" + }, "nodemailer": { "version": "4.6.8", "resolved": "http://registry.npm.taobao.org/nodemailer/download/nodemailer-4.6.8.tgz", @@ -7221,6 +9898,17 @@ "abbrev": "1" } }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", @@ -7244,11 +9932,26 @@ "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" }, + "npm-conf": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/npm-conf/download/npm-conf-1.1.3.tgz", + "integrity": "sha1-JWzEe9DiGMJZxOlVC/QTvCGSr/k=", + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { "path-key": "^2.0.0" } @@ -7433,7 +10136,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "optional": true, "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" @@ -7520,15 +10222,43 @@ "wordwrap": "~1.0.0" } }, + "optipng-bin": { + "version": "5.0.0", + "resolved": "http://registry.npm.taobao.org/optipng-bin/download/optipng-bin-5.0.0.tgz", + "integrity": "sha1-Lq3vnlDAllvLkQfM+u34Vg0Ni5M=", + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.0", + "logalot": "^2.0.0" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "os-filter-obj": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/os-filter-obj/download/os-filter-obj-2.0.0.tgz", + "integrity": "sha1-HAti1fOiRCdJotE55t3e5ugdjRY=", + "requires": { + "arch": "^2.1.0" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true }, "os-tmpdir": { "version": "1.0.2", @@ -7539,17 +10269,35 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, "requires": { "graceful-fs": "^4.1.4", "mkdirp": "^0.5.1", "object-assign": "^4.1.0" } }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/p-cancelable/download/p-cancelable-0.3.0.tgz", + "integrity": "sha1-ueEjgAvOu3rBOkeb4ZW1B7mNMPo=" + }, + "p-event": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/p-event/download/p-event-1.3.0.tgz", + "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "requires": { + "p-timeout": "^1.1.1" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/p-is-promise/download/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-limit": { "version": "1.3.0", @@ -7573,6 +10321,32 @@ "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", "dev": true }, + "p-map-series": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/p-map-series/download/p-map-series-1.0.0.tgz", + "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/p-pipe/download/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=" + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/p-reduce/download/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/p-timeout/download/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -7629,7 +10403,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "optional": true, "requires": { "glob-base": "^0.3.0", "is-dotfile": "^1.0.0", @@ -7646,7 +10419,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "optional": true, "requires": { "is-extglob": "^1.0.0" } @@ -7735,6 +10507,23 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "path-type": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, "pause": { "version": "0.0.1", "resolved": "http://registry.npm.taobao.org/pause/download/pause-0.0.1.tgz", @@ -7761,6 +10550,11 @@ "sha.js": "^2.4.8" } }, + "pend": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -7769,14 +10563,12 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, "requires": { "pinkie": "^2.0.0" } @@ -7795,6 +10587,33 @@ "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", "dev": true }, + "pngquant-bin": { + "version": "5.0.1", + "resolved": "http://registry.npm.taobao.org/pngquant-bin/download/pngquant-bin-5.0.1.tgz", + "integrity": "sha1-jgO3v6KY3H52H+sltKnWgniC6pw=", + "requires": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.1", + "execa": "^0.10.0", + "logalot": "^2.0.0" + }, + "dependencies": { + "execa": { + "version": "0.10.0", + "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.10.0.tgz", + "integrity": "sha1-/0Vqj1P5D47MxxqW0Rvfx/CCy1A=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -8620,14 +11439,12 @@ "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "optional": true + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { "version": "1.13.7", @@ -8674,6 +11491,11 @@ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, + "proto-list": { + "version": "1.2.4", + "resolved": "http://registry.npm.taobao.org/proto-list/download/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -8769,6 +11591,16 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "query-string": { + "version": "5.1.1", + "resolved": "http://registry.npm.taobao.org/query-string/download/query-string-5.1.1.tgz", + "integrity": "sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s=", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -8788,7 +11620,6 @@ "version": "3.1.1", "resolved": "http://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz", "integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=", - "optional": true, "requires": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -8798,8 +11629,7 @@ "is-number": { "version": "4.0.0", "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz", - "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", - "optional": true + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=" } } }, @@ -8853,7 +11683,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8861,6 +11690,15 @@ "strip-json-comments": "~2.0.1" } }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/read-all-stream/download/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -8876,6 +11714,44 @@ } } }, + "read-pkg": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, "readable-stream": { "version": "2.3.6", "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -8931,6 +11807,15 @@ "resolve": "^1.1.6" } }, + "redent": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, "redis": { "version": "2.8.0", "resolved": "http://registry.npm.taobao.org/redis/download/redis-2.8.0.tgz", @@ -8981,7 +11866,6 @@ "version": "0.4.4", "resolved": "http://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz", "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", - "optional": true, "requires": { "is-equal-shallow": "^0.1.3" } @@ -9127,6 +12011,11 @@ "is-finite": "^1.0.0" } }, + "replace-ext": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -9194,6 +12083,14 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, + "responselike": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/responselike/download/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -9299,6 +12196,24 @@ "ajv-keywords": "^3.1.0" } }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "http://registry.npm.taobao.org/seek-bzip/download/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "requires": { + "commander": "~2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -9313,6 +12228,19 @@ "semver": "^5.0.3" } }, + "semver-regex": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/semver-regex/download/semver-regex-2.0.0.tgz", + "integrity": "sha1-qTwsWERTmncCMzeRB7OMe0rJ0zg=" + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/semver-truncate/download/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "requires": { + "semver": "^5.3.0" + } + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -9385,6 +12313,11 @@ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=" }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/set-immediate-shim/download/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -9483,7 +12416,8 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true }, "slice-ansi": { "version": "1.0.0", @@ -9603,6 +12537,22 @@ } } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/sort-keys-length/download/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "requires": { + "sort-keys": "^1.0.0" + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -9646,6 +12596,11 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, + "sparkles": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/sparkles/download/sparkles-1.0.1.tgz", + "integrity": "sha1-AI22XtzmxQ7sDF4ijhlFBh3QQ3w=" + }, "sparse-bitfield": { "version": "3.0.3", "resolved": "http://registry.npm.taobao.org/sparse-bitfield/download/sparse-bitfield-3.0.3.tgz", @@ -9655,6 +12610,34 @@ "memory-pager": "^1.0.2" } }, + "spdx-correct": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.0.2.tgz", + "integrity": "sha1-GbtAnpG0exrVQVkkP3MSqFjbPC4=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.2.tgz", + "integrity": "sha1-pZ78CXhMKlutoTz+r1x13SFARNI=" + }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", @@ -9677,6 +12660,53 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "squeak": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/squeak/download/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "requires": { + "chalk": "^1.0.0", + "console-stream": "^0.1.1", + "lpad-align": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, "ssri": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", @@ -9700,6 +12730,11 @@ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" }, + "stat-mode": { + "version": "0.2.2", + "resolved": "http://registry.npm.taobao.org/stat-mode/download/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=" + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -9751,6 +12786,15 @@ "through": "~2.3.4" } }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/stream-combiner2/download/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -9786,6 +12830,11 @@ "readable-stream": "2" } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -9817,17 +12866,58 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom-stream/download/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/strip-dirs/download/strip-dirs-2.1.0.tgz", + "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", + "requires": { + "is-natural-number": "^4.0.1" + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/strip-outer/download/strip-outer-1.0.1.tgz", + "integrity": "sha1-sv0qv2YEudHmATBXGV34Nrip1jE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } }, "style-resources-loader": { "version": "1.2.1", @@ -9863,6 +12953,51 @@ } } }, + "sum-up": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/sum-up/download/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "requires": { + "chalk": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -9910,6 +13045,34 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==" }, + "tar-stream": { + "version": "1.6.2", + "resolved": "http://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz", + "integrity": "sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/temp-dir/download/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + }, + "tempfile": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/tempfile/download/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -10048,8 +13211,7 @@ "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { "version": "2.0.3", @@ -10060,16 +13222,29 @@ "xtend": "~4.0.1" } }, + "through2-filter": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/through2-filter/download/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, "time-fix-plugin": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/time-fix-plugin/-/time-fix-plugin-2.0.4.tgz", "integrity": "sha512-AXKqo4NI2ZrRAnO+9OYn8LwV3rwLiJHlEn9S1Ov86+i0RI4p6nR/uVjNasozJMTLs7fq/TWgPSsa7nI/kbV4UQ==" }, + "time-stamp": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/time-stamp/download/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { "version": "2.0.10", @@ -10084,11 +13259,34 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/to-absolute-glob/download/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "requires": { + "extend-shallow": "^2.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, + "to-buffer": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/to-buffer/download/to-buffer-1.1.1.tgz", + "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=" + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -10151,6 +13349,19 @@ "nopt": "~1.0.10" } }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/trim-repeated/download/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -10171,6 +13382,14 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -10308,6 +13527,32 @@ "random-bytes": "~1.0.0" } }, + "unbzip2-stream": { + "version": "1.3.1", + "resolved": "http://registry.npm.taobao.org/unbzip2-stream/download/unbzip2-stream-1.3.1.tgz", + "integrity": "sha1-eFTaUWIqfmNiQiEZY1eAO1UpZqE=", + "requires": { + "buffer": "^3.0.1", + "through": "^2.3.6" + }, + "dependencies": { + "base64-js": { + "version": "0.0.8", + "resolved": "http://registry.npm.taobao.org/base64-js/download/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=" + }, + "buffer": { + "version": "3.6.0", + "resolved": "http://registry.npm.taobao.org/buffer/download/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "requires": { + "base64-js": "0.0.8", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + } + } + }, "undefsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", @@ -10410,6 +13655,15 @@ "imurmurhash": "^0.1.4" } }, + "unique-stream": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/unique-stream/download/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -10564,11 +13818,23 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, "requires": { "prepend-http": "^1.0.1" } }, + "url-regex": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/url-regex/download/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "requires": { + "ip-regex": "^1.0.1" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/url-to-options/download/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -10577,7 +13843,8 @@ "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true }, "util": { "version": "0.10.4", @@ -10620,10 +13887,25 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, "requires": { "user-home": "^1.1.1" } }, + "vali-date": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/vali-date/download/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -10634,6 +13916,66 @@ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, + "dependencies": { + "replace-ext": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + } + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/vinyl-assign/download/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "requires": { + "object-assign": "^4.0.1", + "readable-stream": "^2.0.0" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "http://registry.npm.taobao.org/vinyl-fs/download/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -10734,6 +14076,16 @@ } } }, + "vue-moment-lib": { + "version": "1.2.2", + "resolved": "http://registry.npm.taobao.org/vue-moment-lib/download/vue-moment-lib-1.2.2.tgz", + "integrity": "sha1-ywu9tE0raMQkNzm+GQlVDzS/FMQ=", + "dev": true, + "requires": { + "moment": "^2.22.2", + "vue": "^2.5.16" + } + }, "vue-no-ssr": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/vue-no-ssr/-/vue-no-ssr-1.0.0.tgz", @@ -10829,6 +14181,14 @@ "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz", "integrity": "sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w==" }, + "ware": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/ware/download/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "requires": { + "wrap-fn": "^0.1.0" + } + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -11044,6 +14404,21 @@ "strip-ansi": "^4.0.0" } }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/wrap-fn/download/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "requires": { + "co": "3.1.0" + }, + "dependencies": { + "co": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/co/download/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -11106,6 +14481,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, + "yauzl": { + "version": "2.10.0", + "resolved": "http://registry.npm.taobao.org/yauzl/download/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "ylru": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", diff --git a/package.json b/package.json index a37b1c3..b888569 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "author": "Yuan-github", "private": true, "scripts": { - "dev": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", + "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node", "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 --name zxsz start dist/index.js", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production node dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" @@ -19,6 +19,8 @@ "axios": "^0.18.0", "cross-env": "^5.2.0", "element-ui": "^2.4.6", + "file-loader": "^2.0.0", + "image-webpack-loader": "^4.5.0", "koa": "^2.5.2", "koa-bodyparser": "^4.2.1", "koa-generic-session": "^2.0.1", @@ -32,14 +34,15 @@ "passport-local": "^1.0.0" }, "devDependencies": { + "babel-cli": "^6.26.0", "babel-eslint": "^8.2.1", "babel-plugin-transform-runtime": "^6.23.0", - "babel-cli": "^6.26.0", "babel-preset-es2015": "^6.24.1", "babel-preset-stage-2": "^6.24.1", "eslint": "^3.18.0", "eslint-loader": "^2.0.0", "eslint-plugin-vue": "^4.0.0", - "nodemon": "^1.11.0" + "nodemon": "^1.11.0", + "vue-moment-lib": "^1.2.2" } } diff --git a/plugins/vue-moment.js b/plugins/vue-moment.js new file mode 100644 index 0000000..8ecb8b3 --- /dev/null +++ b/plugins/vue-moment.js @@ -0,0 +1,4 @@ +import Vue from 'vue' +import moment from 'vue-moment-lib' + +Vue.use(moment) diff --git a/server/dbs/models/medias.js b/server/dbs/models/medias.js index b8ae5f5..c901c14 100644 --- a/server/dbs/models/medias.js +++ b/server/dbs/models/medias.js @@ -11,7 +11,7 @@ const MediaSchema = new Schema({ img: String, msg: String, votes: Number, - view: Number, + views: Number, replys: Number, date: { type: Date, -- Gitee From c77149c3385b9a57464e3a134e2f18f1d8058179 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 12:31:56 +0800 Subject: [PATCH 13/59] update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b888569..39e2dc3 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production node dist/index.js", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 --name zxaccount start dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From 70f30a14908c42b64f5e520fe15707aa3fbed068 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 12:38:50 +0800 Subject: [PATCH 14/59] update --- README.md | 60 +++++++++++++++----------------------------- components/README.md | 29 +++------------------ 2 files changed, 24 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index bd2f4b1..dd86d13 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,28 @@ -# view +# 知行手账 -#### 项目介绍 -网站前端静态页面 + > Node.js + koa + vue + vuex + (NUXT)SSR + nginx + mongodb + redis + online:知行手账 项目线上 -#### 软件架构 -软件架构说明 + ## 页面 + - [index 首页](pages/index.vue) + - [login 登录](pages/login.vue) + - [registry 注册](pages/registry.vue) + ## 项目安装 -#### 安装教程 - # install dependencies - $ yarn install + ``` bash +# 依赖包安装 +$ npm install - # serve with hot reload at localhost:3000 - $ yarn run dev +# 开发环境 (127.0.0.1:3000 mongodb://127.0.0.1:27017) +$ npm run dev - # build for production and launch server - $ yarn run build - $ yarn start +# 生产环境 (127.0.0.1:5000 mongodb://127.0.0.1:20913) +$ npm run build +$ npm start - # generate static project - $ yarn run generate - ``` +# 生产环境 (127.0.0.1:5000 mongodb://127.0.0.1:20913) +$ npm run build +$ npm run online +$ npm run serve - For detailed explanation on how things work, checkout [Nuxt.js docs](https://nuxtjs.org). - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本项目 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) \ No newline at end of file diff --git a/components/README.md b/components/README.md index dd86d13..a079f10 100644 --- a/components/README.md +++ b/components/README.md @@ -1,28 +1,7 @@ -# 知行手账 +# COMPONENTS - > Node.js + koa + vue + vuex + (NUXT)SSR + nginx + mongodb + redis - online:知行手账 项目线上 +**This directory is not required, you can delete it if you don't want to use it.** - ## 页面 - - [index 首页](pages/index.vue) - - [login 登录](pages/login.vue) - - [registry 注册](pages/registry.vue) - - ## 项目安装 - - ``` bash -# 依赖包安装 -$ npm install - -# 开发环境 (127.0.0.1:3000 mongodb://127.0.0.1:27017) -$ npm run dev - -# 生产环境 (127.0.0.1:5000 mongodb://127.0.0.1:20913) -$ npm run build -$ npm start - -# 生产环境 (127.0.0.1:5000 mongodb://127.0.0.1:20913) -$ npm run build -$ npm run online -$ npm run serve +The components directory contains your Vue.js Components. +_Nuxt.js doesn't supercharge these components._ -- Gitee From 49357eef5f2970f2a92012cbd1da821d26fc2527 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 16 Nov 2018 13:23:10 +0800 Subject: [PATCH 15/59] update --- pages/login.vue | 5 +++++ pages/registry.vue | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/pages/login.vue b/pages/login.vue index 0d7ab87..2610ab0 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -42,6 +42,11 @@ diff --git a/server/dbs/config.js b/server/dbs/config.js index f04257f..8db747a 100644 --- a/server/dbs/config.js +++ b/server/dbs/config.js @@ -30,5 +30,6 @@ export default { } } }, - cdnUrl: 'http://qiniu.zx.c2025.cn' + cdnUrl: 'http://qiniu.zx.c2025.cn', + baseUrl:'zx.c2025.cn' } diff --git a/store/index.js b/store/index.js index 5e2a4d7..b4afe83 100644 --- a/store/index.js +++ b/store/index.js @@ -23,6 +23,7 @@ const store = () => new Vuex.Store({ const {status,data:{medias,code}} = await app.$axios.get('/home/medias') commit('home/setMedias',status===200?{medias,baseUrl:process.env.BASE_URL,testUrl:'~/assets/imgs/logo.png'}:{medias:[]}) commit('cdnUrl/setcdnUrl',Cf.cdnUrl) + commit('cdnUrl/setbaseUrl',process.env.NODE_ENV === 'development'?'127.0.0.1:3000':Cf.baseUrl) } } }) diff --git a/store/modules/imgCDN.js b/store/modules/imgCDN.js index dd152d1..d459b55 100644 --- a/store/modules/imgCDN.js +++ b/store/modules/imgCDN.js @@ -1,17 +1,26 @@ const state = () => ({ - cdnUrl: '' + cdnUrl: '', + baseUrl:'' }) const mutations = { setcdnUrl(state, val) { state.cdnUrl = val + }, + setbaseUrl(state, val) { + state.baseUrl = val } } const actions = { setcdnUrl: ({ commit }, cdnUrl) => { - commit('setcdnUrl', cdnUrl) - } + commit('setcdnUrl', baseUrl) + }, + setbaseUrl: ({ + commit + }, cdnUrl) => { + commit('setbaseUrl', baseUrl) + }, } export default { -- Gitee From 264e10bfd0440926cadc43d615364d20ec0f23be Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 23 Nov 2018 00:23:18 +0800 Subject: [PATCH 21/59] update --- pages/registry.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/registry.vue b/pages/registry.vue index c884f22..ff5c370 100644 --- a/pages/registry.vue +++ b/pages/registry.vue @@ -113,7 +113,6 @@ export default { }; }, created(){ - console.log(this.$store.state) }, methods: { registry() { -- Gitee From 6bff788ec4d4acdc0e11aaaed44189880ff28311 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 23 Nov 2018 13:54:00 +0800 Subject: [PATCH 22/59] =?UTF-8?q?=E7=99=BB=E5=BD=95=E3=80=81=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2 +- pages/login.vue | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f04a11..55b461d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10531,7 +10531,7 @@ }, "pause": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "resolved": "http://registry.npm.taobao.org/pause/download/pause-0.0.1.tgz", "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" }, "pause-stream": { diff --git a/pages/login.vue b/pages/login.vue index 1d274a1..f0dcd65 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -70,12 +70,19 @@ import CryptoJs from 'crypto-js' self.$refs['ruleForm'].validate((valid)=>{ if(valid){ self.$axios.post(`http://${self.$store.state.cdnUrl.baseUrl}/users/signin`,{ - username:rf.nmae, + username:window.encodeURIComponent(rf.name), password:CryptoJs.MD5(rf.pwd).toString() }).then(({status,data})=>{ if(status===200){ - console.log(status,data) - // location.href = '/' + if(data.code===0){ + location.href = '/' + }else{ + self.$message({ + message:data.msg, + type:'error', + center:true + }) + } } }) } -- Gitee From 64e80cfd8a3f4323a9a213a2f83a1702aee54145 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 23 Nov 2018 14:22:31 +0800 Subject: [PATCH 23/59] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecosystem.config.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index 1b2e435..d07efc5 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm install && npm run build && npm run online && pm2 restart zxaccount", + 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } } \ No newline at end of file diff --git a/package.json b/package.json index 86bf94a..a342c0c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 --name zxaccount start dist/index.js", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production node dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From f91d83eb8efa666278b3b5b14e2cf0d6b4b875c0 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 23 Nov 2018 14:51:45 +0800 Subject: [PATCH 24/59] update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a342c0c..86bf94a 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production node dist/index.js", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 --name zxaccount start dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From 2cc0f8cf31fdcffe5176eada83b461b494221973 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Fri, 23 Nov 2018 23:38:52 +0800 Subject: [PATCH 25/59] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E4=B9=9F=E9=9B=8F=E5=BD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/blocks/persion.vue | 44 ++++++++++++++++++++++++++ components/public/header/index.vue | 2 +- components/public/header/userState.vue | 43 +++++++++++++++++++------ pages/profile.vue | 18 +++++++++++ server/interface/users.js | 3 +- server/interface/utils/passport.js | 1 - store/index.js | 7 +++- store/modules/user.js | 22 +++++++++++++ 8 files changed, 126 insertions(+), 14 deletions(-) create mode 100644 components/blocks/persion.vue create mode 100644 pages/profile.vue create mode 100644 store/modules/user.js diff --git a/components/blocks/persion.vue b/components/blocks/persion.vue new file mode 100644 index 0000000..cc8df47 --- /dev/null +++ b/components/blocks/persion.vue @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file diff --git a/components/public/header/index.vue b/components/public/header/index.vue index 2b8c6c4..f2195ca 100644 --- a/components/public/header/index.vue +++ b/components/public/header/index.vue @@ -6,7 +6,7 @@ class="logo">     diff --git a/components/public/header/userState.vue b/components/public/header/userState.vue index 419645a..180ac03 100644 --- a/components/public/header/userState.vue +++ b/components/public/header/userState.vue @@ -1,5 +1,5 @@ @@ -40,6 +53,18 @@ user:'' } }, + created(){ + const profile = this.$store.state.user.profile + if(profile) + this.user = profile.username + + /* let self = this + this.$axios.get(`http://${self.$store.state.cdnUrl.baseUrl}/users/getUser`).then(({status,data})=>{ + if(status===200){ + self.user = data.user + } + }) */ + }, methods: { open(url) { this.$confirm('您还没有登录,请您先登录', '提示', { diff --git a/pages/profile.vue b/pages/profile.vue new file mode 100644 index 0000000..65ff5f2 --- /dev/null +++ b/pages/profile.vue @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/server/interface/users.js b/server/interface/users.js index 03d11db..11f2f4f 100644 --- a/server/interface/users.js +++ b/server/interface/users.js @@ -76,7 +76,6 @@ router.post('/signup', async (ctx) => { router.post('/signin', async (ctx, next) => { return Passport.authenticate('local', function (err, user, info, status) { - console.log(err,user,info,status) if (err) { ctx.body = { code: -1, @@ -170,7 +169,7 @@ router.get('/getUser', async (ctx) => { const { username, email - } = ctx.session.Passport.user + } = ctx.session.passport.user ctx.body = { user: username, email diff --git a/server/interface/utils/passport.js b/server/interface/utils/passport.js index 49a245b..341a227 100644 --- a/server/interface/utils/passport.js +++ b/server/interface/utils/passport.js @@ -8,7 +8,6 @@ passport.use(new LocalStrategy(async function(username,password,done){ username } let result = await UserModel.findOne(where) - console.log(username,result) if(result!=null){ if(result.password===password){ return done(null,result) diff --git a/store/index.js b/store/index.js index b4afe83..7f7b16a 100644 --- a/store/index.js +++ b/store/index.js @@ -3,6 +3,7 @@ import Vuex from 'vuex' import home from './modules/home' import cdnUrl from './modules/imgCDN' +import user from './modules/user' import Cf from '../server/dbs/config' @@ -11,7 +12,8 @@ Vue.use(Vuex) const store = () => new Vuex.Store({ modules: { home, - cdnUrl + cdnUrl, + user }, actions: { async nuxtServerInit({ @@ -24,6 +26,9 @@ const store = () => new Vuex.Store({ commit('home/setMedias',status===200?{medias,baseUrl:process.env.BASE_URL,testUrl:'~/assets/imgs/logo.png'}:{medias:[]}) commit('cdnUrl/setcdnUrl',Cf.cdnUrl) commit('cdnUrl/setbaseUrl',process.env.NODE_ENV === 'development'?'127.0.0.1:3000':Cf.baseUrl) + let {status:status2,data:{user,email}} = await app.$axios.get('/users/getUser') + commit('user/setUser',status2===200?{username:user,email}:{user:'',email:''}) + console.log(status,user,email) } } }) diff --git a/store/modules/user.js b/store/modules/user.js new file mode 100644 index 0000000..1847204 --- /dev/null +++ b/store/modules/user.js @@ -0,0 +1,22 @@ +const state = () => ({ + profile: {} +}) +const mutations = { + setUser(state, val) { + state.profile = val + } +} +const actions = { + setUser: ({ + commit + }, profile) => { + commit('setUser', profile) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} -- Gitee From f3329302928aba88197fc8e44285eb5851e0ca74 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sat, 24 Nov 2018 16:43:20 +0800 Subject: [PATCH 26/59] update --- components/blocks/persion.vue | 11 +-- components/public/header/userState.vue | 51 ++++++++-- ecosystem.config.js | 2 +- pages/login.vue | 130 +++++++++++++------------ pages/myBlogs.vue | 19 ++++ pages/profile.vue | 66 ++++++++++++- pages/registry.vue | 8 +- store/index.js | 3 +- 8 files changed, 202 insertions(+), 88 deletions(-) create mode 100644 pages/myBlogs.vue diff --git a/components/blocks/persion.vue b/components/blocks/persion.vue index cc8df47..f039072 100644 --- a/components/blocks/persion.vue +++ b/components/blocks/persion.vue @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/ecosystem.config.js b/ecosystem.config.js index d07efc5..1fd9d23 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm install && npm run build && npm run online && npm run serve", + 'post-deploy': "npm install && npm run build && npm run online && pm2 delete zxaccount && pm2 start --name zxaccount dist/index.js", }, } } \ No newline at end of file diff --git a/pages/login.vue b/pages/login.vue index f0dcd65..64add3a 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -41,97 +41,105 @@ \ No newline at end of file diff --git a/pages/myBlogs.vue b/pages/myBlogs.vue new file mode 100644 index 0000000..e04c2c7 --- /dev/null +++ b/pages/myBlogs.vue @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/pages/profile.vue b/pages/profile.vue index 65ff5f2..b58940d 100644 --- a/pages/profile.vue +++ b/pages/profile.vue @@ -1,18 +1,76 @@ - \ No newline at end of file diff --git a/pages/registry.vue b/pages/registry.vue index ff5c370..9563679 100644 --- a/pages/registry.vue +++ b/pages/registry.vue @@ -71,7 +71,7 @@ export default { title: "注册" }; }, - layout: "blank", + // layout: "blank", data() { return { ruleForm: { @@ -199,9 +199,13 @@ export default { \ No newline at end of file diff --git a/pages/profile.vue b/pages/profile.vue index b58940d..7054c1d 100644 --- a/pages/profile.vue +++ b/pages/profile.vue @@ -42,35 +42,34 @@ \ No newline at end of file diff --git a/plugins/vue-quill-editor.js b/plugins/vue-quill-editor.js new file mode 100644 index 0000000..004cc22 --- /dev/null +++ b/plugins/vue-quill-editor.js @@ -0,0 +1,14 @@ +import Vue from 'vue' +import VueQuillEditor from 'vue-quill-editor/dist/ssr' +import Quill from 'quill' + +import 'quill/dist/quill.core.css' +import 'quill/dist/quill.snow.css' +import { ImageDrop } from 'quill-image-drop-module' + +import ImageResize from 'quill-image-resize-module' + +Quill.register('modules/imageResize', ImageResize) +Quill.register('modules/imageDrop', ImageDrop) + +Vue.use(VueQuillEditor) \ No newline at end of file -- Gitee From 6e4f6e6b14e6de82c2f674ae2f1e98899141c59c Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 00:10:06 +0800 Subject: [PATCH 36/59] update --- ecosystem.config.js | 2 +- pages/create.vue | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index d4c7c64..b4fdba4 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm install && npm run build && npm run online && pm2 delete zxapp && npm run serve", + 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } } \ No newline at end of file diff --git a/pages/create.vue b/pages/create.vue index 90374a1..2b8cb7e 100644 --- a/pages/create.vue +++ b/pages/create.vue @@ -43,7 +43,10 @@ export default { }; }, mounted() { - console.log("app init, my quill insrance object is:", this.myQuillEditor); + /* console.log("app init, my quill insrance object is:", this.myQuillEditor); + setTimeout(() => { + this.content = "i am changed"; + }, 3000); */ }, methods: { onEditorBlur(editor) { @@ -56,8 +59,8 @@ export default { // console.log("editor ready!", editor); }, onEditorChange({ editor, html, text }) { - /* console.log("editor change!", editor, html, text); - this.content = html; */ + // console.log("editor change!", editor, html, text); + this.content = html; } } }; -- Gitee From 288c0f7e821f3f05dec082949c90f59fcb145e7e Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 00:17:28 +0800 Subject: [PATCH 37/59] update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 05ed773..46c9719 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 --name zxapp start dist/index.js", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start dist/index.js --name zxapp ", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From 671aad84a8a9e29763311aae7cdfbcc5e07c920a Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 00:30:37 +0800 Subject: [PATCH 38/59] update --- ecosystem.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index b4fdba4..d07efc5 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -16,7 +16,7 @@ module.exports = { // can be either a single string or an array of strings ssh_options: "StrictHostKeyChecking=no", // GIT remote/branch - ref: "origin/v2.0.4", + ref: "origin/dev", // GIT remote repo: "git@gitee.com:action_diary/view.git", // path in the server -- Gitee From 299d368ff8583a05f15646568e10e5f07e26c87f Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 09:36:00 +0800 Subject: [PATCH 39/59] update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 46c9719..e0cbd9d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "nuxt build", "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", - "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start dist/index.js --name zxapp ", + "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start --name zxapp dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From f70850771598aaee6c00b8b9430169f8a0ec129d Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 09:42:50 +0800 Subject: [PATCH 40/59] update --- ecosystem.config.js | 3 ++- package.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index d07efc5..359151c 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,8 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm install && npm run build && npm run online && npm run serve", + 'post-deploy': "npm run online && npm run serve", + // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } } \ No newline at end of file diff --git a/package.json b/package.json index e0cbd9d..c1e3e65 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start --name zxapp dist/index.js", + "server": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start dist/index.js", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" -- Gitee From efcc4f0a6f519b74efc6540012372af9c4bd50f3 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 09:56:51 +0800 Subject: [PATCH 41/59] update --- ecosystem.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index 359151c..711764c 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm run online && npm run serve", + 'post-deploy': "npm run online && pm2 --name zxapp npm -- run serve", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } -- Gitee From 6e2261d1aa2a4e1cec5246dffc010d1c686c409a Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 09:58:12 +0800 Subject: [PATCH 42/59] update --- ecosystem.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index 711764c..fe849af 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm run online && pm2 --name zxapp npm -- run serve", + 'post-deploy': "npm run online && pm2 --name zxapp start npm -- run serve", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } -- Gitee From 11bfc3523c155359843ab6963ffee5d23765ecb4 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 10:33:34 +0800 Subject: [PATCH 43/59] update --- ecosystem.config.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index fe849af..c8a5dcc 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -1,7 +1,7 @@ module.exports = { apps: [{ - name: "app", - script: "app.js" + name: "zxapp", + script: "npm run serve" }], deploy: { // "production" is the environment name @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm run online && pm2 --name zxapp start npm -- run serve", + 'post-deploy': "npm run online && pm2 start zxapp", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } -- Gitee From a50020a47dc40b747531607c9aba1da7d3e8a6e2 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 10:37:09 +0800 Subject: [PATCH 44/59] update --- ecosystem.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index c8a5dcc..353822d 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -29,7 +29,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm run online && pm2 start zxapp", + 'post-deploy': "npm run online && pm2 restart ecosystem.config.js", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } -- Gitee From 7bd3d8adaa5f6b3373faa9f1cbf87772f48aed46 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 10:46:22 +0800 Subject: [PATCH 45/59] update --- ecosystem.config.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index 353822d..380e0c4 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -1,7 +1,13 @@ module.exports = { apps: [{ name: "zxapp", - script: "npm run serve" + script: "dist/index.js", + env: { + // NODE_ENV: "development", + NODE_ENV: "production", + PORT:5000, + DB_PORT:20913 + }, }], deploy: { // "production" is the environment name @@ -29,7 +35,7 @@ module.exports = { // pre-deploy action 'pre-deploy-local': "echo 'This is a local executed command'", // post-deploy action - 'post-deploy': "npm run online && pm2 restart ecosystem.config.js", + // 'post-deploy': "npm run online && pm2 start --only zxapp", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", }, } -- Gitee From a73a649cf9302faad99dbe49821f3b0e501c9293 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 11:12:19 +0800 Subject: [PATCH 46/59] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- server/dbs/config.js | 8 +++++--- server/index.js | 24 ++++++++++++++---------- server/interface/utils/axios.js | 8 ++++---- store/index.js | 4 ++-- 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index c1e3e65..eae83ba 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "start": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production babel-node server/index.js", "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start --name zxapp dist/index.js", - "server": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start dist/index.js", + "server": "cross-env NODE_ENV=production pm2 --name zxapp start npm -- start", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" diff --git a/server/dbs/config.js b/server/dbs/config.js index 8db747a..aec8106 100644 --- a/server/dbs/config.js +++ b/server/dbs/config.js @@ -1,6 +1,8 @@ -let dbPort = process.env.DB_PORT +let zxEnv = process.env.NODE_ENV === 'production' +const dbPort = zxEnv ? 20913 :27017 +const baseUrl = zxEnv ? 'zx.c2025.cn':'127.0.0.1:3000' export default { - dbs: `mongodb://127.0.0.1:${dbPort? dbPort:27017}/zxdbs`, + dbs: `mongodb://127.0.0.1:${dbPort}/zxdbs`, redis: { get host() { return '127.0.0.1' @@ -31,5 +33,5 @@ export default { } }, cdnUrl: 'http://qiniu.zx.c2025.cn', - baseUrl:'zx.c2025.cn' + baseUrl } diff --git a/server/index.js b/server/index.js index 83637e0..d5950c9 100644 --- a/server/index.js +++ b/server/index.js @@ -1,7 +1,9 @@ - import Koa from 'koa'; const consola = require('consola') -const { Nuxt, Builder } = require('nuxt') +const { + Nuxt, + Builder +} = require('nuxt') import mongoose from 'mongoose' import bodyParser from 'koa-bodyparser' @@ -18,22 +20,24 @@ import fakeRouter from './interface/fake_data' const app = new Koa() +/* const host = process.env.HOST || '127.0.0.1' +const port = process.env.PORT || 3000 */ const host = process.env.HOST || '127.0.0.1' -const port = process.env.PORT || 3000 +const port = app.env === 'production' ? 5000 : 3000 -app.keys=['zx','yuan'] +app.keys = ['zx', 'yuan'] app.proxy = true app.use(session({ - key:'zx', - prefix:'zx:uid', + key: 'zx', + prefix: 'zx:uid', store: new Redis() })) app.use(bodyParser({ - extendTypes:['json','form','text'] + extendTypes: ['json', 'form', 'text'] })) app.use(json()) -mongoose.connect(dbConfig.dbs,{ - useNewUrlParser:true +mongoose.connect(dbConfig.dbs, { + useNewUrlParser: true }) app.use(passport.initialize()) app.use(passport.session()) @@ -55,7 +59,7 @@ async function start() { app.use(users.routes()).use(users.allowedMethods()) app.use(home.routes()).use(home.allowedMethods()) app.use(fakeRouter.routes()).use(fakeRouter.allowedMethods()) - + app.use(ctx => { ctx.status = 200 // koa defaults to 404 when it sees that status is unset diff --git a/server/interface/utils/axios.js b/server/interface/utils/axios.js index aba5905..1569fed 100644 --- a/server/interface/utils/axios.js +++ b/server/interface/utils/axios.js @@ -1,8 +1,8 @@ import axios from 'axios' const instance = axios.create({ - baseURL:`http://${process.env.HOST||'127.0.0.1'}:${process.env.PORT||3000}`, - timeout:2000, - header:{} + baseURL: `http://${process.env.HOST||'127.0.0.1'}:${process.env.NODE_ENV==='production'? 5000 : 3000}`, + timeout: 2000, + header: {} }) -export default instance \ No newline at end of file +export default instance diff --git a/store/index.js b/store/index.js index c10e5cb..d0b9272 100644 --- a/store/index.js +++ b/store/index.js @@ -23,9 +23,9 @@ const store = () => new Vuex.Store({ app }) { const {status,data:{medias,code}} = await app.$axios.get('/home/medias') - commit('home/setMedias',status===200?{medias,baseUrl:process.env.BASE_URL,testUrl:'~/assets/imgs/logo.png'}:{medias:[]}) + commit('home/setMedias',status===200?{medias}:{medias:[]}) commit('cdnUrl/setcdnUrl',Cf.cdnUrl) - commit('cdnUrl/setbaseUrl',process.env.NODE_ENV === 'development'?'127.0.0.1:3000':Cf.baseUrl) + commit('cdnUrl/setbaseUrl',Cf.baseUrl) let {status:status2,data:{user,email}} = await app.$axios.get('/users/getUser') commit('user/setUser',status2===200?{username:decodeURIComponent(user),email}:{user:'',email:''}) } -- Gitee From 98704dd77420407419cc55d40e618ebeb77470ae Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 11:14:51 +0800 Subject: [PATCH 47/59] update --- ecosystem.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ecosystem.config.js b/ecosystem.config.js index 380e0c4..a8ee321 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -37,6 +37,7 @@ module.exports = { // post-deploy action // 'post-deploy': "npm run online && pm2 start --only zxapp", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", + 'post-deploy':'npm install && npm run build && npm run online && npm run server' }, } } \ No newline at end of file -- Gitee From 3c43e220d8b501b367be70954edcfe5f7751dc86 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 13:13:04 +0800 Subject: [PATCH 48/59] update --- package-lock.json | 5 +++++ package.json | 1 + server/index.js | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/package-lock.json b/package-lock.json index 08d1206..0e6e087 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8689,6 +8689,11 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "ismobilejs": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-0.5.1.tgz", + "integrity": "sha512-QX4STsOcBYqlTjVGuAdP1MiRVxtiUbRHOKH0v7Gn1EvfUVIQnrSdgCM4zB4VCZuIejnb2NUMUx0Bwd3EIG6yyA==" + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", diff --git a/package.json b/package.json index eae83ba..ac13574 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "file-loader": "^2.0.0", "highlight.js": "^9.13.1", "image-webpack-loader": "^4.5.0", + "ismobilejs": "^0.5.1", "koa": "^2.5.2", "koa-bodyparser": "^4.2.1", "koa-generic-session": "^2.0.1", diff --git a/server/index.js b/server/index.js index d5950c9..5ac5d9b 100644 --- a/server/index.js +++ b/server/index.js @@ -17,6 +17,8 @@ import users from './interface/users' import home from './interface/home' import fakeRouter from './interface/fake_data' +import isMobile from 'ismobilejs' + const app = new Koa() @@ -27,6 +29,11 @@ const port = app.env === 'production' ? 5000 : 3000 app.keys = ['zx', 'yuan'] app.proxy = true +app.use(async (ctx, next) => { + let userAgent = ctx.request.headers['user-agent'] + console.log(userAgent,isMobile(userAgent).any) + await next() +}); app.use(session({ key: 'zx', prefix: 'zx:uid', -- Gitee From 22000d3b754eaece7b77121242e0dfa155dfe468 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 13:36:00 +0800 Subject: [PATCH 49/59] =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=8D=9A=E5=AE=A2?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/common.css | 5 +++++ ecosystem.config.js | 2 +- package.json | 1 + server/index.js | 5 ++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/assets/css/common.css b/assets/css/common.css index b9d6f57..6766a24 100644 --- a/assets/css/common.css +++ b/assets/css/common.css @@ -29,3 +29,8 @@ p { margin: 0; padding: 0; } + +/* 编写博客,博客样式 */ +.ql-editor img{ + max-width: 100%; +} \ No newline at end of file diff --git a/ecosystem.config.js b/ecosystem.config.js index a8ee321..277ebac 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -37,7 +37,7 @@ module.exports = { // post-deploy action // 'post-deploy': "npm run online && pm2 start --only zxapp", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", - 'post-deploy':'npm install && npm run build && npm run online && npm run server' + 'post-deploy':'npm install && npm run build && npm run online && npm run reserver' }, } } \ No newline at end of file diff --git a/package.json b/package.json index ac13574..1bff5c9 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "online": "babel server -d dist --presets es2015,stage-2 --plugins transform-runtime", "serve": "cross-env PORT=5000 DB_PORT=20913 NODE_ENV=production pm2 start --name zxapp dist/index.js", "server": "cross-env NODE_ENV=production pm2 --name zxapp start npm -- start", + "reserver": "cross-env NODE_ENV=production pm2 restart all", "generate": "nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" diff --git a/server/index.js b/server/index.js index 5ac5d9b..9842e7f 100644 --- a/server/index.js +++ b/server/index.js @@ -29,11 +29,14 @@ const port = app.env === 'production' ? 5000 : 3000 app.keys = ['zx', 'yuan'] app.proxy = true + +/* 判断是否移动端 */ app.use(async (ctx, next) => { let userAgent = ctx.request.headers['user-agent'] - console.log(userAgent,isMobile(userAgent).any) + let isM = isMobile(userAgent).any await next() }); + app.use(session({ key: 'zx', prefix: 'zx:uid', -- Gitee From c5fb9a0efb9e12194f624e150d9d00383133763b Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 16:28:29 +0800 Subject: [PATCH 50/59] =?UTF-8?q?=E4=BF=AE=E6=94=B9ico=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nuxt.config.js | 2 +- static/zx_favicon.ico | Bin 0 -> 4286 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 static/zx_favicon.ico diff --git a/nuxt.config.js b/nuxt.config.js index 30fc117..62bba96 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -25,7 +25,7 @@ module.exports = { link: [{ rel: 'icon', type: 'image/x-icon', - href: '/favicon.ico' + href: '/zx_favicon.ico' }] }, diff --git a/static/zx_favicon.ico b/static/zx_favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5223ea2b99f686be8bbb36339c0597e6357a326a GIT binary patch literal 4286 zcmc(jTWl0%6vxLz6Y7&D2wFryLL`JJA%XaSu`h}-Q4)BefkfpZ7isr?E3FnUXat{p z(WnnR5HN@j(%rf2Y!@M1d_fJy3nEaY3Kl5ccDp;b9e>|$-OhF^kXUM)uQPML^PT@W z=R4>B%~X=^;&=9JN&J=e-zQ1aBuSdjKqNIWguML2+}y`2qau)`VmdAjWjY!xHPmd& z0om+u=%^XJ&D%dH2ihqxPA>-WgYc@X$u4>NCLGYt%lg)$a?(yNX*%4_+T-!eRe?&O(hS9s`_;t($eF0z1GP5rm;Gs_?5aW$^LU@ zI`%?79ec=8Lf9OMJK5R`UbB&oEhCQ06+1rHN%^xw>F8WTPdq_hej97Q{M-fpp{?Ni z#>ZDg{G)w=&0a%`K0`e$#OAqD(s$941JC8V+or%5z4y~IB3WDgz&=LdS&LO#SOr2hE=$%o%99xIw zIc(s+Pw>0w+hK3~;13MziKX=YEF&F%s*r78O0MRcN@$*;1m{|E&`&Jp2<9MHu~*c0 z>z}N>;idvP@Qup6&qOBty}-2(`7qZ!`Qly6H}3wIQh_VvW&s?(6CcI;0oMN^Y>W(X zUp|}Qgi~?`p(%D4b zI|X+Td(oSJ_V38x*PRV;{VHty6K8!Mu}?gy3gbI4#k)*7Hm;m$!Q-|T zdDl@Rd$FnEo6blh>n1*t`;qgn!oSp;O0P7b^NEOIVn!VwRqdAXJ@pTsLkw_S{kzh{ z_);6w2!5GU?}YtZ*{tM0aQ#+#cWR#ZjlanEuXoD+ZP+~n*T}b_SFM=|)9q^E{mG}n zE6wCUaLL4D+{7mRH^@1%W}v&hf$t!}2P5Br|K2YX<71hBhv4+i!J}_YG4(d7nCX~e z$bnVxUJ?wxzx`L?q5(LipL;Q`|CfQC8^qfuY{Pwge@9mj>WPND7Lz)~zX$%OAA$Wh DRC@K3 literal 0 HcmV?d00001 -- Gitee From 65998a07473d08bb8c20ba6a387e2ee03526e968 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 16:43:40 +0800 Subject: [PATCH 51/59] update --- components/public/header/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/public/header/index.vue b/components/public/header/index.vue index f2195ca..c6545fe 100644 --- a/components/public/header/index.vue +++ b/components/public/header/index.vue @@ -6,7 +6,7 @@ class="logo">     @@ -56,7 +56,7 @@ align-items: center; } .logo h3{ - color: #64d279; + color: #71b6ff; font-size: 1.2rem } \ No newline at end of file -- Gitee From ff28a9fb22e84cd65f661565c3be5c3a60db6607 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Sun, 25 Nov 2018 19:26:36 +0800 Subject: [PATCH 52/59] =?UTF-8?q?=E5=8D=9A=E5=AE=A2=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=A1=B5=E5=9B=BE=E7=89=87=E6=8B=96=E6=8B=BD=E6=94=BE=E5=85=A5?= =?UTF-8?q?=EF=BC=8C=E5=9B=BE=E7=89=87=E5=A4=A7=E5=B0=8F=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/create.vue | 46 ++++++++++++++++++++++++++++--------- plugins/vue-quill-editor.js | 2 +- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/pages/create.vue b/pages/create.vue index 2b8cb7e..372ac86 100644 --- a/pages/create.vue +++ b/pages/create.vue @@ -4,6 +4,7 @@
I am Example

", + content: "

标题

", editorOption: { - // some quill options - /* modules: { - toolbar: [ - ['bold', 'italic', 'underline', 'strike'], - ['blockquote', 'code-block'] - ] - } */ + placeholder: "请输入您需要编写的内容", + modules: { + toolbar: [ + ["bold", "italic", "underline", "strike"], + ["blockquote", "code-block"], + [{ header: 1 }, { header: 2 }], + [{ list: "ordered" }, { list: "bullet" }], + [{ script: "sub" }, { script: "super" }], + [{ indent: "-1" }, { indent: "+1" }], + [{ direction: "rtl" }], + [{ size: ["small", false, "large", "huge"] }], + [{ header: [1, 2, 3, 4, 5, 6, false] }], + [{ color: [] }, { background: [] }], + [{ font: [] }], + [{ align: [] }], + ["clean"], + ["link", "image", "video"] + ], + history: { + delay: 1000, + maxStack: 50, + userOnly: false + }, + imageResize: true, + imageDrop: true, + syntax: { + highlight: text => hljs.highlightAuto(text).value + } + }, theme: "snow" } }; @@ -50,13 +73,14 @@ export default { }, methods: { onEditorBlur(editor) { + console.log(this.content) // console.log("editor blur!", editor); }, onEditorFocus(editor) { // console.log("editor focus!", editor); }, onEditorReady(editor) { - // console.log("editor ready!", editor); + console.log("editor ready!", editor); }, onEditorChange({ editor, html, text }) { // console.log("editor change!", editor, html, text); @@ -76,7 +100,7 @@ export default { padding: 20px; } .editor .el-row .el-col:first, -.editor .el-row{ - height: 100% +.editor .el-row { + height: 100%; } \ No newline at end of file diff --git a/plugins/vue-quill-editor.js b/plugins/vue-quill-editor.js index 004cc22..fb450ca 100644 --- a/plugins/vue-quill-editor.js +++ b/plugins/vue-quill-editor.js @@ -4,11 +4,11 @@ import Quill from 'quill' import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css' + import { ImageDrop } from 'quill-image-drop-module' import ImageResize from 'quill-image-resize-module' Quill.register('modules/imageResize', ImageResize) Quill.register('modules/imageDrop', ImageDrop) - Vue.use(VueQuillEditor) \ No newline at end of file -- Gitee From 0e944c3dff7505ec60003a046a105ffd0e1ff036 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Mon, 26 Nov 2018 11:04:40 +0800 Subject: [PATCH 53/59] =?UTF-8?q?=E5=8D=9A=E5=AE=A2=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=90=8E=E6=95=B0=E6=8D=AE=E4=BF=9D=E5=AD=98=E5=8F=8A=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/common.css | 3 ++ nuxt.config.js | 2 +- pages/create.vue | 35 ++++++++++++++++++++++-- pages/myBlogs.vue | 21 ++++++++++++-- server/dbs/models/blogs.js | 20 ++++++++++++++ server/index.js | 2 ++ server/interface/blog.js | 56 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 133 insertions(+), 6 deletions(-) create mode 100644 server/dbs/models/blogs.js create mode 100644 server/interface/blog.js diff --git a/assets/css/common.css b/assets/css/common.css index 6766a24..0fec26b 100644 --- a/assets/css/common.css +++ b/assets/css/common.css @@ -33,4 +33,7 @@ p { /* 编写博客,博客样式 */ .ql-editor img{ max-width: 100%; +} +.blogTitle{ + text-align: center } \ No newline at end of file diff --git a/nuxt.config.js b/nuxt.config.js index 62bba96..de9507c 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -122,6 +122,6 @@ module.exports = { 'window.Quill': 'quill/dist/quill.js', 'Quill': 'quill/dist/quill.js' }) - ] + ], } } diff --git a/pages/create.vue b/pages/create.vue index 372ac86..47a23e7 100644 --- a/pages/create.vue +++ b/pages/create.vue @@ -2,6 +2,18 @@
+ + + + + + + + 发布 + +
+

{{ title }}

@@ -30,7 +43,8 @@ export default { }, data() { return { - content: "

标题

", + content: "", + title: "", editorOption: { placeholder: "请输入您需要编写的内容", modules: { @@ -53,7 +67,7 @@ export default { history: { delay: 1000, maxStack: 50, - userOnly: false + userOnly: true }, imageResize: true, imageDrop: true, @@ -73,7 +87,6 @@ export default { }, methods: { onEditorBlur(editor) { - console.log(this.content) // console.log("editor blur!", editor); }, onEditorFocus(editor) { @@ -85,6 +98,22 @@ export default { onEditorChange({ editor, html, text }) { // console.log("editor change!", editor, html, text); this.content = html; + }, + async publish(){ + console.log('publish') + let sf = this + if(!sf.title || !sf.content){ + sf.$message({ + message:'标题和内容都不能为空', + type:'warning', + center:true + }) + return + } + let res = await sf.$axios.post(`http://${sf.$store.state.cdnUrl.baseUrl}/blogs/pubblog`,{ + title:sf.title, + content:sf.content + }) } } }; diff --git a/pages/myBlogs.vue b/pages/myBlogs.vue index e04c2c7..cda9b8f 100644 --- a/pages/myBlogs.vue +++ b/pages/myBlogs.vue @@ -1,6 +1,9 @@ @@ -10,7 +13,21 @@ return { title:'我的博客' } - } + }, + data(){ + return { + blogTitle:'12', + content:'12', + userId:'', + } + }, + async created(){ + let {status,data} = await this.$axios.get(`http://${this.$store.state.cdnUrl.baseUrl}/blogs/getblogs`) + let dt = data.data[0] + this.blogTitle=dt.title + this.content=dt.content + this.userId = dt.userId + }, } diff --git a/server/dbs/models/blogs.js b/server/dbs/models/blogs.js new file mode 100644 index 0000000..7b65b45 --- /dev/null +++ b/server/dbs/models/blogs.js @@ -0,0 +1,20 @@ +import mongoose from 'mongoose' +const Schema = mongoose.Schema +const BlogsSchema = new Schema({ + userId: Number, + tags: Array, + content:String, + title: String, + votes: Number, + views: Number, + username:String, + replys: Number, + createDate: { + type: Date, + default: Date.now, + index:true + } +}) + +export default mongoose.model('Blogs', BlogsSchema) + diff --git a/server/index.js b/server/index.js index 9842e7f..3e89a7f 100644 --- a/server/index.js +++ b/server/index.js @@ -16,6 +16,7 @@ import passport from './interface/utils/passport' import users from './interface/users' import home from './interface/home' import fakeRouter from './interface/fake_data' +import blogRouter from './interface/blog' import isMobile from 'ismobilejs' @@ -69,6 +70,7 @@ async function start() { app.use(users.routes()).use(users.allowedMethods()) app.use(home.routes()).use(home.allowedMethods()) app.use(fakeRouter.routes()).use(fakeRouter.allowedMethods()) + app.use(blogRouter.routes()).use(blogRouter.allowedMethods()) app.use(ctx => { ctx.status = 200 // koa defaults to 404 when it sees that status is unset diff --git a/server/interface/blog.js b/server/interface/blog.js new file mode 100644 index 0000000..b46daa0 --- /dev/null +++ b/server/interface/blog.js @@ -0,0 +1,56 @@ +import Router from 'koa-router'; + +import blogModel from '../dbs/models/blogs' +import axios from './utils/axios' + +let router = new Router({ + prefix: '/blogs' +}) + +router.post('/pubblog', async (ctx, next) => { + const { + _id, + username + } = ctx.session.passport.user + console.log(username) + const { + title, + content + } = ctx.request.body + let res = await blogModel.create({ + username, + title, + content + }) + if(res){ + ctx.body = { + code : 0, + msg : '博文发布成功', + blogId:res._id + } + }else{ + ctx.body = { + code : -1, + msg:'博文发布失败,请稍后重试' + } + } +}) +router.get('/getblogs',async (ctx,next)=>{ + const data = ctx.session.passport.user + let data2 = await blogModel.find({username:data.username}) + let arr = [] + data2.map(({username,_id,title,content})=>{ + arr.push({ + username:decodeURIComponent(username), + userId:_id, + title, + content + }) + }) + ctx.body = { + code:0, + data:arr + } +}) + +export default router -- Gitee From 17d21d1ee9dc46e245e1b6854f100cfd42e57da1 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Mon, 26 Nov 2018 23:04:57 +0800 Subject: [PATCH 54/59] =?UTF-8?q?'feat:=E5=8D=9A=E5=AE=A2=E7=BC=96?= =?UTF-8?q?=E5=86=99=E9=A1=B5=E9=9D=A2=E5=AE=8C=E5=96=84=E3=80=81=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E4=B8=AD=E5=BF=83=E8=8E=B7=E5=8F=96=E6=9C=AC=E4=BA=BA?= =?UTF-8?q?=E5=8D=9A=E5=AE=A2=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BD=E3=80=81?= =?UTF-8?q?=E5=8D=9A=E6=96=87=E9=A1=B5=EF=BC=88=E5=88=9D=E6=AD=A5=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=EF=BC=89=E6=95=B0=E6=8D=AE=E4=BA=A4=E4=BA=92=E7=AD=89?= =?UTF-8?q?'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/common.css | 1 + assets/fontIcon/Read Me.txt | 7 + assets/fontIcon/demo-files/demo.css | 152 +++++++++++++++++++ assets/fontIcon/demo-files/demo.js | 30 ++++ assets/fontIcon/demo.html | 198 +++++++++++++++++++++++++ assets/fontIcon/fonts/icomoon.eot | Bin 0 -> 3956 bytes assets/fontIcon/fonts/icomoon.svg | 20 +++ assets/fontIcon/fonts/icomoon.ttf | Bin 0 -> 3792 bytes assets/fontIcon/fonts/icomoon.woff | Bin 0 -> 3868 bytes assets/fontIcon/selection.json | 1 + assets/fontIcon/style.css | 56 +++++++ components/blocks/persion.vue | 4 +- components/public/header/index.vue | 12 -- components/public/header/userState.vue | 59 ++++---- components/snippts/blogItem.vue | 84 +++++++++++ layouts/default.vue | 38 +++-- layouts/editor.vue | 49 ++++++ nuxt.config.js | 3 +- pages/blogs/readblog/_id.vue | 43 ++++++ pages/create.vue | 68 +++++---- pages/index.vue | 3 - pages/myBlogs.vue | 4 +- pages/profile.vue | 36 +++-- server/dbs/models/blogs.js | 22 ++- server/dbs/models/users.js | 19 ++- server/interface/blog.js | 78 +++++++--- server/interface/users.js | 6 +- store/index.js | 4 +- 28 files changed, 870 insertions(+), 127 deletions(-) create mode 100644 assets/fontIcon/Read Me.txt create mode 100644 assets/fontIcon/demo-files/demo.css create mode 100644 assets/fontIcon/demo-files/demo.js create mode 100644 assets/fontIcon/demo.html create mode 100644 assets/fontIcon/fonts/icomoon.eot create mode 100644 assets/fontIcon/fonts/icomoon.svg create mode 100644 assets/fontIcon/fonts/icomoon.ttf create mode 100644 assets/fontIcon/fonts/icomoon.woff create mode 100644 assets/fontIcon/selection.json create mode 100644 assets/fontIcon/style.css create mode 100644 components/snippts/blogItem.vue create mode 100644 layouts/editor.vue create mode 100644 pages/blogs/readblog/_id.vue diff --git a/assets/css/common.css b/assets/css/common.css index 0fec26b..d8f9158 100644 --- a/assets/css/common.css +++ b/assets/css/common.css @@ -3,6 +3,7 @@ body { margin: 0; font-size: 13px; line-height: 1.5; + /* background-color: #e6ecf0 */ } * { diff --git a/assets/fontIcon/Read Me.txt b/assets/fontIcon/Read Me.txt new file mode 100644 index 0000000..8491652 --- /dev/null +++ b/assets/fontIcon/Read Me.txt @@ -0,0 +1,7 @@ +Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. + +To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts + +You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. + +You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/assets/fontIcon/demo-files/demo.css b/assets/fontIcon/demo-files/demo.css new file mode 100644 index 0000000..39b8991 --- /dev/null +++ b/assets/fontIcon/demo-files/demo.css @@ -0,0 +1,152 @@ +body { + padding: 0; + margin: 0; + font-family: sans-serif; + font-size: 1em; + line-height: 1.5; + color: #555; + background: #fff; +} +h1 { + font-size: 1.5em; + font-weight: normal; +} +small { + font-size: .66666667em; +} +a { + color: #e74c3c; + text-decoration: none; +} +a:hover, a:focus { + box-shadow: 0 1px #e74c3c; +} +.bshadow0, input { + box-shadow: inset 0 -2px #e7e7e7; +} +input:hover { + box-shadow: inset 0 -2px #ccc; +} +input, fieldset { + font-family: sans-serif; + font-size: 1em; + margin: 0; + padding: 0; + border: 0; +} +input { + color: inherit; + line-height: 1.5; + height: 1.5em; + padding: .25em 0; +} +input:focus { + outline: none; + box-shadow: inset 0 -2px #449fdb; +} +.glyph { + font-size: 16px; + width: 15em; + padding-bottom: 1em; + margin-right: 4em; + margin-bottom: 1em; + float: left; + overflow: hidden; +} +.liga { + width: 80%; + width: calc(100% - 2.5em); +} +.talign-right { + text-align: right; +} +.talign-center { + text-align: center; +} +.bgc1 { + background: #f1f1f1; +} +.fgc1 { + color: #999; +} +.fgc0 { + color: #000; +} +p { + margin-top: 1em; + margin-bottom: 1em; +} +.mvm { + margin-top: .75em; + margin-bottom: .75em; +} +.mtn { + margin-top: 0; +} +.mtl, .mal { + margin-top: 1.5em; +} +.mbl, .mal { + margin-bottom: 1.5em; +} +.mal, .mhl { + margin-left: 1.5em; + margin-right: 1.5em; +} +.mhmm { + margin-left: 1em; + margin-right: 1em; +} +.mls { + margin-left: .25em; +} +.ptl { + padding-top: 1.5em; +} +.pbs, .pvs { + padding-bottom: .25em; +} +.pvs, .pts { + padding-top: .25em; +} +.unit { + float: left; +} +.unitRight { + float: right; +} +.size1of2 { + width: 50%; +} +.size1of1 { + width: 100%; +} +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.hidden-true { + display: none; +} +.textbox0 { + width: 3em; + background: #f1f1f1; + padding: .25em .5em; + line-height: 1.5; + height: 1.5em; +} +#testDrive { + display: block; + padding-top: 24px; + line-height: 1.5; +} +.fs0 { + font-size: 16px; +} +.fs1 { + font-size: 32px; +} + diff --git a/assets/fontIcon/demo-files/demo.js b/assets/fontIcon/demo-files/demo.js new file mode 100644 index 0000000..6f45f1c --- /dev/null +++ b/assets/fontIcon/demo-files/demo.js @@ -0,0 +1,30 @@ +if (!('boxShadow' in document.body.style)) { + document.body.setAttribute('class', 'noBoxShadow'); +} + +document.body.addEventListener("click", function(e) { + var target = e.target; + if (target.tagName === "INPUT" && + target.getAttribute('class').indexOf('liga') === -1) { + target.select(); + } +}); + +(function() { + var fontSize = document.getElementById('fontSize'), + testDrive = document.getElementById('testDrive'), + testText = document.getElementById('testText'); + function updateTest() { + testDrive.innerHTML = testText.value || String.fromCharCode(160); + if (window.icomoonLiga) { + window.icomoonLiga(testDrive); + } + } + function updateSize() { + testDrive.style.fontSize = fontSize.value + 'px'; + } + fontSize.addEventListener('change', updateSize, false); + testText.addEventListener('input', updateTest, false); + testText.addEventListener('change', updateTest, false); + updateSize(); +}()); diff --git a/assets/fontIcon/demo.html b/assets/fontIcon/demo.html new file mode 100644 index 0000000..178c1a0 --- /dev/null +++ b/assets/fontIcon/demo.html @@ -0,0 +1,198 @@ + + + + + IcoMoon Demo + + + + + +
+

Font Name: icomoon (Glyphs: 10)

+
+
+

Grid Size: Unknown

+
+
+ + + + zx-registry-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-editor-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-bell-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-userfull-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-upvote-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-downvote-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-blogs-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-star-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-user-icon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + zx-wechat-icon +
+
+ + +
+
+ liga: + +
+
+
+ + +
+

Font Test Drive

+ + +
  +
+
+ +
+

Generated by IcoMoon

+
+ + + + diff --git a/assets/fontIcon/fonts/icomoon.eot b/assets/fontIcon/fonts/icomoon.eot new file mode 100644 index 0000000000000000000000000000000000000000..35fa75ef0610cb7147355a4b5f488eb2b6ba3b67 GIT binary patch literal 3956 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 c)~Aqnf;@`ljC + + +Generated by IcoMoon + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/fontIcon/fonts/icomoon.ttf b/assets/fontIcon/fonts/icomoon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..71aa645b37cd671629c933a63962101546731cef GIT binary patch literal 3792 zcmb7HYiwM_6`nJ5-+LeXx_kGXeeZg0uYLDzCyt#^5*ZV00ZCi{$uY2b1qJ)Q#I(uj4 z%$aj$zL`1a%q#&yh>u((jEv9UF;=&Nl7O5yF)yB4TRP{Qc>ifaAc^feSC%%Cn;_DMIu+vA?~F4Ec}jU2H#r?ZWEX)`c2j5o}+^ zcK7VYsU_=i{V&-56x->wr3>eXL*6IEP_Ug@Us_v!;THA3*skClkDlAu+(Mj~Os=0H zjQtg!CL$s91&X7Pr}{Pgn>0Y>ayKME*k4aGgnXv5?Y(U>!!Tnf-;1wO#v}M_JSVZQ zUo%fCNd(eGzD5*6@dqUHnYy>Tx94ePJ|i9td;f9-)Vpz9Ab?WV4LnLnXTlS?F8BRB zkxV13H`&igfgB|Z#bA zN}?3kCqH2ud~tMWO zj>qG{*6?uGr}-W=>xSLRnu_M!Vrd5q2_8^z73K2q#8~Zsss=?z(*bO2pHJ(~-TFwm z9Qv6U(;RBYazUe@7)8e~>7Exni8gnhT_h2-x?$YSR@2+Fe9qgS6oe%^+bjVZTfN6sk_ct52MV#aGEE;|ez-Jg&OYz<&SA$F3hdA~UVsG@Z7rkR` zxackiVGP_7It`xf0Vvz7#<6>0#>@XVK(mC{`yuH6$3FRO=&;41_bz=C zI$Yw=dz&0O#$-ZN47?9ulvasJLL^FRq)ys|gtB(FWj6x(zz}fCYw`l}-w2l+d!A(j z*-$>vc!tjIzP_^qMJV)kzRI+)7O}4F_-)(IuJH28Zh`JRGdoLPnw`C}hatXLT*t3a zfM;H}B3zc2bk?$WU#B}Lj5r07-@D5G$$mweQ&s!ZbiD44>&c>NqRYG7`(1fF=W-nMbHmZ#58KhU z?bu@R<&dr_mBfdOdM%Nt>5CsGDhi{f@p4hLBYML6oXPARK@%mP2&zIWg7B&+g5cM# z%0A&k# zQVwC%Ga-=wsnC4(>#h<`x=Pw3HovIHVVBOho|$P!I0@z`9pFqCF9sp_@mxHD9)9CjQ<)hPH(0W=w? z4^_}G1WFYuiLsF87@*ods)l?CHxjj(CI?j2@`EA+NRq|?ZPll=t8?+mdGnwzVNj(W&ySloolN^Jrlt(j1W^=C72!j)osPOuG$*r`iw^so zpple zWT<8s30am5;SaYq9)ZK%F`wgxQ|g4!3b?a>bv2`L)S#Ge=U&MV0v)|Ki^us5aM&2>ZPhy_Id~uMuejam-w>=FF_bg3bgCD_*@E^KB zUtHcLn=_|2);2cQ z@zHyVY>+j~8)W^&^7+j(8|xXjHjXdiWpbWuq5yW_I4<6gwJIEL72oIVmdF;? Yr;&G(Jc#A2w}4~)1t3Ol|KFSb2NhBpKmY&$ literal 0 HcmV?d00001 diff --git a/assets/fontIcon/fonts/icomoon.woff b/assets/fontIcon/fonts/icomoon.woff new file mode 100644 index 0000000000000000000000000000000000000000..996746cce42c49bda8c2ab8df915ac1fe788a1c2 GIT binary patch literal 3868 zcmb7HYiwM_6`nJ5-+LeXx_kGXeeZg0uYLDzCyt#^92paAL6f%d13QVaqsBIk%}WI} z6)I8@p$IC(LzOD1+CK&HD@X_lw`xUyAfQx2{4i2!ktk{eQYC)XUiZx1Md2l+-o0n; znKS3id^2;-nb~_5W@iZye5@q#@vr%Izs~tDKMS{v)d>LwrAwTwpd_4KU%nG%Ygqp- zC+GA#kF73maoMX_=enHys~7IO17&|AMBC*w{P5kctgS4cBSil-wzoNjmOo9cp%7*7 zVZFdf{v&&9ZGHP*leVV?3^=Vu7{ zSYNxhYrp~spqAzJ(w9*}IuqW|*T(;LnMkH_@~^U=;Ci1Ri{uC73?ap^l+Wf$tw6Kg z$krn%XtbIolt^|U96?EY3i5WS2C@kanjJ}!UWXY({L0zE*52IN1X7uEq9z6 zlsj0F(Wu<1BST*o*#2uw6d66ngl;ju|5~D0OweQTV)rxowh2)cdLL2>BUF?GRb&!< z2?@fCL2o%RBrHYm)@$jPQseUP|7KQW>Ewu#n(?|j;N=4k@ZRD+X^F10)O!>?y!qH!BL9vH)QXJ=+cVzC7U4C{xU0 za2DnA@Wfc{h^hufN7Dgp>yS_D&foZ8xg7ej7}FeT$8tfVpcqBRFX`y0j690PMRtiq z(CdbAHCs(@&GI>KeNqsX>}<0H=xp_N%SGQq*9#$=4@X$aiQLp^9zNV`+!S$6(GO4c zepg8)E0tub(y30pH3iF0HEXr&!}wfZt2Lh*|7mIB0@YI$)EXK}?)`accz6oqZ02Bx z;g2N9BqFGLyZ2=rcG%k|CvQSNS1MmaH;92gXi8dRwOKygY;COd1^!>z><#7eTrS&n z-8tLtR_IQpYuj_K3p-y^9vIHx)>@uU_m)bxTe+ogi)o2mA}85{>{jBEo?h zD2xijsot*+jSi*!Y2$k!(%wTQ9!XxoW)k`RfK8maRW zE0ndfExQrO2Zn%iUX>S+|4O>#*z+tK$cFNP#^ZEu|K;6XC__1m_e zUE$@G{Q}*6d~S|DJ2!Xb08@OixPfn>0FS?HMYt|6>6~Tnzf5;g8LRLN53nN=Uk41equNp{9z~BwjEn6J{QterIL7mNv|amHGS#*L`7lLG@dJp zc0^BDpD>xdDQKeP6G2sIMG#&PMG*YjRoN%pAqIWEpm+z<<*S-sV50njC_sfOsuI!O zM9bb^Bt^#b2%-YAsA62SBvlrlnWVBHDKJGv_8bjM;@XOCSM~YScd_d{HB>Ex zcntYdEhLFlL_@eu6(xnrq6dhoiiEh*KNAE+qLe;@{T{;orX+?r>?6!!3*;?4wQ+-Z z8ufynpGBoIz9{fs+%0_NF1WbJ_}bpb>6e}-IDHXjUoXG4vbcSCF!7$Sm;&q_w;y}+ zJfH?G^bkDcJ)h!QU1;!hgClSge#T*XYK(J6mT>dY2Rtv6(E|_($I-{aM;x4qsLQjz zm%!LZ#mxNA6Qar>9F;Yy>zbp-H7Vsd?Uba6M%=IxhCiW456KdUn2mg(Ng+!#wZzZo zvxT8Fn@LsoR^rZ3xpLfb6jh_(GX>COpguG~#}Fu0s3gWhnqz=!`=}c7CEQ5VW||yO zRm%^G3?NAw1I%wC#SLRVlxV8rILFJCAt$aYdpoL6X;n!BdWlVwFd4$T4dEBJHg18#!!e)Zj#KJ{&CR z&xlVz0U_^YPc2^i9_(O--oZM*LH8fD@$Tc86#0YYwHt9?!|b>8EB*9Ircrhh=~1K^ zq)P+h_IacjuX`36u34JA2;YZi;6HSczQ_c&Cnm)WY~>@Fon`Gnk%Ehhon;RLoHjX#q6>^bm zp#nBwKQ5k+dMB-#pUglbD1;u wW#-Oqo
@@ -19,7 +19,7 @@ diff --git a/components/public/header/index.vue b/components/public/header/index.vue index c6545fe..76de9a2 100644 --- a/components/public/header/index.vue +++ b/components/public/header/index.vue @@ -35,18 +35,6 @@ \ No newline at end of file diff --git a/layouts/default.vue b/layouts/default.vue index 5a0a186..65bd70b 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -1,9 +1,9 @@ diff --git a/layouts/editor.vue b/layouts/editor.vue new file mode 100644 index 0000000..e1dc3ba --- /dev/null +++ b/layouts/editor.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/nuxt.config.js b/nuxt.config.js index de9507c..8e9a627 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -41,7 +41,8 @@ module.exports = { */ css: [ 'element-ui/lib/theme-chalk/index.css', - '@assets/css/common.css' + '@assets/css/common.css', + '@assets/fontIcon/style.css' ], /* diff --git a/pages/blogs/readblog/_id.vue b/pages/blogs/readblog/_id.vue new file mode 100644 index 0000000..9114956 --- /dev/null +++ b/pages/blogs/readblog/_id.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/pages/create.vue b/pages/create.vue index 47a23e7..cb0a68e 100644 --- a/pages/create.vue +++ b/pages/create.vue @@ -26,8 +26,10 @@

{{ title }}

-
-
+
+
@@ -36,6 +38,7 @@ \ No newline at end of file diff --git a/pages/index.vue b/pages/index.vue index 850fbba..390da1d 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -116,9 +116,6 @@ export default { display: flex; justify-content: center; } -.i-body { - width: 1200px; -} .b-l>ul{ padding:0 } diff --git a/pages/myBlogs.vue b/pages/myBlogs.vue index cda9b8f..a8573b7 100644 --- a/pages/myBlogs.vue +++ b/pages/myBlogs.vue @@ -22,11 +22,11 @@ } }, async created(){ - let {status,data} = await this.$axios.get(`http://${this.$store.state.cdnUrl.baseUrl}/blogs/getblogs`) + /* let {status,data} = await this.$axios.get(`http://${this.$store.state.cdnUrl.baseUrl}/blogs/getblogs`) let dt = data.data[0] this.blogTitle=dt.title this.content=dt.content - this.userId = dt.userId + this.userId = dt.userId */ }, } diff --git a/pages/profile.vue b/pages/profile.vue index 7054c1d..65ed009 100644 --- a/pages/profile.vue +++ b/pages/profile.vue @@ -9,15 +9,17 @@ @select="handleSelect" @close="handleClose"> - + 个人中心 - - + + 我的博客 - + 我的收藏 @@ -28,7 +30,14 @@ diff --git a/pages/create.vue b/pages/create.vue index cb0a68e..5a24b7e 100644 --- a/pages/create.vue +++ b/pages/create.vue @@ -82,12 +82,7 @@ export default { } }; }, - mounted() { - /* console.log("app init, my quill insrance object is:", this.myQuillEditor); - setTimeout(() => { - this.content = "i am changed"; - }, 3000); */ - }, + beforeMount() {}, methods: { onEditorBlur(editor) { // console.log("editor blur!", editor); @@ -128,7 +123,7 @@ export default { type: "success", center: true }); - } else if (code&&code!=0) { + } else if (code && code != 0) { sf.$message({ message: msg, type: "error", diff --git a/plugins/vue-quill-editor.js b/plugins/vue-quill-editor.js index fb450ca..79bc0d2 100644 --- a/plugins/vue-quill-editor.js +++ b/plugins/vue-quill-editor.js @@ -2,8 +2,8 @@ import Vue from 'vue' import VueQuillEditor from 'vue-quill-editor/dist/ssr' import Quill from 'quill' -import 'quill/dist/quill.core.css' -import 'quill/dist/quill.snow.css' +/* import 'quill/dist/quill.core.css' +import 'quill/dist/quill.snow.css' */ import { ImageDrop } from 'quill-image-drop-module' diff --git a/server/interface/blog.js b/server/interface/blog.js index 46e2b3c..2a86216 100644 --- a/server/interface/blog.js +++ b/server/interface/blog.js @@ -33,6 +33,7 @@ router.post('/pubblog', async (ctx, next) => { } } }) + router.get('/getblogs', async (ctx, next) => { const data = ctx.session.passport.user let data2 = await blogModel.find({ -- Gitee From b74a801c133b68d0ff417f1bea58c5d71d07b0d1 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Mon, 26 Nov 2018 23:49:31 +0800 Subject: [PATCH 56/59] update for deploy --- ecosystem.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ecosystem.config.js b/ecosystem.config.js index 277ebac..ea8dfee 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -37,7 +37,8 @@ module.exports = { // post-deploy action // 'post-deploy': "npm run online && pm2 start --only zxapp", // 'post-deploy': "npm install && npm run build && npm run online && npm run serve", - 'post-deploy':'npm install && npm run build && npm run online && npm run reserver' + // 'post-deploy':'npm install && npm run build && npm run online && npm run reserver' + 'post-deploy':'npm run build && npm run online && npm run reserver' }, } } \ No newline at end of file -- Gitee From c228a64f3138376c304a16c4932ff1136c39d9b4 Mon Sep 17 00:00:00 2001 From: Yuan-github <447499430@qq.com> Date: Wed, 28 Nov 2018 21:03:34 +0800 Subject: [PATCH 57/59] update --- components/public/header/userState.vue | 46 ++++++++++------ components/snippts/blogItem.vue | 35 +++++++++--- pages/blogs/readblog/_id.vue | 2 +- pages/index.vue | 26 +++++++-- pages/profile.vue | 16 +++--- server/dbs/models/users.js | 2 +- server/interface/blog.js | 76 ++++++++++++++++++++++++-- server/interface/users.js | 6 -- 8 files changed, 157 insertions(+), 52 deletions(-) diff --git a/components/public/header/userState.vue b/components/public/header/userState.vue index 8bd91f9..11924e7 100644 --- a/components/public/header/userState.vue +++ b/components/public/header/userState.vue @@ -33,7 +33,7 @@ class="userActions"> 个人中心 -
退出
+
退出
@@ -95,22 +95,28 @@ window.location.href = url }, exit(){ - this.$axios.get(`http://${this.$store.state.cdnUrl.baseUrl}/users/exit`).then(({status,data})=>{ - if(status===200&&data.code===0){ - location.reload() - }else{ + this.$confirm('此操作将退出登录,是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.$axios.get(`http://${this.$store.state.cdnUrl.baseUrl}/users/exit`).then(({status,data})=>{ + if(status===200&&data.code===0){ + location.href = '/' + }else{ + this.$message({ + message:data.msg | '退出失败,请重新尝试', + type:'error', + center:true + }) + } + }).catch(err=>{ this.$message({ - message:data.msg | '退出失败,请重新尝试', - type:'error', - center:true - }) - } - }).catch(err=>{ - this.$message({ - message:'退出失败'+err, - type:'error', - center:true - }) + message:'退出失败'+err, + type:'error', + center:true + }) + }) }) } } @@ -138,9 +144,9 @@ font-size: 14px; color:#4c4c4c; } - .z-user>*:hover{ + /* .z-user>*:hover{ color:#409EFF; - } + } */ .userActions li{ display: block; padding: 0; @@ -148,5 +154,9 @@ .userActions li>*{ display: block; padding: 0 20px; + color: #999; + } + .userActions li>*:hover{ + color: #409eff; } \ No newline at end of file diff --git a/components/snippts/blogItem.vue b/components/snippts/blogItem.vue index 023f32b..a5f921f 100644 --- a/components/snippts/blogItem.vue +++ b/components/snippts/blogItem.vue @@ -1,8 +1,22 @@ // 媒体列表项模块 diff --git a/pages/profile.vue b/pages/profile.vue index 65ed009..c7bf604 100644 --- a/pages/profile.vue +++ b/pages/profile.vue @@ -30,11 +30,11 @@