Michael Wang 3 vuotta sitten
vanhempi
commit
bb24e2e7c3
52 muutettua tiedostoa jossa 186 lisäystä ja 84 poistoa
  1. 12 1
      package.json
  2. 0 24
      source/.eslintrc.json
  3. 0 26
      source/lib/config.js
  4. 0 27
      source/package.json
  5. 6 1
      src/background.ts
  6. 0 0
      src/lib/api.js
  7. 33 0
      src/lib/config.ts
  8. 0 0
      src/lib/db.js
  9. 0 0
      src/lib/env.js
  10. 0 0
      src/lib/image.js
  11. 0 0
      src/lib/logger.js
  12. 0 0
      src/lib/promise-pool.js
  13. 0 0
      src/lib/sync.js
  14. 0 0
      src/main.js
  15. 0 0
      src/test/api-test.js
  16. 0 0
      src/test/config-test.js
  17. 0 0
      src/test/db-test.js
  18. 0 0
      src/test/image-test.js
  19. 0 0
      src/test/readline-test.js
  20. 0 0
      src/test/result.json
  21. 0 0
      src/test/sizeof-test.js
  22. 0 0
      src/test/watermark-test.js
  23. 0 0
      src/view/check.html
  24. 0 0
      src/view/css/style.css
  25. 0 0
      src/view/exam-list.html
  26. 0 0
      src/view/image-check.html
  27. 0 0
      src/view/image-download.html
  28. 0 0
      src/view/image.html
  29. 0 0
      src/view/img/back.png
  30. 0 0
      src/view/img/bg.jpg
  31. 0 0
      src/view/img/close.png
  32. 0 0
      src/view/img/data_btn.png
  33. 0 0
      src/view/img/enter.png
  34. 0 0
      src/view/img/error.png
  35. 0 0
      src/view/img/error_small.png
  36. 0 0
      src/view/img/icon1.png
  37. 0 0
      src/view/img/icon2.png
  38. 0 0
      src/view/img/icon3.png
  39. 0 0
      src/view/img/id.png
  40. 0 0
      src/view/img/logo.png
  41. 0 0
      src/view/img/logo_blue.png
  42. 0 0
      src/view/img/pic_btn.png
  43. 0 0
      src/view/img/radio.png
  44. 0 0
      src/view/img/select.png
  45. 0 0
      src/view/img/success.png
  46. 0 0
      src/view/img/success_small.png
  47. 0 0
      src/view/index.html
  48. 0 0
      src/view/login.html
  49. 0 0
      src/view/sync-run.html
  50. 0 0
      src/view/sync.html
  51. 1 1
      vue.config.js
  52. 134 4
      yarn.lock

+ 12 - 1
package.json

@@ -17,7 +17,18 @@
   "dependencies": {
     "core-js": "^3.6.5",
     "vue": "^3.0.0",
-    "vue-router": "^4.0.0-0"
+    "vue-router": "^4.0.0-0",
+    "gm": "^1.23.1",
+    "image-size": "^0.6.3",
+    "jquery": "^3.3.1",
+    "log4js": "^3.0.6",
+    "mkdirp": "^0.5.1",
+    "moment": "^2.22.2",
+    "mustache": "^3.0.0",
+    "mysql": "^2.16.0",
+    "request": "^2.88.0",
+    "requestretry": "^3.1.0",
+    "thinkjs-util": ">=0.0.1"
   },
   "devDependencies": {
     "@types/electron-devtools-installer": "^2.2.0",

+ 0 - 24
source/.eslintrc.json

@@ -1,24 +0,0 @@
-{
-    "env": {
-        "es6": true,
-        "node": true
-    },
-    "extends": "eslint:recommended",
-    "globals": {
-        "Atomics": "readonly",
-        "SharedArrayBuffer": "readonly"
-    },
-    "parserOptions": {
-        "ecmaVersion": 2018,
-        "sourceType": "module"
-    },
-    "rules": {
-        "no-console": "off",
-        "no-constant-condition": [
-            "error",
-            {
-                "checkLoops": false
-            }
-        ]
-    }
-}

+ 0 - 26
source/lib/config.js

@@ -1,26 +0,0 @@
-const fs = require('fs')
-const path = require('path')
-const moment = require('moment')
-const store = require('../../config.json')
-const env = require('./env.js')
-
-let timeLog = path.join(__dirname, '../../logs/time.log')
-let syncTime = {}
-if (fs.existsSync(path.join(__dirname, '../../logs/time.log'))) {
-    try {
-        syncTime = JSON.parse(fs.readFileSync(timeLog))
-    } catch (err) {
-        syncTime = {}
-    }
-}
-store['syncTime'] = syncTime
-
-module.exports = store;
-
-module.exports.updateSyncTime = function () {
-    if (env.server && env.exam) {
-        syncTime[env.server.host + '_' + env.exam.id] = moment().format('YYYY-MM-DD HH:mm:ss')
-        store['syncTime'] = syncTime
-        fs.writeFileSync(timeLog, JSON.stringify(syncTime))
-    }
-}

+ 0 - 27
source/package.json

@@ -1,27 +0,0 @@
-{
-    "name": "mc-proxy",
-    "version": "1.0.0",
-    "description": "",
-    "main": "main.js",
-    "scripts": {
-        "test": "echo \"Error: no test specified\" && exit 1"
-    },
-    "author": "",
-    "license": "ISC",
-    "dependencies": {
-        "gm": "^1.23.1",
-        "image-size": "^0.6.3",
-        "jquery": "^3.3.1",
-        "log4js": "^3.0.6",
-        "mkdirp": "^0.5.1",
-        "moment": "^2.22.2",
-        "mustache": "^3.0.0",
-        "mysql": "^2.16.0",
-        "request": "^2.88.0",
-        "requestretry": "^3.1.0",
-        "thinkjs-util": ">=0.0.1"
-    },
-    "devDependencies": {
-        "eslint": "^5.16.0"
-    }
-}

+ 6 - 1
src/background.ts

@@ -3,6 +3,7 @@
 import { app, protocol, BrowserWindow } from "electron";
 import { createProtocol } from "vue-cli-plugin-electron-builder/lib";
 import installExtension, { VUEJS3_DEVTOOLS } from "electron-devtools-installer";
+import config from "./lib/config";
 const isDevelopment = process.env.NODE_ENV !== "production";
 
 // Scheme must be registered before the app is ready
@@ -27,12 +28,16 @@ async function createWindow() {
   if (process.env.WEBPACK_DEV_SERVER_URL) {
     // Load the url of the dev server if in development mode
     await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL as string);
-    if (!process.env.IS_TEST) win.webContents.openDevTools();
+    // if (!process.env.IS_TEST) win.webContents.openDevTools();
   } else {
     createProtocol("app");
     // Load the index.html when not in development
     win.loadURL("app://./index.html");
   }
+
+  if (config.openDevTools === true) {
+    win.webContents.openDevTools();
+  }
 }
 
 // Quit when all windows are closed.

+ 0 - 0
source/lib/api.js → src/lib/api.js


+ 33 - 0
src/lib/config.ts

@@ -0,0 +1,33 @@
+import fs from "fs";
+import path from "path";
+import moment from "moment";
+import env from "./env.js";
+
+console.log(__dirname);
+const configJson = fs.readFileSync(path.join(__dirname, "../config.json"));
+const store = JSON.parse(configJson.toString());
+
+export default store;
+
+// const timeLog = path.join(__dirname, "../../logs/time.log");
+// let syncTime = {};
+// if (fs.existsSync(path.join(__dirname, "../../logs/time.log"))) {
+//   try {
+//     syncTime = fs.readFileSync(timeLog).toJSON();
+//   } catch (err) {
+//     syncTime = {};
+//   }
+// }
+// store["syncTime"] = syncTime;
+
+// module.exports = store;
+
+// module.exports.updateSyncTime = function () {
+//   if (env.server && env.exam) {
+//     syncTime[env.server.host + "_" + env.exam.id] = moment().format(
+//       "YYYY-MM-DD HH:mm:ss"
+//     );
+//     store["syncTime"] = syncTime;
+//     fs.writeFileSync(timeLog, JSON.stringify(syncTime));
+//   }
+// };

+ 0 - 0
source/lib/db.js → src/lib/db.js


+ 0 - 0
source/lib/env.js → src/lib/env.js


+ 0 - 0
source/lib/image.js → src/lib/image.js


+ 0 - 0
source/lib/logger.js → src/lib/logger.js


+ 0 - 0
source/lib/promise-pool.js → src/lib/promise-pool.js


+ 0 - 0
source/lib/sync.js → src/lib/sync.js


+ 0 - 0
source/main.js → src/main.js


+ 0 - 0
source/test/api-test.js → src/test/api-test.js


+ 0 - 0
source/test/config-test.js → src/test/config-test.js


+ 0 - 0
source/test/db-test.js → src/test/db-test.js


+ 0 - 0
source/test/image-test.js → src/test/image-test.js


+ 0 - 0
source/test/readline-test.js → src/test/readline-test.js


+ 0 - 0
source/test/result.json → src/test/result.json


+ 0 - 0
source/test/sizeof-test.js → src/test/sizeof-test.js


+ 0 - 0
source/test/watermark-test.js → src/test/watermark-test.js


+ 0 - 0
source/view/check.html → src/view/check.html


+ 0 - 0
source/view/css/style.css → src/view/css/style.css


+ 0 - 0
source/view/exam-list.html → src/view/exam-list.html


+ 0 - 0
source/view/image-check.html → src/view/image-check.html


+ 0 - 0
source/view/image-download.html → src/view/image-download.html


+ 0 - 0
source/view/image.html → src/view/image.html


+ 0 - 0
source/view/img/back.png → src/view/img/back.png


+ 0 - 0
source/view/img/bg.jpg → src/view/img/bg.jpg


+ 0 - 0
source/view/img/close.png → src/view/img/close.png


+ 0 - 0
source/view/img/data_btn.png → src/view/img/data_btn.png


+ 0 - 0
source/view/img/enter.png → src/view/img/enter.png


+ 0 - 0
source/view/img/error.png → src/view/img/error.png


+ 0 - 0
source/view/img/error_small.png → src/view/img/error_small.png


+ 0 - 0
source/view/img/icon1.png → src/view/img/icon1.png


+ 0 - 0
source/view/img/icon2.png → src/view/img/icon2.png


+ 0 - 0
source/view/img/icon3.png → src/view/img/icon3.png


+ 0 - 0
source/view/img/id.png → src/view/img/id.png


+ 0 - 0
source/view/img/logo.png → src/view/img/logo.png


+ 0 - 0
source/view/img/logo_blue.png → src/view/img/logo_blue.png


+ 0 - 0
source/view/img/pic_btn.png → src/view/img/pic_btn.png


+ 0 - 0
source/view/img/radio.png → src/view/img/radio.png


+ 0 - 0
source/view/img/select.png → src/view/img/select.png


+ 0 - 0
source/view/img/success.png → src/view/img/success.png


+ 0 - 0
source/view/img/success_small.png → src/view/img/success_small.png


+ 0 - 0
source/view/index.html → src/view/index.html


+ 0 - 0
source/view/login.html → src/view/login.html


+ 0 - 0
source/view/sync-run.html → src/view/sync-run.html


+ 0 - 0
source/view/sync.html → src/view/sync.html


+ 1 - 1
vue.config.js

@@ -14,7 +14,7 @@ module.exports = {
       new webpack.IgnorePlugin(/^\.\/locale$/, /moment|iview$/),
     ],
     // sequelize bug: https://github.com/sequelize/sequelize/issues/7509
-    externals: ["pg", "sqlite3", "tedious", "pg-hstore"],
+    externals: ["mysql"],
   },
   transpileDependencies: [/\bvue-awesome\b/],
   pluginOptions: {

+ 134 - 4
yarn.lock

@@ -2140,6 +2140,16 @@ array-flatten@^2.1.0:
   resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
   integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=
 
+array-parallel@~0.1.3:
+  version "0.1.3"
+  resolved "https://registry.npm.taobao.org/array-parallel/download/array-parallel-0.1.3.tgz#8f785308926ed5aa478c47e64d1b334b6c0c947d"
+  integrity sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=
+
+array-series@~0.1.5:
+  version "0.1.5"
+  resolved "https://registry.npm.taobao.org/array-series/download/array-series-0.1.5.tgz#df5d37bfc5c2ef0755e2aa4f92feae7d4b5a972f"
+  integrity sha1-3103v8XC7wdV4qpPkv6ufUtaly8=
+
 array-union@^1.0.1, array-union@^1.0.2:
   version "1.0.2"
   resolved "https://registry.nlark.com/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -2384,6 +2394,11 @@ big.js@^5.2.2:
   resolved "https://registry.nlark.com/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
   integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=
 
+bignumber.js@9.0.0:
+  version "9.0.0"
+  resolved "https://registry.npm.taobao.org/bignumber.js/download/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075"
+  integrity sha1-gFiA+Eoym16sbny2+CdLbYK98HU=
+
 binary-extensions@^1.0.0:
   version "1.13.1"
   resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299373298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
@@ -2965,6 +2980,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
     inherits "^2.0.1"
     safe-buffer "^5.0.1"
 
+circular-json@^0.5.5:
+  version "0.5.9"
+  resolved "https://registry.npm.taobao.org/circular-json/download/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d"
+  integrity sha1-kydjroj0996teg0JyKUaR0OlOx0=
+
 class-utils@^0.3.5:
   version "0.3.6"
   resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -3420,6 +3440,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
     safe-buffer "^5.0.1"
     sha.js "^2.4.8"
 
+cross-spawn@^4.0.0:
+  version "4.0.2"
+  resolved "https://registry.nlark.com/cross-spawn/download/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
+  integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=
+  dependencies:
+    lru-cache "^4.0.1"
+    which "^1.2.9"
+
 cross-spawn@^5.0.1:
   version "5.1.0"
   resolved "https://registry.nlark.com/cross-spawn/download/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -3652,6 +3680,11 @@ dashdash@^1.12.0:
   dependencies:
     assert-plus "^1.0.0"
 
+date-format@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npm.taobao.org/date-format/download/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8"
+  integrity sha1-YV6CjiM90aubua4JUODOzPpuytg=
+
 debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
   version "2.6.9"
   resolved "https://registry.nlark.com/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1625374632845&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -3659,7 +3692,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
   dependencies:
     ms "2.0.0"
 
-debug@^3.1.1, debug@^3.2.6:
+debug@^3.1.0, debug@^3.1.1, debug@^3.2.6:
   version "3.2.7"
   resolved "https://registry.nlark.com/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1625374632845&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
   integrity sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=
@@ -4235,6 +4268,11 @@ es6-error@^4.1.1:
   resolved "https://registry.npm.taobao.org/es6-error/download/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
   integrity sha1-njr0B0Wd7tR+mpH5uIWoTrBcVh0=
 
+es6-promise@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npm.taobao.org/es6-promise/download/es6-promise-2.0.0.tgz#f6fbee207d98f36dc3f40b5be97a26cd74db5dc9"
+  integrity sha1-9vvuIH2Y823D9Atb6XomzXTbXck=
+
 escalade@^3.1.1:
   version "3.1.1"
   resolved "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567252812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -4589,7 +4627,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
     assign-symbols "^1.0.0"
     is-extendable "^1.0.1"
 
-extend@~3.0.2:
+extend@^3.0.2, extend@~3.0.2:
   version "3.0.2"
   resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
   integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=
@@ -5220,6 +5258,16 @@ globby@^9.2.0:
     pify "^4.0.1"
     slash "^2.0.0"
 
+gm@^1.23.1:
+  version "1.23.1"
+  resolved "https://registry.npm.taobao.org/gm/download/gm-1.23.1.tgz#2edeeb958084d0f8ea7988e5d995b1c7dfc14777"
+  integrity sha1-Lt7rlYCE0PjqeYjl2ZWxx9/BR3c=
+  dependencies:
+    array-parallel "~0.1.3"
+    array-series "~0.1.5"
+    cross-spawn "^4.0.0"
+    debug "^3.1.0"
+
 got@^9.6.0:
   version "9.6.0"
   resolved "https://registry.nlark.com/got/download/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
@@ -5654,6 +5702,11 @@ ignore@^5.1.4:
   resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
   integrity sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=
 
+image-size@^0.6.3:
+  version "0.6.3"
+  resolved "https://registry.npm.taobao.org/image-size/download/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2"
+  integrity sha1-5+XGW7U0vXzc7dbLUWYnKoX3X7I=
+
 immediate@~3.0.5:
   version "3.0.6"
   resolved "https://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
@@ -6220,6 +6273,11 @@ jest-worker@^26.2.1:
     merge-stream "^2.0.0"
     supports-color "^7.0.0"
 
+jquery@^3.3.1:
+  version "3.6.0"
+  resolved "https://registry.npm.taobao.org/jquery/download/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
+  integrity sha1-xyoJ8Vwb3OFC9J2/EXC9+K2sJHA=
+
 js-message@1.0.7:
   version "1.0.7"
   resolved "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz#fbddd053c7a47021871bb8b2c95397cc17c20e47"
@@ -6563,6 +6621,17 @@ log-symbols@^2.2.0:
   dependencies:
     chalk "^2.0.1"
 
+log4js@^3.0.6:
+  version "3.0.6"
+  resolved "https://registry.npm.taobao.org/log4js/download/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff"
+  integrity sha1-5srO2Uln7uuc45n5+GgqSysoyP8=
+  dependencies:
+    circular-json "^0.5.5"
+    date-format "^1.2.0"
+    debug "^3.1.0"
+    rfdc "^1.1.2"
+    streamroller "0.7.0"
+
 loglevel@^1.6.8:
   version "1.7.1"
   resolved "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
@@ -6901,6 +6970,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
   resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
   integrity sha1-PrXtYmInVteaXw4qIh3+utdcL34=
 
+moment@^2.22.2:
+  version "2.29.1"
+  resolved "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
+  integrity sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=
+
 move-concurrently@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@@ -6946,11 +7020,26 @@ multicast-dns@^6.0.1:
     dns-packet "^1.3.1"
     thunky "^1.0.2"
 
+mustache@^3.0.0:
+  version "3.2.1"
+  resolved "https://registry.npm.taobao.org/mustache/download/mustache-3.2.1.tgz?cache=0&sync_timestamp=1616979990684&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmustache%2Fdownload%2Fmustache-3.2.1.tgz#89e78a9d207d78f2799b1e95764a25bf71a28322"
+  integrity sha1-ieeKnSB9ePJ5mx6Vdkolv3GigyI=
+
 mute-stream@0.0.8:
   version "0.0.8"
   resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
   integrity sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=
 
+mysql@^2.16.0:
+  version "2.18.1"
+  resolved "https://registry.npm.taobao.org/mysql/download/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717"
+  integrity sha1-IlQUOFXFqMc4JeRSK68uoCF2Zxc=
+  dependencies:
+    bignumber.js "9.0.0"
+    readable-stream "2.3.7"
+    safe-buffer "5.1.2"
+    sqlstring "2.3.1"
+
 mz@^2.4.0:
   version "2.7.0"
   resolved "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
@@ -8320,7 +8409,7 @@ read-pkg@^5.1.1:
     parse-json "^5.0.0"
     type-fest "^0.6.0"
 
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@2.3.7, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
   version "2.3.7"
   resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
   integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
@@ -8477,7 +8566,7 @@ repeat-string@^1.6.1:
   resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
   integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
 
-request@^2.88.2:
+request@^2.88.0, request@^2.88.2:
   version "2.88.2"
   resolved "https://registry.nlark.com/request/download/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
   integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=
@@ -8503,6 +8592,15 @@ request@^2.88.2:
     tunnel-agent "^0.6.0"
     uuid "^3.3.2"
 
+requestretry@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npm.taobao.org/requestretry/download/requestretry-3.1.0.tgz#c8e1976bb946f14889d3604bbad56a01d191c10d"
+  integrity sha1-yOGXa7lG8UiJ02BLutVqAdGRwQ0=
+  dependencies:
+    extend "^3.0.2"
+    lodash "^4.17.10"
+    when "^3.7.7"
+
 require-directory@^2.1.1:
   version "2.1.1"
   resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -8586,6 +8684,11 @@ reusify@^1.0.4:
   resolved "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
   integrity sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=
 
+rfdc@^1.1.2:
+  version "1.3.0"
+  resolved "https://registry.npm.taobao.org/rfdc/download/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
+  integrity sha1-0LfEQasnINBdxM8m4ByJYx2doIs=
+
 rgb-regex@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
@@ -9145,6 +9248,11 @@ sprintf-js@~1.0.2:
   resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
   integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
 
+sqlstring@2.3.1:
+  version "2.3.1"
+  resolved "https://registry.npm.taobao.org/sqlstring/download/sqlstring-2.3.1.tgz?cache=0&sync_timestamp=1587005059881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsqlstring%2Fdownload%2Fsqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
+  integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=
+
 sshpk@^1.7.0:
   version "1.16.1"
   resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
@@ -9234,6 +9342,16 @@ stream-shift@^1.0.0:
   resolved "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
   integrity sha1-1wiCgVWasneEJCebCHfaPDktWj0=
 
+streamroller@0.7.0:
+  version "0.7.0"
+  resolved "https://registry.npm.taobao.org/streamroller/download/streamroller-0.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstreamroller%2Fdownload%2Fstreamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b"
+  integrity sha1-odG3z4PTmvsNYwSaWsv5NJO99ks=
+  dependencies:
+    date-format "^1.2.0"
+    debug "^3.1.0"
+    mkdirp "^0.5.1"
+    readable-stream "^2.3.0"
+
 strict-uri-encode@^1.0.0:
   version "1.1.0"
   resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -9512,6 +9630,13 @@ thenify-all@^1.0.0:
   dependencies:
     any-promise "^1.0.0"
 
+thinkjs-util@>=0.0.1:
+  version "1.1.2"
+  resolved "https://registry.nlark.com/thinkjs-util/download/thinkjs-util-1.1.2.tgz#2d3bd92b5d18e8093e20304d2e5917a371ccb322"
+  integrity sha1-LTvZK10Y6Ak+IDBNLlkXo3HMsyI=
+  dependencies:
+    es6-promise "2.0.0"
+
 thread-loader@^2.1.3:
   version "2.1.3"
   resolved "https://registry.nlark.com/thread-loader/download/thread-loader-2.1.3.tgz?cache=0&sync_timestamp=1620664417064&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fthread-loader%2Fdownload%2Fthread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda"
@@ -10372,6 +10497,11 @@ websocket-extensions@>=0.1.1:
   resolved "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz?cache=0&sync_timestamp=1591103014229&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebsocket-extensions%2Fdownload%2Fwebsocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
   integrity sha1-f4RzvIOd/YdgituV1+sHUhFXikI=
 
+when@^3.7.7:
+  version "3.7.8"
+  resolved "https://registry.npm.taobao.org/when/download/when-3.7.8.tgz?cache=0&sync_timestamp=1562316285954&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhen%2Fdownload%2Fwhen-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82"
+  integrity sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=
+
 which-boxed-primitive@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npm.taobao.org/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"