├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── README_CN.md ├── chromedriver └── chromedriver ├── index.py ├── package-lock.json ├── package.json ├── requirements.txt └── serverless.yml /.gitattributes: -------------------------------------------------------------------------------- 1 | chromedriver/headless-chromium-tencent filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # Python dependencies 107 | selenium/ 108 | selenium-*/ 109 | 110 | # Serverless 111 | .serverless/ 112 | .env_temp 113 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Lei Shi 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 |
2 |
6 | 中文文档 7 |
8 | 9 |Headless chrome running on tencent serverless cloud function
10 |with Serverless, Tencent SCF, Headless Chrome and Selenium!
11 | 12 | ## How to run this project 13 | 14 | ``` 15 | git clone https://github.com/LeiShi1313/scf-headless-chrome.git 16 | cd scf-headless-chrome 17 | wget -O chromedriver/headless-chromium-tencent https://github.com/LeiShi1313/scf-headless-chrome/releases/download/v1.0.0/headless-chromium-tencent 18 | npm install 19 | pip install -r requirements.txt -t . 20 | sls deploy 21 | ``` 22 | and that's it, :tada::tada::tada: 23 | -------------------------------------------------------------------------------- /README_CN.md: -------------------------------------------------------------------------------- 1 |2 |
Serverless+云函数+ 无头Chrome+Selenium=运行在腾讯云函数上的无头浏览器
6 | 7 | 8 | ## 如何运行 9 | 10 | ``` 11 | git clone https://github.com/LeiShi1313/scf-headless-chrome.git 12 | cd scf-headless-chrome 13 | https://github.com/LeiShi1313/scf-headless-chrome/releases/download/v1.0.0/headless-chromium-tencent 14 | npm install 15 | pip install -r requirements.txt -t . 16 | sls deploy 17 | ``` 18 | 按照命令行提示登录然后就可以了, :tada::tada::tada: 19 | -------------------------------------------------------------------------------- /chromedriver/chromedriver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeiShi1313/scf-headless-chrome/591afa9e190cac05332f954d828c18a282fd1e47/chromedriver/chromedriver -------------------------------------------------------------------------------- /index.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf8 -*- 2 | import json 3 | from selenium import webdriver 4 | from selenium.webdriver.chrome.options import Options 5 | from selenium.webdriver.common.action_chains import ActionChains 6 | 7 | 8 | class Web: 9 | def __init__(self, options, path='./chromedriver/chromedriver', screen_shot_path='./'): 10 | self._driver = webdriver.Chrome(path, chrome_options=options) 11 | self.screen_shot_count = 0 12 | self.screen_shot_path = screen_shot_path 13 | 14 | def get_screen_shot(self, element_id=None): 15 | if element_id is not None: 16 | ActionChains(self._driver).move_to_element(self._driver.find_element_by_id(element_id)).perform() 17 | self._driver.save_screenshot('{}/{}.png'.format(self.screen_shot_path, self.screen_shot_count)) 18 | else: 19 | self._driver.save_screenshot('{}/{}.png'.format(self.screen_shot_path, self.screen_shot_count)) 20 | print('screenshot {} saved!'.format(self.screen_shot_count)) 21 | self.screen_shot_count += 1 22 | return self 23 | 24 | def save_page_source(self): 25 | with open("{}.html".format(self._driver.title), 'w') as f: 26 | f.write(self._driver.page_source) 27 | return self 28 | 29 | def get_page_source(self): 30 | return self._driver.page_source 31 | 32 | def find_element_by_id(self, id_): 33 | return self._driver.find_element_by_id(id_) 34 | 35 | def find_element_by_xpath(self, xpath): 36 | return self._driver.find_element_by_xpath(xpath) 37 | 38 | def print_page(self): 39 | print(self._driver.page_source) 40 | 41 | def go_to(self, url): 42 | self._driver.get(url) 43 | return self 44 | 45 | 46 | def main(): 47 | options = Options() 48 | options.binary_location = './chromedriver/headless-chromium-tencent' 49 | options.add_argument("--headless") 50 | options.add_argument('--no-sandbox') 51 | options.add_argument('--single-process') 52 | options.add_argument('--disable-dev-shm-usage') 53 | options.add_experimental_option('excludeSwitches', ['enable-automation']) 54 | options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) 55 | web = Web(options) 56 | return json.loads(web.go_to('https://postman-echo.com/get').find_element_by_xpath('//body').text) 57 | 58 | def test(): 59 | return platform.platform() 60 | 61 | def main_handler(event, context): 62 | return main() 63 | 64 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tencent-python", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ajv": { 8 | "version": "6.12.6", 9 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 10 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 11 | "dev": true, 12 | "requires": { 13 | "fast-deep-equal": "^3.1.1", 14 | "fast-json-stable-stringify": "^2.0.0", 15 | "json-schema-traverse": "^0.4.1", 16 | "uri-js": "^4.2.2" 17 | } 18 | }, 19 | "ansi-colors": { 20 | "version": "3.2.3", 21 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", 22 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", 23 | "dev": true 24 | }, 25 | "ansi-regex": { 26 | "version": "3.0.0", 27 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 28 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 29 | "dev": true 30 | }, 31 | "ansi-styles": { 32 | "version": "3.2.1", 33 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 34 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 35 | "dev": true, 36 | "requires": { 37 | "color-convert": "^1.9.0" 38 | } 39 | }, 40 | "argparse": { 41 | "version": "1.0.10", 42 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 43 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 44 | "dev": true, 45 | "requires": { 46 | "sprintf-js": "~1.0.2" 47 | } 48 | }, 49 | "array-filter": { 50 | "version": "1.0.0", 51 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", 52 | "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", 53 | "dev": true 54 | }, 55 | "asn1": { 56 | "version": "0.2.4", 57 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 58 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 59 | "dev": true, 60 | "requires": { 61 | "safer-buffer": "~2.1.0" 62 | } 63 | }, 64 | "assert": { 65 | "version": "2.0.0", 66 | "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", 67 | "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", 68 | "dev": true, 69 | "requires": { 70 | "es6-object-assign": "^1.1.0", 71 | "is-nan": "^1.2.1", 72 | "object-is": "^1.0.1", 73 | "util": "^0.12.0" 74 | } 75 | }, 76 | "assert-plus": { 77 | "version": "1.0.0", 78 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 79 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 80 | "dev": true 81 | }, 82 | "assertion-error": { 83 | "version": "1.1.0", 84 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 85 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 86 | "dev": true 87 | }, 88 | "async": { 89 | "version": "2.6.3", 90 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 91 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 92 | "dev": true, 93 | "requires": { 94 | "lodash": "^4.17.14" 95 | } 96 | }, 97 | "asynckit": { 98 | "version": "0.4.0", 99 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 100 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 101 | "dev": true 102 | }, 103 | "available-typed-arrays": { 104 | "version": "1.0.2", 105 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", 106 | "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", 107 | "dev": true, 108 | "requires": { 109 | "array-filter": "^1.0.0" 110 | } 111 | }, 112 | "aws-sign2": { 113 | "version": "0.7.0", 114 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 115 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", 116 | "dev": true 117 | }, 118 | "aws4": { 119 | "version": "1.10.0", 120 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", 121 | "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", 122 | "dev": true 123 | }, 124 | "balanced-match": { 125 | "version": "1.0.0", 126 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 127 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 128 | "dev": true 129 | }, 130 | "base64-js": { 131 | "version": "1.3.1", 132 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 133 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", 134 | "dev": true 135 | }, 136 | "bcrypt-pbkdf": { 137 | "version": "1.0.2", 138 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 139 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 140 | "dev": true, 141 | "requires": { 142 | "tweetnacl": "^0.14.3" 143 | } 144 | }, 145 | "bluebird": { 146 | "version": "3.7.2", 147 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 148 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 149 | "dev": true 150 | }, 151 | "brace-expansion": { 152 | "version": "1.1.11", 153 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 154 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 155 | "dev": true, 156 | "requires": { 157 | "balanced-match": "^1.0.0", 158 | "concat-map": "0.0.1" 159 | } 160 | }, 161 | "browser-stdout": { 162 | "version": "1.3.1", 163 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 164 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 165 | "dev": true 166 | }, 167 | "buffer": { 168 | "version": "5.6.0", 169 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 170 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 171 | "dev": true, 172 | "requires": { 173 | "base64-js": "^1.0.2", 174 | "ieee754": "^1.1.4" 175 | } 176 | }, 177 | "buffer-alloc": { 178 | "version": "1.2.0", 179 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 180 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 181 | "dev": true, 182 | "requires": { 183 | "buffer-alloc-unsafe": "^1.1.0", 184 | "buffer-fill": "^1.0.0" 185 | } 186 | }, 187 | "buffer-alloc-unsafe": { 188 | "version": "1.1.0", 189 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 190 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", 191 | "dev": true 192 | }, 193 | "buffer-fill": { 194 | "version": "1.0.0", 195 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 196 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", 197 | "dev": true 198 | }, 199 | "buffer-from": { 200 | "version": "1.1.1", 201 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 202 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 203 | "dev": true 204 | }, 205 | "camelcase": { 206 | "version": "5.3.1", 207 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 208 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 209 | "dev": true 210 | }, 211 | "caseless": { 212 | "version": "0.12.0", 213 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 214 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 215 | "dev": true 216 | }, 217 | "chai": { 218 | "version": "4.2.0", 219 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 220 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 221 | "dev": true, 222 | "requires": { 223 | "assertion-error": "^1.1.0", 224 | "check-error": "^1.0.2", 225 | "deep-eql": "^3.0.1", 226 | "get-func-name": "^2.0.0", 227 | "pathval": "^1.1.0", 228 | "type-detect": "^4.0.5" 229 | } 230 | }, 231 | "chalk": { 232 | "version": "2.4.2", 233 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 234 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 235 | "dev": true, 236 | "requires": { 237 | "ansi-styles": "^3.2.1", 238 | "escape-string-regexp": "^1.0.5", 239 | "supports-color": "^5.3.0" 240 | } 241 | }, 242 | "check-error": { 243 | "version": "1.0.2", 244 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 245 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 246 | "dev": true 247 | }, 248 | "ci-info": { 249 | "version": "2.0.0", 250 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 251 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", 252 | "dev": true 253 | }, 254 | "cliui": { 255 | "version": "5.0.0", 256 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 257 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 258 | "dev": true, 259 | "requires": { 260 | "string-width": "^3.1.0", 261 | "strip-ansi": "^5.2.0", 262 | "wrap-ansi": "^5.1.0" 263 | }, 264 | "dependencies": { 265 | "ansi-regex": { 266 | "version": "4.1.0", 267 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 268 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 269 | "dev": true 270 | }, 271 | "string-width": { 272 | "version": "3.1.0", 273 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 274 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 275 | "dev": true, 276 | "requires": { 277 | "emoji-regex": "^7.0.1", 278 | "is-fullwidth-code-point": "^2.0.0", 279 | "strip-ansi": "^5.1.0" 280 | } 281 | }, 282 | "strip-ansi": { 283 | "version": "5.2.0", 284 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 285 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 286 | "dev": true, 287 | "requires": { 288 | "ansi-regex": "^4.1.0" 289 | } 290 | } 291 | } 292 | }, 293 | "co": { 294 | "version": "4.6.0", 295 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 296 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 297 | "dev": true 298 | }, 299 | "color-convert": { 300 | "version": "1.9.3", 301 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 302 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 303 | "dev": true, 304 | "requires": { 305 | "color-name": "1.1.3" 306 | } 307 | }, 308 | "color-name": { 309 | "version": "1.1.3", 310 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 311 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 312 | "dev": true 313 | }, 314 | "combined-stream": { 315 | "version": "1.0.8", 316 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 317 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 318 | "dev": true, 319 | "requires": { 320 | "delayed-stream": "~1.0.0" 321 | } 322 | }, 323 | "concat-map": { 324 | "version": "0.0.1", 325 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 326 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 327 | "dev": true 328 | }, 329 | "conf": { 330 | "version": "6.2.4", 331 | "resolved": "https://registry.npmjs.org/conf/-/conf-6.2.4.tgz", 332 | "integrity": "sha512-GjgyPRLo1qK1LR9RWAdUagqo+DP18f5HWCFk4va7GS+wpxQTOzfuKTwKOvGW2c01/YXNicAyyoyuSddmdkBzZQ==", 333 | "dev": true, 334 | "requires": { 335 | "ajv": "^6.10.2", 336 | "debounce-fn": "^3.0.1", 337 | "dot-prop": "^5.0.0", 338 | "env-paths": "^2.2.0", 339 | "json-schema-typed": "^7.0.1", 340 | "make-dir": "^3.0.0", 341 | "onetime": "^5.1.0", 342 | "pkg-up": "^3.0.1", 343 | "semver": "^6.2.0", 344 | "write-file-atomic": "^3.0.0" 345 | } 346 | }, 347 | "configstore": { 348 | "version": "3.1.2", 349 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", 350 | "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", 351 | "dev": true, 352 | "requires": { 353 | "dot-prop": "^4.1.0", 354 | "graceful-fs": "^4.1.2", 355 | "make-dir": "^1.0.0", 356 | "unique-string": "^1.0.0", 357 | "write-file-atomic": "^2.0.0", 358 | "xdg-basedir": "^3.0.0" 359 | }, 360 | "dependencies": { 361 | "dot-prop": { 362 | "version": "4.2.1", 363 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", 364 | "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", 365 | "dev": true, 366 | "requires": { 367 | "is-obj": "^1.0.0" 368 | } 369 | }, 370 | "is-obj": { 371 | "version": "1.0.1", 372 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 373 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 374 | "dev": true 375 | }, 376 | "make-dir": { 377 | "version": "1.3.0", 378 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 379 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 380 | "dev": true, 381 | "requires": { 382 | "pify": "^3.0.0" 383 | } 384 | }, 385 | "write-file-atomic": { 386 | "version": "2.4.3", 387 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 388 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 389 | "dev": true, 390 | "requires": { 391 | "graceful-fs": "^4.1.11", 392 | "imurmurhash": "^0.1.4", 393 | "signal-exit": "^3.0.2" 394 | } 395 | } 396 | } 397 | }, 398 | "core-util-is": { 399 | "version": "1.0.2", 400 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 401 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 402 | "dev": true 403 | }, 404 | "cos-nodejs-sdk-v5": { 405 | "version": "2.5.20", 406 | "resolved": "https://registry.npmjs.org/cos-nodejs-sdk-v5/-/cos-nodejs-sdk-v5-2.5.20.tgz", 407 | "integrity": "sha512-KaDhM9yGwk1ha4l8GrDtZVXM0dI1bJ8tkHnsogGdrBTwBFcHc0oTnV2mpBkhDx1Zo6LCOVVgTXTuftZUqqki/A==", 408 | "dev": true, 409 | "requires": { 410 | "configstore": "^3.1.2", 411 | "mime-types": "^2.1.24", 412 | "request": "^2.88.0", 413 | "xml2js": "^0.4.19" 414 | } 415 | }, 416 | "crypto-random-string": { 417 | "version": "1.0.0", 418 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 419 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 420 | "dev": true 421 | }, 422 | "dashdash": { 423 | "version": "1.14.1", 424 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 425 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 426 | "dev": true, 427 | "requires": { 428 | "assert-plus": "^1.0.0" 429 | } 430 | }, 431 | "debounce-fn": { 432 | "version": "3.0.1", 433 | "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-3.0.1.tgz", 434 | "integrity": "sha512-aBoJh5AhpqlRoHZjHmOzZlRx+wz2xVwGL9rjs+Kj0EWUrL4/h4K7OD176thl2Tdoqui/AaA4xhHrNArGLAaI3Q==", 435 | "dev": true, 436 | "requires": { 437 | "mimic-fn": "^2.1.0" 438 | } 439 | }, 440 | "debug": { 441 | "version": "3.2.6", 442 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 443 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 444 | "dev": true, 445 | "requires": { 446 | "ms": "^2.1.1" 447 | } 448 | }, 449 | "decamelize": { 450 | "version": "1.2.0", 451 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 452 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 453 | "dev": true 454 | }, 455 | "deep-eql": { 456 | "version": "3.0.1", 457 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 458 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 459 | "dev": true, 460 | "requires": { 461 | "type-detect": "^4.0.0" 462 | } 463 | }, 464 | "define-properties": { 465 | "version": "1.1.3", 466 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 467 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 468 | "dev": true, 469 | "requires": { 470 | "object-keys": "^1.0.12" 471 | } 472 | }, 473 | "delayed-stream": { 474 | "version": "1.0.0", 475 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 476 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 477 | "dev": true 478 | }, 479 | "detect-mocha": { 480 | "version": "0.1.0", 481 | "resolved": "https://registry.npmjs.org/detect-mocha/-/detect-mocha-0.1.0.tgz", 482 | "integrity": "sha1-dDVauHlZUx6i7jirJQgtjSzkdAI=", 483 | "dev": true, 484 | "requires": { 485 | "global-var": "^0.1.0" 486 | } 487 | }, 488 | "diff": { 489 | "version": "3.5.0", 490 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 491 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 492 | "dev": true 493 | }, 494 | "dijkstrajs": { 495 | "version": "1.0.1", 496 | "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", 497 | "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=", 498 | "dev": true 499 | }, 500 | "dot-prop": { 501 | "version": "5.3.0", 502 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", 503 | "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 504 | "dev": true, 505 | "requires": { 506 | "is-obj": "^2.0.0" 507 | } 508 | }, 509 | "ecc-jsbn": { 510 | "version": "0.1.2", 511 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 512 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 513 | "dev": true, 514 | "requires": { 515 | "jsbn": "~0.1.0", 516 | "safer-buffer": "^2.1.0" 517 | } 518 | }, 519 | "emoji-regex": { 520 | "version": "7.0.3", 521 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 522 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 523 | "dev": true 524 | }, 525 | "env-paths": { 526 | "version": "2.2.0", 527 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", 528 | "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", 529 | "dev": true 530 | }, 531 | "es-abstract": { 532 | "version": "1.17.5", 533 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", 534 | "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", 535 | "dev": true, 536 | "requires": { 537 | "es-to-primitive": "^1.2.1", 538 | "function-bind": "^1.1.1", 539 | "has": "^1.0.3", 540 | "has-symbols": "^1.0.1", 541 | "is-callable": "^1.1.5", 542 | "is-regex": "^1.0.5", 543 | "object-inspect": "^1.7.0", 544 | "object-keys": "^1.1.1", 545 | "object.assign": "^4.1.0", 546 | "string.prototype.trimleft": "^2.1.1", 547 | "string.prototype.trimright": "^2.1.1" 548 | } 549 | }, 550 | "es-to-primitive": { 551 | "version": "1.2.1", 552 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 553 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 554 | "dev": true, 555 | "requires": { 556 | "is-callable": "^1.1.4", 557 | "is-date-object": "^1.0.1", 558 | "is-symbol": "^1.0.2" 559 | } 560 | }, 561 | "es6-object-assign": { 562 | "version": "1.1.0", 563 | "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", 564 | "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", 565 | "dev": true 566 | }, 567 | "escape-string-regexp": { 568 | "version": "1.0.5", 569 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 570 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 571 | "dev": true 572 | }, 573 | "esprima": { 574 | "version": "4.0.1", 575 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 576 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 577 | "dev": true 578 | }, 579 | "extend": { 580 | "version": "3.0.2", 581 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 582 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 583 | "dev": true 584 | }, 585 | "extsprintf": { 586 | "version": "1.3.0", 587 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 588 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 589 | "dev": true 590 | }, 591 | "fast-deep-equal": { 592 | "version": "3.1.1", 593 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 594 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 595 | "dev": true 596 | }, 597 | "fast-json-stable-stringify": { 598 | "version": "2.1.0", 599 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 600 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 601 | "dev": true 602 | }, 603 | "filesize": { 604 | "version": "5.0.3", 605 | "resolved": "https://registry.npmjs.org/filesize/-/filesize-5.0.3.tgz", 606 | "integrity": "sha512-RM123v6KPqgZJmVCh4rLvCo8tLKr4sgD92DeZ+AuoUE8teGZJHKs1cTORwETcpIJSlGsz2WYdwKDQUXby5hNqQ==", 607 | "dev": true 608 | }, 609 | "find-up": { 610 | "version": "3.0.0", 611 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 612 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 613 | "dev": true, 614 | "requires": { 615 | "locate-path": "^3.0.0" 616 | } 617 | }, 618 | "flat": { 619 | "version": "4.1.0", 620 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", 621 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", 622 | "dev": true, 623 | "requires": { 624 | "is-buffer": "~2.0.3" 625 | } 626 | }, 627 | "foreach": { 628 | "version": "2.0.5", 629 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 630 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 631 | "dev": true 632 | }, 633 | "forever-agent": { 634 | "version": "0.6.1", 635 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 636 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 637 | "dev": true 638 | }, 639 | "form-data": { 640 | "version": "2.3.3", 641 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 642 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 643 | "dev": true, 644 | "requires": { 645 | "asynckit": "^0.4.0", 646 | "combined-stream": "^1.0.6", 647 | "mime-types": "^2.1.12" 648 | } 649 | }, 650 | "fs-extra": { 651 | "version": "8.1.0", 652 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 653 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 654 | "dev": true, 655 | "requires": { 656 | "graceful-fs": "^4.2.0", 657 | "jsonfile": "^4.0.0", 658 | "universalify": "^0.1.0" 659 | } 660 | }, 661 | "fs.realpath": { 662 | "version": "1.0.0", 663 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 664 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 665 | "dev": true 666 | }, 667 | "function-bind": { 668 | "version": "1.1.1", 669 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 670 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 671 | "dev": true 672 | }, 673 | "get-caller-file": { 674 | "version": "2.0.5", 675 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 676 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 677 | "dev": true 678 | }, 679 | "get-func-name": { 680 | "version": "2.0.0", 681 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 682 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 683 | "dev": true 684 | }, 685 | "getpass": { 686 | "version": "0.1.7", 687 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 688 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 689 | "dev": true, 690 | "requires": { 691 | "assert-plus": "^1.0.0" 692 | } 693 | }, 694 | "glob": { 695 | "version": "7.1.3", 696 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 697 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 698 | "dev": true, 699 | "requires": { 700 | "fs.realpath": "^1.0.0", 701 | "inflight": "^1.0.4", 702 | "inherits": "2", 703 | "minimatch": "^3.0.4", 704 | "once": "^1.3.0", 705 | "path-is-absolute": "^1.0.0" 706 | } 707 | }, 708 | "global-var": { 709 | "version": "0.1.0", 710 | "resolved": "https://registry.npmjs.org/global-var/-/global-var-0.1.0.tgz", 711 | "integrity": "sha1-yOPo/5yIJ9uc1BUvZLszW498mbY=", 712 | "dev": true 713 | }, 714 | "graceful-fs": { 715 | "version": "4.2.4", 716 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 717 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 718 | "dev": true 719 | }, 720 | "growl": { 721 | "version": "1.10.5", 722 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 723 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 724 | "dev": true 725 | }, 726 | "har-schema": { 727 | "version": "2.0.0", 728 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 729 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", 730 | "dev": true 731 | }, 732 | "har-validator": { 733 | "version": "5.1.3", 734 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", 735 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", 736 | "dev": true, 737 | "requires": { 738 | "ajv": "^6.5.5", 739 | "har-schema": "^2.0.0" 740 | } 741 | }, 742 | "has": { 743 | "version": "1.0.3", 744 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 745 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 746 | "dev": true, 747 | "requires": { 748 | "function-bind": "^1.1.1" 749 | } 750 | }, 751 | "has-flag": { 752 | "version": "3.0.0", 753 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 754 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 755 | "dev": true 756 | }, 757 | "has-symbols": { 758 | "version": "1.0.1", 759 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 760 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 761 | "dev": true 762 | }, 763 | "he": { 764 | "version": "1.2.0", 765 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 766 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 767 | "dev": true 768 | }, 769 | "http-signature": { 770 | "version": "1.2.0", 771 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 772 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 773 | "dev": true, 774 | "requires": { 775 | "assert-plus": "^1.0.0", 776 | "jsprim": "^1.2.2", 777 | "sshpk": "^1.7.0" 778 | } 779 | }, 780 | "iconv-lite": { 781 | "version": "0.4.24", 782 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 783 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 784 | "dev": true, 785 | "requires": { 786 | "safer-buffer": ">= 2.1.2 < 3" 787 | } 788 | }, 789 | "ieee754": { 790 | "version": "1.1.13", 791 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 792 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", 793 | "dev": true 794 | }, 795 | "imurmurhash": { 796 | "version": "0.1.4", 797 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 798 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 799 | "dev": true 800 | }, 801 | "inflight": { 802 | "version": "1.0.6", 803 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 804 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 805 | "dev": true, 806 | "requires": { 807 | "once": "^1.3.0", 808 | "wrappy": "1" 809 | } 810 | }, 811 | "inherits": { 812 | "version": "2.0.4", 813 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 814 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 815 | "dev": true 816 | }, 817 | "ini": { 818 | "version": "1.3.8", 819 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 820 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 821 | "dev": true 822 | }, 823 | "is-arguments": { 824 | "version": "1.0.4", 825 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", 826 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", 827 | "dev": true 828 | }, 829 | "is-buffer": { 830 | "version": "2.0.4", 831 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", 832 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", 833 | "dev": true 834 | }, 835 | "is-callable": { 836 | "version": "1.1.5", 837 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", 838 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", 839 | "dev": true 840 | }, 841 | "is-date-object": { 842 | "version": "1.0.2", 843 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 844 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 845 | "dev": true 846 | }, 847 | "is-fullwidth-code-point": { 848 | "version": "2.0.0", 849 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 850 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 851 | "dev": true 852 | }, 853 | "is-generator-function": { 854 | "version": "1.0.7", 855 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", 856 | "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", 857 | "dev": true 858 | }, 859 | "is-nan": { 860 | "version": "1.3.0", 861 | "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", 862 | "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", 863 | "dev": true, 864 | "requires": { 865 | "define-properties": "^1.1.3" 866 | } 867 | }, 868 | "is-obj": { 869 | "version": "2.0.0", 870 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 871 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", 872 | "dev": true 873 | }, 874 | "is-regex": { 875 | "version": "1.0.5", 876 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", 877 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", 878 | "dev": true, 879 | "requires": { 880 | "has": "^1.0.3" 881 | } 882 | }, 883 | "is-symbol": { 884 | "version": "1.0.3", 885 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 886 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 887 | "dev": true, 888 | "requires": { 889 | "has-symbols": "^1.0.1" 890 | } 891 | }, 892 | "is-typed-array": { 893 | "version": "1.1.3", 894 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", 895 | "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", 896 | "dev": true, 897 | "requires": { 898 | "available-typed-arrays": "^1.0.0", 899 | "es-abstract": "^1.17.4", 900 | "foreach": "^2.0.5", 901 | "has-symbols": "^1.0.1" 902 | } 903 | }, 904 | "is-typedarray": { 905 | "version": "1.0.0", 906 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 907 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 908 | "dev": true 909 | }, 910 | "isarray": { 911 | "version": "2.0.5", 912 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 913 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 914 | "dev": true 915 | }, 916 | "isexe": { 917 | "version": "2.0.0", 918 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 919 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 920 | "dev": true 921 | }, 922 | "isstream": { 923 | "version": "0.1.2", 924 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 925 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 926 | "dev": true 927 | }, 928 | "js-yaml": { 929 | "version": "3.13.1", 930 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 931 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 932 | "dev": true, 933 | "requires": { 934 | "argparse": "^1.0.7", 935 | "esprima": "^4.0.0" 936 | } 937 | }, 938 | "jsbn": { 939 | "version": "0.1.1", 940 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 941 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 942 | "dev": true 943 | }, 944 | "json-schema": { 945 | "version": "0.2.3", 946 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 947 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", 948 | "dev": true 949 | }, 950 | "json-schema-traverse": { 951 | "version": "0.4.1", 952 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 953 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 954 | "dev": true 955 | }, 956 | "json-schema-typed": { 957 | "version": "7.0.3", 958 | "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", 959 | "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", 960 | "dev": true 961 | }, 962 | "json-stringify-safe": { 963 | "version": "5.0.1", 964 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 965 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 966 | "dev": true 967 | }, 968 | "jsonfile": { 969 | "version": "4.0.0", 970 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 971 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 972 | "dev": true, 973 | "requires": { 974 | "graceful-fs": "^4.1.6" 975 | } 976 | }, 977 | "jsprim": { 978 | "version": "1.4.1", 979 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 980 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 981 | "dev": true, 982 | "requires": { 983 | "assert-plus": "1.0.0", 984 | "extsprintf": "1.3.0", 985 | "json-schema": "0.2.3", 986 | "verror": "1.10.0" 987 | } 988 | }, 989 | "locate-path": { 990 | "version": "3.0.0", 991 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 992 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 993 | "dev": true, 994 | "requires": { 995 | "p-locate": "^3.0.0", 996 | "path-exists": "^3.0.0" 997 | } 998 | }, 999 | "lodash": { 1000 | "version": "4.17.21", 1001 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1002 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1003 | "dev": true 1004 | }, 1005 | "log-symbols": { 1006 | "version": "2.2.0", 1007 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 1008 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 1009 | "dev": true, 1010 | "requires": { 1011 | "chalk": "^2.0.1" 1012 | } 1013 | }, 1014 | "make-dir": { 1015 | "version": "3.1.0", 1016 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1017 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1018 | "dev": true, 1019 | "requires": { 1020 | "semver": "^6.0.0" 1021 | } 1022 | }, 1023 | "mime-db": { 1024 | "version": "1.44.0", 1025 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 1026 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", 1027 | "dev": true 1028 | }, 1029 | "mime-types": { 1030 | "version": "2.1.27", 1031 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 1032 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 1033 | "dev": true, 1034 | "requires": { 1035 | "mime-db": "1.44.0" 1036 | } 1037 | }, 1038 | "mimic-fn": { 1039 | "version": "2.1.0", 1040 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1041 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1042 | "dev": true 1043 | }, 1044 | "minimatch": { 1045 | "version": "3.0.4", 1046 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1047 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1048 | "dev": true, 1049 | "requires": { 1050 | "brace-expansion": "^1.1.7" 1051 | } 1052 | }, 1053 | "minimist": { 1054 | "version": "1.2.6", 1055 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1056 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1057 | "dev": true 1058 | }, 1059 | "mkdirp": { 1060 | "version": "0.5.4", 1061 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", 1062 | "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", 1063 | "dev": true, 1064 | "requires": { 1065 | "minimist": "^1.2.5" 1066 | } 1067 | }, 1068 | "mocha": { 1069 | "version": "6.2.3", 1070 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", 1071 | "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", 1072 | "dev": true, 1073 | "requires": { 1074 | "ansi-colors": "3.2.3", 1075 | "browser-stdout": "1.3.1", 1076 | "debug": "3.2.6", 1077 | "diff": "3.5.0", 1078 | "escape-string-regexp": "1.0.5", 1079 | "find-up": "3.0.0", 1080 | "glob": "7.1.3", 1081 | "growl": "1.10.5", 1082 | "he": "1.2.0", 1083 | "js-yaml": "3.13.1", 1084 | "log-symbols": "2.2.0", 1085 | "minimatch": "3.0.4", 1086 | "mkdirp": "0.5.4", 1087 | "ms": "2.1.1", 1088 | "node-environment-flags": "1.0.5", 1089 | "object.assign": "4.1.0", 1090 | "strip-json-comments": "2.0.1", 1091 | "supports-color": "6.0.0", 1092 | "which": "1.3.1", 1093 | "wide-align": "1.1.3", 1094 | "yargs": "13.3.2", 1095 | "yargs-parser": "13.1.2", 1096 | "yargs-unparser": "1.6.0" 1097 | }, 1098 | "dependencies": { 1099 | "supports-color": { 1100 | "version": "6.0.0", 1101 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", 1102 | "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", 1103 | "dev": true, 1104 | "requires": { 1105 | "has-flag": "^3.0.0" 1106 | } 1107 | } 1108 | } 1109 | }, 1110 | "ms": { 1111 | "version": "2.1.1", 1112 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1113 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1114 | "dev": true 1115 | }, 1116 | "node-environment-flags": { 1117 | "version": "1.0.5", 1118 | "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", 1119 | "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", 1120 | "dev": true, 1121 | "requires": { 1122 | "object.getownpropertydescriptors": "^2.0.3", 1123 | "semver": "^5.7.0" 1124 | }, 1125 | "dependencies": { 1126 | "semver": { 1127 | "version": "5.7.1", 1128 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1129 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1130 | "dev": true 1131 | } 1132 | } 1133 | }, 1134 | "oauth-sign": { 1135 | "version": "0.9.0", 1136 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1137 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 1138 | "dev": true 1139 | }, 1140 | "object-inspect": { 1141 | "version": "1.7.0", 1142 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 1143 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 1144 | "dev": true 1145 | }, 1146 | "object-is": { 1147 | "version": "1.1.2", 1148 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", 1149 | "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", 1150 | "dev": true, 1151 | "requires": { 1152 | "define-properties": "^1.1.3", 1153 | "es-abstract": "^1.17.5" 1154 | } 1155 | }, 1156 | "object-keys": { 1157 | "version": "1.1.1", 1158 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1159 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1160 | "dev": true 1161 | }, 1162 | "object.assign": { 1163 | "version": "4.1.0", 1164 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1165 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1166 | "dev": true, 1167 | "requires": { 1168 | "define-properties": "^1.1.2", 1169 | "function-bind": "^1.1.1", 1170 | "has-symbols": "^1.0.0", 1171 | "object-keys": "^1.0.11" 1172 | } 1173 | }, 1174 | "object.getownpropertydescriptors": { 1175 | "version": "2.1.0", 1176 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", 1177 | "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", 1178 | "dev": true, 1179 | "requires": { 1180 | "define-properties": "^1.1.3", 1181 | "es-abstract": "^1.17.0-next.1" 1182 | } 1183 | }, 1184 | "once": { 1185 | "version": "1.4.0", 1186 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1187 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1188 | "dev": true, 1189 | "requires": { 1190 | "wrappy": "1" 1191 | } 1192 | }, 1193 | "onetime": { 1194 | "version": "5.1.0", 1195 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 1196 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 1197 | "dev": true, 1198 | "requires": { 1199 | "mimic-fn": "^2.1.0" 1200 | } 1201 | }, 1202 | "p-limit": { 1203 | "version": "2.3.0", 1204 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1205 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1206 | "dev": true, 1207 | "requires": { 1208 | "p-try": "^2.0.0" 1209 | } 1210 | }, 1211 | "p-locate": { 1212 | "version": "3.0.0", 1213 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1214 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1215 | "dev": true, 1216 | "requires": { 1217 | "p-limit": "^2.0.0" 1218 | } 1219 | }, 1220 | "p-try": { 1221 | "version": "2.2.0", 1222 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1223 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1224 | "dev": true 1225 | }, 1226 | "path-exists": { 1227 | "version": "3.0.0", 1228 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1229 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1230 | "dev": true 1231 | }, 1232 | "path-is-absolute": { 1233 | "version": "1.0.1", 1234 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1235 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1236 | "dev": true 1237 | }, 1238 | "pathval": { 1239 | "version": "1.1.1", 1240 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 1241 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 1242 | "dev": true 1243 | }, 1244 | "performance-now": { 1245 | "version": "2.1.0", 1246 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1247 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", 1248 | "dev": true 1249 | }, 1250 | "pify": { 1251 | "version": "3.0.0", 1252 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1253 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1254 | "dev": true 1255 | }, 1256 | "pkg-up": { 1257 | "version": "3.1.0", 1258 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", 1259 | "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", 1260 | "dev": true, 1261 | "requires": { 1262 | "find-up": "^3.0.0" 1263 | } 1264 | }, 1265 | "pngjs": { 1266 | "version": "3.4.0", 1267 | "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", 1268 | "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", 1269 | "dev": true 1270 | }, 1271 | "psl": { 1272 | "version": "1.8.0", 1273 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 1274 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", 1275 | "dev": true 1276 | }, 1277 | "punycode": { 1278 | "version": "2.1.1", 1279 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1280 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1281 | "dev": true 1282 | }, 1283 | "qrcode": { 1284 | "version": "1.4.4", 1285 | "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", 1286 | "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", 1287 | "dev": true, 1288 | "requires": { 1289 | "buffer": "^5.4.3", 1290 | "buffer-alloc": "^1.2.0", 1291 | "buffer-from": "^1.1.1", 1292 | "dijkstrajs": "^1.0.1", 1293 | "isarray": "^2.0.1", 1294 | "pngjs": "^3.3.0", 1295 | "yargs": "^13.2.4" 1296 | } 1297 | }, 1298 | "qrcode-terminal": { 1299 | "version": "0.12.0", 1300 | "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", 1301 | "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", 1302 | "dev": true 1303 | }, 1304 | "qs": { 1305 | "version": "6.5.2", 1306 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 1307 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", 1308 | "dev": true 1309 | }, 1310 | "request": { 1311 | "version": "2.88.2", 1312 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1313 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1314 | "dev": true, 1315 | "requires": { 1316 | "aws-sign2": "~0.7.0", 1317 | "aws4": "^1.8.0", 1318 | "caseless": "~0.12.0", 1319 | "combined-stream": "~1.0.6", 1320 | "extend": "~3.0.2", 1321 | "forever-agent": "~0.6.1", 1322 | "form-data": "~2.3.2", 1323 | "har-validator": "~5.1.3", 1324 | "http-signature": "~1.2.0", 1325 | "is-typedarray": "~1.0.0", 1326 | "isstream": "~0.1.2", 1327 | "json-stringify-safe": "~5.0.1", 1328 | "mime-types": "~2.1.19", 1329 | "oauth-sign": "~0.9.0", 1330 | "performance-now": "^2.1.0", 1331 | "qs": "~6.5.2", 1332 | "safe-buffer": "^5.1.2", 1333 | "tough-cookie": "~2.5.0", 1334 | "tunnel-agent": "^0.6.0", 1335 | "uuid": "^3.3.2" 1336 | } 1337 | }, 1338 | "require-directory": { 1339 | "version": "2.1.1", 1340 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1341 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1342 | "dev": true 1343 | }, 1344 | "require-main-filename": { 1345 | "version": "2.0.0", 1346 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1347 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1348 | "dev": true 1349 | }, 1350 | "safe-buffer": { 1351 | "version": "5.2.1", 1352 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1353 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1354 | "dev": true 1355 | }, 1356 | "safer-buffer": { 1357 | "version": "2.1.2", 1358 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1359 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1360 | "dev": true 1361 | }, 1362 | "sax": { 1363 | "version": "1.2.4", 1364 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 1365 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 1366 | "dev": true 1367 | }, 1368 | "semver": { 1369 | "version": "6.3.0", 1370 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1371 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1372 | "dev": true 1373 | }, 1374 | "serverless-tencent-auth-tool": { 1375 | "version": "1.0.18", 1376 | "resolved": "https://registry.npmjs.org/serverless-tencent-auth-tool/-/serverless-tencent-auth-tool-1.0.18.tgz", 1377 | "integrity": "sha512-6PqCY/4P4+JKTOQ2AwkdBJvQ2djac/WqgLeylxONLl4HUE1oqXt+SecbpcI8k5wH3herk22GhoJV4FEXf+gJhQ==", 1378 | "dev": true, 1379 | "requires": { 1380 | "qrcode": "^1.4.4", 1381 | "serverless-tencent-tools": "^0.0.11" 1382 | } 1383 | }, 1384 | "serverless-tencent-scf": { 1385 | "version": "0.1.36", 1386 | "resolved": "https://registry.npmjs.org/serverless-tencent-scf/-/serverless-tencent-scf-0.1.36.tgz", 1387 | "integrity": "sha512-WDg3wfdENpsxheZKs5KuOFsqDC5sh/KMQ260y/IlUgWg1ErV1vR21h8x9TPKI3DIDD10c1XdDnqiy9leDRPE5Q==", 1388 | "dev": true, 1389 | "requires": { 1390 | "assert": "^2.0.0", 1391 | "async": "^2.6.3", 1392 | "bluebird": "^3.5.5", 1393 | "chai": "^4.2.0", 1394 | "chalk": "^2.4.2", 1395 | "ci-info": "^2.0.0", 1396 | "co": "^4.6.0", 1397 | "conf": "^6.0.1", 1398 | "cos-nodejs-sdk-v5": "^2.5.12", 1399 | "detect-mocha": "^0.1.0", 1400 | "filesize": "^5.0.3", 1401 | "fs-extra": "^8.1.0", 1402 | "ini": "^1.3.4", 1403 | "lodash": "^4.17.15", 1404 | "mocha": "^6.2.2", 1405 | "request": "^2.88.0", 1406 | "serverless-tencent-auth-tool": "^1.0.18", 1407 | "serverless-tencent-tools": "^0.0.11", 1408 | "tencent-login": "^0.1.6", 1409 | "tencentcloud-sdk-nodejs": "^3.0.87", 1410 | "universal-analytics": "^0.4.20" 1411 | } 1412 | }, 1413 | "serverless-tencent-tools": { 1414 | "version": "0.0.11", 1415 | "resolved": "https://registry.npmjs.org/serverless-tencent-tools/-/serverless-tencent-tools-0.0.11.tgz", 1416 | "integrity": "sha512-92MWNM26IY8ucg6FP2F01qjp3AVn7Bqrto2bb7gv5/6KWanUEgnckMI4O7zZOK327Qt8Z3tR4F1X65R0hAQqPg==", 1417 | "dev": true, 1418 | "requires": { 1419 | "qrcode": "^1.4.4", 1420 | "qrcode-terminal": "^0.12.0", 1421 | "request": "^2.88.0", 1422 | "tencentcloud-sdk-nodejs": "^3.0.87", 1423 | "urlencode": "^1.1.0", 1424 | "uuid": "^3.3.3" 1425 | } 1426 | }, 1427 | "set-blocking": { 1428 | "version": "2.0.0", 1429 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1430 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1431 | "dev": true 1432 | }, 1433 | "signal-exit": { 1434 | "version": "3.0.3", 1435 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1436 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 1437 | "dev": true 1438 | }, 1439 | "sprintf-js": { 1440 | "version": "1.0.3", 1441 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1442 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1443 | "dev": true 1444 | }, 1445 | "sshpk": { 1446 | "version": "1.16.1", 1447 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1448 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 1449 | "dev": true, 1450 | "requires": { 1451 | "asn1": "~0.2.3", 1452 | "assert-plus": "^1.0.0", 1453 | "bcrypt-pbkdf": "^1.0.0", 1454 | "dashdash": "^1.12.0", 1455 | "ecc-jsbn": "~0.1.1", 1456 | "getpass": "^0.1.1", 1457 | "jsbn": "~0.1.0", 1458 | "safer-buffer": "^2.0.2", 1459 | "tweetnacl": "~0.14.0" 1460 | } 1461 | }, 1462 | "string-width": { 1463 | "version": "2.1.1", 1464 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1465 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1466 | "dev": true, 1467 | "requires": { 1468 | "is-fullwidth-code-point": "^2.0.0", 1469 | "strip-ansi": "^4.0.0" 1470 | } 1471 | }, 1472 | "string.prototype.trimend": { 1473 | "version": "1.0.1", 1474 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 1475 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 1476 | "dev": true, 1477 | "requires": { 1478 | "define-properties": "^1.1.3", 1479 | "es-abstract": "^1.17.5" 1480 | } 1481 | }, 1482 | "string.prototype.trimleft": { 1483 | "version": "2.1.2", 1484 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", 1485 | "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", 1486 | "dev": true, 1487 | "requires": { 1488 | "define-properties": "^1.1.3", 1489 | "es-abstract": "^1.17.5", 1490 | "string.prototype.trimstart": "^1.0.0" 1491 | } 1492 | }, 1493 | "string.prototype.trimright": { 1494 | "version": "2.1.2", 1495 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", 1496 | "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", 1497 | "dev": true, 1498 | "requires": { 1499 | "define-properties": "^1.1.3", 1500 | "es-abstract": "^1.17.5", 1501 | "string.prototype.trimend": "^1.0.0" 1502 | } 1503 | }, 1504 | "string.prototype.trimstart": { 1505 | "version": "1.0.1", 1506 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 1507 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 1508 | "dev": true, 1509 | "requires": { 1510 | "define-properties": "^1.1.3", 1511 | "es-abstract": "^1.17.5" 1512 | } 1513 | }, 1514 | "strip-ansi": { 1515 | "version": "4.0.0", 1516 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1517 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1518 | "dev": true, 1519 | "requires": { 1520 | "ansi-regex": "^3.0.0" 1521 | } 1522 | }, 1523 | "strip-json-comments": { 1524 | "version": "2.0.1", 1525 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1526 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1527 | "dev": true 1528 | }, 1529 | "supports-color": { 1530 | "version": "5.5.0", 1531 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1532 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1533 | "dev": true, 1534 | "requires": { 1535 | "has-flag": "^3.0.0" 1536 | } 1537 | }, 1538 | "tencent-login": { 1539 | "version": "0.1.7", 1540 | "resolved": "https://registry.npmjs.org/tencent-login/-/tencent-login-0.1.7.tgz", 1541 | "integrity": "sha512-g1VbKMbePyGyxJybFle2/1e8rlJNePBBIH9N4C47viiCwpsHXLPWI7+PZBKTrht5/Jxq8nc9LvzX+Of6sMRFPQ==", 1542 | "dev": true, 1543 | "requires": { 1544 | "qrcode": "^1.4.4", 1545 | "qrcode-terminal": "^0.12.0", 1546 | "request": "^2.88.0", 1547 | "uuid": "^3.3.3" 1548 | } 1549 | }, 1550 | "tencentcloud-sdk-nodejs": { 1551 | "version": "3.0.174", 1552 | "resolved": "https://registry.npmjs.org/tencentcloud-sdk-nodejs/-/tencentcloud-sdk-nodejs-3.0.174.tgz", 1553 | "integrity": "sha512-sMTmkZwnslr/vxBUQI7XSATFCgiaMsqrU4m1k5jZMB0DV6Ivw6vAcrGDj2Ph8j+TOmqrynw4o1dxS7RWI84eUA==", 1554 | "dev": true, 1555 | "requires": { 1556 | "request": "^2.85.0" 1557 | } 1558 | }, 1559 | "tough-cookie": { 1560 | "version": "2.5.0", 1561 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1562 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1563 | "dev": true, 1564 | "requires": { 1565 | "psl": "^1.1.28", 1566 | "punycode": "^2.1.1" 1567 | } 1568 | }, 1569 | "tunnel-agent": { 1570 | "version": "0.6.0", 1571 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1572 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1573 | "dev": true, 1574 | "requires": { 1575 | "safe-buffer": "^5.0.1" 1576 | } 1577 | }, 1578 | "tweetnacl": { 1579 | "version": "0.14.5", 1580 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1581 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 1582 | "dev": true 1583 | }, 1584 | "type-detect": { 1585 | "version": "4.0.8", 1586 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 1587 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 1588 | "dev": true 1589 | }, 1590 | "typedarray-to-buffer": { 1591 | "version": "3.1.5", 1592 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 1593 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 1594 | "dev": true, 1595 | "requires": { 1596 | "is-typedarray": "^1.0.0" 1597 | } 1598 | }, 1599 | "unique-string": { 1600 | "version": "1.0.0", 1601 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 1602 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 1603 | "dev": true, 1604 | "requires": { 1605 | "crypto-random-string": "^1.0.0" 1606 | } 1607 | }, 1608 | "universal-analytics": { 1609 | "version": "0.4.20", 1610 | "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", 1611 | "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", 1612 | "dev": true, 1613 | "requires": { 1614 | "debug": "^3.0.0", 1615 | "request": "^2.88.0", 1616 | "uuid": "^3.0.0" 1617 | } 1618 | }, 1619 | "universalify": { 1620 | "version": "0.1.2", 1621 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1622 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 1623 | "dev": true 1624 | }, 1625 | "uri-js": { 1626 | "version": "4.2.2", 1627 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1628 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1629 | "dev": true, 1630 | "requires": { 1631 | "punycode": "^2.1.0" 1632 | } 1633 | }, 1634 | "urlencode": { 1635 | "version": "1.1.0", 1636 | "resolved": "https://registry.npmjs.org/urlencode/-/urlencode-1.1.0.tgz", 1637 | "integrity": "sha1-HyuibwE8hfATP3o61v8nMK33y7c=", 1638 | "dev": true, 1639 | "requires": { 1640 | "iconv-lite": "~0.4.11" 1641 | } 1642 | }, 1643 | "util": { 1644 | "version": "0.12.3", 1645 | "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", 1646 | "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", 1647 | "dev": true, 1648 | "requires": { 1649 | "inherits": "^2.0.3", 1650 | "is-arguments": "^1.0.4", 1651 | "is-generator-function": "^1.0.7", 1652 | "is-typed-array": "^1.1.3", 1653 | "safe-buffer": "^5.1.2", 1654 | "which-typed-array": "^1.1.2" 1655 | } 1656 | }, 1657 | "uuid": { 1658 | "version": "3.4.0", 1659 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1660 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 1661 | "dev": true 1662 | }, 1663 | "verror": { 1664 | "version": "1.10.0", 1665 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1666 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1667 | "dev": true, 1668 | "requires": { 1669 | "assert-plus": "^1.0.0", 1670 | "core-util-is": "1.0.2", 1671 | "extsprintf": "^1.2.0" 1672 | } 1673 | }, 1674 | "which": { 1675 | "version": "1.3.1", 1676 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1677 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1678 | "dev": true, 1679 | "requires": { 1680 | "isexe": "^2.0.0" 1681 | } 1682 | }, 1683 | "which-module": { 1684 | "version": "2.0.0", 1685 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1686 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1687 | "dev": true 1688 | }, 1689 | "which-typed-array": { 1690 | "version": "1.1.2", 1691 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", 1692 | "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", 1693 | "dev": true, 1694 | "requires": { 1695 | "available-typed-arrays": "^1.0.2", 1696 | "es-abstract": "^1.17.5", 1697 | "foreach": "^2.0.5", 1698 | "function-bind": "^1.1.1", 1699 | "has-symbols": "^1.0.1", 1700 | "is-typed-array": "^1.1.3" 1701 | } 1702 | }, 1703 | "wide-align": { 1704 | "version": "1.1.3", 1705 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 1706 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 1707 | "dev": true, 1708 | "requires": { 1709 | "string-width": "^1.0.2 || 2" 1710 | } 1711 | }, 1712 | "wrap-ansi": { 1713 | "version": "5.1.0", 1714 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1715 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1716 | "dev": true, 1717 | "requires": { 1718 | "ansi-styles": "^3.2.0", 1719 | "string-width": "^3.0.0", 1720 | "strip-ansi": "^5.0.0" 1721 | }, 1722 | "dependencies": { 1723 | "ansi-regex": { 1724 | "version": "4.1.0", 1725 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1726 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1727 | "dev": true 1728 | }, 1729 | "string-width": { 1730 | "version": "3.1.0", 1731 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1732 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1733 | "dev": true, 1734 | "requires": { 1735 | "emoji-regex": "^7.0.1", 1736 | "is-fullwidth-code-point": "^2.0.0", 1737 | "strip-ansi": "^5.1.0" 1738 | } 1739 | }, 1740 | "strip-ansi": { 1741 | "version": "5.2.0", 1742 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1743 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1744 | "dev": true, 1745 | "requires": { 1746 | "ansi-regex": "^4.1.0" 1747 | } 1748 | } 1749 | } 1750 | }, 1751 | "wrappy": { 1752 | "version": "1.0.2", 1753 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1754 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1755 | "dev": true 1756 | }, 1757 | "write-file-atomic": { 1758 | "version": "3.0.3", 1759 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 1760 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 1761 | "dev": true, 1762 | "requires": { 1763 | "imurmurhash": "^0.1.4", 1764 | "is-typedarray": "^1.0.0", 1765 | "signal-exit": "^3.0.2", 1766 | "typedarray-to-buffer": "^3.1.5" 1767 | } 1768 | }, 1769 | "xdg-basedir": { 1770 | "version": "3.0.0", 1771 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 1772 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 1773 | "dev": true 1774 | }, 1775 | "xml2js": { 1776 | "version": "0.4.23", 1777 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", 1778 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", 1779 | "dev": true, 1780 | "requires": { 1781 | "sax": ">=0.6.0", 1782 | "xmlbuilder": "~11.0.0" 1783 | } 1784 | }, 1785 | "xmlbuilder": { 1786 | "version": "11.0.1", 1787 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 1788 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 1789 | "dev": true 1790 | }, 1791 | "y18n": { 1792 | "version": "4.0.1", 1793 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", 1794 | "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", 1795 | "dev": true 1796 | }, 1797 | "yargs": { 1798 | "version": "13.3.2", 1799 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 1800 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 1801 | "dev": true, 1802 | "requires": { 1803 | "cliui": "^5.0.0", 1804 | "find-up": "^3.0.0", 1805 | "get-caller-file": "^2.0.1", 1806 | "require-directory": "^2.1.1", 1807 | "require-main-filename": "^2.0.0", 1808 | "set-blocking": "^2.0.0", 1809 | "string-width": "^3.0.0", 1810 | "which-module": "^2.0.0", 1811 | "y18n": "^4.0.0", 1812 | "yargs-parser": "^13.1.2" 1813 | }, 1814 | "dependencies": { 1815 | "ansi-regex": { 1816 | "version": "4.1.0", 1817 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1818 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1819 | "dev": true 1820 | }, 1821 | "string-width": { 1822 | "version": "3.1.0", 1823 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1824 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1825 | "dev": true, 1826 | "requires": { 1827 | "emoji-regex": "^7.0.1", 1828 | "is-fullwidth-code-point": "^2.0.0", 1829 | "strip-ansi": "^5.1.0" 1830 | } 1831 | }, 1832 | "strip-ansi": { 1833 | "version": "5.2.0", 1834 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1835 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1836 | "dev": true, 1837 | "requires": { 1838 | "ansi-regex": "^4.1.0" 1839 | } 1840 | } 1841 | } 1842 | }, 1843 | "yargs-parser": { 1844 | "version": "13.1.2", 1845 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 1846 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 1847 | "dev": true, 1848 | "requires": { 1849 | "camelcase": "^5.0.0", 1850 | "decamelize": "^1.2.0" 1851 | } 1852 | }, 1853 | "yargs-unparser": { 1854 | "version": "1.6.0", 1855 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", 1856 | "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", 1857 | "dev": true, 1858 | "requires": { 1859 | "flat": "^4.1.0", 1860 | "lodash": "^4.17.15", 1861 | "yargs": "^13.3.0" 1862 | } 1863 | } 1864 | } 1865 | } 1866 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tencent-python", 3 | "version": "1.0.0", 4 | "description": "Tencent Serverless Cloud Function example using Python", 5 | "main": "index.py", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "cloud.tencent.com", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "serverless-tencent-scf": "^0.1.7" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | selenium==2.37 2 | -------------------------------------------------------------------------------- /serverless.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Serverless! 2 | # 3 | # This file is the main config file for your service. 4 | # It's very minimal at this point and uses default values. 5 | # You can always add more config options for more control. 6 | # We've included some commented out config examples here. 7 | # Just uncomment any of them to get that config option. 8 | # 9 | # For full config options, check the docs: 10 | # docs.serverless.com 11 | # 12 | # Happy Coding! 13 | 14 | # Tencent Cloud serverless.yml Reference 15 | # https://github.com/serverless-tencent/serverless-tencent-scf/blob/master/docs/en/yaml.md 16 | 17 | service: tencent-python 18 | 19 | provider: # provider information 20 | name: tencent 21 | runtime: Python3.6 # Python3.6 or Python2.7 22 | credentials: ~/credentials 23 | timeout: 300 24 | memorySize: 512 25 | region: ap-shanghai 26 | 27 | # you can overwrite defaults here 28 | # stage: dev 29 | # cosBucket: DEFAULT 30 | # role: QCS_SCFExcuteRole 31 | # memorySize: 256 32 | # timeout: 10 33 | # region: ap-shanghai 34 | # environment: 35 | # variables: 36 | # ENV_FIRST: env1 37 | # ENV_SECOND: env2 38 | # vpcConfig: 39 | # vpcId: test 40 | # subnetId: test 41 | 42 | plugins: 43 | - serverless-tencent-scf 44 | 45 | # you can add packaging information here 46 | #package: 47 | # include: 48 | # - include-me.py 49 | # - include-me-dir/** 50 | # exclude: 51 | # - exclude-me.py 52 | # - exclude-me-dir/** 53 | 54 | functions: 55 | headless_chrome: 56 | handler: index.main_handler 57 | # description: Tencent Serverless Cloud Function 58 | # runtime: Python3.6 # Python3.6 or Python2.7 59 | # memorySize: 256 60 | # timeout: 10 61 | # environment: 62 | # variables: 63 | # ENV_FIRST: env1 64 | # ENV_Third: env2 65 | # vpcConfig: 66 | # vpcId: test 67 | # subnetId: testls 68 | 69 | # events: 70 | # - timer: 71 | # name: timer 72 | # parameters: 73 | # cronExpression: '*/5 * * * *' 74 | # enable: true 75 | # - cos: 76 | # name: cli-appid.cos.ap-beijing.myqcloud.com 77 | # parameters: 78 | # bucket: cli-appid.cos.ap-beijing.myqcloud.com 79 | # filter: 80 | # prefix: filterdir/ 81 | # suffix: .jpg 82 | # events: cos:ObjectCreated:* 83 | # enable: true 84 | # - apigw: 85 | # name: hello_world_apigw 86 | # parameters: 87 | # stageName: release 88 | # serviceId: 89 | # httpMethod: ANY 90 | # - cmq: 91 | # name: cmq_trigger 92 | # parameters: 93 | # name: test-topic-queue 94 | # enable: true 95 | # - ckafka: 96 | # name: ckafka_trigger 97 | # parameters: 98 | # name: ckafka-2o10hua5 99 | # topic: test 100 | # maxMsgNum: 999 101 | # offset: latest 102 | # enable: true 103 | --------------------------------------------------------------------------------