From d79726e0df79da6886ebaf9c58f34755bff1c8d5 Mon Sep 17 00:00:00 2001 From: bangbang93 Date: Sat, 8 Feb 2020 16:38:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E6=97=B6=E8=BF=9B=E5=BA=A6=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 293 +++++++++++++++++++++++----------------------- package.json | 5 +- src/cluster.ts | 71 ++++------- 3 files changed, 174 insertions(+), 195 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7825ba1..1fdfafb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,16 +25,16 @@ } }, "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-1.2.0.tgz", + "integrity": "sha1-Y842OMuFIx83BBZMkKGO+BbaP7c=" }, "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "4.0.5", + "resolved": "https://registry.npm.taobao.org/@szmarczak/http-timer/download/@szmarczak/http-timer-4.0.5.tgz", + "integrity": "sha1-v71QIR6d+lG6B9pYoUzf0zMgUVI=", "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.0" } }, "@types/bluebird": { @@ -53,6 +53,17 @@ "@types/node": "*" } }, + "@types/cacheable-request": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/@types/cacheable-request/download/@types/cacheable-request-6.0.1.tgz", + "integrity": "sha1-XSLz3e0f06hMC761A5p0GcLJGXY=", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "@types/colors": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/colors/-/colors-1.2.1.tgz", @@ -116,16 +127,10 @@ "@types/node": "*" } }, - "@types/got": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.5.tgz", - "integrity": "sha512-2A8Yxbi092KD6JM/WMA8tzcS79U94EXLP4wg9ry0brgZF7fQRIe69vwnA9cW6wsmkAx15a8SJ9bOxRyyeDtbmQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } + "@types/http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/@types/http-cache-semantics/download/@types/http-cache-semantics-4.0.0.tgz", + "integrity": "sha1-kUB3lzaqJlVjXudW4kZ9eHz+iio=" }, "@types/json-schema": { "version": "7.0.3", @@ -133,6 +138,14 @@ "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", "dev": true }, + "@types/keyv": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@types/keyv/download/@types/keyv-3.1.1.tgz", + "integrity": "sha1-5FpFMk/KnatxarEjDuJJyftSz6c=", + "requires": { + "@types/node": "*" + } + }, "@types/mime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", @@ -157,8 +170,7 @@ "@types/node": { "version": "12.6.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", - "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", - "dev": true + "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==" }, "@types/progress": { "version": "2.0.3", @@ -175,6 +187,14 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", "dev": true }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@types/responselike/download/@types/responselike-1.0.0.tgz", + "integrity": "sha1-JR9P59FU0rrRJavhtCmyOv0mLik=", + "requires": { + "@types/node": "*" + } + }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -185,12 +205,6 @@ "@types/mime": "*" } }, - "@types/tough-cookie": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", - "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==", - "dev": true - }, "@typescript-eslint/eslint-plugin": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz", @@ -317,12 +331,6 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -395,33 +403,26 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cacheable-lookup": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/cacheable-lookup/download/cacheable-lookup-2.0.0.tgz", + "integrity": "sha1-M7HlbxdQf1z5u0YHURLWVHP7dxM=", + "requires": { + "keyv": "^4.0.0" + } + }, "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/cacheable-request/download/cacheable-request-7.0.1.tgz", + "integrity": "sha1-BiAxwoViMngu1pSiV/o12pOUKlg=", "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } + "responselike": "^2.0.0" } }, "callsites": { @@ -468,6 +469,13 @@ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { "mimic-response": "^1.0.0" + }, + "dependencies": { + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/mimic-response/download/mimic-response-1.0.1.tgz", + "integrity": "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=" + } } }, "color-convert": { @@ -490,15 +498,6 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -551,11 +550,11 @@ } }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/decompress-response/download/decompress-response-5.0.0.tgz", + "integrity": "sha1-eEk5boDj0euoyy9170kw92Rhyw8=", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^2.0.0" } }, "deep-is": { @@ -565,15 +564,9 @@ "dev": true }, "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/defer-to-connect/download/defer-to-connect-2.0.0.tgz", + "integrity": "sha1-g9axmdsEFZOshNeBtSIjCMz0wsE=" }, "depd": { "version": "1.1.2", @@ -627,9 +620,9 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", "requires": { "once": "^1.4.0" } @@ -930,17 +923,6 @@ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, - "form-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.0.tgz", - "integrity": "sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -974,9 +956,9 @@ "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz", + "integrity": "sha1-ASA83JJZf5uQkGfD5lbMH008Tck=", "requires": { "pump": "^3.0.0" } @@ -1011,21 +993,25 @@ "dev": true }, "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", + "version": "10.5.2", + "resolved": "https://registry.npm.taobao.org/got/download/got-10.5.2.tgz", + "integrity": "sha1-KKNe19baxk/lgHSWXZuxfJQbj+A=", + "requires": { + "@sindresorhus/is": "^1.0.0", + "@szmarczak/http-timer": "^4.0.0", + "@types/cacheable-request": "^6.0.1", + "cacheable-lookup": "^2.0.0", + "cacheable-request": "^7.0.1", + "decompress-response": "^5.0.0", "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "get-stream": "^5.0.0", + "lowercase-keys": "^2.0.0", + "mimic-response": "^2.0.0", + "p-cancelable": "^2.0.0", + "p-event": "^4.0.0", + "responselike": "^2.0.0", + "to-readable-stream": "^2.0.0", + "type-fest": "^0.9.0" } }, "graceful-fs": { @@ -1041,8 +1027,8 @@ }, "http-cache-semantics": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + "resolved": "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-4.0.3.tgz", + "integrity": "sha1-SVcEdzJ37u9uQ/mrLCx9JZ3aJcU=" }, "http-errors": { "version": "1.7.2", @@ -1185,9 +1171,9 @@ } }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.1.tgz", + "integrity": "sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM=" }, "json-schema-traverse": { "version": "0.4.1", @@ -1210,11 +1196,11 @@ } }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/keyv/download/keyv-4.0.0.tgz?cache=0&sync_timestamp=1573883474709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkeyv%2Fdownload%2Fkeyv-4.0.0.tgz", + "integrity": "sha1-LR2raUkmstQn5MdIBKEIUL5EwS8=", "requires": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "levn": { @@ -1240,9 +1226,9 @@ "dev": true }, "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-2.0.0.tgz", + "integrity": "sha1-JgPni3tLAAbLyi+8yKMgJVislHk=" }, "make-error": { "version": "1.3.5", @@ -1290,9 +1276,9 @@ "dev": true }, "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/mimic-response/download/mimic-response-2.0.0.tgz", + "integrity": "sha1-mWpRxgrfEsuKh9f7jvJMLz1eu0Y=" }, "minimatch": { "version": "3.0.4", @@ -1374,9 +1360,9 @@ "dev": true }, "normalize-url": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", - "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-4.5.0.tgz", + "integrity": "sha1-RTNUCH5sqWlXvY9br3U/WYIUISk=" }, "on-finished": { "version": "2.3.0", @@ -1429,9 +1415,30 @@ "dev": true }, "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/p-cancelable/download/p-cancelable-2.0.0.tgz", + "integrity": "sha1-SjdA9b2vXtXXw+NIgsb7XWsmam4=" + }, + "p-event": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-event/download/p-event-4.1.0.tgz", + "integrity": "sha1-6Su4Ztfo5bcyKTscgmnTjpmCv44=", + "requires": { + "p-timeout": "^2.0.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/p-timeout/download/p-timeout-2.0.1.tgz", + "integrity": "sha1-2N0ZeVldLcATnh/ka4tkbLPN8Dg=", + "requires": { + "p-finally": "^1.0.0" + } }, "parent-module": { "version": "1.0.1", @@ -1470,11 +1477,6 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -1491,8 +1493,8 @@ }, "pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1538,11 +1540,11 @@ "dev": true }, "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/responselike/download/responselike-2.0.0.tgz", + "integrity": "sha1-JjkbzDF091D5p56sxAoSpcQtdyM=", "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" } }, "restore-cursor": { @@ -1815,9 +1817,9 @@ } }, "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/to-readable-stream/download/to-readable-stream-2.1.0.tgz", + "integrity": "sha1-gogDFhIb6mYs3CJq2zCt21DLBug=" }, "toidentifier": { "version": "1.0.0", @@ -1861,6 +1863,11 @@ "prelude-ls": "~1.1.2" } }, + "type-fest": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.9.0.tgz", + "integrity": "sha1-O3kEgh5CsmN3gxpum10pMKsZyZo=" + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1895,14 +1902,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/package.json b/package.json index 038814e..e620212 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openbmclapi", - "version": "0.0.0", + "version": "0.1.0", "description": "openbmclapi", "main": "index.js", "scripts": { @@ -23,7 +23,7 @@ "dotenv": "^8.0.0", "express": "^4.17.1", "fs-extra": "^8.1.0", - "got": "^9.6.0", + "got": "^10.5.2", "morgan": "^1.9.1", "ms": "^2.1.2", "progress": "^2.0.3" @@ -34,7 +34,6 @@ "@types/dotenv": "^6.1.1", "@types/express": "^4.17.0", "@types/fs-extra": "^8.0.0", - "@types/got": "^9.6.5", "@types/morgan": "^1.7.36", "@types/ms": "^0.7.30", "@types/node": "^12.6.9", diff --git a/src/cluster.ts b/src/cluster.ts index 5f6caa1..6a37c8f 100644 --- a/src/cluster.ts +++ b/src/cluster.ts @@ -4,7 +4,7 @@ import * as express from 'express' // eslint-disable-next-line no-duplicate-imports import {NextFunction, Request, Response} from 'express' import {outputFile, pathExists} from 'fs-extra' -import * as got from 'got' +import got, {Got} from 'got' import {createServer, Server} from 'http' import {join} from 'path' import * as ProgressBar from 'progress' @@ -16,13 +16,13 @@ interface IFileList { } export class Cluster { - private readonly baseUrl = process.env.CLUSTER_BMCLAPI || 'https://openbmclapi.bangbang93.com' - private readonly auth: string + private readonly prefixUrl = process.env.CLUSTER_BMCLAPI || 'https://openbmclapi.bangbang93.com' private readonly cacheDir = join(__dirname, '..', 'cache') private readonly host: string private readonly port: number private readonly publicPort: number private readonly ua: string + private readonly got: Got private server: Server @@ -32,22 +32,24 @@ export class Cluster { version: string, ) { if (!clusterId || !clusterSecret) throw new Error('missing config') - this.auth = `${Buffer.from(`${this.clusterId}:${this.clusterSecret}`)}` this.host = process.env.CLUSTER_IP this.port = parseInt(process.env.CLUSTER_PORT, 10) this.publicPort = parseInt(process.env.CLUSTER_PUBLIC_PORT, 10) || this.port this.ua = `openbmclapi-cluster/${version}` - } - - public async getFileList(): Promise { - const res = await got.get('/openbmclapi/files', { - baseUrl: this.baseUrl, - json: true, - auth: this.auth, + this.got = got.extend({ + prefixUrl: this.prefixUrl, + username: this.clusterId, + password: this.clusterSecret, headers: { 'user-agent': this.ua, }, }) + } + + public async getFileList(): Promise { + const res = await this.got.get('openbmclapi/files', { + responseType: 'json', + }) return res.body } @@ -64,19 +66,17 @@ export class Cluster { const sortedFiles = files.sort((a, b) => a.path > b.path ? 1 : 0) for (const file of sortedFiles) { const path = join(this.cacheDir, file.hash.substr(0, 2), file.hash) - bar.tick(file.size) if (process.stderr.isTTY) { bar.interrupt(`${colors.green('downloading')} ${colors.underline(file.path)}`) } else { console.log(`${colors.green('downloading')} ${colors.underline(file.path)}`) } - const res = await got.get(file.path, { - auth: this.auth, - baseUrl: this.baseUrl, query: {noopen: 1}, encoding: null, - headers: { - 'user-agent': this.ua, - }, - }) + let lastProgress = 0 + const res = await this.got.get(file.path) + .on('downloadProgress', (progress) => { + bar.tick(progress.transferred - lastProgress) + lastProgress = progress.transferred + }) await outputFile(path, res.body) } } @@ -112,36 +112,22 @@ export class Cluster { } public async enable(): Promise { - await got.post('/openbmclapi/enable', { - baseUrl: this.baseUrl, - auth: this.auth, - json: true, - body: { + await this.got.post('openbmclapi/enable', { + json: { host: this.host, port: this.publicPort, }, - headers: { - 'user-agent': this.ua, - }, }) } public async disable(): Promise { - await got.post('/openbmclapi/disable', { - baseUrl: this.baseUrl, - auth: this.auth, - headers: { - 'user-agent': this.ua, - }, - }) + await this.got.post('openbmclapi/disable') } public async downloadFile(hash: string): Promise { - const res = await got.get(`/openbmclapi/download/${hash}`, { - auth: this.auth, baseUrl: this.baseUrl, query: {noopen: 1}, encoding: null, - headers: { - 'user-agent': this.ua, - }, + const res = await this.got.get(`openbmclapi/download/${hash}`, { + responseType: 'buffer', + searchParams: {noopen: 1}, }) const path = join(this.cacheDir, hash.substr(0, 2), hash) @@ -149,12 +135,7 @@ export class Cluster { } public async keepAlive(): Promise { - const res = await got.post('/openbmclapi/keep-alive', { - baseUrl: this.baseUrl, - auth: this.auth, - headers: { - 'user-agent': this.ua, - }, + const res = await this.got.post('openbmclapi/keep-alive', { timeout: ms('10s'), throwHttpErrors: false, })