├── .github ├── pull.yml └── workflows │ └── Attend_my.yml ├── .gitignore ├── Junior-Fall ├── Attend_1-2.yml ├── Attend_3.yml └── Attend_4.yml ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src ├── index.js ├── public.pem └── sendNotify.js └── yarn.lock /.github/pull.yml: -------------------------------------------------------------------------------- 1 | version: "1" 2 | rules: # Array of rules 3 | - base: master # Required. Target branch 4 | upstream: ArchFireCoo:master # Required. Must be in the same fork network. 5 | mergeMethod: hardreset # Optional, one of [none, merge, squash, rebase, hardreset], Default: none. 6 | mergeUnstable: true # Optional, merge pull request even when the mergeable_state is not clean. Default: false 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/Attend_my.yml: -------------------------------------------------------------------------------- 1 | name: Attend_my 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '30 23 * * *' 7 | repository_dispatch: 8 | types: joy 9 | 10 | jobs: 11 | Run1: 12 | runs-on: macos-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v2 16 | with: 17 | repository: HibariX/AutoAttendYuKeTang 18 | ref: master 19 | 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v1 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | 25 | - name: Cache node_modules 26 | uses: actions/cache@v2 27 | env: 28 | cache-name: cache-node-modules 29 | with: 30 | path: node_modules 31 | key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }} 32 | 33 | - name: Install dependencies 34 | run: yarn 35 | 36 | - name: Run 37 | run: node src/index.js 38 | env: 39 | USER_INFO: ${{ secrets.USER_INFO }} 40 | PUSH_KEY: ${{ secrets.PUSH_KEY }} 41 | BARK_ID: ${{ secrets.BARK_ID }} 42 | Run2: 43 | runs-on: macos-latest 44 | needs: Run1 45 | steps: 46 | - name: Checkout 47 | uses: actions/checkout@v2 48 | with: 49 | repository: HibariX/AutoAttendYuKeTang 50 | ref: master 51 | 52 | - name: Use Node.js ${{ matrix.node-version }} 53 | uses: actions/setup-node@v1 54 | with: 55 | node-version: ${{ matrix.node-version }} 56 | 57 | - name: Cache node_modules 58 | uses: actions/cache@v2 59 | env: 60 | cache-name: cache-node-modules 61 | with: 62 | path: node_modules 63 | key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }} 64 | 65 | - name: Install dependencies 66 | run: yarn 67 | 68 | - name: Run 69 | run: node src/index.js 70 | env: 71 | USER_INFO: ${{ secrets.USER_INFO }} 72 | PUSH_KEY: ${{ secrets.PUSH_KEY }} 73 | BARK_ID: ${{ secrets.BARK_ID }} 74 | Run3: 75 | runs-on: macos-latest 76 | needs: Run2 77 | steps: 78 | - name: Checkout 79 | uses: actions/checkout@v2 80 | with: 81 | repository: HibariX/AutoAttendYuKeTang 82 | ref: master 83 | 84 | - name: Use Node.js ${{ matrix.node-version }} 85 | uses: actions/setup-node@v1 86 | with: 87 | node-version: ${{ matrix.node-version }} 88 | 89 | - name: Cache node_modules 90 | uses: actions/cache@v2 91 | env: 92 | cache-name: cache-node-modules 93 | with: 94 | path: node_modules 95 | key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }} 96 | 97 | - name: Install dependencies 98 | run: yarn 99 | 100 | - name: Run 101 | run: node src/index.js 102 | env: 103 | USER_INFO: ${{ secrets.USER_INFO }} 104 | PUSH_KEY: ${{ secrets.PUSH_KEY }} 105 | BARK_ID: ${{ secrets.BARK_ID }} 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | env/ 2 | __pycache__/ 3 | node_modules 4 | -------------------------------------------------------------------------------- /Junior-Fall/Attend_1-2.yml: -------------------------------------------------------------------------------- 1 | name: Attend_1-2 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '20 0,2 * * 1,2,5' 7 | repository_dispatch: 8 | types: joy 9 | 10 | jobs: 11 | build: 12 | runs-on: macos-latest 13 | strategy: 14 | matrix: 15 | python-version: [3.8] 16 | 17 | steps: 18 | - name: Checkout 19 | run: | 20 | git clone https://github.com/HibariX/AutoAttendYuKeTang ~/AutoAttendYuKeTang 21 | - uses: actions/checkout@v2 22 | - name: Set up Python ${{ matrix.python-version }} 23 | uses: actions/setup-python@v2 24 | with: 25 | python-version: ${{ matrix.python-version }} 26 | - name: Install dependencies 27 | run: | 28 | python -m pip install --upgrade pip 29 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 30 | - name: '运行自动签到' 31 | run: | 32 | python ./src/startup.py 33 | env: 34 | USER_INFO: ${{ secrets.USER_INFO }} 35 | PUSH_KEY: ${{ secrets.PUSH_KEY }} 36 | BARK_ID: ${{ secrets.BARK_ID }} 37 | -------------------------------------------------------------------------------- /Junior-Fall/Attend_3.yml: -------------------------------------------------------------------------------- 1 | name: Attend_3 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '40 5 * * 1,2,5' 7 | repository_dispatch: 8 | types: joy 9 | 10 | jobs: 11 | build: 12 | runs-on: macos-latest 13 | strategy: 14 | matrix: 15 | python-version: [3.8] 16 | 17 | steps: 18 | - name: Checkout 19 | run: | 20 | git clone https://github.com/HibariX/AutoAttendYuKeTang ~/AutoAttendYuKeTang 21 | - uses: actions/checkout@v2 22 | - name: Set up Python ${{ matrix.python-version }} 23 | uses: actions/setup-python@v2 24 | with: 25 | python-version: ${{ matrix.python-version }} 26 | - name: Install dependencies 27 | run: | 28 | python -m pip install --upgrade pip 29 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 30 | - name: '运行自动签到' 31 | run: | 32 | python ./src/startup.py 33 | env: 34 | USER_INFO: ${{ secrets.USER_INFO }} 35 | PUSH_KEY: ${{ secrets.PUSH_KEY }} 36 | BARK_ID: ${{ secrets.BARK_ID }} 37 | -------------------------------------------------------------------------------- /Junior-Fall/Attend_4.yml: -------------------------------------------------------------------------------- 1 | name: Attend_4 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '0 8 * * 1,2,5' 7 | repository_dispatch: 8 | types: joy 9 | 10 | jobs: 11 | build: 12 | runs-on: macos-latest 13 | strategy: 14 | matrix: 15 | python-version: [3.8] 16 | 17 | steps: 18 | - name: Checkout 19 | run: | 20 | git clone https://github.com/HibariX/AutoAttendYuKeTang ~/AutoAttendYuKeTang 21 | - uses: actions/checkout@v2 22 | - name: Set up Python ${{ matrix.python-version }} 23 | uses: actions/setup-python@v2 24 | with: 25 | python-version: ${{ matrix.python-version }} 26 | - name: Install dependencies 27 | run: | 28 | python -m pip install --upgrade pip 29 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 30 | - name: '运行自动签到' 31 | run: | 32 | python ./src/startup.py 33 | env: 34 | USER_INFO: ${{ secrets.USER_INFO }} 35 | PUSH_KEY: ${{ secrets.PUSH_KEY }} 36 | BARK_ID: ${{ secrets.BARK_ID }} 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 ArchFireCoo 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Usage 2 | ### **Make Sure You have Chrome Browser** 3 | 4 | ## Method 1: Local (python) 5 | ```shell 6 | git clone https://github.com/ArchFireCoo/AutoAttendYuKeTang 7 | cd AutoAttendYuKeTang 8 | git checkout python 9 | python3 -m venv env 10 | source env/bin/activate 11 | pip install -r requirements.txt 12 | python ./src/startup.py 13 | ``` 14 | ## Method 2: Local (node) 15 | ```shell 16 | git clone https://github.com/ArchFireCoo/AutoAttendYuKeTang 17 | cd AutoAttendYuKeTang 18 | yarn 19 | node ./src/index.js 20 | ``` 21 | ## Method 3: Github Actions (Recommend) 22 | **These actions are setting specified for almost all college students. Modify `.github/workflows/*.yml` to fit your needs.** 23 | **Careful: Github Action crontab is defined in GMT timezone, while China is in GMT+8.** 24 | 25 | 1. Fork [this responsitory](https://github.com/ArchFireCoo/AutoAttendYuKeTang) 26 | 2. Create 'Server酱' [SENDKEY](https://sct.ftqq.com/sendkey) 27 | 3. In project page, click 'Settings' -> click 'Secret' 28 | 4. In 'Secret' page, create two secrets named 'USER_INFO' and 'PUSH_KEY' and 'BARK_ID': 29 | - 'USER_INFO': yourYuKeTangaccount|yourYuKeTangpassword 30 | - 'PUSH_KEY': SENDKEY 31 | - 'BARK_ID': BARKID 32 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AutoAttendYuKeTang", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "AutoAttendYuKeTang", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "got": "^11.8.2", 13 | "jsencrypt": "^3.0.1", 14 | "moment": "^2.29.1", 15 | "node-rsa": "^1.1.1", 16 | "tough-cookie": "^4.0.0" 17 | }, 18 | "devDependencies": {} 19 | }, 20 | "node_modules/@sindresorhus/is": { 21 | "version": "4.0.0", 22 | "resolved": "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-4.0.0.tgz", 23 | "integrity": "sha1-L/Z06WEbRbUoiW2CDT16gS3i8OQ= sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==", 24 | "license": "MIT", 25 | "engines": { 26 | "node": ">=10" 27 | }, 28 | "funding": { 29 | "url": "https://github.com/sindresorhus/is?sponsor=1" 30 | } 31 | }, 32 | "node_modules/@szmarczak/http-timer": { 33 | "version": "4.0.5", 34 | "resolved": "https://registry.npm.taobao.org/@szmarczak/http-timer/download/@szmarczak/http-timer-4.0.5.tgz", 35 | "integrity": "sha1-v71QIR6d+lG6B9pYoUzf0zMgUVI= sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", 36 | "license": "MIT", 37 | "dependencies": { 38 | "defer-to-connect": "^2.0.0" 39 | }, 40 | "engines": { 41 | "node": ">=10" 42 | } 43 | }, 44 | "node_modules/@types/cacheable-request": { 45 | "version": "6.0.1", 46 | "resolved": "https://registry.npm.taobao.org/@types/cacheable-request/download/@types/cacheable-request-6.0.1.tgz", 47 | "integrity": "sha1-XSLz3e0f06hMC761A5p0GcLJGXY= sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", 48 | "license": "MIT", 49 | "dependencies": { 50 | "@types/http-cache-semantics": "*", 51 | "@types/keyv": "*", 52 | "@types/node": "*", 53 | "@types/responselike": "*" 54 | } 55 | }, 56 | "node_modules/@types/http-cache-semantics": { 57 | "version": "4.0.0", 58 | "resolved": "https://registry.npm.taobao.org/@types/http-cache-semantics/download/@types/http-cache-semantics-4.0.0.tgz", 59 | "integrity": "sha1-kUB3lzaqJlVjXudW4kZ9eHz+iio= sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", 60 | "license": "MIT" 61 | }, 62 | "node_modules/@types/keyv": { 63 | "version": "3.1.1", 64 | "resolved": "https://registry.npm.taobao.org/@types/keyv/download/@types/keyv-3.1.1.tgz?cache=0&sync_timestamp=1613379302011&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fkeyv%2Fdownload%2F%40types%2Fkeyv-3.1.1.tgz", 65 | "integrity": "sha1-5FpFMk/KnatxarEjDuJJyftSz6c= sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", 66 | "license": "MIT", 67 | "dependencies": { 68 | "@types/node": "*" 69 | } 70 | }, 71 | "node_modules/@types/node": { 72 | "version": "14.14.31", 73 | "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.31.tgz?cache=0&sync_timestamp=1613757896289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.31.tgz", 74 | "integrity": "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU=", 75 | "license": "MIT" 76 | }, 77 | "node_modules/@types/responselike": { 78 | "version": "1.0.0", 79 | "resolved": "https://registry.npm.taobao.org/@types/responselike/download/@types/responselike-1.0.0.tgz?cache=0&sync_timestamp=1613384353624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fresponselike%2Fdownload%2F%40types%2Fresponselike-1.0.0.tgz", 80 | "integrity": "sha1-JR9P59FU0rrRJavhtCmyOv0mLik= sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 81 | "license": "MIT", 82 | "dependencies": { 83 | "@types/node": "*" 84 | } 85 | }, 86 | "node_modules/asn1": { 87 | "version": "0.2.4", 88 | "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", 89 | "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", 90 | "license": "MIT", 91 | "dependencies": { 92 | "safer-buffer": "~2.1.0" 93 | } 94 | }, 95 | "node_modules/cacheable-lookup": { 96 | "version": "5.0.4", 97 | "resolved": "https://registry.npm.taobao.org/cacheable-lookup/download/cacheable-lookup-5.0.4.tgz?cache=0&sync_timestamp=1613567617958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacheable-lookup%2Fdownload%2Fcacheable-lookup-5.0.4.tgz", 98 | "integrity": "sha1-WmuGWyxENXvj1evCpGewMnGacAU= sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", 99 | "license": "MIT", 100 | "engines": { 101 | "node": ">=10.6.0" 102 | } 103 | }, 104 | "node_modules/cacheable-request": { 105 | "version": "7.0.1", 106 | "resolved": "https://registry.npm.taobao.org/cacheable-request/download/cacheable-request-7.0.1.tgz", 107 | "integrity": "sha1-BiAxwoViMngu1pSiV/o12pOUKlg= sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", 108 | "license": "MIT", 109 | "dependencies": { 110 | "clone-response": "^1.0.2", 111 | "get-stream": "^5.1.0", 112 | "http-cache-semantics": "^4.0.0", 113 | "keyv": "^4.0.0", 114 | "lowercase-keys": "^2.0.0", 115 | "normalize-url": "^4.1.0", 116 | "responselike": "^2.0.0" 117 | }, 118 | "engines": { 119 | "node": ">=8" 120 | } 121 | }, 122 | "node_modules/clone-response": { 123 | "version": "1.0.2", 124 | "resolved": "https://registry.npm.taobao.org/clone-response/download/clone-response-1.0.2.tgz", 125 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 126 | "license": "MIT", 127 | "dependencies": { 128 | "mimic-response": "^1.0.0" 129 | } 130 | }, 131 | "node_modules/decompress-response": { 132 | "version": "6.0.0", 133 | "resolved": "https://registry.npm.taobao.org/decompress-response/download/decompress-response-6.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecompress-response%2Fdownload%2Fdecompress-response-6.0.0.tgz", 134 | "integrity": "sha1-yjh2Et234QS9FthaqwDV7PCcZvw= sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 135 | "license": "MIT", 136 | "dependencies": { 137 | "mimic-response": "^3.1.0" 138 | }, 139 | "engines": { 140 | "node": ">=10" 141 | }, 142 | "funding": { 143 | "url": "https://github.com/sponsors/sindresorhus" 144 | } 145 | }, 146 | "node_modules/decompress-response/node_modules/mimic-response": { 147 | "version": "3.1.0", 148 | "resolved": "https://registry.npm.taobao.org/mimic-response/download/mimic-response-3.1.0.tgz", 149 | "integrity": "sha1-LR1Zr5wbEpgVrMwsRqAipc4fo8k= sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 150 | "license": "MIT", 151 | "engines": { 152 | "node": ">=10" 153 | }, 154 | "funding": { 155 | "url": "https://github.com/sponsors/sindresorhus" 156 | } 157 | }, 158 | "node_modules/defer-to-connect": { 159 | "version": "2.0.1", 160 | "resolved": "https://registry.npm.taobao.org/defer-to-connect/download/defer-to-connect-2.0.1.tgz", 161 | "integrity": "sha1-gBa9tBQ+RjK3ejRJxiNid95SBYc= sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", 162 | "license": "MIT", 163 | "engines": { 164 | "node": ">=10" 165 | } 166 | }, 167 | "node_modules/end-of-stream": { 168 | "version": "1.4.4", 169 | "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz", 170 | "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", 171 | "license": "MIT", 172 | "dependencies": { 173 | "once": "^1.4.0" 174 | } 175 | }, 176 | "node_modules/get-stream": { 177 | "version": "5.2.0", 178 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&sync_timestamp=1597056544847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz", 179 | "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", 180 | "license": "MIT", 181 | "dependencies": { 182 | "pump": "^3.0.0" 183 | }, 184 | "engines": { 185 | "node": ">=8" 186 | }, 187 | "funding": { 188 | "url": "https://github.com/sponsors/sindresorhus" 189 | } 190 | }, 191 | "node_modules/got": { 192 | "version": "11.8.2", 193 | "resolved": "https://registry.npm.taobao.org/got/download/got-11.8.2.tgz?cache=0&sync_timestamp=1614332692792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgot%2Fdownload%2Fgot-11.8.2.tgz", 194 | "integrity": "sha1-ers5Weoowx81dvFXbB7/ziPzNZk= sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", 195 | "license": "MIT", 196 | "dependencies": { 197 | "@sindresorhus/is": "^4.0.0", 198 | "@szmarczak/http-timer": "^4.0.5", 199 | "@types/cacheable-request": "^6.0.1", 200 | "@types/responselike": "^1.0.0", 201 | "cacheable-lookup": "^5.0.3", 202 | "cacheable-request": "^7.0.1", 203 | "decompress-response": "^6.0.0", 204 | "http2-wrapper": "^1.0.0-beta.5.2", 205 | "lowercase-keys": "^2.0.0", 206 | "p-cancelable": "^2.0.0", 207 | "responselike": "^2.0.0" 208 | }, 209 | "engines": { 210 | "node": ">=10.19.0" 211 | }, 212 | "funding": { 213 | "url": "https://github.com/sindresorhus/got?sponsor=1" 214 | } 215 | }, 216 | "node_modules/http-cache-semantics": { 217 | "version": "4.1.0", 218 | "resolved": "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-4.1.0.tgz", 219 | "integrity": "sha1-SekcXL82yblLz81xwj1SSex045A= sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", 220 | "license": "BSD-2-Clause" 221 | }, 222 | "node_modules/http2-wrapper": { 223 | "version": "1.0.3", 224 | "resolved": "https://registry.npm.taobao.org/http2-wrapper/download/http2-wrapper-1.0.3.tgz", 225 | "integrity": "sha1-uPVeDB8l1OvQizsMLAeflZCACz0= sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 226 | "license": "MIT", 227 | "dependencies": { 228 | "quick-lru": "^5.1.1", 229 | "resolve-alpn": "^1.0.0" 230 | }, 231 | "engines": { 232 | "node": ">=10.19.0" 233 | } 234 | }, 235 | "node_modules/jsencrypt": { 236 | "version": "3.0.1", 237 | "resolved": "https://registry.npm.taobao.org/jsencrypt/download/jsencrypt-3.0.1.tgz", 238 | "integrity": "sha1-5/JSXXn7Au6oMQw4OMnbFk8e9D8= sha512-5PJ5I1H3bzlcsKNQasifJ7KkgLMv80JaR22o6hq41niaTvQPISbnmI+Me+1PJMi1YXu53bWi6JiVa0k+PQfyQA==", 239 | "license": "MIT" 240 | }, 241 | "node_modules/json-buffer": { 242 | "version": "3.0.1", 243 | "resolved": "https://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.1.tgz", 244 | "integrity": "sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM= sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 245 | "license": "MIT" 246 | }, 247 | "node_modules/keyv": { 248 | "version": "4.0.3", 249 | "resolved": "https://registry.npm.taobao.org/keyv/download/keyv-4.0.3.tgz?cache=0&sync_timestamp=1600337463601&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkeyv%2Fdownload%2Fkeyv-4.0.3.tgz", 250 | "integrity": "sha1-TzqpjeJUgDyvzSiWc0EI2qNeQlQ= sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", 251 | "license": "MIT", 252 | "dependencies": { 253 | "json-buffer": "3.0.1" 254 | } 255 | }, 256 | "node_modules/lowercase-keys": { 257 | "version": "2.0.0", 258 | "resolved": "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-2.0.0.tgz", 259 | "integrity": "sha1-JgPni3tLAAbLyi+8yKMgJVislHk= sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 260 | "license": "MIT", 261 | "engines": { 262 | "node": ">=8" 263 | } 264 | }, 265 | "node_modules/mimic-response": { 266 | "version": "1.0.1", 267 | "resolved": "https://registry.npm.taobao.org/mimic-response/download/mimic-response-1.0.1.tgz", 268 | "integrity": "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs= sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 269 | "license": "MIT", 270 | "engines": { 271 | "node": ">=4" 272 | } 273 | }, 274 | "node_modules/moment": { 275 | "version": "2.29.1", 276 | "resolved": "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz", 277 | "integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=", 278 | "engines": { 279 | "node": "*" 280 | } 281 | }, 282 | "node_modules/node-rsa": { 283 | "version": "1.1.1", 284 | "resolved": "https://registry.npm.taobao.org/node-rsa/download/node-rsa-1.1.1.tgz", 285 | "integrity": "sha1-79mtOCCXeC9QYVM5hJb3nkRkQ00= sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", 286 | "license": "MIT", 287 | "dependencies": { 288 | "asn1": "^0.2.4" 289 | } 290 | }, 291 | "node_modules/normalize-url": { 292 | "version": "4.5.0", 293 | "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-4.5.0.tgz?cache=0&sync_timestamp=1602432435724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-4.5.0.tgz", 294 | "integrity": "sha1-RTNUCH5sqWlXvY9br3U/WYIUISk= sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", 295 | "license": "MIT", 296 | "engines": { 297 | "node": ">=8" 298 | } 299 | }, 300 | "node_modules/once": { 301 | "version": "1.4.0", 302 | "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 303 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 304 | "license": "ISC", 305 | "dependencies": { 306 | "wrappy": "1" 307 | } 308 | }, 309 | "node_modules/p-cancelable": { 310 | "version": "2.0.0", 311 | "resolved": "https://registry.npm.taobao.org/p-cancelable/download/p-cancelable-2.0.0.tgz", 312 | "integrity": "sha1-SjdA9b2vXtXXw+NIgsb7XWsmam4= sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", 313 | "license": "MIT", 314 | "engines": { 315 | "node": ">=8" 316 | } 317 | }, 318 | "node_modules/psl": { 319 | "version": "1.8.0", 320 | "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz", 321 | "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=", 322 | "license": "MIT" 323 | }, 324 | "node_modules/pump": { 325 | "version": "3.0.0", 326 | "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", 327 | "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", 328 | "license": "MIT", 329 | "dependencies": { 330 | "end-of-stream": "^1.1.0", 331 | "once": "^1.3.1" 332 | } 333 | }, 334 | "node_modules/punycode": { 335 | "version": "2.1.1", 336 | "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", 337 | "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", 338 | "license": "MIT", 339 | "engines": { 340 | "node": ">=6" 341 | } 342 | }, 343 | "node_modules/quick-lru": { 344 | "version": "5.1.1", 345 | "resolved": "https://registry.npm.taobao.org/quick-lru/download/quick-lru-5.1.1.tgz?cache=0&sync_timestamp=1610610433340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquick-lru%2Fdownload%2Fquick-lru-5.1.1.tgz", 346 | "integrity": "sha1-NmST5rPkKjpoheLpnRj4D7eoyTI= sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 347 | "license": "MIT", 348 | "engines": { 349 | "node": ">=10" 350 | }, 351 | "funding": { 352 | "url": "https://github.com/sponsors/sindresorhus" 353 | } 354 | }, 355 | "node_modules/resolve-alpn": { 356 | "version": "1.0.0", 357 | "resolved": "https://registry.npm.taobao.org/resolve-alpn/download/resolve-alpn-1.0.0.tgz", 358 | "integrity": "sha1-dFrWCz1q/0tKSOAbjAvccJWeDow= sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==", 359 | "license": "MIT" 360 | }, 361 | "node_modules/responselike": { 362 | "version": "2.0.0", 363 | "resolved": "https://registry.npm.taobao.org/responselike/download/responselike-2.0.0.tgz", 364 | "integrity": "sha1-JjkbzDF091D5p56sxAoSpcQtdyM= sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", 365 | "license": "MIT", 366 | "dependencies": { 367 | "lowercase-keys": "^2.0.0" 368 | } 369 | }, 370 | "node_modules/safer-buffer": { 371 | "version": "2.1.2", 372 | "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", 373 | "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", 374 | "license": "MIT" 375 | }, 376 | "node_modules/tough-cookie": { 377 | "version": "4.0.0", 378 | "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-4.0.0.tgz", 379 | "integrity": "sha1-2CIjTuyogvmR8PkIgkrSYi3b7OQ=", 380 | "license": "BSD-3-Clause", 381 | "dependencies": { 382 | "psl": "^1.1.33", 383 | "punycode": "^2.1.1", 384 | "universalify": "^0.1.2" 385 | }, 386 | "engines": { 387 | "node": ">=6" 388 | } 389 | }, 390 | "node_modules/universalify": { 391 | "version": "0.1.2", 392 | "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1603179967633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz", 393 | "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", 394 | "license": "MIT", 395 | "engines": { 396 | "node": ">= 4.0.0" 397 | } 398 | }, 399 | "node_modules/wrappy": { 400 | "version": "1.0.2", 401 | "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", 402 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 403 | "license": "ISC" 404 | } 405 | }, 406 | "dependencies": { 407 | "@sindresorhus/is": { 408 | "version": "4.0.0", 409 | "resolved": "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-4.0.0.tgz", 410 | "integrity": "sha1-L/Z06WEbRbUoiW2CDT16gS3i8OQ= sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" 411 | }, 412 | "@szmarczak/http-timer": { 413 | "version": "4.0.5", 414 | "resolved": "https://registry.npm.taobao.org/@szmarczak/http-timer/download/@szmarczak/http-timer-4.0.5.tgz", 415 | "integrity": "sha1-v71QIR6d+lG6B9pYoUzf0zMgUVI= sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", 416 | "requires": { 417 | "defer-to-connect": "^2.0.0" 418 | } 419 | }, 420 | "@types/cacheable-request": { 421 | "version": "6.0.1", 422 | "resolved": "https://registry.npm.taobao.org/@types/cacheable-request/download/@types/cacheable-request-6.0.1.tgz", 423 | "integrity": "sha1-XSLz3e0f06hMC761A5p0GcLJGXY= sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", 424 | "requires": { 425 | "@types/http-cache-semantics": "*", 426 | "@types/keyv": "*", 427 | "@types/node": "*", 428 | "@types/responselike": "*" 429 | } 430 | }, 431 | "@types/http-cache-semantics": { 432 | "version": "4.0.0", 433 | "resolved": "https://registry.npm.taobao.org/@types/http-cache-semantics/download/@types/http-cache-semantics-4.0.0.tgz", 434 | "integrity": "sha1-kUB3lzaqJlVjXudW4kZ9eHz+iio= sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" 435 | }, 436 | "@types/keyv": { 437 | "version": "3.1.1", 438 | "resolved": "https://registry.npm.taobao.org/@types/keyv/download/@types/keyv-3.1.1.tgz?cache=0&sync_timestamp=1613379302011&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fkeyv%2Fdownload%2F%40types%2Fkeyv-3.1.1.tgz", 439 | "integrity": "sha1-5FpFMk/KnatxarEjDuJJyftSz6c= sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", 440 | "requires": { 441 | "@types/node": "*" 442 | } 443 | }, 444 | "@types/node": { 445 | "version": "14.14.31", 446 | "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.31.tgz?cache=0&sync_timestamp=1613757896289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.31.tgz", 447 | "integrity": "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU=" 448 | }, 449 | "@types/responselike": { 450 | "version": "1.0.0", 451 | "resolved": "https://registry.npm.taobao.org/@types/responselike/download/@types/responselike-1.0.0.tgz?cache=0&sync_timestamp=1613384353624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fresponselike%2Fdownload%2F%40types%2Fresponselike-1.0.0.tgz", 452 | "integrity": "sha1-JR9P59FU0rrRJavhtCmyOv0mLik= sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 453 | "requires": { 454 | "@types/node": "*" 455 | } 456 | }, 457 | "asn1": { 458 | "version": "0.2.4", 459 | "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", 460 | "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", 461 | "requires": { 462 | "safer-buffer": "~2.1.0" 463 | } 464 | }, 465 | "cacheable-lookup": { 466 | "version": "5.0.4", 467 | "resolved": "https://registry.npm.taobao.org/cacheable-lookup/download/cacheable-lookup-5.0.4.tgz?cache=0&sync_timestamp=1613567617958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacheable-lookup%2Fdownload%2Fcacheable-lookup-5.0.4.tgz", 468 | "integrity": "sha1-WmuGWyxENXvj1evCpGewMnGacAU= sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" 469 | }, 470 | "cacheable-request": { 471 | "version": "7.0.1", 472 | "resolved": "https://registry.npm.taobao.org/cacheable-request/download/cacheable-request-7.0.1.tgz", 473 | "integrity": "sha1-BiAxwoViMngu1pSiV/o12pOUKlg= sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", 474 | "requires": { 475 | "clone-response": "^1.0.2", 476 | "get-stream": "^5.1.0", 477 | "http-cache-semantics": "^4.0.0", 478 | "keyv": "^4.0.0", 479 | "lowercase-keys": "^2.0.0", 480 | "normalize-url": "^4.1.0", 481 | "responselike": "^2.0.0" 482 | } 483 | }, 484 | "clone-response": { 485 | "version": "1.0.2", 486 | "resolved": "https://registry.npm.taobao.org/clone-response/download/clone-response-1.0.2.tgz", 487 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 488 | "requires": { 489 | "mimic-response": "^1.0.0" 490 | } 491 | }, 492 | "decompress-response": { 493 | "version": "6.0.0", 494 | "resolved": "https://registry.npm.taobao.org/decompress-response/download/decompress-response-6.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecompress-response%2Fdownload%2Fdecompress-response-6.0.0.tgz", 495 | "integrity": "sha1-yjh2Et234QS9FthaqwDV7PCcZvw= sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 496 | "requires": { 497 | "mimic-response": "^3.1.0" 498 | }, 499 | "dependencies": { 500 | "mimic-response": { 501 | "version": "3.1.0", 502 | "resolved": "https://registry.npm.taobao.org/mimic-response/download/mimic-response-3.1.0.tgz", 503 | "integrity": "sha1-LR1Zr5wbEpgVrMwsRqAipc4fo8k= sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 504 | } 505 | } 506 | }, 507 | "defer-to-connect": { 508 | "version": "2.0.1", 509 | "resolved": "https://registry.npm.taobao.org/defer-to-connect/download/defer-to-connect-2.0.1.tgz", 510 | "integrity": "sha1-gBa9tBQ+RjK3ejRJxiNid95SBYc= sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" 511 | }, 512 | "end-of-stream": { 513 | "version": "1.4.4", 514 | "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz", 515 | "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", 516 | "requires": { 517 | "once": "^1.4.0" 518 | } 519 | }, 520 | "get-stream": { 521 | "version": "5.2.0", 522 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&sync_timestamp=1597056544847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz", 523 | "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", 524 | "requires": { 525 | "pump": "^3.0.0" 526 | } 527 | }, 528 | "got": { 529 | "version": "11.8.2", 530 | "resolved": "https://registry.npm.taobao.org/got/download/got-11.8.2.tgz?cache=0&sync_timestamp=1614332692792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgot%2Fdownload%2Fgot-11.8.2.tgz", 531 | "integrity": "sha1-ers5Weoowx81dvFXbB7/ziPzNZk= sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", 532 | "requires": { 533 | "@sindresorhus/is": "^4.0.0", 534 | "@szmarczak/http-timer": "^4.0.5", 535 | "@types/cacheable-request": "^6.0.1", 536 | "@types/responselike": "^1.0.0", 537 | "cacheable-lookup": "^5.0.3", 538 | "cacheable-request": "^7.0.1", 539 | "decompress-response": "^6.0.0", 540 | "http2-wrapper": "^1.0.0-beta.5.2", 541 | "lowercase-keys": "^2.0.0", 542 | "p-cancelable": "^2.0.0", 543 | "responselike": "^2.0.0" 544 | } 545 | }, 546 | "http-cache-semantics": { 547 | "version": "4.1.0", 548 | "resolved": "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-4.1.0.tgz", 549 | "integrity": "sha1-SekcXL82yblLz81xwj1SSex045A= sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 550 | }, 551 | "http2-wrapper": { 552 | "version": "1.0.3", 553 | "resolved": "https://registry.npm.taobao.org/http2-wrapper/download/http2-wrapper-1.0.3.tgz", 554 | "integrity": "sha1-uPVeDB8l1OvQizsMLAeflZCACz0= sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 555 | "requires": { 556 | "quick-lru": "^5.1.1", 557 | "resolve-alpn": "^1.0.0" 558 | } 559 | }, 560 | "jsencrypt": { 561 | "version": "3.0.1", 562 | "resolved": "https://registry.npm.taobao.org/jsencrypt/download/jsencrypt-3.0.1.tgz", 563 | "integrity": "sha1-5/JSXXn7Au6oMQw4OMnbFk8e9D8= sha512-5PJ5I1H3bzlcsKNQasifJ7KkgLMv80JaR22o6hq41niaTvQPISbnmI+Me+1PJMi1YXu53bWi6JiVa0k+PQfyQA==" 564 | }, 565 | "json-buffer": { 566 | "version": "3.0.1", 567 | "resolved": "https://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.1.tgz", 568 | "integrity": "sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM= sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 569 | }, 570 | "keyv": { 571 | "version": "4.0.3", 572 | "resolved": "https://registry.npm.taobao.org/keyv/download/keyv-4.0.3.tgz?cache=0&sync_timestamp=1600337463601&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkeyv%2Fdownload%2Fkeyv-4.0.3.tgz", 573 | "integrity": "sha1-TzqpjeJUgDyvzSiWc0EI2qNeQlQ= sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", 574 | "requires": { 575 | "json-buffer": "3.0.1" 576 | } 577 | }, 578 | "lowercase-keys": { 579 | "version": "2.0.0", 580 | "resolved": "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-2.0.0.tgz", 581 | "integrity": "sha1-JgPni3tLAAbLyi+8yKMgJVislHk= sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 582 | }, 583 | "mimic-response": { 584 | "version": "1.0.1", 585 | "resolved": "https://registry.npm.taobao.org/mimic-response/download/mimic-response-1.0.1.tgz", 586 | "integrity": "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs= sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 587 | }, 588 | "moment": { 589 | "version": "2.29.1", 590 | "resolved": "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz", 591 | "integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=" 592 | }, 593 | "node-rsa": { 594 | "version": "1.1.1", 595 | "resolved": "https://registry.npm.taobao.org/node-rsa/download/node-rsa-1.1.1.tgz", 596 | "integrity": "sha1-79mtOCCXeC9QYVM5hJb3nkRkQ00= sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", 597 | "requires": { 598 | "asn1": "^0.2.4" 599 | } 600 | }, 601 | "normalize-url": { 602 | "version": "4.5.0", 603 | "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-4.5.0.tgz?cache=0&sync_timestamp=1602432435724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-4.5.0.tgz", 604 | "integrity": "sha1-RTNUCH5sqWlXvY9br3U/WYIUISk= sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 605 | }, 606 | "once": { 607 | "version": "1.4.0", 608 | "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", 609 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 610 | "requires": { 611 | "wrappy": "1" 612 | } 613 | }, 614 | "p-cancelable": { 615 | "version": "2.0.0", 616 | "resolved": "https://registry.npm.taobao.org/p-cancelable/download/p-cancelable-2.0.0.tgz", 617 | "integrity": "sha1-SjdA9b2vXtXXw+NIgsb7XWsmam4= sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" 618 | }, 619 | "psl": { 620 | "version": "1.8.0", 621 | "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz", 622 | "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=" 623 | }, 624 | "pump": { 625 | "version": "3.0.0", 626 | "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", 627 | "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", 628 | "requires": { 629 | "end-of-stream": "^1.1.0", 630 | "once": "^1.3.1" 631 | } 632 | }, 633 | "punycode": { 634 | "version": "2.1.1", 635 | "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", 636 | "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" 637 | }, 638 | "quick-lru": { 639 | "version": "5.1.1", 640 | "resolved": "https://registry.npm.taobao.org/quick-lru/download/quick-lru-5.1.1.tgz?cache=0&sync_timestamp=1610610433340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquick-lru%2Fdownload%2Fquick-lru-5.1.1.tgz", 641 | "integrity": "sha1-NmST5rPkKjpoheLpnRj4D7eoyTI= sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 642 | }, 643 | "resolve-alpn": { 644 | "version": "1.0.0", 645 | "resolved": "https://registry.npm.taobao.org/resolve-alpn/download/resolve-alpn-1.0.0.tgz", 646 | "integrity": "sha1-dFrWCz1q/0tKSOAbjAvccJWeDow= sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" 647 | }, 648 | "responselike": { 649 | "version": "2.0.0", 650 | "resolved": "https://registry.npm.taobao.org/responselike/download/responselike-2.0.0.tgz", 651 | "integrity": "sha1-JjkbzDF091D5p56sxAoSpcQtdyM= sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", 652 | "requires": { 653 | "lowercase-keys": "^2.0.0" 654 | } 655 | }, 656 | "safer-buffer": { 657 | "version": "2.1.2", 658 | "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", 659 | "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" 660 | }, 661 | "tough-cookie": { 662 | "version": "4.0.0", 663 | "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-4.0.0.tgz", 664 | "integrity": "sha1-2CIjTuyogvmR8PkIgkrSYi3b7OQ=", 665 | "requires": { 666 | "psl": "^1.1.33", 667 | "punycode": "^2.1.1", 668 | "universalify": "^0.1.2" 669 | } 670 | }, 671 | "universalify": { 672 | "version": "0.1.2", 673 | "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1603179967633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz", 674 | "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=" 675 | }, 676 | "wrappy": { 677 | "version": "1.0.2", 678 | "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", 679 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 680 | } 681 | } 682 | } 683 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AutoAttendYuKeTang", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "git@github.com:Jasonzj/AutoAttendYuKeTang.git", 6 | "author": "Jasonzj <925645402@qq.com>", 7 | "license": "MIT", 8 | "dependencies": { 9 | "got": "^11.8.2", 10 | "jsencrypt": "^3.0.1", 11 | "moment": "^2.29.1", 12 | "node-rsa": "^1.1.1", 13 | "tough-cookie": "^4.0.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const NodeRSA = require("node-rsa"); 2 | const path = require("path"); 3 | const fs = require("fs"); 4 | const got = require("got"); 5 | const { CookieJar } = require("tough-cookie"); 6 | const sendNotify = require("./sendNotify"); 7 | const moment = require("moment"); 8 | 9 | const resolve = function (...args) { 10 | return path.resolve(__dirname, ...args); 11 | }; 12 | 13 | let count = 0; 14 | 15 | const cookieJar = new CookieJar(); 16 | 17 | let startTime = undefined; 18 | 19 | const customGot = got.extend({ 20 | cookieJar, 21 | timeout: 10000, 22 | }); 23 | 24 | const successLessons = new Set(); 25 | 26 | const publicKey = fs.readFileSync(resolve("public.pem"), "utf8"); 27 | const key = new NodeRSA(publicKey, "pkcs8-public", { 28 | encryptionScheme: "pkcs1", 29 | }); 30 | 31 | const api = { 32 | login: "https://changjiang.yuketang.cn/pc/login/verify_pwd_login/", 33 | getOnLessonData: 34 | "https://changjiang.yuketang.cn/v/course_meta/on_lesson_courses", 35 | attendLesson: "https://changjiang.yuketang.cn/v/lesson/lesson_info_v2", 36 | attendLessonV3: "https://changjiang.yuketang.cn/api/v3/lesson/checkin", 37 | getOnLessonDataV3: 38 | "https://changjiang.yuketang.cn/api/v3/classroom/on-lesson", 39 | }; 40 | 41 | const login = async (username, password) => { 42 | const body = await customGot(api.login, { 43 | method: "POST", 44 | json: { 45 | type: "PP", 46 | name: username, 47 | pwd: key.encrypt(password, "base64"), 48 | }, 49 | }).json(); 50 | if (!body.success) throw new Error("login failed"); 51 | }; 52 | 53 | const getOnLessonInfo = async () => { 54 | const { 55 | data: { on_lessons: on_lessons_v2 }, 56 | } = await customGot(api.getOnLessonData).json(); 57 | const on_lessons = on_lessons_v2; 58 | return on_lessons && on_lessons.length > 0 ? on_lessons : false; 59 | }; 60 | 61 | const getOnLessonInfoV3 = async () => { 62 | const { 63 | data: { onLessonClassrooms }, 64 | } = await customGot(api.getOnLessonDataV3).json(); 65 | return onLessonClassrooms && onLessonClassrooms.length > 0 66 | ? onLessonClassrooms 67 | : false; 68 | }; 69 | 70 | const attendLessonV3Request = (lessonId) => 71 | customGot(api.attendLessonV3, { 72 | method: "POST", 73 | json: { 74 | source: 1, 75 | lessonId, 76 | }, 77 | }).json(); 78 | 79 | const attendLessonV3 = async ({ lessonId, classroomId, courseName }) => { 80 | const data = await attendLessonV3Request(lessonId); 81 | const { code } = data; 82 | const success = code === 0; 83 | if (success) { 84 | console.log("Success: ", courseName); 85 | if (!successLessons.has(classroomId)) { 86 | sendNotify("YuKeTang: success", courseName); 87 | successLessons.add(classroomId); 88 | } 89 | } else { 90 | console.log("Error: ", data); 91 | sendNotify("YukeTang: Error", JSON.stringify(data, null, 2)); 92 | } 93 | }; 94 | 95 | const attendLesson = async ({ lesson_id, classroom }) => { 96 | const data = await customGot(api.attendLesson, { 97 | searchParams: { lesson_id, source: 1 }, 98 | }).json(); 99 | const name = classroom?.course?.name; 100 | const { success } = data; 101 | if (success) { 102 | console.log("Success: ", name); 103 | if (!successLessons.has(lesson_id)) { 104 | sendNotify("YuKeTang: success", name); 105 | successLessons.add(lesson_id); 106 | } 107 | } else { 108 | console.log("Error: ", data); 109 | sendNotify("YukeTang: Error", JSON.stringify(data, null, 2)); 110 | } 111 | }; 112 | 113 | const execCheckIn = async () => { 114 | console.log(`Number of executions: ${++count}`); 115 | if (count <= 1) { 116 | startTime = moment(); 117 | } else { 118 | const nowTime = moment(); 119 | if (nowTime.diff(startTime, "minute") > 320) { 120 | sendNotify("YukeTang: End", nowTime.format("YYYY-MM-DD hh:mm:ss")); 121 | return; 122 | } 123 | } 124 | setTimeout(execCheckIn, 1000 * 20); 125 | let lessonInfo = undefined; 126 | let lessonInfoV3 = undefined; 127 | try { 128 | lessonInfo = await getOnLessonInfo(); 129 | lessonInfoV3 = await getOnLessonInfoV3(); 130 | } catch (err) { 131 | console.log("GetOnInfo Failed:", err); 132 | } 133 | if (!lessonInfo && !lessonInfoV3) { 134 | return; 135 | } 136 | try { 137 | lessonInfo && lessonInfo.forEach((lesson) => attendLesson(lesson)); 138 | lessonInfoV3 && lessonInfoV3.forEach((lesson) => attendLessonV3(lesson)); 139 | } catch (err) { 140 | console.log("Attend Failed:", err); 141 | } 142 | }; 143 | 144 | const startUp = async () => { 145 | const { USER_INFO } = process.env; 146 | const [USERNAME, PASSWORD] = USER_INFO.split("|"); 147 | if (!(USERNAME && PASSWORD)) { 148 | console.log("Failed: USER_INFO not provided."); 149 | process.exit(0); 150 | } 151 | await login(USERNAME, PASSWORD); 152 | sendNotify("YukeTang: Start", new Date().toLocaleString("zh-CN")); 153 | execCheckIn(); 154 | }; 155 | 156 | startUp(); 157 | -------------------------------------------------------------------------------- /src/public.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQBaPX7crEH6/jS4hRD7lZrsFRIdfwEhH30onFnrnWxiRATzP9WEneXJEZHopmzudkNS5bDp51SCnBUGGgfL/sUUrlrhV2xnTSe1jRl924ejV5rkVkiii85jp9G8eJrJN6klHs0PfYfp4EVJ8688qpi5iETtg+q4ITocyEyD1+7wIDAQAB 3 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /src/sendNotify.js: -------------------------------------------------------------------------------- 1 | const got = require('got') 2 | 3 | const SCKEY = process.env.PUSH_KEY 4 | const BARKID = process.env.BARK_ID 5 | 6 | const sendNotify = (title, message) => { 7 | console.log(`https://api.day.app/${BARKID}/${encodeURIComponent(title)}/${encodeURIComponent(message)}?group=${encodeURIComponent("长江雨课堂")}`); 8 | if (BARKID) { 9 | 10 | got(`https://api.day.app/${BARKID}/${encodeURIComponent(title)}/${encodeURIComponent(message)}?group=${encodeURIComponent("长江雨课堂")}`, { 11 | responseType: 'json' 12 | }).then( ({ body }) => { 13 | if (body.code === 200) { 14 | console.log("Bark app 推送通知成功"); 15 | }else { 16 | console.log(`Bark app 推送通知异常:${body.message}`); 17 | } 18 | }).catch( (err) => { 19 | console.log("Bark app 发送通知调用API失败!!\n"); 20 | console.log(err); 21 | }) 22 | } else { 23 | console.log( "您未提供BARKID,无法使用BARK接收推送通知\n") 24 | } 25 | 26 | if (SCKEY) { 27 | got(`https://sctapi.ftqq.com/${SCKEY}.send`, { 28 | searchParams: { 29 | text: title, 30 | desp: message, 31 | }, 32 | responseType: 'json', 33 | }) 34 | .then(({ body }) => { 35 | if (body.code === 0) { 36 | console.log('server酱发送通知消息成功\n') 37 | } else if (body.code === 1024) { 38 | console.log(`server酱发送通知消息异常: ${body.errmsg}\n`) 39 | } else { 40 | console.log(`server酱发送通知消息异常\n${JSON.stringify(body)}`) 41 | } 42 | }) 43 | .catch((err) => { 44 | console.log('发送通知调用API失败!!\n') 45 | console.log(err) 46 | }) 47 | } else { 48 | console.log('您未提供server酱的SCKEY,取消微信推送消息通知\n') 49 | } 50 | } 51 | 52 | module.exports = sendNotify 53 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^4.0.0": 6 | "integrity" "sha1-L/Z06WEbRbUoiW2CDT16gS3i8OQ= sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" 7 | "resolved" "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-4.0.0.tgz" 8 | "version" "4.0.0" 9 | 10 | "@szmarczak/http-timer@^4.0.5": 11 | "integrity" "sha1-v71QIR6d+lG6B9pYoUzf0zMgUVI= sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==" 12 | "resolved" "https://registry.npm.taobao.org/@szmarczak/http-timer/download/@szmarczak/http-timer-4.0.5.tgz" 13 | "version" "4.0.5" 14 | dependencies: 15 | "defer-to-connect" "^2.0.0" 16 | 17 | "@types/cacheable-request@^6.0.1": 18 | "integrity" "sha1-XSLz3e0f06hMC761A5p0GcLJGXY= sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==" 19 | "resolved" "https://registry.npm.taobao.org/@types/cacheable-request/download/@types/cacheable-request-6.0.1.tgz" 20 | "version" "6.0.1" 21 | dependencies: 22 | "@types/http-cache-semantics" "*" 23 | "@types/keyv" "*" 24 | "@types/node" "*" 25 | "@types/responselike" "*" 26 | 27 | "@types/http-cache-semantics@*": 28 | "integrity" "sha1-kUB3lzaqJlVjXudW4kZ9eHz+iio= sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" 29 | "resolved" "https://registry.npm.taobao.org/@types/http-cache-semantics/download/@types/http-cache-semantics-4.0.0.tgz" 30 | "version" "4.0.0" 31 | 32 | "@types/keyv@*": 33 | "integrity" "sha1-5FpFMk/KnatxarEjDuJJyftSz6c= sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==" 34 | "resolved" "https://registry.npm.taobao.org/@types/keyv/download/@types/keyv-3.1.1.tgz?cache=0&sync_timestamp=1613379302011&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fkeyv%2Fdownload%2F%40types%2Fkeyv-3.1.1.tgz" 35 | "version" "3.1.1" 36 | dependencies: 37 | "@types/node" "*" 38 | 39 | "@types/node@*": 40 | "integrity" "sha1-cihr0z0TeqDRUtR+x8F2JWPTQFU=" 41 | "resolved" "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.31.tgz?cache=0&sync_timestamp=1613757896289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.31.tgz" 42 | "version" "14.14.31" 43 | 44 | "@types/responselike@*", "@types/responselike@^1.0.0": 45 | "integrity" "sha1-JR9P59FU0rrRJavhtCmyOv0mLik= sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==" 46 | "resolved" "https://registry.npm.taobao.org/@types/responselike/download/@types/responselike-1.0.0.tgz?cache=0&sync_timestamp=1613384353624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fresponselike%2Fdownload%2F%40types%2Fresponselike-1.0.0.tgz" 47 | "version" "1.0.0" 48 | dependencies: 49 | "@types/node" "*" 50 | 51 | "asn1@^0.2.4": 52 | "integrity" "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=" 53 | "resolved" "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz" 54 | "version" "0.2.4" 55 | dependencies: 56 | "safer-buffer" "~2.1.0" 57 | 58 | "cacheable-lookup@^5.0.3": 59 | "integrity" "sha1-WmuGWyxENXvj1evCpGewMnGacAU= sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" 60 | "resolved" "https://registry.npm.taobao.org/cacheable-lookup/download/cacheable-lookup-5.0.4.tgz?cache=0&sync_timestamp=1613567617958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacheable-lookup%2Fdownload%2Fcacheable-lookup-5.0.4.tgz" 61 | "version" "5.0.4" 62 | 63 | "cacheable-request@^7.0.1": 64 | "integrity" "sha1-BiAxwoViMngu1pSiV/o12pOUKlg= sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==" 65 | "resolved" "https://registry.npm.taobao.org/cacheable-request/download/cacheable-request-7.0.1.tgz" 66 | "version" "7.0.1" 67 | dependencies: 68 | "clone-response" "^1.0.2" 69 | "get-stream" "^5.1.0" 70 | "http-cache-semantics" "^4.0.0" 71 | "keyv" "^4.0.0" 72 | "lowercase-keys" "^2.0.0" 73 | "normalize-url" "^4.1.0" 74 | "responselike" "^2.0.0" 75 | 76 | "clone-response@^1.0.2": 77 | "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" 78 | "resolved" "https://registry.npm.taobao.org/clone-response/download/clone-response-1.0.2.tgz" 79 | "version" "1.0.2" 80 | dependencies: 81 | "mimic-response" "^1.0.0" 82 | 83 | "decompress-response@^6.0.0": 84 | "integrity" "sha1-yjh2Et234QS9FthaqwDV7PCcZvw= sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" 85 | "resolved" "https://registry.npm.taobao.org/decompress-response/download/decompress-response-6.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecompress-response%2Fdownload%2Fdecompress-response-6.0.0.tgz" 86 | "version" "6.0.0" 87 | dependencies: 88 | "mimic-response" "^3.1.0" 89 | 90 | "defer-to-connect@^2.0.0": 91 | "integrity" "sha1-gBa9tBQ+RjK3ejRJxiNid95SBYc= sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" 92 | "resolved" "https://registry.npm.taobao.org/defer-to-connect/download/defer-to-connect-2.0.1.tgz" 93 | "version" "2.0.1" 94 | 95 | "end-of-stream@^1.1.0": 96 | "integrity" "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=" 97 | "resolved" "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz" 98 | "version" "1.4.4" 99 | dependencies: 100 | "once" "^1.4.0" 101 | 102 | "get-stream@^5.1.0": 103 | "integrity" "sha1-SWaheV7lrOZecGxLe+txJX1uItM=" 104 | "resolved" "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&sync_timestamp=1597056544847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz" 105 | "version" "5.2.0" 106 | dependencies: 107 | "pump" "^3.0.0" 108 | 109 | "got@^11.8.2": 110 | "integrity" "sha1-ers5Weoowx81dvFXbB7/ziPzNZk= sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==" 111 | "resolved" "https://registry.npm.taobao.org/got/download/got-11.8.2.tgz?cache=0&sync_timestamp=1614332692792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgot%2Fdownload%2Fgot-11.8.2.tgz" 112 | "version" "11.8.2" 113 | dependencies: 114 | "@sindresorhus/is" "^4.0.0" 115 | "@szmarczak/http-timer" "^4.0.5" 116 | "@types/cacheable-request" "^6.0.1" 117 | "@types/responselike" "^1.0.0" 118 | "cacheable-lookup" "^5.0.3" 119 | "cacheable-request" "^7.0.1" 120 | "decompress-response" "^6.0.0" 121 | "http2-wrapper" "^1.0.0-beta.5.2" 122 | "lowercase-keys" "^2.0.0" 123 | "p-cancelable" "^2.0.0" 124 | "responselike" "^2.0.0" 125 | 126 | "http-cache-semantics@^4.0.0": 127 | "integrity" "sha1-SekcXL82yblLz81xwj1SSex045A= sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 128 | "resolved" "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-4.1.0.tgz" 129 | "version" "4.1.0" 130 | 131 | "http2-wrapper@^1.0.0-beta.5.2": 132 | "integrity" "sha1-uPVeDB8l1OvQizsMLAeflZCACz0= sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" 133 | "resolved" "https://registry.npm.taobao.org/http2-wrapper/download/http2-wrapper-1.0.3.tgz" 134 | "version" "1.0.3" 135 | dependencies: 136 | "quick-lru" "^5.1.1" 137 | "resolve-alpn" "^1.0.0" 138 | 139 | "jsencrypt@^3.0.1": 140 | "integrity" "sha1-5/JSXXn7Au6oMQw4OMnbFk8e9D8= sha512-5PJ5I1H3bzlcsKNQasifJ7KkgLMv80JaR22o6hq41niaTvQPISbnmI+Me+1PJMi1YXu53bWi6JiVa0k+PQfyQA==" 141 | "resolved" "https://registry.npm.taobao.org/jsencrypt/download/jsencrypt-3.0.1.tgz" 142 | "version" "3.0.1" 143 | 144 | "json-buffer@3.0.1": 145 | "integrity" "sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM= sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 146 | "resolved" "https://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.1.tgz" 147 | "version" "3.0.1" 148 | 149 | "keyv@^4.0.0": 150 | "integrity" "sha1-TzqpjeJUgDyvzSiWc0EI2qNeQlQ= sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==" 151 | "resolved" "https://registry.npm.taobao.org/keyv/download/keyv-4.0.3.tgz?cache=0&sync_timestamp=1600337463601&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkeyv%2Fdownload%2Fkeyv-4.0.3.tgz" 152 | "version" "4.0.3" 153 | dependencies: 154 | "json-buffer" "3.0.1" 155 | 156 | "lowercase-keys@^2.0.0": 157 | "integrity" "sha1-JgPni3tLAAbLyi+8yKMgJVislHk= sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 158 | "resolved" "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-2.0.0.tgz" 159 | "version" "2.0.0" 160 | 161 | "mimic-response@^1.0.0": 162 | "integrity" "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs= sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 163 | "resolved" "https://registry.npm.taobao.org/mimic-response/download/mimic-response-1.0.1.tgz" 164 | "version" "1.0.1" 165 | 166 | "mimic-response@^3.1.0": 167 | "integrity" "sha1-LR1Zr5wbEpgVrMwsRqAipc4fo8k= sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 168 | "resolved" "https://registry.npm.taobao.org/mimic-response/download/mimic-response-3.1.0.tgz" 169 | "version" "3.1.0" 170 | 171 | "moment@^2.29.1": 172 | "integrity" "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=" 173 | "resolved" "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz" 174 | "version" "2.29.1" 175 | 176 | "node-rsa@^1.1.1": 177 | "integrity" "sha1-79mtOCCXeC9QYVM5hJb3nkRkQ00= sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==" 178 | "resolved" "https://registry.npm.taobao.org/node-rsa/download/node-rsa-1.1.1.tgz" 179 | "version" "1.1.1" 180 | dependencies: 181 | "asn1" "^0.2.4" 182 | 183 | "normalize-url@^4.1.0": 184 | "integrity" "sha1-RTNUCH5sqWlXvY9br3U/WYIUISk= sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 185 | "resolved" "https://registry.npm.taobao.org/normalize-url/download/normalize-url-4.5.0.tgz?cache=0&sync_timestamp=1602432435724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-4.5.0.tgz" 186 | "version" "4.5.0" 187 | 188 | "once@^1.3.1", "once@^1.4.0": 189 | "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" 190 | "resolved" "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz" 191 | "version" "1.4.0" 192 | dependencies: 193 | "wrappy" "1" 194 | 195 | "p-cancelable@^2.0.0": 196 | "integrity" "sha1-SjdA9b2vXtXXw+NIgsb7XWsmam4= sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" 197 | "resolved" "https://registry.npm.taobao.org/p-cancelable/download/p-cancelable-2.0.0.tgz" 198 | "version" "2.0.0" 199 | 200 | "psl@^1.1.33": 201 | "integrity" "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=" 202 | "resolved" "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz" 203 | "version" "1.8.0" 204 | 205 | "pump@^3.0.0": 206 | "integrity" "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=" 207 | "resolved" "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz" 208 | "version" "3.0.0" 209 | dependencies: 210 | "end-of-stream" "^1.1.0" 211 | "once" "^1.3.1" 212 | 213 | "punycode@^2.1.1": 214 | "integrity" "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" 215 | "resolved" "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz" 216 | "version" "2.1.1" 217 | 218 | "quick-lru@^5.1.1": 219 | "integrity" "sha1-NmST5rPkKjpoheLpnRj4D7eoyTI= sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 220 | "resolved" "https://registry.npm.taobao.org/quick-lru/download/quick-lru-5.1.1.tgz?cache=0&sync_timestamp=1610610433340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquick-lru%2Fdownload%2Fquick-lru-5.1.1.tgz" 221 | "version" "5.1.1" 222 | 223 | "resolve-alpn@^1.0.0": 224 | "integrity" "sha1-dFrWCz1q/0tKSOAbjAvccJWeDow= sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" 225 | "resolved" "https://registry.npm.taobao.org/resolve-alpn/download/resolve-alpn-1.0.0.tgz" 226 | "version" "1.0.0" 227 | 228 | "responselike@^2.0.0": 229 | "integrity" "sha1-JjkbzDF091D5p56sxAoSpcQtdyM= sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==" 230 | "resolved" "https://registry.npm.taobao.org/responselike/download/responselike-2.0.0.tgz" 231 | "version" "2.0.0" 232 | dependencies: 233 | "lowercase-keys" "^2.0.0" 234 | 235 | "safer-buffer@~2.1.0": 236 | "integrity" "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" 237 | "resolved" "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz" 238 | "version" "2.1.2" 239 | 240 | "tough-cookie@^4.0.0": 241 | "integrity" "sha1-2CIjTuyogvmR8PkIgkrSYi3b7OQ=" 242 | "resolved" "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-4.0.0.tgz" 243 | "version" "4.0.0" 244 | dependencies: 245 | "psl" "^1.1.33" 246 | "punycode" "^2.1.1" 247 | "universalify" "^0.1.2" 248 | 249 | "universalify@^0.1.2": 250 | "integrity" "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=" 251 | "resolved" "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1603179967633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz" 252 | "version" "0.1.2" 253 | 254 | "wrappy@1": 255 | "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 256 | "resolved" "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz" 257 | "version" "1.0.2" 258 | --------------------------------------------------------------------------------