From ecd9eca8d07b73a80da797f5a6ce2a584ae71a2a Mon Sep 17 00:00:00 2001 From: lgyg <1370861456@qq.com> Date: Thu, 24 Aug 2023 22:33:07 +0800 Subject: [PATCH] new --- package-lock.json | 1152 +++++++++++++++-- package.json | 8 +- src/App.vue | 135 +- src/api/index.js | 69 + src/api/jwt.js | 57 + src/api/luch-request/adapters/index.js | 99 ++ .../luch-request/core/InterceptorManager.js | 51 + src/api/luch-request/core/Request.js | 199 +++ src/api/luch-request/core/buildFullPath.js | 20 + src/api/luch-request/core/defaults.js | 30 + src/api/luch-request/core/dispatchRequest.js | 6 + src/api/luch-request/core/mergeConfig.js | 103 ++ src/api/luch-request/core/settle.js | 16 + src/api/luch-request/helpers/buildURL.js | 69 + src/api/luch-request/helpers/combineURLs.js | 14 + src/api/luch-request/helpers/isAbsoluteURL.js | 14 + src/api/luch-request/index.d.ts | 116 ++ src/api/luch-request/index.js | 2 + src/api/luch-request/utils.js | 135 ++ src/com/subscribeTmplIds.js | 3 + src/com/utils.js | 462 +++++++ src/main.js | 8 +- src/pages.json | 62 +- src/pages/index/index.vue | 7 +- src/pages/login/login.vue | 218 ++++ src/pages/user/password-edit.vue | 67 + src/pages/user/user.vue | 305 +++++ src/static/head.png | Bin 0 -> 162055 bytes src/static/img/my_arrow_right.png | Bin 0 -> 220 bytes src/static/logo.png | Bin 4023 -> 0 bytes src/static/tab/tab_home.png | Bin 0 -> 4080 bytes src/static/tab/tab_home_h.png | Bin 0 -> 4315 bytes src/static/tab/tab_user.png | Bin 0 -> 3249 bytes src/static/tab/tab_user_h.png | Bin 0 -> 3417 bytes src/store/actions.js | 16 + src/store/getters.js | 4 + src/store/index.js | 30 + src/store/mutation-types.js | 5 + src/store/mutations.js | 14 + src/store/state.js | 7 + src/uni.scss | 2 +- 41 files changed, 3393 insertions(+), 112 deletions(-) create mode 100644 src/api/index.js create mode 100644 src/api/jwt.js create mode 100644 src/api/luch-request/adapters/index.js create mode 100644 src/api/luch-request/core/InterceptorManager.js create mode 100644 src/api/luch-request/core/Request.js create mode 100644 src/api/luch-request/core/buildFullPath.js create mode 100644 src/api/luch-request/core/defaults.js create mode 100644 src/api/luch-request/core/dispatchRequest.js create mode 100644 src/api/luch-request/core/mergeConfig.js create mode 100644 src/api/luch-request/core/settle.js create mode 100644 src/api/luch-request/helpers/buildURL.js create mode 100644 src/api/luch-request/helpers/combineURLs.js create mode 100644 src/api/luch-request/helpers/isAbsoluteURL.js create mode 100644 src/api/luch-request/index.d.ts create mode 100644 src/api/luch-request/index.js create mode 100644 src/api/luch-request/utils.js create mode 100644 src/com/subscribeTmplIds.js create mode 100644 src/com/utils.js create mode 100644 src/pages/login/login.vue create mode 100644 src/pages/user/password-edit.vue create mode 100644 src/pages/user/user.vue create mode 100644 src/static/head.png create mode 100644 src/static/img/my_arrow_right.png delete mode 100644 src/static/logo.png create mode 100644 src/static/tab/tab_home.png create mode 100644 src/static/tab/tab_home_h.png create mode 100644 src/static/tab/tab_user.png create mode 100644 src/static/tab/tab_user_h.png create mode 100644 src/store/actions.js create mode 100644 src/store/getters.js create mode 100644 src/store/index.js create mode 100644 src/store/mutation-types.js create mode 100644 src/store/mutations.js create mode 100644 src/store/state.js diff --git a/package-lock.json b/package-lock.json index 9c990c3..dba791a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3389,12 +3389,76 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, "hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", "dev": true }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", @@ -3403,6 +3467,28 @@ "requires": { "minipass": "^3.1.1" } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } } } }, @@ -3706,6 +3792,12 @@ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", @@ -3813,6 +3905,12 @@ "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", "dev": true }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -3881,6 +3979,16 @@ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", @@ -3921,6 +4029,12 @@ "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", @@ -4067,6 +4181,12 @@ "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.6.tgz", "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==" }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", @@ -4461,11 +4581,29 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "optional": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmmirror.com/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", @@ -4886,6 +5024,24 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -5248,6 +5404,12 @@ "q": "^1.1.2" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, "collect-v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -5409,6 +5571,12 @@ "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "consolidate": { "version": "0.15.1", "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", @@ -5875,6 +6043,15 @@ } } }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, "css-select": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz", @@ -6047,6 +6224,15 @@ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, "cyclist": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.2.tgz", @@ -7320,6 +7506,12 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz", @@ -7515,6 +7707,18 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", @@ -7538,6 +7742,68 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": 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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "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": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -7566,6 +7832,12 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", @@ -7687,6 +7959,42 @@ } } }, + "globule": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": 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" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", @@ -7754,6 +8062,23 @@ "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", @@ -7812,6 +8137,12 @@ "has-symbols": "^1.0.2" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", @@ -8393,6 +8724,21 @@ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz", @@ -8688,6 +9034,12 @@ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -8866,6 +9218,12 @@ "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", @@ -10551,6 +10909,12 @@ } } }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, "js-message": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", @@ -10757,6 +11121,12 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true + }, "koa": { "version": "2.14.2", "resolved": "https://registry.npmmirror.com/koa/-/koa-2.14.2.tgz", @@ -11073,6 +11443,39 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "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": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz", @@ -11101,6 +11504,12 @@ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -11172,6 +11581,16 @@ "@sinonjs/commons": "^1.7.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz", @@ -11222,6 +11641,12 @@ "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", @@ -11276,6 +11701,77 @@ "readable-stream": "^2.0.1" } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "dev": true, + "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" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "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": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + } + } + }, "merge": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/merge/-/merge-2.1.1.tgz", @@ -11601,6 +12097,11 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + }, "nanoid": { "version": "3.3.6", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", @@ -11661,6 +12162,34 @@ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + } + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz", @@ -11742,6 +12271,92 @@ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz", "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -11780,6 +12395,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz", @@ -11795,6 +12422,12 @@ "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", "dev": true }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, "nwsapi": { "version": "2.2.7", "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.7.tgz", @@ -12020,6 +12653,12 @@ "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, "os-locale-s-fix": { "version": "1.0.8-fix-1", "resolved": "https://registry.npmmirror.com/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz", @@ -12029,6 +12668,22 @@ "lcid": "^3.0.0" } }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/p-each-series/-/p-each-series-2.2.0.tgz", @@ -13276,6 +13931,16 @@ "resolve": "^1.1.6" } }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", @@ -13476,6 +14141,15 @@ "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz", @@ -13784,6 +14458,209 @@ } } }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "sass-loader": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.4.1.tgz", + "integrity": "sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", @@ -13809,6 +14686,27 @@ "ajv-keywords": "^3.5.2" } }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", @@ -14067,6 +14965,11 @@ "dev": true, "optional": true }, + "shvl": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz", + "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==" + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", @@ -14597,6 +15500,15 @@ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -14781,6 +15693,15 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -14811,6 +15732,68 @@ } } }, + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", @@ -14889,6 +15872,17 @@ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/terminal-link/-/terminal-link-2.1.1.tgz", @@ -15162,6 +16156,21 @@ "punycode": "^2.1.0" } }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, "tryer": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz", @@ -15591,6 +16600,11 @@ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "uview-ui": { + "version": "1.8.8", + "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-1.8.8.tgz", + "integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg==" + }, "v8-to-istanbul": { "version": "4.1.4", "resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", @@ -15672,101 +16686,6 @@ "vue-style-loader": "^4.1.0" } }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true, - "optional": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", @@ -15795,6 +16714,22 @@ "resolved": "https://registry.npmmirror.com/vuex/-/vuex-3.6.2.tgz", "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" }, + "vuex-persistedstate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", + "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", + "requires": { + "deepmerge": "^4.2.2", + "shvl": "^2.0.3" + }, + "dependencies": { + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + } + } + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -15895,7 +16830,11 @@ "version": "1.2.13", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -16211,7 +17150,11 @@ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -16495,6 +17438,12 @@ "webidl-conversions": "^4.0.2" } }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", @@ -16535,6 +17484,15 @@ "has-tostringtag": "^1.0.0" } }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", diff --git a/package.json b/package.json index c34a776..cdd0546 100644 --- a/package.json +++ b/package.json @@ -70,8 +70,10 @@ "@vue/shared": "^3.0.0", "core-js": "^3.6.5", "flyio": "^0.6.2", + "uview-ui": "^1.8.8", "vue": "^2.6.11", - "vuex": "^3.2.0" + "vuex": "^3.2.0", + "vuex-persistedstate": "^4.1.0" }, "devDependencies": { "@dcloudio/types": "^3.3.2", @@ -93,7 +95,11 @@ "jest": "^25.4.0", "mini-types": "*", "miniprogram-api-typings": "*", + "node-sass": "^4.14.1", "postcss-comment": "^2.0.0", + "sass-loader": "^10.1.1", + "stylus": "^0.54.8", + "stylus-loader": "^3.0.2", "vue-template-compiler": "^2.6.11" }, "browserslist": [ diff --git a/src/App.vue b/src/App.vue index 8c2b732..8a1ee82 100644 --- a/src/App.vue +++ b/src/App.vue @@ -12,6 +12,139 @@ } - diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..1d63636 --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,69 @@ +import Request from './luch-request/index.js' +import jwt from './jwt.js' +import {toast} from '@/com/utils.js' +//测试地址 +const baseApi = 'http://36.133.205.221:81'; + +const http = new Request(); + +http.setConfig((config) => { /* 设置全局配置 */ + config.baseURL = baseApi + config.header = { + ...config.header, + 'Accept': 'application/json' + } + config.custom = { + auth: true, // 是否传token + // loading: false // 是否使用loading + } + config.imeout = 30000 + + return config +}) +/* 请求之前拦截器 */ +http.interceptors.request.use((config, cancel) => { + if (config.custom.auth) { + // 需要权限认证的路由 需携带自定义参数 {custom: {auth: true}} + config.header.Authorization = 'Bearer '+jwt.getAccessToken(); + } + return config +}) + + /* 请求之后拦截器 */ +let isRefreshing = false;//多次锁 + +http.interceptors.response.use((response) => { /* 请求之后拦截器*/ + const {code} = response.data + console.log(response) + if(code ==4024){ + toast(response.data.msg) + }else if(code ==401){ + toast('请关闭小程序,重新进入') + } else{ + + } + return response +}, (err) => { // 请求错误 + const {code} = err.data + console.log(code) + if(code == 401){//过期未登录 + const config = err.config + if(!isRefreshing){ + isRefreshing = true + + }else{ + + } + }else { + + } + console.log(err,'======') + return Promise.reject(err) +}) +const getFullUrl = (url,params,header) => { + return http.post(url, params,{...header}); +}; +export { + http, + getFullUrl +} \ No newline at end of file diff --git a/src/api/jwt.js b/src/api/jwt.js new file mode 100644 index 0000000..624c9c4 --- /dev/null +++ b/src/api/jwt.js @@ -0,0 +1,57 @@ +import store from '@/store/index.js' +const tokenKey = 'user_access_token'; //键值 +// token +const getAccessToken = function() { + let token = store.state.user_access_token ? store.state.user_access_token : uni.getStorageSync(tokenKey); + try { + token = token?token:'' + } catch (e) {} + return token; +} +const setAccessToken = (access_token) => { + try { + uni.setStorageSync(tokenKey, access_token); + store.commit('USERACCESSTOKEN',access_token); + return true; + } catch (e) { + return false; + } +} +const clearAccessToken = function() { + try { + uni.removeStorageSync(tokenKey); + store.commit(tokenKey,''); + } catch (e) {} +} +//用户key +const getUserKey = function() { + let userKey = store.state.user_key ? store.state.user_key : uni.getStorageSync('user_key'); + try { + userKey = userKey?userKey:'' + } catch (e) {} + return userKey; +} +const setUserKey = (user_key) => { + try { + uni.setStorageSync('user_key', user_key); + store.commit('USERKEY',user_key); + return true; + } catch (e) { + return false; + } +} +const clearUserKey = function() { + try { + uni.removeStorageSync('user_key'); + store.commit('USERKEY',''); + } catch (e) {} +} + +export default { + getAccessToken, + setAccessToken, + clearAccessToken, + getUserKey, + setUserKey, + clearUserKey +} diff --git a/src/api/luch-request/adapters/index.js b/src/api/luch-request/adapters/index.js new file mode 100644 index 0000000..a90a2b3 --- /dev/null +++ b/src/api/luch-request/adapters/index.js @@ -0,0 +1,99 @@ +import buildURL from '../helpers/buildURL' +import buildFullPath from '../core/buildFullPath' +import settle from '../core/settle' +import { isUndefined } from "../utils" + +/** + * 返回可选值存在的配置 + * @param {Array} keys - 可选值数组 + * @param {Object} config2 - 配置 + * @return {{}} - 存在的配置项 + */ +const mergeKeys = (keys, config2) => { + let config = {} + keys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } + }) + return config +} +export default (config) => { + return new Promise((resolve, reject) => { + let fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params) + const _config = { + url: fullPath, + header: config.header, + complete: (response) => { + config.fullPath = fullPath + response.config = config + try { + // 对可能字符串不是json 的情况容错 + if (typeof response.data === 'string') { + response.data = JSON.parse(response.data) + } + // eslint-disable-next-line no-empty + } catch (e) { + } + settle(resolve, reject, response) + } + } + let requestTask + if (config.method === 'UPLOAD') { + delete _config.header['content-type'] + delete _config.header['Content-Type'] + let otherConfig = { + // #ifdef MP-ALIPAY + fileType: config.fileType, + // #endif + filePath: config.filePath, + name: config.name + } + const optionalKeys = [ + // #ifdef APP-PLUS || H5 + 'files', + // #endif + // #ifdef H5 + 'file', + // #endif + // #ifdef H5 || APP-PLUS + 'timeout', + // #endif + 'formData' + ] + requestTask = uni.uploadFile({..._config, ...otherConfig, ...mergeKeys(optionalKeys, config)}) + } else if (config.method === 'DOWNLOAD') { + // #ifdef H5 || APP-PLUS + if (!isUndefined(config['timeout'])) { + _config['timeout'] = config['timeout'] + } + // #endif + requestTask = uni.downloadFile(_config) + } else { + const optionalKeys = [ + 'data', + 'method', + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + 'timeout', + // #endif + 'dataType', + // #ifndef MP-ALIPAY || APP-PLUS + 'responseType', + // #endif + // #ifdef APP-PLUS + 'sslVerify', + // #endif + // #ifdef H5 + 'withCredentials', + // #endif + // #ifdef APP-PLUS + 'firstIpv4', + // #endif + ] + requestTask = uni.request({..._config,...mergeKeys(optionalKeys, config)}) + } + if (config.getTask) { + config.getTask(requestTask, config) + } + }) +} diff --git a/src/api/luch-request/core/InterceptorManager.js b/src/api/luch-request/core/InterceptorManager.js new file mode 100644 index 0000000..3ea0d5e --- /dev/null +++ b/src/api/luch-request/core/InterceptorManager.js @@ -0,0 +1,51 @@ +'use strict' + + +function InterceptorManager() { + this.handlers = [] +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }) + return this.handlers.length - 1 +} + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null + } +} + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + this.handlers.forEach(h => { + if (h !== null) { + fn(h) + } + }) +} + +export default InterceptorManager diff --git a/src/api/luch-request/core/Request.js b/src/api/luch-request/core/Request.js new file mode 100644 index 0000000..cb5ac0e --- /dev/null +++ b/src/api/luch-request/core/Request.js @@ -0,0 +1,199 @@ +/** + * @Class Request + * @description luch-request http请求插件 + * @version 3.0.5 + * @Author lu-ch + * @Date 2021-01-06 + * @Email webwork.s@qq.com + * 文档: https://www.quanzhan.co/luch-request/ + * github: https://github.com/lei-mu/luch-request + * DCloud: http://ext.dcloud.net.cn/plugin?id=392 + * HBuilderX: beat-3.0.4 alpha-3.0.4 + */ + + +import dispatchRequest from './dispatchRequest' +import InterceptorManager from './InterceptorManager' +import mergeConfig from './mergeConfig' +import defaults from './defaults' +import { isPlainObject } from '../utils' + +export default class Request { + /** + * @param {Object} arg - 全局配置 + * @param {String} arg.baseURL - 全局根路径 + * @param {Object} arg.header - 全局header + * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式 + * @param {String} arg.dataType = [json] - 全局默认的dataType + * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。App和支付宝小程序不支持 + * @param {Object} arg.custom - 全局默认的自定义参数 + * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序 + * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+) + * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+) + * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+) + * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300 + */ + constructor(arg = {}) { + if (!isPlainObject(arg)) { + arg = {} + console.warn('设置全局参数必须接收一个Object') + } + this.config = {...defaults, ...arg} + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + } + } + + /** + * @Function + * @param {Request~setConfigCallback} f - 设置全局默认配置 + */ + setConfig(f) { + this.config = f(this.config) + } + + middleware(config) { + config = mergeConfig(this.config, config) + let chain = [dispatchRequest, undefined] + let promise = Promise.resolve(config) + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected) + }) + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected) + }) + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()) + } + + return promise + } + + /** + * @Function + * @param {Object} config - 请求配置项 + * @prop {String} options.url - 请求路径 + * @prop {Object} options.data - 请求参数 + * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型 + * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse + * @prop {Object} [options.header = config.header] - 请求header + * @prop {Object} [options.method = config.method] - 请求方法 + * @returns {Promise} + */ + request(config = {}) { + return this.middleware(config) + } + + get(url, options = {}) { + return this.middleware({ + url, + method: 'GET', + ...options + }) + } + + post(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'POST', + ...options + }) + } + + // #ifndef MP-ALIPAY + put(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'PUT', + ...options + }) + } + + // #endif + + // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU + delete(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'DELETE', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN + connect(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'CONNECT', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN || MP-BAIDU + head(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'HEAD', + ...options + }) + } + + // #endif + + // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU + options(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'OPTIONS', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN + trace(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'TRACE', + ...options + }) + } + + // #endif + + upload(url, config = {}) { + config.url = url + config.method = 'UPLOAD' + return this.middleware(config) + } + + download(url, config = {}) { + config.url = url + config.method = 'DOWNLOAD' + return this.middleware(config) + } +} + + +/** + * setConfig回调 + * @return {Object} - 返回操作后的config + * @callback Request~setConfigCallback + * @param {Object} config - 全局默认config + */ diff --git a/src/api/luch-request/core/buildFullPath.js b/src/api/luch-request/core/buildFullPath.js new file mode 100644 index 0000000..f2852f4 --- /dev/null +++ b/src/api/luch-request/core/buildFullPath.js @@ -0,0 +1,20 @@ +'use strict' + +import isAbsoluteURL from '../helpers/isAbsoluteURL' +import combineURLs from '../helpers/combineURLs' + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL) + } + return requestedURL +} diff --git a/src/api/luch-request/core/defaults.js b/src/api/luch-request/core/defaults.js new file mode 100644 index 0000000..178b617 --- /dev/null +++ b/src/api/luch-request/core/defaults.js @@ -0,0 +1,30 @@ +/** + * 默认的全局配置 + */ + + +export default { + baseURL: '', + header: {}, + method: 'GET', + dataType: 'json', + // #ifndef MP-ALIPAY || APP-PLUS + responseType: 'text', + // #endif + custom: {}, + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + timeout: 60000, + // #endif + // #ifdef APP-PLUS + sslVerify: true, + // #endif + // #ifdef H5 + withCredentials: false, + // #endif + // #ifdef APP-PLUS + firstIpv4: false, + // #endif + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300 + } +} diff --git a/src/api/luch-request/core/dispatchRequest.js b/src/api/luch-request/core/dispatchRequest.js new file mode 100644 index 0000000..c5f2c85 --- /dev/null +++ b/src/api/luch-request/core/dispatchRequest.js @@ -0,0 +1,6 @@ +import adapter from '../adapters/index' + + +export default (config) => { + return adapter(config) +} diff --git a/src/api/luch-request/core/mergeConfig.js b/src/api/luch-request/core/mergeConfig.js new file mode 100644 index 0000000..e95ef31 --- /dev/null +++ b/src/api/luch-request/core/mergeConfig.js @@ -0,0 +1,103 @@ +import {deepMerge, isUndefined} from '../utils' + +/** + * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局 + * @param {Array} keys - 配置项 + * @param {Object} globalsConfig - 当前的全局配置 + * @param {Object} config2 - 局部配置 + * @return {{}} + */ +const mergeKeys = (keys, globalsConfig, config2) => { + let config = {} + keys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } else if (!isUndefined(globalsConfig[prop])) { + config[prop] = globalsConfig[prop] + } + }) + return config +} +/** + * + * @param globalsConfig - 当前实例的全局配置 + * @param config2 - 当前的局部配置 + * @return - 合并后的配置 + */ +export default (globalsConfig, config2 = {}) => { + const method = config2.method || globalsConfig.method || 'GET' + let config = { + baseURL: globalsConfig.baseURL || '', + method: method, + url: config2.url || '', + params: config2.params || {}, + custom: {...(globalsConfig.custom || {}), ...(config2.custom || {})}, + header: deepMerge(globalsConfig.header || {}, config2.header || {}) + } + const defaultToConfig2Keys = ['getTask', 'validateStatus'] + config = {...config, ...mergeKeys(defaultToConfig2Keys, globalsConfig, config2)} + + // eslint-disable-next-line no-empty + if (method === 'DOWNLOAD') { + // #ifdef H5 || APP-PLUS + if (!isUndefined(config2.timeout)) { + config['timeout'] = config2['timeout'] + } else if (!isUndefined(globalsConfig.timeout)) { + config['timeout'] = globalsConfig['timeout'] + } + // #endif + } else if (method === 'UPLOAD') { + delete config.header['content-type'] + delete config.header['Content-Type'] + const uploadKeys = [ + // #ifdef APP-PLUS || H5 + 'files', + // #endif + // #ifdef MP-ALIPAY + 'fileType', + // #endif + // #ifdef H5 + 'file', + // #endif + 'filePath', + 'name', + // #ifdef H5 || APP-PLUS + 'timeout', + // #endif + 'formData', + ] + uploadKeys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } + }) + // #ifdef H5 || APP-PLUS + if (isUndefined(config.timeout) && !isUndefined(globalsConfig.timeout)) { + config['timeout'] = globalsConfig['timeout'] + } + // #endif + } else { + const defaultsKeys = [ + 'data', + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + 'timeout', + // #endif + 'dataType', + // #ifndef MP-ALIPAY || APP-PLUS + 'responseType', + // #endif + // #ifdef APP-PLUS + 'sslVerify', + // #endif + // #ifdef H5 + 'withCredentials', + // #endif + // #ifdef APP-PLUS + 'firstIpv4', + // #endif + ] + config = {...config, ...mergeKeys(defaultsKeys, globalsConfig, config2)} + } + + return config +} diff --git a/src/api/luch-request/core/settle.js b/src/api/luch-request/core/settle.js new file mode 100644 index 0000000..b2f1659 --- /dev/null +++ b/src/api/luch-request/core/settle.js @@ -0,0 +1,16 @@ +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus + const status = response.statusCode + if (status && (!validateStatus || validateStatus(status))) { + resolve(response) + } else { + reject(response) + } +} diff --git a/src/api/luch-request/helpers/buildURL.js b/src/api/luch-request/helpers/buildURL.js new file mode 100644 index 0000000..d26dc30 --- /dev/null +++ b/src/api/luch-request/helpers/buildURL.js @@ -0,0 +1,69 @@ +'use strict' + +import * as utils from './../utils' + +function encode(val) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']') +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +export default function buildURL(url, params) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url + } + + var serializedParams + if (utils.isURLSearchParams(params)) { + serializedParams = params.toString() + } else { + var parts = [] + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return + } + + if (utils.isArray(val)) { + key = key + '[]' + } else { + val = [val] + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString() + } else if (utils.isObject(v)) { + v = JSON.stringify(v) + } + parts.push(encode(key) + '=' + encode(v)) + }) + }) + + serializedParams = parts.join('&') + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#') + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex) + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams + } + + return url +} diff --git a/src/api/luch-request/helpers/combineURLs.js b/src/api/luch-request/helpers/combineURLs.js new file mode 100644 index 0000000..7b9d1ef --- /dev/null +++ b/src/api/luch-request/helpers/combineURLs.js @@ -0,0 +1,14 @@ +'use strict' + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL +} diff --git a/src/api/luch-request/helpers/isAbsoluteURL.js b/src/api/luch-request/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..2a82517 --- /dev/null +++ b/src/api/luch-request/helpers/isAbsoluteURL.js @@ -0,0 +1,14 @@ +'use strict' + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url) +} diff --git a/src/api/luch-request/index.d.ts b/src/api/luch-request/index.d.ts new file mode 100644 index 0000000..2169947 --- /dev/null +++ b/src/api/luch-request/index.d.ts @@ -0,0 +1,116 @@ +type AnyObject = Record +type HttpPromise = Promise>; +type Tasks = UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask +export interface RequestTask { + abort: () => void; + offHeadersReceived: () => void; + onHeadersReceived: () => void; +} +export interface HttpRequestConfig { + /** 请求基地址 */ + baseURL?: string; + /** 请求服务器接口地址 */ + url?: string; + + /** 请求查询参数,自动拼接为查询字符串 */ + params?: AnyObject; + /** 请求体参数 */ + data?: AnyObject; + + /** 文件对应的 key */ + name?: string; + /** HTTP 请求中其他额外的 form data */ + formData?: AnyObject; + /** 要上传文件资源的路径。 */ + filePath?: string; + /** 需要上传的文件列表。使用 files 时,filePath 和 name 不生效,App、H5( 2.6.15+) */ + files?: Array<{ + name?: string; + file?: File; + uri: string; + }>; + /** 要上传的文件对象,仅H5(2.6.15+)支持 */ + file?: File; + + /** 请求头信息 */ + header?: AnyObject; + /** 请求方式 */ + method?: "GET" | "POST" | "PUT" | "DELETE" | "CONNECT" | "HEAD" | "OPTIONS" | "TRACE" | "UPLOAD" | "DOWNLOAD"; + /** 如果设为 json,会尝试对返回的数据做一次 JSON.parse */ + dataType?: string; + /** 设置响应的数据类型,App和支付宝小程序不支持 */ + responseType?: "text" | "arraybuffer"; + /** 自定义参数 */ + custom?: AnyObject; + /** 超时时间,仅微信小程序(2.10.0)、支付宝小程序支持 */ + timeout?: number; + /** DNS解析时优先使用ipv4,仅 App-Android 支持 (HBuilderX 2.8.0+) */ + firstIpv4?: boolean; + /** 验证 ssl 证书 仅5+App安卓端支持(HBuilderX 2.3.3+) */ + sslVerify?: boolean; + /** 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+) */ + withCredentials?: boolean; + + /** 返回当前请求的task, options。请勿在此处修改options。 */ + getTask?: (task: T, options: HttpRequestConfig) => void; + /** 全局自定义验证器 */ + validateStatus?: (statusCode: number) => boolean | void; +} +export interface HttpResponse { + config: HttpRequestConfig; + statusCode: number; + cookies: Array; + data: T; + errMsg: string; + header: AnyObject; +} +export interface HttpUploadResponse { + config: HttpRequestConfig; + statusCode: number; + data: T; + errMsg: string; +} +export interface HttpDownloadResponse extends HttpResponse { + tempFilePath: string; +} +export interface HttpError { + config: HttpRequestConfig; + statusCode?: number; + cookies?: Array; + data?: any; + errMsg: string; + header?: AnyObject; +} +export interface HttpInterceptorManager { + use( + onFulfilled?: (config: V) => Promise | V, + onRejected?: (config: E) => Promise | E + ): void; + eject(id: number): void; +} +export abstract class HttpRequestAbstract { + constructor(config?: HttpRequestConfig); + config: HttpRequestConfig; + interceptors: { + request: HttpInterceptorManager; + response: HttpInterceptorManager; + } + middleware(config: HttpRequestConfig): HttpPromise; + request(config: HttpRequestConfig): HttpPromise; + get(url: string, config?: HttpRequestConfig): HttpPromise; + upload(url: string, config?: HttpRequestConfig): HttpPromise; + delete(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + head(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + post(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + put(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + connect(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + options(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + trace(url: string, data?: AnyObject, config?: HttpRequestConfig): HttpPromise; + + download(url: string, config?: HttpRequestConfig): Promise; + + setConfig(onSend: (config: HttpRequestConfig) => HttpRequestConfig): void; +} + +declare class HttpRequest extends HttpRequestAbstract { } +export default HttpRequest; diff --git a/src/api/luch-request/index.js b/src/api/luch-request/index.js new file mode 100644 index 0000000..d8fe348 --- /dev/null +++ b/src/api/luch-request/index.js @@ -0,0 +1,2 @@ +import Request from './core/Request' +export default Request diff --git a/src/api/luch-request/utils.js b/src/api/luch-request/utils.js new file mode 100644 index 0000000..0b5bf21 --- /dev/null +++ b/src/api/luch-request/utils.js @@ -0,0 +1,135 @@ +'use strict' + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +export function isArray (val) { + return toString.call(val) === '[object Array]' +} + + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +export function isObject (val) { + return val !== null && typeof val === 'object' +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +export function isDate (val) { + return toString.call(val) === '[object Date]' +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +export function isURLSearchParams (val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams +} + + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +export function forEach (obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj] + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj) + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj) + } + } + } +} + +/** + * 是否为boolean 值 + * @param val + * @returns {boolean} + */ +export function isBoolean(val) { + return typeof val === 'boolean' +} + +/** + * 是否为真正的对象{} new Object + * @param {any} obj - 检测的对象 + * @returns {boolean} + */ +export function isPlainObject(obj) { + return Object.prototype.toString.call(obj) === '[object Object]' +} + + + +/** + * Function equal to merge with the difference being that no reference + * to original objects is kept. + * + * @see merge + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +export function deepMerge(/* obj1, obj2, obj3, ... */) { + let result = {} + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = deepMerge(result[key], val) + } else if (typeof val === 'object') { + result[key] = deepMerge({}, val) + } else { + result[key] = val + } + } + for (let i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue) + } + return result +} + +export function isUndefined (val) { + return typeof val === 'undefined' +} diff --git a/src/com/subscribeTmplIds.js b/src/com/subscribeTmplIds.js new file mode 100644 index 0000000..963c41e --- /dev/null +++ b/src/com/subscribeTmplIds.js @@ -0,0 +1,3 @@ +export const SHJGTMPLID = 'Xejag3ttwOw_xLvXsrMULjnoNcm5bJIyu-ACnshUnKY';//审核结果 + +export const SFTZTMPLID = 'slzGT4a8GDQUjmd4uHrZmHYD8ta55KrXe9RTOrL0qRc';//收费通知 \ No newline at end of file diff --git a/src/com/utils.js b/src/com/utils.js new file mode 100644 index 0000000..64ba331 --- /dev/null +++ b/src/com/utils.js @@ -0,0 +1,462 @@ + +/** + * 显示加载动画 + * @export + * @param {string} [title="加载中..."] + * @param {boolean} [mask=true] + */ +export function showLoading(title = "加载中...", mask = true) { + uni.showLoading({ + title, + mask + }) +} +/** + * 关闭加载动画 + * @export + */ +export function hideLoading() { + uni.hideLoading() +} +/** + * 轻提示框 + * @export + * @param {*} title + * @param {*} duration + */ +export function toast(title = "", icon = "none", duration = 2000, cb) { + uni.showToast({ + title, + icon: icon, + mask: false, + duration, + success: function() { + cb && cb() + } + }) +} + +/** + * 动态设置当前页面的标题 + * @export + */ +export function setNavigationBarTitle(title = '') { + uni.setNavigationBarTitle({ + title + }); +} + +/** + * 图片预览 + * @export + * @param {*} current + * @param {*} [urls=[]] + */ +export function previewImage(current, urls = [],callback= () => {}) { + uni.previewImage({ + current, // 当前显示图片的http链接 + urls ,// 需要预览的图片http链接列表, + complete: function(e){ + callback(e) + } + }) +} +/** + * 从本地相册选择图片或使用相机拍照 + * @export + * @param {string} [sourceType=['album', 'camera']] + * @param {*} cb + */ +export function chooseImage(count = 9, success = () => {}, err = () => {}) { + uni.chooseImage({ + count, + sizeType: ['compressed'], + sourceType: ['album', 'camera'], + success(res) { + // tempFilePath可以作为img标签的src属性显示图片 + const tempFilePaths = res.tempFilePaths; + success(tempFilePaths) + }, + fail() { + err() + } + }) +} +/** + * 从本地相册选择图片或使用相机拍照 + * @export + * @param {string} [sourceType=['album', 'camera']] + * @param {*} cb + */ +export function chooseVideo(success = () => {},err = () => {},sourceType = ['album', 'camera']) { + uni.chooseVideo({ + sourceType: sourceType, + success(res) { + // tempFilePath可以作为img标签的src属性显示图片 + console.log(res); + const tempFilePath = res.tempFilePath; + success(tempFilePath,res) + }, + fail() { + err() + } + }) +} +/** + * 图片预览跟视频 + * @export + * @param {*} current + * @param {*} [urls=[]] + */ +export function previewMedia(current, sources = [],callback= () => {}) { + uni.previewMedia({ + current, // 当前显示index + sources ,// 需要预览的http链接列表, + complete: function(e){ + callback(e) + } + }) +} +/** + * 压缩图片接口,可选压缩质量 + * @export + * @param {*} src + * @param {*} [success=()=> {}] + * @param {*} [err=()=> {}] + */ +export function compressImage(src, quality = 80, cb = () => {}, err = () => {}) { + console.log(src, '|'); + uni.compressImage({ + src: src, + quality: quality, + success: res => { + console.log(res.tempFilePath) + cb(res.tempFilePath) + }, + fail(e) { + console.log("失败") + err(e) + } + }) +} +/** + * setStorage 的同步版本 + * @export + * @param {*} key + * @param {*} val + */ +export function setStorageSync(key, val) { + try { + uni.setStorageSync(key, val) + } catch (e) { + + } +} +export function setStorage(key, val) { + try { + uni.setStorage({ + key:key, + data:val + }) + } catch (e) { + + } +} +/** + * getStorage 的同步版本 + * @export + * @param {*} key + * @returns + */ +export function getStorageSync(key) { + try { + return uni.getStorageSync(key) + } catch (e) { + + } +} +/** + * removeStorage 的同步版本 + * @export + * @param {*} key + */ +export function removeStorageSync(key) { + try { + uni.removeStorageSync(key) + } catch (e) { + + } +} + + +/** + * clearStorage 的同步版本 + * @export + */ +export function clearStorageSync() { + try { + uni.clearStorageSync() + } catch (e) { + + } +} +/** + * 显示小红点 + * @export + * @param {*} index + */ +export function showTabBarRedDot(index) { + uni.showTabBarRedDot({ + index + }) +} + +/** + * 隐藏小红点 + * @export + * @param {*} index + */ +export function hideTabBarRedDot(index) { + uni.hideTabBarRedDot({ + index + }) +} + +/** + * 返回上一页 + * @export + * @param + */ +export function navigateBack() { + uni.navigateBack({ + delta: 1, + success() {}, + fail() { + var pages = getCurrentPages(); + var page = pages[pages.length - 2]; + if(page){ + uni.switchTab({ + url: page.route + }); + }else{ + uni.switchTab({ + url: '/pages/index/index' + }); + } + } + }); +} + +export function formatDate(time, fmt) { + if (!time) { + return '' + } + let _date = new Date(time); + let o = { + 'M+': _date.getMonth() + 1, // 月份 + 'd+': _date.getDate(), // 日 + 'h+': _date.getHours(), // 小时 + 'm+': _date.getMinutes(), // 分 + 's+': _date.getSeconds(), // 秒 + 'q+': Math.floor((_date.getMonth() + 3) / 3), // 季度 + 'S': _date.getMilliseconds() // 毫秒 + }; + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (_date.getFullYear() + '').substr(4 - RegExp.$1.length)); + } + for (let k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))); + } + } + return fmt; +} +//验证手机 +export function isPhoneNumber(val){ + let rt = /^1\d{10}$/ + if(rt.test(val)){ + return true + }else{ + return false + } +} + +export function arrayKeyGroup(array,key='id'){ + let newArray = []; + console.log(key) + array.map(item=>{ + return [item] + }).forEach(([{...item}])=>{ + const flag = newArray.find(([{...o}])=>o[key] === item[key]); + if(!flag) { + newArray.push([{...item}]) + } else { + newArray.forEach(([{...y}], index)=>{ + if(y[key] === item[key]) { + newArray[index].push(item) + } + }) + } + }) + return newArray +} + +export function stringHide(string,start,end){ + let th = '' + let xlen = end - start; + for(let i =0;i < xlen;i++) { + th += '*' + } + return string.substring(0,start) + th + string.substring(end,string.length) +} + +export function compareVersion(v1, v2) { + v1 = v1.split('.') + v2 = v2.split('.') + const len = Math.max(v1.length, v2.length) + + while (v1.length < len) { + v1.push('0') + } + while (v2.length < len) { + v2.push('0') + } + + for (let i = 0; i < len; i++) { + const num1 = parseInt(v1[i]) + const num2 = parseInt(v2[i]) + + if (num1 > num2) { + return 1 + } else if (num1 < num2) { + return -1 + } + } + + return 0 +} + +/** + * 路由跳转 + * + * @param Object target {type, way, url} + */ +export function Target(target) { + if (target.type === 'mini-program') { + const way = target.way || 'navigateTo' + const params = { url: target.url } + switch (way) { + case 'navigateTo': + uni.navigateTo(params) + break; + case 'redirectTo': + uni.redirectTo(params) + break; + case 'reLaunch': + uni.reLaunch(params) + break; + case 'switchTab': + uni.switchTab(params) + break; + case 'navigateBack': + navigateBack() + break; + } + } +} + +// 判断是否为空 +export function isEmpty(obj){ + if(typeof obj == "undefined" || obj == null || obj == ''){ + return true; + }else{ + return false; + } +} + +export function getQueryName(str,name){ + let query = str.split('?')[1]; + let vars = query.split("&"); + for (let i=0;i {}){ + let _tmplIds = tmplIds; + wx.requestSubscribeMessage({ + tmplIds: _tmplIds, + success: (res)=> { + console.log(res,'成功') + let acceptnum = 0; + for(let vk of _tmplIds){ + if(res[vk]==='accept'){//同意 + acceptnum += 1 + } + } + if(acceptnum==0){ + + }else{ + + callback(res) + } + }, + fail:(err)=>{ + if (err.errCode == 20004) { + console.log('用户拒绝了',err) + }else{ + callback(res) + } + + } + }) +} + +export function testIdCard(id) { + // 1 "验证通过!", 0 //校验不通过 // id为身份证号码 + var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/; + //号码规则校验 + if(!format.test(id)){ + return {'status':0,'msg':'身份证号码不合规'}; + } + //区位码校验 + //出生年月日校验 前正则限制起始年份为1900; + var year = id.substr(6,4),//身份证年 + month = id.substr(10,2),//身份证月 + date = id.substr(12,2),//身份证日 + time = Date.parse(month+'-'+date+'-'+year),//身份证日期时间戳date + now_time = Date.parse(new Date()),//当前时间戳 + dates = (new Date(year,month,0)).getDate();//身份证当月天数 + if(time>now_time||date>dates){ + return {'status':0,'msg':'出生日期不合规'} + } + //校验码判断 + var c = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //系数 + var b = new Array('1','0','X','9','8','7','6','5','4','3','2'); //校验码对照表 + var id_array = id.split(""); + var sum = 0; + for(var k=0;k<17;k++){ + sum+=parseInt(id_array[k])*parseInt(c[k]); + } + if(id_array[17].toUpperCase() != b[sum%11].toUpperCase()){ + return {'status':0,'msg':'身份证校验码不合规'} + } + return {'status':1,'msg':'校验通过'} +} +export function testEmail(email){ + let regEmail = new RegExp("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$"); + return regEmail.test(email) +} +export function testBank(bank){ + let reg = /[1-9]\d{12,18}/; + return reg.test(bank) +} +export function testPhone(phone){ + let reg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/ + return reg.test(phone) +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index 20883fb..0b8bfe4 100644 --- a/src/main.js +++ b/src/main.js @@ -1,12 +1,18 @@ import Vue from 'vue' import App from './App' import './uni.promisify.adaptor' - +import uView from "uview-ui"; +Vue.use(uView); +import {http,getFullUrl} from '@/api/index.js' +import store from './store/index.js' Vue.config.productionTip = false +Vue.prototype.$http = http +Vue.prototype.$getFullUrl = getFullUrl App.mpType = 'app' const app = new Vue({ + store, ...App }) app.$mount() diff --git a/src/pages.json b/src/pages.json index 1aea851..3fb5810 100644 --- a/src/pages.json +++ b/src/pages.json @@ -1,16 +1,66 @@ { + "easycom": { + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + }, "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { "path": "pages/index/index", "style": { - "navigationBarTitleText": "uni-app" + "navigationBarTitleText": "隆昌农业大数据监控平台" } } - ], + ,{ + "path" : "pages/login/login", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/user/user", + "style" : + { + "navigationBarTitleText": "个人中心", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } + + } + ,{ + "path" : "pages/user/password-edit", + "style" : + { + "navigationBarTitleText": "修改密码", + "enablePullDownRefresh": false + } + + } + ], "globalStyle": { - "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", - "navigationBarBackgroundColor": "#F8F8F8", - "backgroundColor": "#F8F8F8" + "navigationBarTextStyle": "white", + "navigationBarTitleText": "隆昌农业大数据监控平台", + "navigationBarBackgroundColor": "#2a7dc9", + "backgroundColor": "#2a7dc9" + }, + "tabBar": { + "color": "#6c6b6b", + "selectedColor": "#1296db", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [{ + "pagePath": "pages/index/index", + "iconPath": "static/tab/tab_home.png", + "selectedIconPath": "static/tab/tab_home_h.png", + "text": "工作台" + }, + { + "pagePath": "pages/user/user", + "iconPath": "static/tab/tab_user.png", + "selectedIconPath": "static/tab/tab_user_h.png", + "text": "我的" + } + ] } } diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index bd118ba..49534b2 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -1,9 +1,6 @@ diff --git a/src/pages/login/login.vue b/src/pages/login/login.vue new file mode 100644 index 0000000..8174667 --- /dev/null +++ b/src/pages/login/login.vue @@ -0,0 +1,218 @@ + + + diff --git a/src/pages/user/password-edit.vue b/src/pages/user/password-edit.vue new file mode 100644 index 0000000..2a0aded --- /dev/null +++ b/src/pages/user/password-edit.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/pages/user/user.vue b/src/pages/user/user.vue new file mode 100644 index 0000000..88b743b --- /dev/null +++ b/src/pages/user/user.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/src/static/head.png b/src/static/head.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2bde640eb42591aaa3b23a1eb9474e94bad9d2 GIT binary patch literal 162055 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

!Xbv0A5-E2J}E+27UYASTEy6} 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%0A(UGh&_ZbPe4U3&cjM`^-;tVx7OGMNvI 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

Yu~ItgFWO%(R`xEmbFFg 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 literal 0 HcmV?d00001 diff --git a/src/static/img/my_arrow_right.png b/src/static/img/my_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..5c129af9b2929d78f9dcfea959e0ce16d01ff100 GIT binary patch literal 220 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 Z;TXSt*~xG11I@w%!>gvK3O(oO{{!UsoyY(H literal 0 HcmV?d00001 diff --git a/src/static/tab/tab_home_h.png b/src/static/tab/tab_home_h.png new file mode 100644 index 0000000000000000000000000000000000000000..e10659757c0352acb030ab2c4e2d8c1e0370f352 GIT binary patch literal 4315 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 JPDHLkV1gXt0Z9M= literal 0 HcmV?d00001 diff --git a/src/static/tab/tab_user.png b/src/static/tab/tab_user.png new file mode 100644 index 0000000000000000000000000000000000000000..5d58bfb331f616a9fe4b34380aa68be4b1f2a87b GIT binary patch literal 3249 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 literal 0 HcmV?d00001 diff --git a/src/store/actions.js b/src/store/actions.js new file mode 100644 index 0000000..4c1a2d7 --- /dev/null +++ b/src/store/actions.js @@ -0,0 +1,16 @@ +import * as types from "./mutation-types"; +import {getStorageSync,setStorageSync,setStorage} from '@/com/utils.js' +const actions = { + [types.USER_INFO]({commit},userInfo){ + let _data = {}; + if(userInfo&&userInfo.id){ + _data = userInfo; + // setStorage('userInfo',userInfo) + }else{ + _data = getStorageSync('userInfo'); + } + commit(types.USER_INFO, _data); + }, +}; + +export default actions; \ No newline at end of file diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 0000000..bb652fc --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,4 @@ +//用户信息 +export const userInfo = (state)=> state.userInfo +//token +export const token = (state)=> state.user_access_token \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..92e4b95 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,30 @@ +import Vue from "vue"; +import Vuex from "vuex"; +import actions from "./actions"; +import * as getters from "./getters"; +import state from "./state"; +import mutations from "./mutations"; +import createPersistedState from 'vuex-persistedstate'; +Vue.use(Vuex); + +// store +const store = new Vuex.Store({ + getters, + state, + actions, + mutations, + plugins: [ + createPersistedState({ + // 当state中的值发生变化的时候出发reduce函数 + reducer(val) { + console.log(val,'createPersistedState') // value值为当前state中的所有值对象 + // return什么,localstorage中的key值为vuex的value值就是什么,而且是实时与state中的值保持同步 + return { + userInfo: val.userInfo + } + } + }) + ] +}); + +export default store; \ No newline at end of file diff --git a/src/store/mutation-types.js b/src/store/mutation-types.js new file mode 100644 index 0000000..4790574 --- /dev/null +++ b/src/store/mutation-types.js @@ -0,0 +1,5 @@ +// ------------------------------------mustions types------------------------------------// +//用户信息 +export const USER_INFO = 'USER_INFO' +export const USERACCESSTOKEN = 'USERACCESSTOKEN' +export const USERKEY = 'USERKEY' \ No newline at end of file diff --git a/src/store/mutations.js b/src/store/mutations.js new file mode 100644 index 0000000..4f8fd16 --- /dev/null +++ b/src/store/mutations.js @@ -0,0 +1,14 @@ +import * as types from "./mutation-types"; +const mutations = { + // 设置用户信息 + [types.USER_INFO](state, userInfo) { + state.userInfo = userInfo + }, + [types.USERACCESSTOKEN](state, token) { + state.user_access_token = token + }, + [types.USERKEY](state, userkey) { + state.user_key = userkey + }, +}; +export default mutations; diff --git a/src/store/state.js b/src/store/state.js new file mode 100644 index 0000000..41c7c47 --- /dev/null +++ b/src/store/state.js @@ -0,0 +1,7 @@ +const state = { + userInfo: {}, + user_access_token: '', + user_key:'', +}; + +export default state; \ No newline at end of file diff --git a/src/uni.scss b/src/uni.scss index 288300d..e0166e0 100644 --- a/src/uni.scss +++ b/src/uni.scss @@ -11,7 +11,7 @@ * * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 */ - +@import 'uview-ui/theme.scss'; /* 颜色变量 */ /* 行为相关颜色 */