├── .dockerignore ├── .eslintignore ├── prometheus ├── .dockerignore ├── prometheus.yml ├── store.js ├── Dockerfile ├── package.json ├── prometheus.ondemand.yml ├── docker-compose.yml ├── config.example.yml ├── utils.js ├── settings.js ├── README.md ├── index.js ├── grafana.json └── yarn.lock ├── resources ├── cli.gif ├── grafana.png └── docker_push.sh ├── .eslintrc.json ├── .editorconfig ├── constants.js ├── utils.js ├── package.json ├── LICENSE ├── .gitignore ├── .travis.yml ├── .github └── workflows │ └── codeql-analysis.yml ├── bin └── cli.js ├── index.js ├── README.md └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | node_modules 3 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | prometheus/node_modules 3 | -------------------------------------------------------------------------------- /prometheus/.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | *Dockerfile* 3 | *docker-compose* 4 | node_modules 5 | -------------------------------------------------------------------------------- /resources/cli.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andersonba/puppeteer-assets/HEAD/resources/cli.gif -------------------------------------------------------------------------------- /resources/grafana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/andersonba/puppeteer-assets/HEAD/resources/grafana.png -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "airbnb-base", 3 | "rules": { 4 | "function-paren-newline": ["error", "consistent"] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: assets 3 | scrape_interval: 15s 4 | scrape_timeout: 15s 5 | metrics_path: /metrics 6 | scheme: http 7 | static_configs: 8 | - targets: ["server:3000"] 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [package.json] 15 | indent_style = space 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /constants.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | defaultMimeTypes: ['javascript'], 3 | 4 | defaultMimeTypePatterns: { 5 | javascript: ['javascript'], 6 | css: ['css'], 7 | }, 8 | 9 | ignoreAssetPattern: /(^data:)/, 10 | 11 | arrayParams: [ 12 | 'labels', 13 | 'internalPatterns', 14 | 'mimeTypes', 15 | 'mimeTypePatterns', 16 | 'ignorePatterns', 17 | 'cookies', 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /resources/docker_push.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if ! command -v json &> /dev/null 4 | then 5 | echo 'command "json" not found' 6 | echo 'run to install: yarn add global json' 7 | exit 1 8 | fi 9 | 10 | REPO="andersonba/prometheus-assets" 11 | VERSION=$(cat package.json |json version) 12 | 13 | echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin 14 | docker build -f prometheus/Dockerfile -t $REPO . 15 | docker tag $REPO "$REPO:$VERSION" 16 | docker push $REPO 17 | -------------------------------------------------------------------------------- /prometheus/store.js: -------------------------------------------------------------------------------- 1 | const Cache = require('ttl-cache'); 2 | 3 | class Store { 4 | constructor({ cacheTTL }) { 5 | this.data = {}; 6 | this.busy = false; 7 | this.cache = new Cache({ ttl: cacheTTL }); 8 | } 9 | 10 | set(key, value, expire = false) { 11 | if (expire) { 12 | this.cache.set(key, value); 13 | } else { 14 | this.data[key] = value; 15 | } 16 | } 17 | 18 | get(key) { 19 | return this.cache.get(key) || this.data[key]; 20 | } 21 | 22 | clear() { 23 | this.data = {}; 24 | this.cache.flush(); 25 | } 26 | } 27 | 28 | module.exports = Store; 29 | -------------------------------------------------------------------------------- /prometheus/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildkite/puppeteer 2 | 3 | ENV PORT 3000 4 | ENV NODE_ENV production 5 | ENV CONFIG_PATH /app/config.yml 6 | 7 | # Installing puppeteer-assets (parent directory) 8 | WORKDIR /app 9 | COPY package.json yarn.lock ./ 10 | RUN yarn install 11 | 12 | # Installing prometheus exporter (current directory) 13 | RUN mkdir -p prometheus 14 | WORKDIR /app/prometheus 15 | COPY prometheus/package.json prometheus/yarn.lock ./ 16 | RUN yarn install 17 | 18 | # Copy both files 19 | WORKDIR /app 20 | COPY . ./ 21 | 22 | # Initialization 23 | WORKDIR /app/prometheus 24 | EXPOSE 3000 25 | CMD [ "yarn", "start" ] 26 | -------------------------------------------------------------------------------- /prometheus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer-assets-prometheus", 3 | "description": "Puppeteer Assets for Prometheus", 4 | "main": "index.js", 5 | "author": "Anderson de Oliveira", 6 | "license": "MIT", 7 | "scripts": { 8 | "start": "node index", 9 | "dev": "nodemon index" 10 | }, 11 | "dependencies": { 12 | "body-parser": "^1.19.0", 13 | "express": "^4.17.1", 14 | "lodash": "^4.17.20", 15 | "prom-client": "^12.0.0", 16 | "promise-sequential": "^1.1.1", 17 | "ttl-cache": "^1.0.2", 18 | "yamljs": "^0.3.0" 19 | }, 20 | "devDependencies": { 21 | "nodemon": "^2.0.6" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /utils.js: -------------------------------------------------------------------------------- 1 | const { set, find } = require('lodash'); 2 | 3 | function sanitizeUrl(url) { 4 | if (!/^(?:f|ht)tps?:\/\//.test(url)) return `https://${url}`; 5 | return url; 6 | } 7 | 8 | function incr(obj, key, val = 1) { 9 | set(obj, key, val + (obj[key] || 0)); 10 | } 11 | 12 | function detectMimeType(rawMimeType, mimeTypes, mimeTypePatterns) { 13 | return find(mimeTypes, (mimeType) => { 14 | const patterns = mimeTypePatterns[mimeType] || [mimeType]; 15 | return find(patterns, (pattern) => new RegExp(pattern).test(rawMimeType)); 16 | }); 17 | } 18 | 19 | module.exports = { 20 | detectMimeType, 21 | sanitizeUrl, 22 | incr, 23 | }; 24 | -------------------------------------------------------------------------------- /prometheus/prometheus.ondemand.yml: -------------------------------------------------------------------------------- 1 | scrape_configs: 2 | - job_name: andersonba 3 | scrape_interval: 15s 4 | scrape_timeout: 15s 5 | metrics_path: /metrics 6 | scheme: http 7 | params: 8 | url: ["www.andersonba.com"] 9 | labels: 10 | - "site:andersonba" 11 | static_configs: 12 | - targets: ["server:3000"] 13 | - job_name: yvebot 14 | scrape_interval: 20s 15 | scrape_timeout: 15s 16 | metrics_path: /metrics 17 | scheme: http 18 | params: 19 | url: ["https://andersonba.github.io/yve-bot/"] 20 | labels: 21 | - "site:yvebot" 22 | cookies: 23 | - "name=my_cookie;value=123" 24 | static_configs: 25 | - targets: ["server:3000"] 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puppeteer-assets", 3 | "version": "1.2.5", 4 | "description": "Assets metrics using Puppeteer", 5 | "main": "index.js", 6 | "bin": { 7 | "puppeteer-assets": "bin/cli.js" 8 | }, 9 | "repository": "https://github.com/andersonba/puppeteer-assets", 10 | "author": "Anderson de Oliveira", 11 | "license": "MIT", 12 | "scripts": { 13 | "lint": "eslint .", 14 | "cli": "node ./bin/cli" 15 | }, 16 | "dependencies": { 17 | "cli-table3": "^0.6.0", 18 | "cookie": "^0.4.1", 19 | "dotenv": "^8.2.0", 20 | "filesize": "^6.1.0", 21 | "lodash": "^4.17.20", 22 | "ora": "^5.1.0", 23 | "puppeteer": "^5.5.0", 24 | "yargs": "^16.1.1" 25 | }, 26 | "devDependencies": { 27 | "eslint": "^7.14.0", 28 | "eslint-config-airbnb-base": "^14.2.1", 29 | "eslint-plugin-import": "^2.22.1" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /prometheus/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | server: 5 | build: 6 | context: .. 7 | dockerfile: prometheus/Dockerfile 8 | command: yarn dev 9 | environment: 10 | NODE_ENV: development 11 | ports: 12 | - "3000:3000" 13 | volumes: 14 | - ..:/app 15 | - /app/node_modules 16 | - /app/prometheus/node_modules 17 | - ./config.example.yml:/app/config.yml 18 | 19 | prometheus: 20 | image: quay.io/prometheus/prometheus 21 | volumes: 22 | - ./prometheus.ondemand.yml:/etc/prometheus/prometheus.yml 23 | links: 24 | - server 25 | ports: 26 | - "9090:9090" 27 | 28 | grafana: 29 | image: grafana/grafana 30 | volumes: 31 | - ./data/grafana:/var/lib/grafana 32 | ports: 33 | - "8080:3000" 34 | 35 | volumes: 36 | prometheus.yml: 37 | prometheus.ondemand.yml: 38 | config.example.yml: 39 | -------------------------------------------------------------------------------- /prometheus/config.example.yml: -------------------------------------------------------------------------------- 1 | path: /metrics 2 | metricName: puppeteer_assets 3 | enableOnDemandQuery: true 4 | onDemandQueryCacheTTL: 300 5 | labels: 6 | - site 7 | interval: 60000 8 | defaults: 9 | metrics: 10 | file: true 11 | count: true 12 | size: true 13 | gzip: true 14 | countByMimeType: true 15 | sizeByMimeType: true 16 | gzipByMimeType: true 17 | mimeTypes: 18 | - javascript 19 | mimeTypesPatterns: 20 | javascript: 21 | - javascript 22 | css: 23 | - css 24 | internalPatterns: 25 | - ^(\/|.\/) 26 | configurations: 27 | - url: www.andersonba.com 28 | labels: 29 | site: andersonba 30 | unknown: ignore 31 | internalPatterns: 32 | - cdn.google.com 33 | mimeTypes: 34 | - javascript 35 | - css 36 | - url: https://andersonba.github.io/yve-bot/ 37 | labels: 38 | site: yvebot 39 | internalPatterns: 40 | - cdn.andersonba.com 41 | mimeTypes: 42 | - javascript 43 | mimeTypesPatterns: 44 | javascript: 45 | - text/javascript 46 | -------------------------------------------------------------------------------- /prometheus/utils.js: -------------------------------------------------------------------------------- 1 | const { get, isArray, fromPairs } = require('lodash'); 2 | 3 | function env(key, otherwise) { 4 | return get(process.env, key, otherwise); 5 | } 6 | 7 | function envArray(key, otherwise = [], separator = ',') { 8 | const value = env(key); 9 | return value ? value.split(separator) : otherwise; 10 | } 11 | 12 | function envBool(key, otherwise = false) { 13 | if (env(key) === undefined) return otherwise; 14 | return env(key) === 'true'; 15 | } 16 | 17 | function envInt(key, otherwise = false) { 18 | if (env(key) === undefined) return otherwise; 19 | return Number(env(key)); 20 | } 21 | 22 | function parseLabelsParam(arr) { 23 | return isArray(arr) && arr.length 24 | ? fromPairs(arr.map((l) => l.split(':'))) || {} 25 | : {}; 26 | } 27 | 28 | function ensureArrayParam(query, key) { 29 | if (key in query) { 30 | if (!isArray(query[key])) { 31 | // eslint-disable-next-line no-param-reassign 32 | query[key] = [query[key]]; 33 | } 34 | } 35 | } 36 | 37 | module.exports = { 38 | env, 39 | envArray, 40 | envBool, 41 | envInt, 42 | parseLabelsParam, 43 | ensureArrayParam, 44 | }; 45 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Anderson de Oliveira 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 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | config.yml 2 | prometheus/data 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | 11 | # Runtime data 12 | pids 13 | *.pid 14 | *.seed 15 | *.pid.lock 16 | 17 | # Directory for instrumented libs generated by jscoverage/JSCover 18 | lib-cov 19 | 20 | # Coverage directory used by tools like istanbul 21 | coverage 22 | 23 | # nyc test coverage 24 | .nyc_output 25 | 26 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 27 | .grunt 28 | 29 | # Bower dependency directory (https://bower.io/) 30 | bower_components 31 | 32 | # node-waf configuration 33 | .lock-wscript 34 | 35 | # Compiled binary addons (http://nodejs.org/api/addons.html) 36 | build/Release 37 | 38 | # Dependency directories 39 | node_modules/ 40 | jspm_packages/ 41 | 42 | # Typescript v1 declaration files 43 | typings/ 44 | 45 | # Optional npm cache directory 46 | .npm 47 | 48 | # Optional eslint cache 49 | .eslintcache 50 | 51 | # Optional REPL history 52 | .node_repl_history 53 | 54 | # Output of 'npm pack' 55 | *.tgz 56 | 57 | # Yarn Integrity file 58 | .yarn-integrity 59 | 60 | # dotenv environment variables file 61 | .env 62 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '10' 4 | services: 5 | - docker 6 | cache: yarn 7 | before_install: yarn global add json 8 | script: 9 | - cd prometheus && yarn install && cd .. 10 | - yarn run lint 11 | deploy: 12 | - provider: npm 13 | email: andersonba@me.com 14 | api_key: 15 | secure: T+FrSac2O3Byjy/1xkLzwWtYCuudtOEuk71g6A3uqHJzjInWNI4V9dcITDAhPtRzv4TrtFHlKwPSbCbG2Vl67dLKJ3iylx5XpINcr3OYkePzLkxJTopaGfcM026Msi6Kv0tIofM/cL1wJaTGefzN6UlSgcSqkEW0FQVaVG2VwAaCzSmQ3Tlp+wY/0a+JE6RgXl9RYBy3+sZymzc1KCTFp5Kyf/++uD4Axl0V6tCldnIS2bGKBs7d5E+/XNp2wxvRl5CzDyE0RdLRiEfwp0sJCwgqQ+hxR2RP4cA7rgjFr+EP053qUCHyABTO0Rw8MZZpNIncK7TdlDUptZhX1vxGN2t5VZkCWN2pu8ewb5eJ/Ajv9EsTkE0cYnx+lM1Mn4G5t8HXVffCIkOopNT14NjOpEtq0ovAKrJY8Z+K+wFbwult1Y2+lLpEQB3YjLUntKAP+ONQWmSGUwV5tCEGuIUTm8wMfOkVqhlDlCazykF1RPSa5hwxL/XnFm3HAXgNpRb4CE/KjZ2E6pYwWE4DjTqw2uK4xLqEDcy/CW+H2XCptdStTxk8ByLOvZXSiU2shhyHoZ72kT2nCt4AgrWd8RFfH380hOMgFhOWw7t6i+9N2GDF/1B9JZxmMKviOTefT6hAt4xucnyRi3OSEV88yQeaR+amlDI2E9Mj4+AHBDgOlMA= 16 | on: 17 | tags: true 18 | repo: andersonba/puppeteer-assets 19 | - provider: script 20 | script: bash resources/docker_push.sh 21 | on: 22 | tags: true 23 | repo: andersonba/puppeteer-assets 24 | -------------------------------------------------------------------------------- /prometheus/settings.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | const yamlJs = require('yamljs'); 3 | const { merge } = require('lodash'); 4 | const constants = require('../constants'); 5 | const { 6 | env, envArray, envBool, envInt, 7 | } = require('./utils'); 8 | 9 | let settings = { 10 | path: env('METRICS_PATH', '/metrics'), 11 | metricName: env('METRIC_NAME', 'puppeteer_assets'), 12 | enableOnDemandQuery: envBool('METRICS_ON_DEMAND_QUERY', false), 13 | onDemandQueryCacheTTL: envInt('METRICS_ON_DEMAND_QUERY_CACHE_TTL', 300), 14 | labels: envArray('METRICS_LABELS', []), 15 | interval: envInt('METRICS_INTERVAL', 60 * 60 * 1000), 16 | defaults: { 17 | metrics: { 18 | file: envBool('METRICS_FILE_ENABLED', true), 19 | count: envBool('METRICS_COUNT_ENABLED', true), 20 | size: envBool('METRICS_SIZE_ENABLED', true), 21 | gzip: envBool('METRICS_GZIP_ENABLED', true), 22 | countByMimeType: envBool('METRICS_COUNT_BY_MIMETYPE_ENABLED', true), 23 | sizeByMimeType: envBool('METRICS_SIZE_BY_MIMETYPE_ENABLED', true), 24 | gzipByMimeType: envBool('METRICS_GZIP_BY_MIMETYPE_ENABLED', true), 25 | }, 26 | mimeTypes: envArray('METRICS_MIMETYPES', constants.defaultMimeTypes), 27 | }, 28 | configurations: [], 29 | }; 30 | 31 | try { 32 | settings = merge( 33 | {}, 34 | settings, 35 | yamlJs.load(env('CONFIG_PATH') || `${__dirname}/../config.yml`) || {}, 36 | ); 37 | console.info('> Using configuration file...'); 38 | } catch (e) { 39 | settings.enableOnDemandQuery = true; 40 | console.info('> No configuration file. On demand query enabled.'); 41 | } 42 | 43 | module.exports = settings; 44 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ master ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ master ] 20 | schedule: 21 | - cron: '38 4 * * 5' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | 28 | strategy: 29 | fail-fast: false 30 | matrix: 31 | language: [ 'javascript' ] 32 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] 33 | # Learn more: 34 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed 35 | 36 | steps: 37 | - name: Checkout repository 38 | uses: actions/checkout@v2 39 | 40 | # Initializes the CodeQL tools for scanning. 41 | - name: Initialize CodeQL 42 | uses: github/codeql-action/init@v1 43 | with: 44 | languages: ${{ matrix.language }} 45 | # If you wish to specify custom queries, you can do so here or in a config file. 46 | # By default, queries listed here will override any specified in a config file. 47 | # Prefix the list here with "+" to use these queries and those in the config file. 48 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 49 | 50 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 51 | # If this step fails, then you should remove it and run the build manually (see below) 52 | - name: Autobuild 53 | uses: github/codeql-action/autobuild@v1 54 | 55 | # ℹ️ Command-line programs to run using the OS shell. 56 | # 📚 https://git.io/JvXDl 57 | 58 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 59 | # and modify them (or add more) to build your code if your project 60 | # uses a compiled language 61 | 62 | #- run: | 63 | # make bootstrap 64 | # make release 65 | 66 | - name: Perform CodeQL Analysis 67 | uses: github/codeql-action/analyze@v1 68 | -------------------------------------------------------------------------------- /bin/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | /* eslint-disable no-console */ 3 | const { omit } = require('lodash'); 4 | const Table = require('cli-table3'); 5 | const filesize = require('filesize'); 6 | const yargs = require('yargs'); 7 | const ora = require('ora'); 8 | const run = require('..'); 9 | 10 | require('dotenv').config(); 11 | 12 | const { argv } = yargs 13 | .env('ASSETS') 14 | .usage('$0 ', 'Run assets metrics', (y) => y.positional('url', { 15 | describe: 'Website URL', 16 | type: 'string', 17 | })) 18 | .option('mimeTypes', { 19 | array: true, 20 | alias: 't', 21 | describe: 'Filter assets based on mime type', 22 | default: ['javascript'], 23 | }) 24 | .option('internalPatterns', { 25 | array: true, 26 | alias: 'i', 27 | describe: 'Set assets as internal assets based on regex pattern', 28 | }) 29 | .option('ignorePatterns', { 30 | array: true, 31 | alias: 'ignore', 32 | describe: 'Ignore assets based on regex pattern', 33 | }) 34 | .option('cookies', { 35 | array: true, 36 | alias: 'c', 37 | describe: 'Set cookies before open page', 38 | type: 'string', 39 | }) 40 | .option('userAgent', { 41 | alias: 'u', 42 | describe: 'Set userAgent before open page', 43 | type: 'string', 44 | }); 45 | 46 | const { url, ...args } = argv; 47 | const options = omit(args, ['help', 'version', '$0', '_']); 48 | const loading = ora('Getting metrics...').start(); 49 | 50 | run(url, options) 51 | .then( 52 | ({ 53 | assets, 54 | count, 55 | size, 56 | gzip, 57 | }) => { 58 | loading.stop(); 59 | 60 | const assetsTable = new Table({ 61 | head: ['Type', 'URL', 'Size', 'Gzip', 'MimeType', 'Raw MimeType'], 62 | wordWrap: true, 63 | }); 64 | 65 | Object.keys(assets).forEach((asset) => { 66 | const metrics = assets[asset]; 67 | assetsTable.push([ 68 | metrics.type, 69 | asset, 70 | filesize(metrics.size), 71 | filesize(metrics.gzip), 72 | metrics.mimeType, 73 | metrics.rawMimeType, 74 | ]); 75 | }); 76 | console.log(String(assetsTable)); 77 | 78 | const summaryTable = new Table({ 79 | head: ['Summary', 'Internal', 'External', 'Total'], 80 | }); 81 | summaryTable.push(['Count', count.internal.total, count.external.total, count.total]); 82 | summaryTable.push([ 83 | 'Size', 84 | filesize(size.internal.total), 85 | filesize(size.external.total), 86 | filesize(size.total), 87 | ]); 88 | summaryTable.push([ 89 | 'Gzip', 90 | filesize(gzip.internal.total), 91 | filesize(gzip.external.total), 92 | filesize(gzip.total), 93 | ]); 94 | console.log(String(summaryTable)); 95 | }, 96 | ) 97 | .catch((err) => { 98 | loading.stop(); 99 | console.error('Error occurred', err); 100 | process.exit(); 101 | }); 102 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require('puppeteer'); 2 | const { get, merge, isArray } = require('lodash'); 3 | const cookie = require('cookie'); 4 | const { sanitizeUrl, incr, detectMimeType } = require('./utils'); 5 | const constants = require('./constants'); 6 | 7 | async function run(plainUrl, options = {}) { 8 | const pageUrl = sanitizeUrl(plainUrl); 9 | const mimeTypes = options.mimeTypes || constants.defaultMimeTypes; 10 | const mimeTypePatterns = merge({}, constants.defaultMimeTypePatterns, options.mimeTypePatterns); 11 | const { ignorePatterns = [], internalPatterns = [] } = options; 12 | 13 | // --- Prepare Browser --- 14 | const browser = await puppeteer.launch({ 15 | headless: true, 16 | args: ['--no-sandbox', '--disable-setuid-sandbox'], 17 | }); 18 | const page = await browser.newPage(); 19 | 20 | const session = await page.target().createCDPSession(); 21 | await session.send('Network.enable'); 22 | 23 | const responses = {}; 24 | session.on('Network.responseReceived', (event) => { 25 | responses[event.requestId] = event.response; 26 | }); 27 | 28 | // --- Listen and count assets - 29 | const assets = {}; 30 | session.on('Network.loadingFinished', (event) => { 31 | const { url } = responses[event.requestId]; 32 | const asset = assets[url]; 33 | if (!asset) return; 34 | assets[url].gzip = event.encodedDataLength; 35 | }); 36 | 37 | session.on('Network.dataReceived', (event) => { 38 | const { url, mimeType: rawMimeType } = responses[event.requestId]; 39 | 40 | if ( 41 | constants.ignoreAssetPattern.test(url) 42 | || ignorePatterns.some((p) => new RegExp(p).test(url)) 43 | ) return; 44 | 45 | // check mime type based on enabled list and patterns 46 | const mimeType = detectMimeType(rawMimeType, mimeTypes, mimeTypePatterns); 47 | if (!mimeType) return; 48 | 49 | const isInternal = url.startsWith(pageUrl) 50 | || (internalPatterns.length 51 | ? internalPatterns.some((p) => new RegExp(p).test(url)) 52 | : false); 53 | 54 | const asset = assets[url]; 55 | assets[url] = { 56 | mimeType, 57 | rawMimeType, 58 | type: isInternal ? 'internal' : 'external', 59 | size: get(asset, 'size', 0) + event.dataLength, 60 | }; 61 | }); 62 | 63 | // --- Opening URL --- 64 | if (isArray(options.cookies)) { 65 | await page.setCookie(...options.cookies.map((str) => { 66 | const parsed = cookie.parse(str); 67 | if (!parsed.name) throw new Error(`Missing "name" value from cookie: ${str}`); 68 | if (!parsed.value) throw new Error(`Missing "value" value from cookie: ${str}`); 69 | return parsed; 70 | })); 71 | } 72 | if (options.userAgent) { 73 | await page.setUserAgent(options.userAgent); 74 | } 75 | await page.goto(pageUrl, { waitUntil: 'networkidle0' }); 76 | await browser.close(); 77 | 78 | // --- Generating report --- 79 | const output = { 80 | assets, 81 | count: { internal: { total: 0 }, external: { total: 0 } }, 82 | size: { internal: { total: 0 }, external: { total: 0 } }, 83 | gzip: { internal: { total: 0 }, external: { total: 0 } }, 84 | }; 85 | 86 | Object.values(assets).forEach((asset) => { 87 | // count 88 | incr(output.count, 'total'); 89 | incr(output.count[asset.type], 'total'); 90 | incr(output.count[asset.type], asset.mimeType); 91 | 92 | // size 93 | incr(output.size, 'total', asset.size); 94 | incr(output.size[asset.type], 'total', asset.size); 95 | incr(output.size[asset.type], asset.mimeType, asset.size); 96 | 97 | // gzip 98 | incr(output.gzip, 'total', asset.gzip); 99 | incr(output.gzip[asset.type], 'total', asset.gzip); 100 | incr(output.gzip[asset.type], asset.mimeType, asset.gzip); 101 | }); 102 | 103 | return output; 104 | } 105 | 106 | module.exports = run; 107 | -------------------------------------------------------------------------------- /prometheus/README.md: -------------------------------------------------------------------------------- 1 | # Prometheus Assets [![docker pulls](https://img.shields.io/docker/pulls/andersonba/prometheus-assets)](https://hub.docker.com/r/andersonba/prometheus-assets) [![docker stars](https://img.shields.io/docker/stars/andersonba/prometheus-assets)](https://hub.docker.com/r/andersonba/prometheus-assets) 2 | 3 | Explore and monitor your assets metrics using [Prometheus](https://prometheus.io) and [Grafana](https://grafana.com). 4 | 5 | 6 | ![Grafana](../resources/grafana.png) 7 | 8 | ## Getting started 9 | 10 | First, you need to set up the exporter server. You can use official docker image [andersonba/prometheus-assets](https://hub.docker.com/r/andersonba/prometheus-assets/). 11 | 12 | ## Example 13 | 14 | You can test all workspace in your machine using [docker-compose](https://docs.docker.com/compose/install/). Running the following command will set up Server, Prometheus and Grafana services. 15 | 16 | ``` 17 | docker-compose up 18 | ``` 19 | 20 | Server http://localhost:3000 • Grafana http://localhost:8080 • Prometheus http://localhost:9090 21 | 22 | Now, you should import the [dashboard template](./grafana.json) to Grafana, see how: [Importing a dashboard from Grafana.com](https://grafana.com/docs/reference/export_import/#importing-a-dashboard) 23 | 24 | ## Configure 25 | 26 | There are two ways to configure the server: 27 | 28 | ### Using multiples targets in Prometheus (On-demand) 29 | 30 | The server have a route to scrap the page and extract the metrics on demand. 31 | 32 | ``` 33 | $ curl http://localhost:3000/metrics?url=www.andersonba.com 34 | ``` 35 | 36 | Nice! Now you have to configure the targets in your [prometheus.yml](https://prometheus.io/docs/prometheus/latest/configuration/configuration/). [See example](./prometheus.ondemand.yml#L2-L25) 37 | 38 | The metrics of each URL are stored in the cache for **300** seconds, check the `onDemandQueryCacheTTL` configuration to change it. 39 | 40 | #### URL params 41 | 42 | | URL Param | Description | Type | Example | 43 | |-----------|-------------|------|---------| 44 | | `url` | **Required**. Page URL | `string` | `?url=google.com` 45 | | `labels[]` | List of `key:value` labels | `Array` | `?labels[]=page:anderson&labels[]=section:home` 46 | | `mimeTypes[]` | List of mimeTypes to be filtered | `Array` | `?mimeTypes[]=javascript&mimeTypes[]=css` 47 | | `cookies[]` | List of cookies to be defined | `Array` | `?cookies[]='name=user;value=123'` 48 | | `nocache`| Force scrap without cache | `boolean` | `?nocache=1` 49 | 50 | ### Using a configuration file (Job scheduler) 51 | 52 | If you don't prefer to put many targets in your prometheus configuration, you can configure a time-based job scheduler in the server. You just need to create a configuration file called `config.yml`. [See example](config.example.yml) 53 | 54 | Now you have to configure only one target in your `prometheus.yml` using path `/metrics` in the server URL, without params. [See example](./prometheus.yml) 55 | 56 | The server will scrap the pages every `1h`, but you can change it. [See configuration file](./config.example.yml). 57 | 58 | | Attribute | Description | Type | 59 | |-----------|-------------|------| 60 | | `interval` | Interval time used in the job scheduler | number | 3600000 | 61 | | `configurations` | List of pages to extract metrics | `Array` (See below) 62 | | `labels` | List of common label names used in all page configurations | `Array` 63 | | `defaults` | Default values for the configuration objects | `{[configurationKey: string]: configurationValue}` 64 | | `metricName` | Metric name used by Gauge collector. | string 65 | | `enableOnDemandQuery` | Also enable on-demand scrapping (using query params, see below) | `boolean` 66 | | `onDemandQueryCacheTTL` | Time to expire cached metrics for on-deamand scraping | `number` 67 | | `path` | Change the metrics path of the server | string 68 | 69 | #### Configuration spec 70 | 71 | In addition to the [options of scraper](../README.md#reference-api), there are some configurations here: 72 | 73 | - `url` - **Required**. Page URL 74 | - `metrics.file` - Boolean. Enable file metrics 75 | - `metrics.count` - Boolean. Enable count metrics 76 | - `metrics.size` - Boolean. Enable size metrics 77 | - `metrics.gzip` - Boolean. Enable gzip metrics 78 | - `metrics.countByMimeType` - Boolean. Enable countByMimeType metrics 79 | - `metrics.sizeByMimeType` - Boolean. Enable sizeByMimeType metrics 80 | - `metrics.gzipByMimeType` - Boolean. Enable gzipByMimeType metrics 81 | - `labels` - Object. Key-value used to tag the prometheus metrics. 82 | 83 | See more details in [example](./config.example.yml). 84 | 85 | ### Docker environments 86 | 87 | - `CONFIG_PATH` 88 | - `METRICS_PATH` 89 | - `METRIC_NAME` 90 | - `METRICS_ON_DEMAND_QUERY` 91 | - `METRICS_ON_DEMAND_QUERY_CACHE_TTL` 92 | - `METRICS_INTERVAL` 93 | - `METRICS_FILE_ENABLED` 94 | - `METRICS_COUNT_ENABLED` 95 | - `METRICS_SIZE_ENABLED` 96 | - `METRICS_GZIP_ENABLED` 97 | - `METRICS_COUNT_BY_MIMETYPE_ENABLED` 98 | - `METRICS_SIZE_BY_MIMETYPE_ENABLED` 99 | - `METRICS_GZIP_BY_MIMETYPE_ENABLED` 100 | 101 | See more details in [settings.js](./settings.js). 102 | 103 | #### Priority order of configurations: 104 | 105 | 1. Default values 106 | 1. Environment 107 | 1. Config file -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Puppeteer Assets [![npm version](https://badge.fury.io/js/puppeteer-assets.svg)](https://badge.fury.io/js/puppeteer-assets) [![Build Status](https://travis-ci.org/andersonba/puppeteer-assets.svg?branch=master)](https://travis-ci.org/andersonba/puppeteer-assets) 2 | 3 | > Measuring your assets with metrics using [Puppeteer](https://github.com/googlechrome/puppeteer). 4 | 5 | Want to know which scripts are loaded in your page? This module allows you to extract and audit the metrics. 6 | 7 | ![Gif CLI](resources/cli.gif) 8 | 9 | ## Install 10 | 11 | ```bash 12 | yarn add puppeteer-assets 13 | ``` 14 | 15 | ## Usage 16 | 17 | Using CLI 18 | 19 | ```bash 20 | puppeteer-assets www.google.com 21 | ``` 22 | 23 | Advanced usage: 24 | 25 | ```bash 26 | puppeteer-assets www.google.com -t javascript -t css --ignore gooogle-analytics 27 | ``` 28 | 29 | Run `puppeteer-assets --help` to more options. 30 | 31 | Using on Node.js 32 | 33 | ```javascript 34 | import assetsMetrics from 'puppeteer-assets'; 35 | 36 | await assetsMetrics('https://www.andersonba.com'); 37 | { 38 | assets: { 39 | 'https://www.andersonba.com/scripts/main.js': { 40 | mimeType: 'javascript', 41 | rawMimeType: 'application/javascript', 42 | type: 'internal', 43 | gzip: 1621, 44 | size: 1621 45 | }, 46 | 'https://www.andersonba.com/scripts/vendor.js': { 47 | mimeType: 'javascript', 48 | rawMimeType: 'application/javascript', 49 | type: 'internal', 50 | gzip: 213438, 51 | size: 213438 52 | }, 53 | 'https://www.google-analytics.com/analytics.js': { 54 | mimeType: 'javascript', 55 | rawMimeType: 'text/javascript', 56 | type: 'external', 57 | gzip: 0, 58 | size: 44470 59 | } 60 | }, 61 | count: { 62 | internal: { total: 2, javascript: 2 }, 63 | external: { total: 1, javascript: 1 }, 64 | total: 3 65 | }, 66 | size: { 67 | internal: { total: 215059, javascript: 215059 }, 68 | external: { total: 44470, javascript: 44470 }, 69 | total: 259529 70 | }, 71 | gzip: { 72 | internal: { total: 215059, javascript: 215059 }, 73 | external: { total: 0, javascript: 0 }, 74 | total: 215059 75 | } 76 | } 77 | ``` 78 | 79 | ## Prometheus 80 | 81 | Explore and monitor your assets metrics using [Prometheus](https://prometheus.io) and [Grafana](https://grafana.com). 82 | 83 | ![Grafana](resources/grafana.png) 84 | 85 | You need to configure a webservice to be the Prometheus target. 86 | 87 | You can use the [official built-in server](./prometheus/README.md). 88 | 89 | ## Reference API 90 | 91 | #### `assetsMetrics(url, options)` 92 | 93 | | Parameter | Description | Type | Default | 94 | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------- | ---------------------------------------------- | 95 | | `url` | **Required.** Page URL | `string` | 96 | | `options.mimeTypes` | MimeTypes to be filtered in the metrics. You can use mapped mimeTypes from `options.mimeTypePatterns` | `Array ` | `['javascript']` | 97 | | `options.mimeTypePatterns` | Map the mimeTypes based on regex patterns | `Array` | `{ javascript: ['javascript'], css: ['css'] }` | 98 | | `options.ignorePatterns` | Ignore assets based on regex patterns | `Array` | `[]` | 99 | | `options.internalPatterns` | Mark asset as internal type based on regex patterns | `Array` | `[/^(\/\|.\/)/]` | 100 | | `options.cookies` | Define cookies on the browser using the standard cookie format. Fields `name` and `value` are required in the string. Example: `name=current_user; value=123456; domain=andersonba.com; path=/`. | `Array` | `[]` | 101 | | `options.userAgent` | Define the userAgent to the browser | `string` | 102 | -------------------------------------------------------------------------------- /prometheus/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | const express = require('express'); 3 | const bodyParser = require('body-parser'); 4 | const promClient = require('prom-client'); 5 | const { get, merge } = require('lodash'); 6 | const sequential = require('promise-sequential'); 7 | const Store = require('./store'); 8 | const Settings = require('./settings'); 9 | const constants = require('../constants'); 10 | const getMetrics = require('..'); 11 | const { env, parseLabelsParam, ensureArrayParam } = require('./utils'); 12 | 13 | const store = new Store({ 14 | cacheTTL: Settings.onDemandQueryCacheTTL, 15 | }); 16 | const app = express(); 17 | 18 | app.use(bodyParser.json()); 19 | 20 | function conf(key, config) { 21 | return get(config, key, get(Settings.defaults, key)); 22 | } 23 | 24 | function iterateToGauge(metrics, field, gauge, config) { 25 | const { url: page, labels } = config; 26 | Object.entries(metrics[field]).forEach(([type, data]) => { 27 | if (type === 'total') return; 28 | Object.entries(data).forEach(([mimeType, value]) => { 29 | if (mimeType === 'total') { 30 | gauge.set({ page, type, ...labels }, value); 31 | } 32 | }); 33 | }); 34 | } 35 | 36 | function iterateToGaugeByMimeType(metrics, field, gauge, config) { 37 | const { url: page, labels } = config; 38 | const mimeTypes = conf('mimeTypes', config); 39 | Object.entries(metrics[field]).forEach(([type, data]) => { 40 | if (type === 'total') return; 41 | mimeTypes.forEach((mimeType) => { 42 | gauge.set({ 43 | page, type, mime_type: mimeType, ...labels, 44 | }, data[mimeType] || 0); 45 | }); 46 | }); 47 | } 48 | 49 | function stripInvalidLabels(labelKeys, config) { 50 | const labels = labelKeys.reduce((acc, key) => { 51 | const value = conf('labels', config)[key]; 52 | acc[key] = value || null; 53 | return acc; 54 | }, {}); 55 | return { ...config, labels }; 56 | } 57 | 58 | function registerMetrics(metrics, config, { 59 | gaugeFile, 60 | gaugeCount, 61 | gaugeSize, 62 | gaugeGzip, 63 | gaugeCountByMimeType, 64 | gaugeSizeByMimeType, 65 | gaugeGzipByMimeType, 66 | }) { 67 | const labels = conf('labels', config); 68 | 69 | promClient.register.setDefaultLabels(labels); 70 | 71 | if (conf('metrics.file', config)) { 72 | // file metrics 73 | const ts = Date.now(); 74 | Object.entries(metrics.assets).forEach(([url, data]) => { 75 | const { 76 | type, mimeType, size, gzip, 77 | } = data; 78 | gaugeFile.set( 79 | { 80 | page: config.url, 81 | url, 82 | type, 83 | size, 84 | gzip, 85 | mime_type: mimeType, 86 | ...labels, 87 | }, 88 | ts, 89 | ); 90 | }); 91 | } 92 | 93 | // default 94 | if (conf('metrics.count', config)) { 95 | iterateToGauge(metrics, 'count', gaugeCount, config); 96 | } 97 | if (conf('metrics.size', config)) { 98 | iterateToGauge(metrics, 'size', gaugeSize, config); 99 | } 100 | if (conf('metrics.gzip', config)) { 101 | iterateToGauge(metrics, 'gzip', gaugeGzip, config); 102 | } 103 | 104 | // by mime type 105 | if (conf('metrics.countByMimeType', config)) { 106 | iterateToGaugeByMimeType(metrics, 'count', gaugeCountByMimeType, config); 107 | } 108 | if (conf('metrics.sizeByMimeType', config)) { 109 | iterateToGaugeByMimeType(metrics, 'size', gaugeSizeByMimeType, config); 110 | } 111 | if (conf('metrics.gzipByMimeType', config)) { 112 | iterateToGaugeByMimeType(metrics, 'gzip', gaugeGzipByMimeType, config); 113 | } 114 | } 115 | 116 | function setupMetrics(configurations, overrideSettings = {}) { 117 | const { metricName, labels: labelKeys } = merge({}, Settings, overrideSettings); 118 | 119 | promClient.register.clear(); 120 | 121 | const gaugeUp = new promClient.Gauge({ 122 | name: `${metricName}_up`, 123 | help: '1 = up, 0 = not up', 124 | labelNames: ['page', ...labelKeys], 125 | }); 126 | 127 | const gaugeFile = conf('metrics.file') 128 | ? new promClient.Gauge({ 129 | name: `${metricName}_file`, 130 | help: 'historically found assets on scrap', 131 | labelNames: ['page', 'type', 'mime_type', 'size', 'gzip', 'url', ...labelKeys], 132 | }) 133 | : null; 134 | 135 | const gaugeCount = conf('metrics.count') 136 | ? new promClient.Gauge({ 137 | name: `${metricName}_count`, 138 | help: 'count of internal assets', 139 | labelNames: ['page', 'type', ...labelKeys], 140 | }) 141 | : null; 142 | 143 | const gaugeSize = conf('metrics.size') 144 | ? new promClient.Gauge({ 145 | name: `${metricName}_size`, 146 | help: 'real size of assets', 147 | labelNames: ['page', 'type', ...labelKeys], 148 | }) 149 | : null; 150 | 151 | const gaugeGzip = conf('metrics.gzip') 152 | ? new promClient.Gauge({ 153 | name: `${metricName}_gzip`, 154 | help: 'encoded (gzip) size of assets', 155 | labelNames: ['page', 'type', ...labelKeys], 156 | }) 157 | : null; 158 | 159 | const gaugeCountByMimeType = conf('metrics.countByMimeType') 160 | ? new promClient.Gauge({ 161 | name: `${metricName}_count_by_mime_type`, 162 | help: 'count of internal assets by mime type', 163 | labelNames: ['page', 'type', 'mime_type', ...labelKeys], 164 | }) 165 | : null; 166 | 167 | const gaugeSizeByMimeType = conf('metrics.sizeByMimeType') 168 | ? new promClient.Gauge({ 169 | name: `${metricName}_size_by_mime_type`, 170 | help: 'real size of assets by mime type', 171 | labelNames: ['page', 'type', 'mime_type', ...labelKeys], 172 | }) 173 | : null; 174 | 175 | const gaugeGzipByMimeType = conf('metrics.gzipByMimeType') 176 | ? new promClient.Gauge({ 177 | name: `${metricName}_gzip_by_mime_type`, 178 | help: 'encoded (gzip) size of assets by mime type', 179 | labelNames: ['page', 'type', 'mime_type', ...labelKeys], 180 | }) 181 | : null; 182 | 183 | configurations.forEach((rawConfig) => { 184 | const config = stripInvalidLabels(labelKeys, rawConfig); 185 | const metrics = store.get(config.url); 186 | 187 | gaugeUp.set({ 188 | page: config.url, 189 | ...conf('labels', config), 190 | }, metrics ? 1 : 0); 191 | 192 | if (metrics) { 193 | registerMetrics(metrics, config, { 194 | gaugeFile, 195 | gaugeCount, 196 | gaugeSize, 197 | gaugeGzip, 198 | gaugeCountByMimeType, 199 | gaugeSizeByMimeType, 200 | gaugeGzipByMimeType, 201 | }); 202 | return true; 203 | } 204 | return false; 205 | }); 206 | } 207 | 208 | function configureTimer() { 209 | if (!Settings.configurations.length) return; 210 | 211 | async function execute() { 212 | store.busy = true; 213 | await sequential( 214 | Settings.configurations.map((config) => async () => { 215 | console.log(`> timer: scraping ${config.url}`); 216 | const metrics = await getMetrics(config.url, merge({}, Settings.defaults, config)); 217 | if (metrics) store.set(config.url, metrics); 218 | }), 219 | ); 220 | store.busy = false; 221 | } 222 | 223 | execute(); 224 | 225 | setInterval(async () => { 226 | console.info('> timer: scraping pages...'); 227 | await execute(); 228 | console.info('> timer: done...'); 229 | }, Settings.interval); 230 | } 231 | 232 | function assertRouting(req) { 233 | if (req.query.url) { 234 | if (!Settings.enableOnDemandQuery) { 235 | throw new Error('On Demand is disabled'); 236 | } 237 | } else if (Settings.enableOnDemandQuery && !Settings.configurations.length) { 238 | throw new Error('No URL query argument'); 239 | } else if (!Settings.configurations.length) { 240 | throw new Error('No configurations'); 241 | } 242 | } 243 | 244 | app.get(Settings.path, async (req, res, next) => { 245 | try { 246 | assertRouting(req); 247 | } catch (err) { 248 | res.status(400).send(err.message); 249 | return; 250 | } 251 | 252 | try { 253 | // on demand query 254 | if (req.query.url) { 255 | const cached = store.get(req.query.url) && !req.query.nocache; 256 | console.log('> Requesting on-demand:', req.query.url, cached ? '[cache]' : ''); 257 | 258 | if (!cached && store.busy) throw new Error('Ops.. Busy service!'); 259 | 260 | constants.arrayParams.forEach((p) => ensureArrayParam(req.query, p)); 261 | 262 | const config = merge({}, Settings.defaults, req.query); 263 | config.url = req.query.url; 264 | config.labels = parseLabelsParam(req.query.labels || []); 265 | 266 | if (!cached) { 267 | const metrics = await getMetrics(config.url, config); 268 | store.set(config.url, metrics, true); 269 | } 270 | 271 | const overrideSettings = { labels: Object.keys(config.labels) }; 272 | setupMetrics([config], overrideSettings); 273 | } else { 274 | console.log('> Requesting metrics'); 275 | setupMetrics(Settings.configurations); 276 | } 277 | } catch (err) { 278 | res.status(500).send(`ERROR: ${err.message}`); 279 | throw err; 280 | } 281 | 282 | res.writeHead(200, { 'Content-Type': 'text/plain' }); 283 | res.end(promClient.register.metrics()); 284 | next(); 285 | }); 286 | 287 | app.get('/check', (_, res) => res.send('OK')); 288 | 289 | app.delete('/cache', (_, res) => { 290 | store.clear(); 291 | res.send('Cache cleared!'); 292 | }); 293 | 294 | const server = app.listen(env('PORT', 3000), () => { 295 | configureTimer(); 296 | console.log('Server listening on port %d', server.address().port); 297 | }); 298 | -------------------------------------------------------------------------------- /prometheus/grafana.json: -------------------------------------------------------------------------------- 1 | { 2 | "__inputs": [ 3 | { 4 | "name": "DS_PROMETHEUS", 5 | "label": "Prometheus", 6 | "description": "", 7 | "type": "datasource", 8 | "pluginId": "prometheus", 9 | "pluginName": "Prometheus" 10 | } 11 | ], 12 | "__requires": [ 13 | { 14 | "type": "panel", 15 | "id": "gauge", 16 | "name": "Gauge", 17 | "version": "" 18 | }, 19 | { 20 | "type": "grafana", 21 | "id": "grafana", 22 | "name": "Grafana", 23 | "version": "6.4.3" 24 | }, 25 | { 26 | "type": "panel", 27 | "id": "graph", 28 | "name": "Graph", 29 | "version": "" 30 | }, 31 | { 32 | "type": "datasource", 33 | "id": "prometheus", 34 | "name": "Prometheus", 35 | "version": "1.0.0" 36 | }, 37 | { 38 | "type": "panel", 39 | "id": "singlestat", 40 | "name": "Singlestat", 41 | "version": "" 42 | }, 43 | { 44 | "type": "panel", 45 | "id": "table", 46 | "name": "Table", 47 | "version": "" 48 | } 49 | ], 50 | "annotations": { 51 | "list": [ 52 | { 53 | "builtIn": 1, 54 | "datasource": "-- Grafana --", 55 | "enable": true, 56 | "hide": true, 57 | "iconColor": "rgba(0, 211, 255, 1)", 58 | "name": "Annotations & Alerts", 59 | "type": "dashboard" 60 | } 61 | ] 62 | }, 63 | "description": "Generated by puppeteer-assets", 64 | "editable": true, 65 | "gnetId": null, 66 | "graphTooltip": 0, 67 | "id": null, 68 | "iteration": 1572060480973, 69 | "links": [], 70 | "panels": [ 71 | { 72 | "cacheTimeout": null, 73 | "datasource": "${DS_PROMETHEUS}", 74 | "description": "Total of assets", 75 | "gridPos": { 76 | "h": 8, 77 | "w": 6, 78 | "x": 0, 79 | "y": 0 80 | }, 81 | "hideTimeOverride": false, 82 | "id": 11, 83 | "links": [], 84 | "options": { 85 | "fieldOptions": { 86 | "calcs": [ 87 | "lastNotNull" 88 | ], 89 | "defaults": { 90 | "mappings": [], 91 | "max": 30, 92 | "min": 0, 93 | "nullValueMode": "connected", 94 | "thresholds": [ 95 | { 96 | "color": "#299c46", 97 | "value": null 98 | }, 99 | { 100 | "color": "rgba(237, 129, 40, 0.89)", 101 | "value": 25 102 | }, 103 | { 104 | "color": "#d44a3a", 105 | "value": 30 106 | } 107 | ], 108 | "unit": "short" 109 | }, 110 | "override": {}, 111 | "values": false 112 | }, 113 | "orientation": "horizontal", 114 | "showThresholdLabels": false, 115 | "showThresholdMarkers": true 116 | }, 117 | "pluginVersion": "6.4.3", 118 | "targets": [ 119 | { 120 | "expr": "sum(puppeteer_assets_count{page=~\"$page\"})", 121 | "format": "time_series", 122 | "intervalFactor": 2, 123 | "refId": "A" 124 | } 125 | ], 126 | "title": "Current count", 127 | "type": "gauge" 128 | }, 129 | { 130 | "cacheTimeout": null, 131 | "colorBackground": false, 132 | "colorPostfix": false, 133 | "colorPrefix": false, 134 | "colorValue": false, 135 | "colors": [ 136 | "#299c46", 137 | "rgba(237, 129, 40, 0.89)", 138 | "#d44a3a" 139 | ], 140 | "datasource": "${DS_PROMETHEUS}", 141 | "description": "Total of internal assets", 142 | "format": "none", 143 | "gauge": { 144 | "maxValue": 100, 145 | "minValue": 0, 146 | "show": false, 147 | "thresholdLabels": false, 148 | "thresholdMarkers": true 149 | }, 150 | "gridPos": { 151 | "h": 4, 152 | "w": 4, 153 | "x": 6, 154 | "y": 0 155 | }, 156 | "hideTimeOverride": false, 157 | "id": 10, 158 | "interval": null, 159 | "links": [], 160 | "mappingType": 1, 161 | "mappingTypes": [ 162 | { 163 | "name": "value to text", 164 | "value": 1 165 | }, 166 | { 167 | "name": "range to text", 168 | "value": 2 169 | } 170 | ], 171 | "maxDataPoints": 100, 172 | "nullPointMode": "connected", 173 | "nullText": null, 174 | "options": {}, 175 | "pluginVersion": "6.4.3", 176 | "postfix": "", 177 | "postfixFontSize": "50%", 178 | "prefix": "", 179 | "prefixFontSize": "50%", 180 | "rangeMaps": [ 181 | { 182 | "from": "null", 183 | "text": "N/A", 184 | "to": "null" 185 | } 186 | ], 187 | "sparkline": { 188 | "fillColor": "rgba(31, 118, 189, 0.18)", 189 | "full": false, 190 | "lineColor": "rgb(31, 120, 193)", 191 | "show": true, 192 | "ymax": null, 193 | "ymin": null 194 | }, 195 | "tableColumn": "", 196 | "targets": [ 197 | { 198 | "expr": "sum(puppeteer_assets_count{page=~\"$page\", type=\"internal\"})", 199 | "format": "time_series", 200 | "instant": false, 201 | "intervalFactor": 2, 202 | "refId": "A" 203 | } 204 | ], 205 | "thresholds": "", 206 | "title": "Internal count", 207 | "type": "singlestat", 208 | "valueFontSize": "100%", 209 | "valueMaps": [ 210 | { 211 | "op": "=", 212 | "text": "N/A", 213 | "value": "null" 214 | } 215 | ], 216 | "valueName": "current" 217 | }, 218 | { 219 | "aliasColors": {}, 220 | "bars": false, 221 | "dashLength": 10, 222 | "dashes": false, 223 | "datasource": "${DS_PROMETHEUS}", 224 | "decimals": 0, 225 | "fill": 1, 226 | "fillGradient": 0, 227 | "gridPos": { 228 | "h": 8, 229 | "w": 14, 230 | "x": 10, 231 | "y": 0 232 | }, 233 | "id": 4, 234 | "legend": { 235 | "alignAsTable": false, 236 | "avg": false, 237 | "current": false, 238 | "max": false, 239 | "min": false, 240 | "rightSide": false, 241 | "show": true, 242 | "total": false, 243 | "values": false 244 | }, 245 | "lines": true, 246 | "linewidth": 2, 247 | "links": [], 248 | "nullPointMode": "null", 249 | "options": { 250 | "dataLinks": [] 251 | }, 252 | "percentage": false, 253 | "pointradius": 5, 254 | "points": false, 255 | "renderer": "flot", 256 | "seriesOverrides": [], 257 | "spaceLength": 10, 258 | "stack": false, 259 | "steppedLine": false, 260 | "targets": [ 261 | { 262 | "expr": "sum(puppeteer_assets_count{page=~\"$page\"}) by (type)", 263 | "format": "time_series", 264 | "hide": false, 265 | "instant": false, 266 | "intervalFactor": 2, 267 | "legendFormat": "{{type}}", 268 | "refId": "A" 269 | } 270 | ], 271 | "thresholds": [], 272 | "timeFrom": null, 273 | "timeRegions": [], 274 | "timeShift": null, 275 | "title": "Count by type", 276 | "tooltip": { 277 | "shared": true, 278 | "sort": 0, 279 | "value_type": "individual" 280 | }, 281 | "type": "graph", 282 | "xaxis": { 283 | "buckets": 2, 284 | "mode": "time", 285 | "name": null, 286 | "show": true, 287 | "values": [] 288 | }, 289 | "yaxes": [ 290 | { 291 | "format": "short", 292 | "label": "", 293 | "logBase": 1, 294 | "max": null, 295 | "min": null, 296 | "show": true 297 | }, 298 | { 299 | "format": "short", 300 | "label": null, 301 | "logBase": 1, 302 | "max": null, 303 | "min": null, 304 | "show": false 305 | } 306 | ], 307 | "yaxis": { 308 | "align": false, 309 | "alignLevel": null 310 | } 311 | }, 312 | { 313 | "cacheTimeout": null, 314 | "colorBackground": false, 315 | "colorPostfix": false, 316 | "colorPrefix": false, 317 | "colorValue": false, 318 | "colors": [ 319 | "#299c46", 320 | "rgba(237, 129, 40, 0.89)", 321 | "#d44a3a" 322 | ], 323 | "datasource": "${DS_PROMETHEUS}", 324 | "description": "Total of external assets", 325 | "format": "none", 326 | "gauge": { 327 | "maxValue": 100, 328 | "minValue": 0, 329 | "show": false, 330 | "thresholdLabels": false, 331 | "thresholdMarkers": true 332 | }, 333 | "gridPos": { 334 | "h": 4, 335 | "w": 4, 336 | "x": 6, 337 | "y": 4 338 | }, 339 | "hideTimeOverride": false, 340 | "id": 12, 341 | "interval": null, 342 | "links": [], 343 | "mappingType": 1, 344 | "mappingTypes": [ 345 | { 346 | "name": "value to text", 347 | "value": 1 348 | }, 349 | { 350 | "name": "range to text", 351 | "value": 2 352 | } 353 | ], 354 | "maxDataPoints": 100, 355 | "nullPointMode": "connected", 356 | "nullText": null, 357 | "options": {}, 358 | "pluginVersion": "6.4.3", 359 | "postfix": "", 360 | "postfixFontSize": "50%", 361 | "prefix": "", 362 | "prefixFontSize": "50%", 363 | "rangeMaps": [ 364 | { 365 | "from": "null", 366 | "text": "N/A", 367 | "to": "null" 368 | } 369 | ], 370 | "sparkline": { 371 | "fillColor": "rgba(31, 118, 189, 0.18)", 372 | "full": false, 373 | "lineColor": "rgb(31, 120, 193)", 374 | "show": true, 375 | "ymax": null, 376 | "ymin": null 377 | }, 378 | "tableColumn": "", 379 | "targets": [ 380 | { 381 | "expr": "sum(puppeteer_assets_count{page=~\"$page\", type=\"external\"})", 382 | "format": "time_series", 383 | "intervalFactor": 2, 384 | "refId": "A" 385 | } 386 | ], 387 | "thresholds": "", 388 | "title": "External count", 389 | "type": "singlestat", 390 | "valueFontSize": "100%", 391 | "valueMaps": [ 392 | { 393 | "op": "=", 394 | "text": "N/A", 395 | "value": "null" 396 | } 397 | ], 398 | "valueName": "current" 399 | }, 400 | { 401 | "cacheTimeout": null, 402 | "datasource": "${DS_PROMETHEUS}", 403 | "gridPos": { 404 | "h": 8, 405 | "w": 6, 406 | "x": 0, 407 | "y": 8 408 | }, 409 | "hideTimeOverride": false, 410 | "id": 8, 411 | "links": [], 412 | "options": { 413 | "fieldOptions": { 414 | "calcs": [ 415 | "lastNotNull" 416 | ], 417 | "defaults": { 418 | "mappings": [], 419 | "max": 500000, 420 | "min": 0, 421 | "nullValueMode": "connected", 422 | "thresholds": [ 423 | { 424 | "color": "#299c46", 425 | "value": null 426 | }, 427 | { 428 | "color": "rgba(237, 129, 40, 0.89)", 429 | "value": 400000 430 | }, 431 | { 432 | "color": "#d44a3a", 433 | "value": 500000 434 | } 435 | ], 436 | "unit": "decbytes" 437 | }, 438 | "override": {}, 439 | "values": false 440 | }, 441 | "orientation": "horizontal", 442 | "showThresholdLabels": false, 443 | "showThresholdMarkers": true 444 | }, 445 | "pluginVersion": "6.4.3", 446 | "targets": [ 447 | { 448 | "expr": "sum(puppeteer_assets_size{page=~\"$page\"})", 449 | "format": "time_series", 450 | "instant": false, 451 | "intervalFactor": 2, 452 | "refId": "A" 453 | } 454 | ], 455 | "timeShift": null, 456 | "title": "Current size", 457 | "type": "gauge" 458 | }, 459 | { 460 | "cacheTimeout": null, 461 | "colorBackground": false, 462 | "colorValue": false, 463 | "colors": [ 464 | "#299c46", 465 | "rgba(237, 129, 40, 0.89)", 466 | "#d44a3a" 467 | ], 468 | "datasource": "${DS_PROMETHEUS}", 469 | "format": "decbytes", 470 | "gauge": { 471 | "maxValue": 100, 472 | "minValue": 0, 473 | "show": false, 474 | "thresholdLabels": false, 475 | "thresholdMarkers": true 476 | }, 477 | "gridPos": { 478 | "h": 4, 479 | "w": 4, 480 | "x": 6, 481 | "y": 8 482 | }, 483 | "hideTimeOverride": false, 484 | "id": 9, 485 | "interval": null, 486 | "links": [], 487 | "mappingType": 1, 488 | "mappingTypes": [ 489 | { 490 | "name": "value to text", 491 | "value": 1 492 | }, 493 | { 494 | "name": "range to text", 495 | "value": 2 496 | } 497 | ], 498 | "maxDataPoints": 100, 499 | "nullPointMode": "connected", 500 | "nullText": null, 501 | "options": {}, 502 | "pluginVersion": "6.4.3", 503 | "postfix": "", 504 | "postfixFontSize": "50%", 505 | "prefix": "", 506 | "prefixFontSize": "50%", 507 | "rangeMaps": [ 508 | { 509 | "from": "null", 510 | "text": "N/A", 511 | "to": "null" 512 | } 513 | ], 514 | "sparkline": { 515 | "fillColor": "rgba(31, 118, 189, 0.18)", 516 | "full": false, 517 | "lineColor": "rgb(31, 120, 193)", 518 | "show": true, 519 | "ymax": null, 520 | "ymin": null 521 | }, 522 | "tableColumn": "", 523 | "targets": [ 524 | { 525 | "expr": "sum(puppeteer_assets_size{page=~\"$page\", type=\"internal\"})", 526 | "format": "time_series", 527 | "instant": false, 528 | "intervalFactor": 2, 529 | "refId": "A" 530 | } 531 | ], 532 | "thresholds": "", 533 | "timeShift": null, 534 | "title": "Internal size", 535 | "type": "singlestat", 536 | "valueFontSize": "100%", 537 | "valueMaps": [ 538 | { 539 | "op": "=", 540 | "text": "N/A", 541 | "value": "null" 542 | } 543 | ], 544 | "valueName": "current" 545 | }, 546 | { 547 | "aliasColors": {}, 548 | "bars": false, 549 | "dashLength": 10, 550 | "dashes": false, 551 | "datasource": "${DS_PROMETHEUS}", 552 | "decimals": null, 553 | "fill": 1, 554 | "fillGradient": 0, 555 | "gridPos": { 556 | "h": 8, 557 | "w": 14, 558 | "x": 10, 559 | "y": 8 560 | }, 561 | "id": 1, 562 | "legend": { 563 | "alignAsTable": false, 564 | "avg": false, 565 | "current": false, 566 | "max": false, 567 | "min": false, 568 | "rightSide": false, 569 | "show": true, 570 | "sideWidth": 400, 571 | "total": false, 572 | "values": false 573 | }, 574 | "lines": true, 575 | "linewidth": 3, 576 | "links": [], 577 | "nullPointMode": "null", 578 | "options": { 579 | "dataLinks": [] 580 | }, 581 | "percentage": false, 582 | "pointradius": 5, 583 | "points": false, 584 | "renderer": "flot", 585 | "seriesOverrides": [], 586 | "spaceLength": 10, 587 | "stack": false, 588 | "steppedLine": false, 589 | "targets": [ 590 | { 591 | "expr": "sum(puppeteer_assets_size{page=~\"$page\"}) by (type)", 592 | "format": "time_series", 593 | "intervalFactor": 2, 594 | "legendFormat": "{{type}}", 595 | "refId": "A" 596 | }, 597 | { 598 | "expr": "sum(puppeteer_assets_encoded_size{page=~\"$page\"}) by (type)", 599 | "legendFormat": "encoded {{type}}", 600 | "refId": "B" 601 | } 602 | ], 603 | "thresholds": [], 604 | "timeFrom": null, 605 | "timeRegions": [], 606 | "timeShift": null, 607 | "title": "Size by type", 608 | "tooltip": { 609 | "shared": true, 610 | "sort": 2, 611 | "value_type": "individual" 612 | }, 613 | "type": "graph", 614 | "xaxis": { 615 | "buckets": null, 616 | "mode": "time", 617 | "name": null, 618 | "show": true, 619 | "values": [] 620 | }, 621 | "yaxes": [ 622 | { 623 | "format": "decbytes", 624 | "label": null, 625 | "logBase": 1, 626 | "max": null, 627 | "min": null, 628 | "show": true 629 | }, 630 | { 631 | "format": "short", 632 | "label": null, 633 | "logBase": 1, 634 | "max": null, 635 | "min": null, 636 | "show": false 637 | } 638 | ], 639 | "yaxis": { 640 | "align": false, 641 | "alignLevel": null 642 | } 643 | }, 644 | { 645 | "cacheTimeout": null, 646 | "colorBackground": false, 647 | "colorValue": false, 648 | "colors": [ 649 | "#299c46", 650 | "rgba(237, 129, 40, 0.89)", 651 | "#d44a3a" 652 | ], 653 | "datasource": "${DS_PROMETHEUS}", 654 | "format": "decbytes", 655 | "gauge": { 656 | "maxValue": 100, 657 | "minValue": 0, 658 | "show": false, 659 | "thresholdLabels": false, 660 | "thresholdMarkers": true 661 | }, 662 | "gridPos": { 663 | "h": 4, 664 | "w": 4, 665 | "x": 6, 666 | "y": 12 667 | }, 668 | "hideTimeOverride": false, 669 | "id": 13, 670 | "interval": null, 671 | "links": [], 672 | "mappingType": 1, 673 | "mappingTypes": [ 674 | { 675 | "name": "value to text", 676 | "value": 1 677 | }, 678 | { 679 | "name": "range to text", 680 | "value": 2 681 | } 682 | ], 683 | "maxDataPoints": 100, 684 | "nullPointMode": "connected", 685 | "nullText": null, 686 | "options": {}, 687 | "pluginVersion": "6.4.3", 688 | "postfix": "", 689 | "postfixFontSize": "50%", 690 | "prefix": "", 691 | "prefixFontSize": "50%", 692 | "rangeMaps": [ 693 | { 694 | "from": "null", 695 | "text": "N/A", 696 | "to": "null" 697 | } 698 | ], 699 | "sparkline": { 700 | "fillColor": "rgba(31, 118, 189, 0.18)", 701 | "full": false, 702 | "lineColor": "rgb(31, 120, 193)", 703 | "show": true, 704 | "ymax": null, 705 | "ymin": null 706 | }, 707 | "tableColumn": "", 708 | "targets": [ 709 | { 710 | "expr": "sum(puppeteer_assets_size{page=~\"$page\", type=\"external\"})", 711 | "format": "time_series", 712 | "instant": false, 713 | "intervalFactor": 2, 714 | "refId": "A" 715 | } 716 | ], 717 | "thresholds": "", 718 | "timeShift": null, 719 | "title": "External size", 720 | "type": "singlestat", 721 | "valueFontSize": "100%", 722 | "valueMaps": [ 723 | { 724 | "op": "=", 725 | "text": "N/A", 726 | "value": "null" 727 | } 728 | ], 729 | "valueName": "current" 730 | }, 731 | { 732 | "columns": [], 733 | "datasource": "${DS_PROMETHEUS}", 734 | "fontSize": "90%", 735 | "gridPos": { 736 | "h": 6, 737 | "w": 24, 738 | "x": 0, 739 | "y": 16 740 | }, 741 | "id": 16, 742 | "options": {}, 743 | "pageSize": null, 744 | "showHeader": true, 745 | "sort": { 746 | "col": 0, 747 | "desc": true 748 | }, 749 | "styles": [ 750 | { 751 | "alias": "Type", 752 | "colorMode": null, 753 | "colors": [ 754 | "rgba(245, 54, 54, 0.9)", 755 | "rgba(237, 129, 40, 0.89)", 756 | "rgba(50, 172, 45, 0.97)" 757 | ], 758 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 759 | "decimals": 2, 760 | "mappingType": 1, 761 | "pattern": "type", 762 | "thresholds": [], 763 | "type": "string", 764 | "unit": "short" 765 | }, 766 | { 767 | "alias": "URL", 768 | "colorMode": null, 769 | "colors": [ 770 | "rgba(245, 54, 54, 0.9)", 771 | "rgba(237, 129, 40, 0.89)", 772 | "rgba(50, 172, 45, 0.97)" 773 | ], 774 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 775 | "decimals": 2, 776 | "mappingType": 1, 777 | "pattern": "url", 778 | "preserveFormat": false, 779 | "sanitize": false, 780 | "thresholds": [], 781 | "type": "string", 782 | "unit": "short" 783 | }, 784 | { 785 | "alias": "Date", 786 | "colorMode": null, 787 | "colors": [ 788 | "rgba(245, 54, 54, 0.9)", 789 | "rgba(237, 129, 40, 0.89)", 790 | "rgba(50, 172, 45, 0.97)" 791 | ], 792 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 793 | "decimals": 2, 794 | "mappingType": 1, 795 | "pattern": "Value", 796 | "thresholds": [], 797 | "type": "date", 798 | "unit": "short" 799 | }, 800 | { 801 | "alias": "", 802 | "colorMode": null, 803 | "colors": [ 804 | "rgba(245, 54, 54, 0.9)", 805 | "rgba(237, 129, 40, 0.89)", 806 | "rgba(50, 172, 45, 0.97)" 807 | ], 808 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 809 | "decimals": 2, 810 | "mappingType": 1, 811 | "pattern": "Time", 812 | "thresholds": [], 813 | "type": "hidden", 814 | "unit": "short" 815 | }, 816 | { 817 | "alias": "MimeType", 818 | "colorMode": null, 819 | "colors": [ 820 | "rgba(245, 54, 54, 0.9)", 821 | "rgba(237, 129, 40, 0.89)", 822 | "rgba(50, 172, 45, 0.97)" 823 | ], 824 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 825 | "decimals": 2, 826 | "mappingType": 1, 827 | "pattern": "z_mime_type", 828 | "thresholds": [], 829 | "type": "string", 830 | "unit": "short" 831 | } 832 | ], 833 | "targets": [ 834 | { 835 | "expr": "sort(max(label_replace(puppeteer_assets_file{page=~\"$page\"}, \"z_mime_type\", \"$1\", \"mime_type\", \"(.*)\")) by (type, z_mime_type, url) == on() group_left max(puppeteer_assets_file{page=~\"$page\"}))", 836 | "format": "table", 837 | "instant": true, 838 | "intervalFactor": 1, 839 | "legendFormat": "", 840 | "refId": "A" 841 | } 842 | ], 843 | "timeFrom": null, 844 | "timeShift": null, 845 | "title": "Assets files", 846 | "transform": "table", 847 | "type": "table" 848 | }, 849 | { 850 | "aliasColors": {}, 851 | "bars": false, 852 | "dashLength": 10, 853 | "dashes": false, 854 | "datasource": "${DS_PROMETHEUS}", 855 | "decimals": null, 856 | "fill": 0, 857 | "fillGradient": 0, 858 | "gridPos": { 859 | "h": 7, 860 | "w": 12, 861 | "x": 0, 862 | "y": 22 863 | }, 864 | "id": 7, 865 | "legend": { 866 | "alignAsTable": true, 867 | "avg": false, 868 | "current": false, 869 | "max": false, 870 | "min": false, 871 | "rightSide": true, 872 | "show": true, 873 | "sideWidth": 400, 874 | "total": false, 875 | "values": false 876 | }, 877 | "lines": true, 878 | "linewidth": 2, 879 | "links": [], 880 | "nullPointMode": "null", 881 | "options": { 882 | "dataLinks": [] 883 | }, 884 | "percentage": false, 885 | "pointradius": 5, 886 | "points": false, 887 | "renderer": "flot", 888 | "seriesOverrides": [], 889 | "spaceLength": 10, 890 | "stack": false, 891 | "steppedLine": false, 892 | "targets": [ 893 | { 894 | "expr": "sum(puppeteer_assets_size_by_mime_type{page=~\"$page\"}) by (mime_type, type)", 895 | "format": "time_series", 896 | "intervalFactor": 1, 897 | "legendFormat": "{{type}} {{mime_type}}", 898 | "refId": "A" 899 | } 900 | ], 901 | "thresholds": [], 902 | "timeFrom": null, 903 | "timeRegions": [], 904 | "timeShift": null, 905 | "title": "Size by mimeType", 906 | "tooltip": { 907 | "shared": true, 908 | "sort": 2, 909 | "value_type": "individual" 910 | }, 911 | "type": "graph", 912 | "xaxis": { 913 | "buckets": null, 914 | "mode": "time", 915 | "name": null, 916 | "show": true, 917 | "values": [] 918 | }, 919 | "yaxes": [ 920 | { 921 | "format": "decbytes", 922 | "label": null, 923 | "logBase": 1, 924 | "max": null, 925 | "min": null, 926 | "show": true 927 | }, 928 | { 929 | "format": "short", 930 | "label": null, 931 | "logBase": 1, 932 | "max": null, 933 | "min": null, 934 | "show": false 935 | } 936 | ], 937 | "yaxis": { 938 | "align": false, 939 | "alignLevel": null 940 | } 941 | }, 942 | { 943 | "aliasColors": {}, 944 | "bars": false, 945 | "dashLength": 10, 946 | "dashes": false, 947 | "datasource": "${DS_PROMETHEUS}", 948 | "decimals": null, 949 | "fill": 0, 950 | "fillGradient": 0, 951 | "gridPos": { 952 | "h": 7, 953 | "w": 12, 954 | "x": 12, 955 | "y": 22 956 | }, 957 | "id": 14, 958 | "legend": { 959 | "alignAsTable": true, 960 | "avg": false, 961 | "current": false, 962 | "max": false, 963 | "min": false, 964 | "rightSide": true, 965 | "show": true, 966 | "sideWidth": 400, 967 | "total": false, 968 | "values": false 969 | }, 970 | "lines": true, 971 | "linewidth": 2, 972 | "links": [], 973 | "nullPointMode": "null", 974 | "options": { 975 | "dataLinks": [] 976 | }, 977 | "percentage": false, 978 | "pointradius": 5, 979 | "points": false, 980 | "renderer": "flot", 981 | "seriesOverrides": [], 982 | "spaceLength": 10, 983 | "stack": false, 984 | "steppedLine": false, 985 | "targets": [ 986 | { 987 | "expr": "sum(puppeteer_assets_gzip_by_mime_type{page=~\"$page\"}) by (mime_type, type)", 988 | "format": "time_series", 989 | "intervalFactor": 1, 990 | "legendFormat": "{{type}} {{mime_type}}", 991 | "refId": "A" 992 | } 993 | ], 994 | "thresholds": [], 995 | "timeFrom": null, 996 | "timeRegions": [], 997 | "timeShift": null, 998 | "title": "Gzip by mimeType", 999 | "tooltip": { 1000 | "shared": true, 1001 | "sort": 2, 1002 | "value_type": "individual" 1003 | }, 1004 | "type": "graph", 1005 | "xaxis": { 1006 | "buckets": null, 1007 | "mode": "time", 1008 | "name": null, 1009 | "show": true, 1010 | "values": [] 1011 | }, 1012 | "yaxes": [ 1013 | { 1014 | "format": "decbytes", 1015 | "label": null, 1016 | "logBase": 1, 1017 | "max": null, 1018 | "min": null, 1019 | "show": true 1020 | }, 1021 | { 1022 | "format": "short", 1023 | "label": null, 1024 | "logBase": 1, 1025 | "max": null, 1026 | "min": null, 1027 | "show": false 1028 | } 1029 | ], 1030 | "yaxis": { 1031 | "align": false, 1032 | "alignLevel": null 1033 | } 1034 | } 1035 | ], 1036 | "refresh": false, 1037 | "schemaVersion": 20, 1038 | "style": "dark", 1039 | "tags": [], 1040 | "templating": { 1041 | "list": [ 1042 | { 1043 | "allValue": null, 1044 | "current": {}, 1045 | "datasource": "${DS_PROMETHEUS}", 1046 | "definition": "label_values(puppeteer_assets_up, page)", 1047 | "hide": 0, 1048 | "includeAll": false, 1049 | "label": "Page URL", 1050 | "multi": false, 1051 | "name": "page", 1052 | "options": [], 1053 | "query": "label_values(puppeteer_assets_up, page)", 1054 | "refresh": 1, 1055 | "regex": "", 1056 | "skipUrlSync": false, 1057 | "sort": 1, 1058 | "tagValuesQuery": "", 1059 | "tags": [], 1060 | "tagsQuery": "", 1061 | "type": "query", 1062 | "useTags": false 1063 | } 1064 | ] 1065 | }, 1066 | "time": { 1067 | "from": "now-5m", 1068 | "to": "now" 1069 | }, 1070 | "timepicker": { 1071 | "refresh_intervals": [ 1072 | "5s", 1073 | "10s", 1074 | "30s", 1075 | "1m", 1076 | "5m", 1077 | "15m", 1078 | "30m", 1079 | "1h", 1080 | "2h", 1081 | "1d" 1082 | ], 1083 | "time_options": [ 1084 | "5m", 1085 | "15m", 1086 | "1h", 1087 | "6h", 1088 | "12h", 1089 | "24h", 1090 | "2d", 1091 | "7d", 1092 | "30d" 1093 | ] 1094 | }, 1095 | "timezone": "", 1096 | "title": "Assets metrics", 1097 | "uid": "000000047", 1098 | "version": 15 1099 | } -------------------------------------------------------------------------------- /prometheus/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 8 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 9 | 10 | "@szmarczak/http-timer@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 13 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 14 | dependencies: 15 | defer-to-connect "^1.0.1" 16 | 17 | abbrev@1: 18 | version "1.1.1" 19 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 20 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 21 | 22 | accepts@~1.3.7: 23 | version "1.3.7" 24 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 25 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 26 | dependencies: 27 | mime-types "~2.1.24" 28 | negotiator "0.6.2" 29 | 30 | ansi-align@^3.0.0: 31 | version "3.0.0" 32 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 33 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 34 | dependencies: 35 | string-width "^3.0.0" 36 | 37 | ansi-regex@^4.1.0: 38 | version "4.1.0" 39 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 40 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 41 | 42 | ansi-regex@^5.0.0: 43 | version "5.0.0" 44 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 45 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 46 | 47 | ansi-styles@^4.1.0: 48 | version "4.3.0" 49 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 50 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 51 | dependencies: 52 | color-convert "^2.0.1" 53 | 54 | anymatch@~3.1.1: 55 | version "3.1.1" 56 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 57 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 58 | dependencies: 59 | normalize-path "^3.0.0" 60 | picomatch "^2.0.4" 61 | 62 | argparse@^1.0.7: 63 | version "1.0.10" 64 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 65 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 66 | dependencies: 67 | sprintf-js "~1.0.2" 68 | 69 | array-flatten@1.1.1: 70 | version "1.1.1" 71 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 72 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 73 | 74 | balanced-match@^1.0.0: 75 | version "1.0.0" 76 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 77 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 78 | 79 | binary-extensions@^2.0.0: 80 | version "2.1.0" 81 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" 82 | integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== 83 | 84 | bintrees@1.0.1: 85 | version "1.0.1" 86 | resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.1.tgz#0e655c9b9c2435eaab68bf4027226d2b55a34524" 87 | integrity sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ= 88 | 89 | body-parser@1.19.0, body-parser@^1.19.0: 90 | version "1.19.0" 91 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 92 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 93 | dependencies: 94 | bytes "3.1.0" 95 | content-type "~1.0.4" 96 | debug "2.6.9" 97 | depd "~1.1.2" 98 | http-errors "1.7.2" 99 | iconv-lite "0.4.24" 100 | on-finished "~2.3.0" 101 | qs "6.7.0" 102 | raw-body "2.4.0" 103 | type-is "~1.6.17" 104 | 105 | boxen@^4.2.0: 106 | version "4.2.0" 107 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 108 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 109 | dependencies: 110 | ansi-align "^3.0.0" 111 | camelcase "^5.3.1" 112 | chalk "^3.0.0" 113 | cli-boxes "^2.2.0" 114 | string-width "^4.1.0" 115 | term-size "^2.1.0" 116 | type-fest "^0.8.1" 117 | widest-line "^3.1.0" 118 | 119 | brace-expansion@^1.1.7: 120 | version "1.1.11" 121 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 122 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 123 | dependencies: 124 | balanced-match "^1.0.0" 125 | concat-map "0.0.1" 126 | 127 | braces@~3.0.2: 128 | version "3.0.2" 129 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 130 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 131 | dependencies: 132 | fill-range "^7.0.1" 133 | 134 | bytes@3.1.0: 135 | version "3.1.0" 136 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 137 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 138 | 139 | cacheable-request@^6.0.0: 140 | version "6.1.0" 141 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 142 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 143 | dependencies: 144 | clone-response "^1.0.2" 145 | get-stream "^5.1.0" 146 | http-cache-semantics "^4.0.0" 147 | keyv "^3.0.0" 148 | lowercase-keys "^2.0.0" 149 | normalize-url "^4.1.0" 150 | responselike "^1.0.2" 151 | 152 | camelcase@^5.3.1: 153 | version "5.3.1" 154 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 155 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 156 | 157 | chalk@^3.0.0: 158 | version "3.0.0" 159 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 160 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 161 | dependencies: 162 | ansi-styles "^4.1.0" 163 | supports-color "^7.1.0" 164 | 165 | chokidar@^3.2.2: 166 | version "3.4.3" 167 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" 168 | integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== 169 | dependencies: 170 | anymatch "~3.1.1" 171 | braces "~3.0.2" 172 | glob-parent "~5.1.0" 173 | is-binary-path "~2.1.0" 174 | is-glob "~4.0.1" 175 | normalize-path "~3.0.0" 176 | readdirp "~3.5.0" 177 | optionalDependencies: 178 | fsevents "~2.1.2" 179 | 180 | ci-info@^2.0.0: 181 | version "2.0.0" 182 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 183 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 184 | 185 | cli-boxes@^2.2.0: 186 | version "2.2.1" 187 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 188 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 189 | 190 | clone-response@^1.0.2: 191 | version "1.0.2" 192 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 193 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 194 | dependencies: 195 | mimic-response "^1.0.0" 196 | 197 | color-convert@^2.0.1: 198 | version "2.0.1" 199 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 200 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 201 | dependencies: 202 | color-name "~1.1.4" 203 | 204 | color-name@~1.1.4: 205 | version "1.1.4" 206 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 207 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 208 | 209 | concat-map@0.0.1: 210 | version "0.0.1" 211 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 212 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 213 | 214 | configstore@^5.0.1: 215 | version "5.0.1" 216 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 217 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 218 | dependencies: 219 | dot-prop "^5.2.0" 220 | graceful-fs "^4.1.2" 221 | make-dir "^3.0.0" 222 | unique-string "^2.0.0" 223 | write-file-atomic "^3.0.0" 224 | xdg-basedir "^4.0.0" 225 | 226 | content-disposition@0.5.3: 227 | version "0.5.3" 228 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 229 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 230 | dependencies: 231 | safe-buffer "5.1.2" 232 | 233 | content-type@~1.0.4: 234 | version "1.0.4" 235 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 236 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 237 | 238 | cookie-signature@1.0.6: 239 | version "1.0.6" 240 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 241 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 242 | 243 | cookie@0.4.0: 244 | version "0.4.0" 245 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 246 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 247 | 248 | crypto-random-string@^2.0.0: 249 | version "2.0.0" 250 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 251 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 252 | 253 | debug@2.6.9, debug@^2.2.0: 254 | version "2.6.9" 255 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 256 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 257 | dependencies: 258 | ms "2.0.0" 259 | 260 | debug@^3.2.6: 261 | version "3.2.7" 262 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 263 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 264 | dependencies: 265 | ms "^2.1.1" 266 | 267 | decompress-response@^3.3.0: 268 | version "3.3.0" 269 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 270 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 271 | dependencies: 272 | mimic-response "^1.0.0" 273 | 274 | deep-extend@^0.6.0: 275 | version "0.6.0" 276 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 277 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 278 | 279 | defer-to-connect@^1.0.1: 280 | version "1.1.3" 281 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 282 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 283 | 284 | depd@~1.1.2: 285 | version "1.1.2" 286 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 287 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 288 | 289 | destroy@~1.0.4: 290 | version "1.0.4" 291 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 292 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 293 | 294 | dot-prop@^5.2.0: 295 | version "5.3.0" 296 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 297 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 298 | dependencies: 299 | is-obj "^2.0.0" 300 | 301 | duplexer3@^0.1.4: 302 | version "0.1.4" 303 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 304 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 305 | 306 | ee-first@1.1.1: 307 | version "1.1.1" 308 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 309 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 310 | 311 | emoji-regex@^7.0.1: 312 | version "7.0.3" 313 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 314 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 315 | 316 | emoji-regex@^8.0.0: 317 | version "8.0.0" 318 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 319 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 320 | 321 | encodeurl@~1.0.2: 322 | version "1.0.2" 323 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 324 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 325 | 326 | end-of-stream@^1.1.0: 327 | version "1.4.4" 328 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 329 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 330 | dependencies: 331 | once "^1.4.0" 332 | 333 | escape-goat@^2.0.0: 334 | version "2.1.1" 335 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 336 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 337 | 338 | escape-html@~1.0.3: 339 | version "1.0.3" 340 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 341 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 342 | 343 | etag@~1.8.1: 344 | version "1.8.1" 345 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 346 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 347 | 348 | express@^4.17.1: 349 | version "4.17.1" 350 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 351 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 352 | dependencies: 353 | accepts "~1.3.7" 354 | array-flatten "1.1.1" 355 | body-parser "1.19.0" 356 | content-disposition "0.5.3" 357 | content-type "~1.0.4" 358 | cookie "0.4.0" 359 | cookie-signature "1.0.6" 360 | debug "2.6.9" 361 | depd "~1.1.2" 362 | encodeurl "~1.0.2" 363 | escape-html "~1.0.3" 364 | etag "~1.8.1" 365 | finalhandler "~1.1.2" 366 | fresh "0.5.2" 367 | merge-descriptors "1.0.1" 368 | methods "~1.1.2" 369 | on-finished "~2.3.0" 370 | parseurl "~1.3.3" 371 | path-to-regexp "0.1.7" 372 | proxy-addr "~2.0.5" 373 | qs "6.7.0" 374 | range-parser "~1.2.1" 375 | safe-buffer "5.1.2" 376 | send "0.17.1" 377 | serve-static "1.14.1" 378 | setprototypeof "1.1.1" 379 | statuses "~1.5.0" 380 | type-is "~1.6.18" 381 | utils-merge "1.0.1" 382 | vary "~1.1.2" 383 | 384 | fill-range@^7.0.1: 385 | version "7.0.1" 386 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 387 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 388 | dependencies: 389 | to-regex-range "^5.0.1" 390 | 391 | finalhandler@~1.1.2: 392 | version "1.1.2" 393 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 394 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 395 | dependencies: 396 | debug "2.6.9" 397 | encodeurl "~1.0.2" 398 | escape-html "~1.0.3" 399 | on-finished "~2.3.0" 400 | parseurl "~1.3.3" 401 | statuses "~1.5.0" 402 | unpipe "~1.0.0" 403 | 404 | forwarded@~0.1.2: 405 | version "0.1.2" 406 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 407 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 408 | 409 | fresh@0.5.2: 410 | version "0.5.2" 411 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 412 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 413 | 414 | fs.realpath@^1.0.0: 415 | version "1.0.0" 416 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 417 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 418 | 419 | fsevents@~2.1.2: 420 | version "2.1.3" 421 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 422 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 423 | 424 | get-stream@^4.1.0: 425 | version "4.1.0" 426 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 427 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 428 | dependencies: 429 | pump "^3.0.0" 430 | 431 | get-stream@^5.1.0: 432 | version "5.2.0" 433 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 434 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 435 | dependencies: 436 | pump "^3.0.0" 437 | 438 | glob-parent@~5.1.0: 439 | version "5.1.1" 440 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 441 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 442 | dependencies: 443 | is-glob "^4.0.1" 444 | 445 | glob@^7.0.5: 446 | version "7.1.6" 447 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 448 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 449 | dependencies: 450 | fs.realpath "^1.0.0" 451 | inflight "^1.0.4" 452 | inherits "2" 453 | minimatch "^3.0.4" 454 | once "^1.3.0" 455 | path-is-absolute "^1.0.0" 456 | 457 | global-dirs@^2.0.1: 458 | version "2.0.1" 459 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" 460 | integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== 461 | dependencies: 462 | ini "^1.3.5" 463 | 464 | got@^9.6.0: 465 | version "9.6.0" 466 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 467 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 468 | dependencies: 469 | "@sindresorhus/is" "^0.14.0" 470 | "@szmarczak/http-timer" "^1.1.2" 471 | cacheable-request "^6.0.0" 472 | decompress-response "^3.3.0" 473 | duplexer3 "^0.1.4" 474 | get-stream "^4.1.0" 475 | lowercase-keys "^1.0.1" 476 | mimic-response "^1.0.1" 477 | p-cancelable "^1.0.0" 478 | to-readable-stream "^1.0.0" 479 | url-parse-lax "^3.0.0" 480 | 481 | graceful-fs@^4.1.2: 482 | version "4.2.4" 483 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 484 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 485 | 486 | has-flag@^3.0.0: 487 | version "3.0.0" 488 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 489 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 490 | 491 | has-flag@^4.0.0: 492 | version "4.0.0" 493 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 494 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 495 | 496 | has-yarn@^2.1.0: 497 | version "2.1.0" 498 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 499 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 500 | 501 | http-cache-semantics@^4.0.0: 502 | version "4.1.0" 503 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 504 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 505 | 506 | http-errors@1.7.2: 507 | version "1.7.2" 508 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 509 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 510 | dependencies: 511 | depd "~1.1.2" 512 | inherits "2.0.3" 513 | setprototypeof "1.1.1" 514 | statuses ">= 1.5.0 < 2" 515 | toidentifier "1.0.0" 516 | 517 | http-errors@~1.7.2: 518 | version "1.7.3" 519 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 520 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 521 | dependencies: 522 | depd "~1.1.2" 523 | inherits "2.0.4" 524 | setprototypeof "1.1.1" 525 | statuses ">= 1.5.0 < 2" 526 | toidentifier "1.0.0" 527 | 528 | iconv-lite@0.4.24: 529 | version "0.4.24" 530 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 531 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 532 | dependencies: 533 | safer-buffer ">= 2.1.2 < 3" 534 | 535 | ignore-by-default@^1.0.1: 536 | version "1.0.1" 537 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 538 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 539 | 540 | import-lazy@^2.1.0: 541 | version "2.1.0" 542 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 543 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 544 | 545 | imurmurhash@^0.1.4: 546 | version "0.1.4" 547 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 548 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 549 | 550 | inflight@^1.0.4: 551 | version "1.0.6" 552 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 553 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 554 | dependencies: 555 | once "^1.3.0" 556 | wrappy "1" 557 | 558 | inherits@2, inherits@2.0.4: 559 | version "2.0.4" 560 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 561 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 562 | 563 | inherits@2.0.3: 564 | version "2.0.3" 565 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 566 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 567 | 568 | ini@^1.3.5, ini@~1.3.0: 569 | version "1.3.5" 570 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 571 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 572 | 573 | ipaddr.js@1.9.1: 574 | version "1.9.1" 575 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 576 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 577 | 578 | is-binary-path@~2.1.0: 579 | version "2.1.0" 580 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 581 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 582 | dependencies: 583 | binary-extensions "^2.0.0" 584 | 585 | is-ci@^2.0.0: 586 | version "2.0.0" 587 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 588 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 589 | dependencies: 590 | ci-info "^2.0.0" 591 | 592 | is-extglob@^2.1.1: 593 | version "2.1.1" 594 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 595 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 596 | 597 | is-fullwidth-code-point@^2.0.0: 598 | version "2.0.0" 599 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 600 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 601 | 602 | is-fullwidth-code-point@^3.0.0: 603 | version "3.0.0" 604 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 605 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 606 | 607 | is-glob@^4.0.1, is-glob@~4.0.1: 608 | version "4.0.1" 609 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 610 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 611 | dependencies: 612 | is-extglob "^2.1.1" 613 | 614 | is-installed-globally@^0.3.1: 615 | version "0.3.2" 616 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" 617 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== 618 | dependencies: 619 | global-dirs "^2.0.1" 620 | is-path-inside "^3.0.1" 621 | 622 | is-npm@^4.0.0: 623 | version "4.0.0" 624 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" 625 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== 626 | 627 | is-number@^7.0.0: 628 | version "7.0.0" 629 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 630 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 631 | 632 | is-obj@^2.0.0: 633 | version "2.0.0" 634 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 635 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 636 | 637 | is-path-inside@^3.0.1: 638 | version "3.0.2" 639 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" 640 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== 641 | 642 | is-typedarray@^1.0.0: 643 | version "1.0.0" 644 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 645 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 646 | 647 | is-yarn-global@^0.3.0: 648 | version "0.3.0" 649 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 650 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 651 | 652 | json-buffer@3.0.0: 653 | version "3.0.0" 654 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 655 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 656 | 657 | keyv@^3.0.0: 658 | version "3.1.0" 659 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 660 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 661 | dependencies: 662 | json-buffer "3.0.0" 663 | 664 | latest-version@^5.0.0: 665 | version "5.1.0" 666 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 667 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 668 | dependencies: 669 | package-json "^6.3.0" 670 | 671 | lodash@^4.17.20: 672 | version "4.17.20" 673 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 674 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 675 | 676 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 677 | version "1.0.1" 678 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 679 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 680 | 681 | lowercase-keys@^2.0.0: 682 | version "2.0.0" 683 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 684 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 685 | 686 | make-dir@^3.0.0: 687 | version "3.1.0" 688 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 689 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 690 | dependencies: 691 | semver "^6.0.0" 692 | 693 | media-typer@0.3.0: 694 | version "0.3.0" 695 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 696 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 697 | 698 | merge-descriptors@1.0.1: 699 | version "1.0.1" 700 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 701 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 702 | 703 | methods@~1.1.2: 704 | version "1.1.2" 705 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 706 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 707 | 708 | mime-db@1.44.0: 709 | version "1.44.0" 710 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 711 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 712 | 713 | mime-types@~2.1.24: 714 | version "2.1.27" 715 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 716 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== 717 | dependencies: 718 | mime-db "1.44.0" 719 | 720 | mime@1.6.0: 721 | version "1.6.0" 722 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 723 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 724 | 725 | mimic-response@^1.0.0, mimic-response@^1.0.1: 726 | version "1.0.1" 727 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 728 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 729 | 730 | minimatch@^3.0.4: 731 | version "3.0.4" 732 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 733 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 734 | dependencies: 735 | brace-expansion "^1.1.7" 736 | 737 | minimist@^1.2.0: 738 | version "1.2.5" 739 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 740 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 741 | 742 | ms@2.0.0: 743 | version "2.0.0" 744 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 745 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 746 | 747 | ms@2.1.1: 748 | version "2.1.1" 749 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 750 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 751 | 752 | ms@^2.1.1: 753 | version "2.1.2" 754 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 755 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 756 | 757 | negotiator@0.6.2: 758 | version "0.6.2" 759 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 760 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 761 | 762 | nodemon@^2.0.6: 763 | version "2.0.6" 764 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.6.tgz#1abe1937b463aaf62f0d52e2b7eaadf28cc2240d" 765 | integrity sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ== 766 | dependencies: 767 | chokidar "^3.2.2" 768 | debug "^3.2.6" 769 | ignore-by-default "^1.0.1" 770 | minimatch "^3.0.4" 771 | pstree.remy "^1.1.7" 772 | semver "^5.7.1" 773 | supports-color "^5.5.0" 774 | touch "^3.1.0" 775 | undefsafe "^2.0.3" 776 | update-notifier "^4.1.0" 777 | 778 | nopt@~1.0.10: 779 | version "1.0.10" 780 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 781 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 782 | dependencies: 783 | abbrev "1" 784 | 785 | normalize-path@^3.0.0, normalize-path@~3.0.0: 786 | version "3.0.0" 787 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 788 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 789 | 790 | normalize-url@^4.1.0: 791 | version "4.5.0" 792 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 793 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== 794 | 795 | on-finished@~2.3.0: 796 | version "2.3.0" 797 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 798 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 799 | dependencies: 800 | ee-first "1.1.1" 801 | 802 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 803 | version "1.4.0" 804 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 805 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 806 | dependencies: 807 | wrappy "1" 808 | 809 | p-cancelable@^1.0.0: 810 | version "1.1.0" 811 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 812 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 813 | 814 | package-json@^6.3.0: 815 | version "6.5.0" 816 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 817 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 818 | dependencies: 819 | got "^9.6.0" 820 | registry-auth-token "^4.0.0" 821 | registry-url "^5.0.0" 822 | semver "^6.2.0" 823 | 824 | parseurl@~1.3.3: 825 | version "1.3.3" 826 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 827 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 828 | 829 | path-is-absolute@^1.0.0: 830 | version "1.0.1" 831 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 832 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 833 | 834 | path-to-regexp@0.1.7: 835 | version "0.1.7" 836 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 837 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 838 | 839 | picomatch@^2.0.4, picomatch@^2.2.1: 840 | version "2.2.2" 841 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 842 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 843 | 844 | prepend-http@^2.0.0: 845 | version "2.0.0" 846 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 847 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 848 | 849 | prom-client@^12.0.0: 850 | version "12.0.0" 851 | resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-12.0.0.tgz#9689379b19bd3f6ab88a9866124db9da3d76c6ed" 852 | integrity sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ== 853 | dependencies: 854 | tdigest "^0.1.1" 855 | 856 | promise-sequential@^1.1.1: 857 | version "1.1.1" 858 | resolved "https://registry.yarnpkg.com/promise-sequential/-/promise-sequential-1.1.1.tgz#f79e8950ef86e7a7a85bf320452643592f6d2fb2" 859 | integrity sha1-956JUO+G56eoW/MgRSZDWS9tL7I= 860 | 861 | proxy-addr@~2.0.5: 862 | version "2.0.6" 863 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 864 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 865 | dependencies: 866 | forwarded "~0.1.2" 867 | ipaddr.js "1.9.1" 868 | 869 | pstree.remy@^1.1.7: 870 | version "1.1.8" 871 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 872 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 873 | 874 | pump@^3.0.0: 875 | version "3.0.0" 876 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 877 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 878 | dependencies: 879 | end-of-stream "^1.1.0" 880 | once "^1.3.1" 881 | 882 | pupa@^2.0.1: 883 | version "2.1.1" 884 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 885 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== 886 | dependencies: 887 | escape-goat "^2.0.0" 888 | 889 | qs@6.7.0: 890 | version "6.7.0" 891 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 892 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 893 | 894 | range-parser@~1.2.1: 895 | version "1.2.1" 896 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 897 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 898 | 899 | raw-body@2.4.0: 900 | version "2.4.0" 901 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 902 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 903 | dependencies: 904 | bytes "3.1.0" 905 | http-errors "1.7.2" 906 | iconv-lite "0.4.24" 907 | unpipe "1.0.0" 908 | 909 | rc@^1.2.8: 910 | version "1.2.8" 911 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 912 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 913 | dependencies: 914 | deep-extend "^0.6.0" 915 | ini "~1.3.0" 916 | minimist "^1.2.0" 917 | strip-json-comments "~2.0.1" 918 | 919 | readdirp@~3.5.0: 920 | version "3.5.0" 921 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 922 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 923 | dependencies: 924 | picomatch "^2.2.1" 925 | 926 | registry-auth-token@^4.0.0: 927 | version "4.2.1" 928 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" 929 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== 930 | dependencies: 931 | rc "^1.2.8" 932 | 933 | registry-url@^5.0.0: 934 | version "5.1.0" 935 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 936 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 937 | dependencies: 938 | rc "^1.2.8" 939 | 940 | responselike@^1.0.2: 941 | version "1.0.2" 942 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 943 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 944 | dependencies: 945 | lowercase-keys "^1.0.0" 946 | 947 | safe-buffer@5.1.2: 948 | version "5.1.2" 949 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 950 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 951 | 952 | "safer-buffer@>= 2.1.2 < 3": 953 | version "2.1.2" 954 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 955 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 956 | 957 | semver-diff@^3.1.1: 958 | version "3.1.1" 959 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 960 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 961 | dependencies: 962 | semver "^6.3.0" 963 | 964 | semver@^5.7.1: 965 | version "5.7.1" 966 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 967 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 968 | 969 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 970 | version "6.3.0" 971 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 972 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 973 | 974 | send@0.17.1: 975 | version "0.17.1" 976 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 977 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 978 | dependencies: 979 | debug "2.6.9" 980 | depd "~1.1.2" 981 | destroy "~1.0.4" 982 | encodeurl "~1.0.2" 983 | escape-html "~1.0.3" 984 | etag "~1.8.1" 985 | fresh "0.5.2" 986 | http-errors "~1.7.2" 987 | mime "1.6.0" 988 | ms "2.1.1" 989 | on-finished "~2.3.0" 990 | range-parser "~1.2.1" 991 | statuses "~1.5.0" 992 | 993 | serve-static@1.14.1: 994 | version "1.14.1" 995 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 996 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 997 | dependencies: 998 | encodeurl "~1.0.2" 999 | escape-html "~1.0.3" 1000 | parseurl "~1.3.3" 1001 | send "0.17.1" 1002 | 1003 | setprototypeof@1.1.1: 1004 | version "1.1.1" 1005 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1006 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1007 | 1008 | signal-exit@^3.0.2: 1009 | version "3.0.3" 1010 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1011 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1012 | 1013 | sprintf-js@~1.0.2: 1014 | version "1.0.3" 1015 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1016 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1017 | 1018 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1019 | version "1.5.0" 1020 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1021 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1022 | 1023 | string-width@^3.0.0: 1024 | version "3.1.0" 1025 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1026 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1027 | dependencies: 1028 | emoji-regex "^7.0.1" 1029 | is-fullwidth-code-point "^2.0.0" 1030 | strip-ansi "^5.1.0" 1031 | 1032 | string-width@^4.0.0, string-width@^4.1.0: 1033 | version "4.2.0" 1034 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1035 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1036 | dependencies: 1037 | emoji-regex "^8.0.0" 1038 | is-fullwidth-code-point "^3.0.0" 1039 | strip-ansi "^6.0.0" 1040 | 1041 | strip-ansi@^5.1.0: 1042 | version "5.2.0" 1043 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1044 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1045 | dependencies: 1046 | ansi-regex "^4.1.0" 1047 | 1048 | strip-ansi@^6.0.0: 1049 | version "6.0.0" 1050 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1051 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1052 | dependencies: 1053 | ansi-regex "^5.0.0" 1054 | 1055 | strip-json-comments@~2.0.1: 1056 | version "2.0.1" 1057 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1058 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1059 | 1060 | supports-color@^5.5.0: 1061 | version "5.5.0" 1062 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1063 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1064 | dependencies: 1065 | has-flag "^3.0.0" 1066 | 1067 | supports-color@^7.1.0: 1068 | version "7.2.0" 1069 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1070 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1071 | dependencies: 1072 | has-flag "^4.0.0" 1073 | 1074 | tdigest@^0.1.1: 1075 | version "0.1.1" 1076 | resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.1.tgz#2e3cb2c39ea449e55d1e6cd91117accca4588021" 1077 | integrity sha1-Ljyyw56kSeVdHmzZEReszKRYgCE= 1078 | dependencies: 1079 | bintrees "1.0.1" 1080 | 1081 | term-size@^2.1.0: 1082 | version "2.2.1" 1083 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" 1084 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== 1085 | 1086 | to-readable-stream@^1.0.0: 1087 | version "1.0.0" 1088 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1089 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1090 | 1091 | to-regex-range@^5.0.1: 1092 | version "5.0.1" 1093 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1094 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1095 | dependencies: 1096 | is-number "^7.0.0" 1097 | 1098 | toidentifier@1.0.0: 1099 | version "1.0.0" 1100 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1101 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1102 | 1103 | touch@^3.1.0: 1104 | version "3.1.0" 1105 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1106 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1107 | dependencies: 1108 | nopt "~1.0.10" 1109 | 1110 | ttl-cache@^1.0.2: 1111 | version "1.0.2" 1112 | resolved "https://registry.yarnpkg.com/ttl-cache/-/ttl-cache-1.0.2.tgz#499596d83e090a9ae77271161adcf8482ae4358b" 1113 | integrity sha1-SZWW2D4JCprncnEWGtz4SCrkNYs= 1114 | 1115 | type-fest@^0.8.1: 1116 | version "0.8.1" 1117 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1118 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1119 | 1120 | type-is@~1.6.17, type-is@~1.6.18: 1121 | version "1.6.18" 1122 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1123 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1124 | dependencies: 1125 | media-typer "0.3.0" 1126 | mime-types "~2.1.24" 1127 | 1128 | typedarray-to-buffer@^3.1.5: 1129 | version "3.1.5" 1130 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1131 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1132 | dependencies: 1133 | is-typedarray "^1.0.0" 1134 | 1135 | undefsafe@^2.0.3: 1136 | version "2.0.3" 1137 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 1138 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 1139 | dependencies: 1140 | debug "^2.2.0" 1141 | 1142 | unique-string@^2.0.0: 1143 | version "2.0.0" 1144 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1145 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1146 | dependencies: 1147 | crypto-random-string "^2.0.0" 1148 | 1149 | unpipe@1.0.0, unpipe@~1.0.0: 1150 | version "1.0.0" 1151 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1152 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1153 | 1154 | update-notifier@^4.1.0: 1155 | version "4.1.3" 1156 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" 1157 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== 1158 | dependencies: 1159 | boxen "^4.2.0" 1160 | chalk "^3.0.0" 1161 | configstore "^5.0.1" 1162 | has-yarn "^2.1.0" 1163 | import-lazy "^2.1.0" 1164 | is-ci "^2.0.0" 1165 | is-installed-globally "^0.3.1" 1166 | is-npm "^4.0.0" 1167 | is-yarn-global "^0.3.0" 1168 | latest-version "^5.0.0" 1169 | pupa "^2.0.1" 1170 | semver-diff "^3.1.1" 1171 | xdg-basedir "^4.0.0" 1172 | 1173 | url-parse-lax@^3.0.0: 1174 | version "3.0.0" 1175 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1176 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1177 | dependencies: 1178 | prepend-http "^2.0.0" 1179 | 1180 | utils-merge@1.0.1: 1181 | version "1.0.1" 1182 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1183 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1184 | 1185 | vary@~1.1.2: 1186 | version "1.1.2" 1187 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1188 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1189 | 1190 | widest-line@^3.1.0: 1191 | version "3.1.0" 1192 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1193 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1194 | dependencies: 1195 | string-width "^4.0.0" 1196 | 1197 | wrappy@1: 1198 | version "1.0.2" 1199 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1200 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1201 | 1202 | write-file-atomic@^3.0.0: 1203 | version "3.0.3" 1204 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1205 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1206 | dependencies: 1207 | imurmurhash "^0.1.4" 1208 | is-typedarray "^1.0.0" 1209 | signal-exit "^3.0.2" 1210 | typedarray-to-buffer "^3.1.5" 1211 | 1212 | xdg-basedir@^4.0.0: 1213 | version "4.0.0" 1214 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1215 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1216 | 1217 | yamljs@^0.3.0: 1218 | version "0.3.0" 1219 | resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" 1220 | integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== 1221 | dependencies: 1222 | argparse "^1.0.7" 1223 | glob "^7.0.5" 1224 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.10.4" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" 8 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.10.4" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" 15 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.2.1": 27 | version "0.2.1" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" 29 | integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | lodash "^4.17.19" 39 | minimatch "^3.0.4" 40 | strip-json-comments "^3.1.1" 41 | 42 | "@types/json5@^0.0.29": 43 | version "0.0.29" 44 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 45 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= 46 | 47 | "@types/node@*": 48 | version "14.14.10" 49 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785" 50 | integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ== 51 | 52 | "@types/yauzl@^2.9.1": 53 | version "2.9.1" 54 | resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" 55 | integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== 56 | dependencies: 57 | "@types/node" "*" 58 | 59 | acorn-jsx@^5.2.0: 60 | version "5.3.1" 61 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 62 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 63 | 64 | acorn@^7.4.0: 65 | version "7.4.1" 66 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 67 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 68 | 69 | agent-base@5: 70 | version "5.1.1" 71 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" 72 | integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== 73 | 74 | ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: 75 | version "6.12.6" 76 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 77 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 78 | dependencies: 79 | fast-deep-equal "^3.1.1" 80 | fast-json-stable-stringify "^2.0.0" 81 | json-schema-traverse "^0.4.1" 82 | uri-js "^4.2.2" 83 | 84 | ansi-colors@^4.1.1: 85 | version "4.1.1" 86 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 87 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 88 | 89 | ansi-regex@^4.1.0: 90 | version "4.1.0" 91 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 92 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 93 | 94 | ansi-regex@^5.0.0: 95 | version "5.0.0" 96 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 97 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 98 | 99 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 100 | version "3.2.1" 101 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 102 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 103 | dependencies: 104 | color-convert "^1.9.0" 105 | 106 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 107 | version "4.3.0" 108 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 109 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 110 | dependencies: 111 | color-convert "^2.0.1" 112 | 113 | argparse@^1.0.7: 114 | version "1.0.10" 115 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 116 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 117 | dependencies: 118 | sprintf-js "~1.0.2" 119 | 120 | array-includes@^3.1.1: 121 | version "3.1.2" 122 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" 123 | integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== 124 | dependencies: 125 | call-bind "^1.0.0" 126 | define-properties "^1.1.3" 127 | es-abstract "^1.18.0-next.1" 128 | get-intrinsic "^1.0.1" 129 | is-string "^1.0.5" 130 | 131 | array.prototype.flat@^1.2.3: 132 | version "1.2.4" 133 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" 134 | integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== 135 | dependencies: 136 | call-bind "^1.0.0" 137 | define-properties "^1.1.3" 138 | es-abstract "^1.18.0-next.1" 139 | 140 | astral-regex@^1.0.0: 141 | version "1.0.0" 142 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 143 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 144 | 145 | balanced-match@^1.0.0: 146 | version "1.0.0" 147 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 148 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 149 | 150 | base64-js@^1.3.1: 151 | version "1.5.1" 152 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 153 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 154 | 155 | bl@^4.0.3: 156 | version "4.0.3" 157 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" 158 | integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== 159 | dependencies: 160 | buffer "^5.5.0" 161 | inherits "^2.0.4" 162 | readable-stream "^3.4.0" 163 | 164 | brace-expansion@^1.1.7: 165 | version "1.1.11" 166 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 167 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 168 | dependencies: 169 | balanced-match "^1.0.0" 170 | concat-map "0.0.1" 171 | 172 | buffer-crc32@~0.2.3: 173 | version "0.2.13" 174 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 175 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 176 | 177 | buffer@^5.2.1, buffer@^5.5.0: 178 | version "5.7.1" 179 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 180 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 181 | dependencies: 182 | base64-js "^1.3.1" 183 | ieee754 "^1.1.13" 184 | 185 | call-bind@^1.0.0: 186 | version "1.0.0" 187 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" 188 | integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== 189 | dependencies: 190 | function-bind "^1.1.1" 191 | get-intrinsic "^1.0.0" 192 | 193 | callsites@^3.0.0: 194 | version "3.1.0" 195 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 196 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 197 | 198 | chalk@^2.0.0: 199 | version "2.4.2" 200 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 201 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 202 | dependencies: 203 | ansi-styles "^3.2.1" 204 | escape-string-regexp "^1.0.5" 205 | supports-color "^5.3.0" 206 | 207 | chalk@^4.0.0, chalk@^4.1.0: 208 | version "4.1.0" 209 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 210 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 211 | dependencies: 212 | ansi-styles "^4.1.0" 213 | supports-color "^7.1.0" 214 | 215 | chownr@^1.1.1: 216 | version "1.1.4" 217 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 218 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 219 | 220 | cli-cursor@^3.1.0: 221 | version "3.1.0" 222 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 223 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 224 | dependencies: 225 | restore-cursor "^3.1.0" 226 | 227 | cli-spinners@^2.4.0: 228 | version "2.5.0" 229 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" 230 | integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== 231 | 232 | cli-table3@^0.6.0: 233 | version "0.6.0" 234 | resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" 235 | integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== 236 | dependencies: 237 | object-assign "^4.1.0" 238 | string-width "^4.2.0" 239 | optionalDependencies: 240 | colors "^1.1.2" 241 | 242 | cliui@^7.0.2: 243 | version "7.0.4" 244 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 245 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 246 | dependencies: 247 | string-width "^4.2.0" 248 | strip-ansi "^6.0.0" 249 | wrap-ansi "^7.0.0" 250 | 251 | clone@^1.0.2: 252 | version "1.0.4" 253 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 254 | integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 255 | 256 | color-convert@^1.9.0: 257 | version "1.9.3" 258 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 259 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 260 | dependencies: 261 | color-name "1.1.3" 262 | 263 | color-convert@^2.0.1: 264 | version "2.0.1" 265 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 266 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 267 | dependencies: 268 | color-name "~1.1.4" 269 | 270 | color-name@1.1.3: 271 | version "1.1.3" 272 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 273 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 274 | 275 | color-name@~1.1.4: 276 | version "1.1.4" 277 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 278 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 279 | 280 | colors@^1.1.2: 281 | version "1.4.0" 282 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 283 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 284 | 285 | concat-map@0.0.1: 286 | version "0.0.1" 287 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 288 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 289 | 290 | confusing-browser-globals@^1.0.10: 291 | version "1.0.10" 292 | resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" 293 | integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== 294 | 295 | contains-path@^0.1.0: 296 | version "0.1.0" 297 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 298 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 299 | 300 | cookie@^0.4.1: 301 | version "0.4.1" 302 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" 303 | integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== 304 | 305 | cross-spawn@^7.0.2: 306 | version "7.0.3" 307 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 308 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 309 | dependencies: 310 | path-key "^3.1.0" 311 | shebang-command "^2.0.0" 312 | which "^2.0.1" 313 | 314 | debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: 315 | version "4.3.1" 316 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 317 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 318 | dependencies: 319 | ms "2.1.2" 320 | 321 | debug@^2.6.9: 322 | version "2.6.9" 323 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 324 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 325 | dependencies: 326 | ms "2.0.0" 327 | 328 | deep-is@^0.1.3: 329 | version "0.1.3" 330 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 331 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 332 | 333 | defaults@^1.0.3: 334 | version "1.0.3" 335 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 336 | integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 337 | dependencies: 338 | clone "^1.0.2" 339 | 340 | define-properties@^1.1.3: 341 | version "1.1.3" 342 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 343 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 344 | dependencies: 345 | object-keys "^1.0.12" 346 | 347 | devtools-protocol@0.0.818844: 348 | version "0.0.818844" 349 | resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.818844.tgz#d1947278ec85b53e4c8ca598f607a28fa785ba9e" 350 | integrity sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg== 351 | 352 | doctrine@1.5.0: 353 | version "1.5.0" 354 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 355 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 356 | dependencies: 357 | esutils "^2.0.2" 358 | isarray "^1.0.0" 359 | 360 | doctrine@^3.0.0: 361 | version "3.0.0" 362 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 363 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 364 | dependencies: 365 | esutils "^2.0.2" 366 | 367 | dotenv@^8.2.0: 368 | version "8.2.0" 369 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 370 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 371 | 372 | emoji-regex@^7.0.1: 373 | version "7.0.3" 374 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 375 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 376 | 377 | emoji-regex@^8.0.0: 378 | version "8.0.0" 379 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 380 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 381 | 382 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 383 | version "1.4.4" 384 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 385 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 386 | dependencies: 387 | once "^1.4.0" 388 | 389 | enquirer@^2.3.5: 390 | version "2.3.6" 391 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 392 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 393 | dependencies: 394 | ansi-colors "^4.1.1" 395 | 396 | error-ex@^1.2.0: 397 | version "1.3.2" 398 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 399 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 400 | dependencies: 401 | is-arrayish "^0.2.1" 402 | 403 | es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: 404 | version "1.17.7" 405 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" 406 | integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== 407 | dependencies: 408 | es-to-primitive "^1.2.1" 409 | function-bind "^1.1.1" 410 | has "^1.0.3" 411 | has-symbols "^1.0.1" 412 | is-callable "^1.2.2" 413 | is-regex "^1.1.1" 414 | object-inspect "^1.8.0" 415 | object-keys "^1.1.1" 416 | object.assign "^4.1.1" 417 | string.prototype.trimend "^1.0.1" 418 | string.prototype.trimstart "^1.0.1" 419 | 420 | es-abstract@^1.18.0-next.1: 421 | version "1.18.0-next.1" 422 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" 423 | integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== 424 | dependencies: 425 | es-to-primitive "^1.2.1" 426 | function-bind "^1.1.1" 427 | has "^1.0.3" 428 | has-symbols "^1.0.1" 429 | is-callable "^1.2.2" 430 | is-negative-zero "^2.0.0" 431 | is-regex "^1.1.1" 432 | object-inspect "^1.8.0" 433 | object-keys "^1.1.1" 434 | object.assign "^4.1.1" 435 | string.prototype.trimend "^1.0.1" 436 | string.prototype.trimstart "^1.0.1" 437 | 438 | es-to-primitive@^1.2.1: 439 | version "1.2.1" 440 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 441 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 442 | dependencies: 443 | is-callable "^1.1.4" 444 | is-date-object "^1.0.1" 445 | is-symbol "^1.0.2" 446 | 447 | escalade@^3.1.1: 448 | version "3.1.1" 449 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 450 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 451 | 452 | escape-string-regexp@^1.0.5: 453 | version "1.0.5" 454 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 455 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 456 | 457 | eslint-config-airbnb-base@^14.2.1: 458 | version "14.2.1" 459 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" 460 | integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== 461 | dependencies: 462 | confusing-browser-globals "^1.0.10" 463 | object.assign "^4.1.2" 464 | object.entries "^1.1.2" 465 | 466 | eslint-import-resolver-node@^0.3.4: 467 | version "0.3.4" 468 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" 469 | integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== 470 | dependencies: 471 | debug "^2.6.9" 472 | resolve "^1.13.1" 473 | 474 | eslint-module-utils@^2.6.0: 475 | version "2.6.0" 476 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" 477 | integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== 478 | dependencies: 479 | debug "^2.6.9" 480 | pkg-dir "^2.0.0" 481 | 482 | eslint-plugin-import@^2.22.1: 483 | version "2.22.1" 484 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" 485 | integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== 486 | dependencies: 487 | array-includes "^3.1.1" 488 | array.prototype.flat "^1.2.3" 489 | contains-path "^0.1.0" 490 | debug "^2.6.9" 491 | doctrine "1.5.0" 492 | eslint-import-resolver-node "^0.3.4" 493 | eslint-module-utils "^2.6.0" 494 | has "^1.0.3" 495 | minimatch "^3.0.4" 496 | object.values "^1.1.1" 497 | read-pkg-up "^2.0.0" 498 | resolve "^1.17.0" 499 | tsconfig-paths "^3.9.0" 500 | 501 | eslint-scope@^5.1.1: 502 | version "5.1.1" 503 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 504 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 505 | dependencies: 506 | esrecurse "^4.3.0" 507 | estraverse "^4.1.1" 508 | 509 | eslint-utils@^2.1.0: 510 | version "2.1.0" 511 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 512 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 513 | dependencies: 514 | eslint-visitor-keys "^1.1.0" 515 | 516 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 517 | version "1.3.0" 518 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 519 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 520 | 521 | eslint-visitor-keys@^2.0.0: 522 | version "2.0.0" 523 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 524 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 525 | 526 | eslint@^7.14.0: 527 | version "7.14.0" 528 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.14.0.tgz#2d2cac1d28174c510a97b377f122a5507958e344" 529 | integrity sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA== 530 | dependencies: 531 | "@babel/code-frame" "^7.0.0" 532 | "@eslint/eslintrc" "^0.2.1" 533 | ajv "^6.10.0" 534 | chalk "^4.0.0" 535 | cross-spawn "^7.0.2" 536 | debug "^4.0.1" 537 | doctrine "^3.0.0" 538 | enquirer "^2.3.5" 539 | eslint-scope "^5.1.1" 540 | eslint-utils "^2.1.0" 541 | eslint-visitor-keys "^2.0.0" 542 | espree "^7.3.0" 543 | esquery "^1.2.0" 544 | esutils "^2.0.2" 545 | file-entry-cache "^5.0.1" 546 | functional-red-black-tree "^1.0.1" 547 | glob-parent "^5.0.0" 548 | globals "^12.1.0" 549 | ignore "^4.0.6" 550 | import-fresh "^3.0.0" 551 | imurmurhash "^0.1.4" 552 | is-glob "^4.0.0" 553 | js-yaml "^3.13.1" 554 | json-stable-stringify-without-jsonify "^1.0.1" 555 | levn "^0.4.1" 556 | lodash "^4.17.19" 557 | minimatch "^3.0.4" 558 | natural-compare "^1.4.0" 559 | optionator "^0.9.1" 560 | progress "^2.0.0" 561 | regexpp "^3.1.0" 562 | semver "^7.2.1" 563 | strip-ansi "^6.0.0" 564 | strip-json-comments "^3.1.0" 565 | table "^5.2.3" 566 | text-table "^0.2.0" 567 | v8-compile-cache "^2.0.3" 568 | 569 | espree@^7.3.0: 570 | version "7.3.0" 571 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" 572 | integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== 573 | dependencies: 574 | acorn "^7.4.0" 575 | acorn-jsx "^5.2.0" 576 | eslint-visitor-keys "^1.3.0" 577 | 578 | esprima@^4.0.0: 579 | version "4.0.1" 580 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 581 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 582 | 583 | esquery@^1.2.0: 584 | version "1.3.1" 585 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 586 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 587 | dependencies: 588 | estraverse "^5.1.0" 589 | 590 | esrecurse@^4.3.0: 591 | version "4.3.0" 592 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 593 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 594 | dependencies: 595 | estraverse "^5.2.0" 596 | 597 | estraverse@^4.1.1: 598 | version "4.3.0" 599 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 600 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 601 | 602 | estraverse@^5.1.0, estraverse@^5.2.0: 603 | version "5.2.0" 604 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 605 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 606 | 607 | esutils@^2.0.2: 608 | version "2.0.3" 609 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 610 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 611 | 612 | extract-zip@^2.0.0: 613 | version "2.0.1" 614 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" 615 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== 616 | dependencies: 617 | debug "^4.1.1" 618 | get-stream "^5.1.0" 619 | yauzl "^2.10.0" 620 | optionalDependencies: 621 | "@types/yauzl" "^2.9.1" 622 | 623 | fast-deep-equal@^3.1.1: 624 | version "3.1.3" 625 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 626 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 627 | 628 | fast-json-stable-stringify@^2.0.0: 629 | version "2.1.0" 630 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 631 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 632 | 633 | fast-levenshtein@^2.0.6: 634 | version "2.0.6" 635 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 636 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 637 | 638 | fd-slicer@~1.1.0: 639 | version "1.1.0" 640 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 641 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 642 | dependencies: 643 | pend "~1.2.0" 644 | 645 | file-entry-cache@^5.0.1: 646 | version "5.0.1" 647 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 648 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 649 | dependencies: 650 | flat-cache "^2.0.1" 651 | 652 | filesize@^6.1.0: 653 | version "6.1.0" 654 | resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" 655 | integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== 656 | 657 | find-up@^2.0.0, find-up@^2.1.0: 658 | version "2.1.0" 659 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 660 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 661 | dependencies: 662 | locate-path "^2.0.0" 663 | 664 | find-up@^4.0.0: 665 | version "4.1.0" 666 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 667 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 668 | dependencies: 669 | locate-path "^5.0.0" 670 | path-exists "^4.0.0" 671 | 672 | flat-cache@^2.0.1: 673 | version "2.0.1" 674 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 675 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 676 | dependencies: 677 | flatted "^2.0.0" 678 | rimraf "2.6.3" 679 | write "1.0.3" 680 | 681 | flatted@^2.0.0: 682 | version "2.0.2" 683 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 684 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 685 | 686 | fs-constants@^1.0.0: 687 | version "1.0.0" 688 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 689 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 690 | 691 | fs.realpath@^1.0.0: 692 | version "1.0.0" 693 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 694 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 695 | 696 | function-bind@^1.1.1: 697 | version "1.1.1" 698 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 699 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 700 | 701 | functional-red-black-tree@^1.0.1: 702 | version "1.0.1" 703 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 704 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 705 | 706 | get-caller-file@^2.0.5: 707 | version "2.0.5" 708 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 709 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 710 | 711 | get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: 712 | version "1.0.1" 713 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" 714 | integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== 715 | dependencies: 716 | function-bind "^1.1.1" 717 | has "^1.0.3" 718 | has-symbols "^1.0.1" 719 | 720 | get-stream@^5.1.0: 721 | version "5.2.0" 722 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 723 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 724 | dependencies: 725 | pump "^3.0.0" 726 | 727 | glob-parent@^5.0.0: 728 | version "5.1.1" 729 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 730 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 731 | dependencies: 732 | is-glob "^4.0.1" 733 | 734 | glob@^7.1.3: 735 | version "7.1.6" 736 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 737 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 738 | dependencies: 739 | fs.realpath "^1.0.0" 740 | inflight "^1.0.4" 741 | inherits "2" 742 | minimatch "^3.0.4" 743 | once "^1.3.0" 744 | path-is-absolute "^1.0.0" 745 | 746 | globals@^12.1.0: 747 | version "12.4.0" 748 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 749 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 750 | dependencies: 751 | type-fest "^0.8.1" 752 | 753 | graceful-fs@^4.1.2: 754 | version "4.2.4" 755 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 756 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 757 | 758 | has-flag@^3.0.0: 759 | version "3.0.0" 760 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 761 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 762 | 763 | has-flag@^4.0.0: 764 | version "4.0.0" 765 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 766 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 767 | 768 | has-symbols@^1.0.1: 769 | version "1.0.1" 770 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 771 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 772 | 773 | has@^1.0.3: 774 | version "1.0.3" 775 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 776 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 777 | dependencies: 778 | function-bind "^1.1.1" 779 | 780 | hosted-git-info@^2.1.4: 781 | version "2.8.8" 782 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 783 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== 784 | 785 | https-proxy-agent@^4.0.0: 786 | version "4.0.0" 787 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" 788 | integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== 789 | dependencies: 790 | agent-base "5" 791 | debug "4" 792 | 793 | ieee754@^1.1.13: 794 | version "1.2.1" 795 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 796 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 797 | 798 | ignore@^4.0.6: 799 | version "4.0.6" 800 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 801 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 802 | 803 | import-fresh@^3.0.0, import-fresh@^3.2.1: 804 | version "3.2.2" 805 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" 806 | integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== 807 | dependencies: 808 | parent-module "^1.0.0" 809 | resolve-from "^4.0.0" 810 | 811 | imurmurhash@^0.1.4: 812 | version "0.1.4" 813 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 814 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 815 | 816 | inflight@^1.0.4: 817 | version "1.0.6" 818 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 819 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 820 | dependencies: 821 | once "^1.3.0" 822 | wrappy "1" 823 | 824 | inherits@2, inherits@^2.0.3, inherits@^2.0.4: 825 | version "2.0.4" 826 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 827 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 828 | 829 | is-arrayish@^0.2.1: 830 | version "0.2.1" 831 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 832 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 833 | 834 | is-callable@^1.1.4, is-callable@^1.2.2: 835 | version "1.2.2" 836 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" 837 | integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== 838 | 839 | is-core-module@^2.1.0: 840 | version "2.1.0" 841 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" 842 | integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== 843 | dependencies: 844 | has "^1.0.3" 845 | 846 | is-date-object@^1.0.1: 847 | version "1.0.2" 848 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 849 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 850 | 851 | is-extglob@^2.1.1: 852 | version "2.1.1" 853 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 854 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 855 | 856 | is-fullwidth-code-point@^2.0.0: 857 | version "2.0.0" 858 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 859 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 860 | 861 | is-fullwidth-code-point@^3.0.0: 862 | version "3.0.0" 863 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 864 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 865 | 866 | is-glob@^4.0.0, is-glob@^4.0.1: 867 | version "4.0.1" 868 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 869 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 870 | dependencies: 871 | is-extglob "^2.1.1" 872 | 873 | is-interactive@^1.0.0: 874 | version "1.0.0" 875 | resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" 876 | integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== 877 | 878 | is-negative-zero@^2.0.0: 879 | version "2.0.0" 880 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" 881 | integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= 882 | 883 | is-regex@^1.1.1: 884 | version "1.1.1" 885 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" 886 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== 887 | dependencies: 888 | has-symbols "^1.0.1" 889 | 890 | is-string@^1.0.5: 891 | version "1.0.5" 892 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 893 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 894 | 895 | is-symbol@^1.0.2: 896 | version "1.0.3" 897 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 898 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 899 | dependencies: 900 | has-symbols "^1.0.1" 901 | 902 | isarray@^1.0.0: 903 | version "1.0.0" 904 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 905 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 906 | 907 | isexe@^2.0.0: 908 | version "2.0.0" 909 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 910 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 911 | 912 | js-tokens@^4.0.0: 913 | version "4.0.0" 914 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 915 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 916 | 917 | js-yaml@^3.13.1: 918 | version "3.14.0" 919 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 920 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 921 | dependencies: 922 | argparse "^1.0.7" 923 | esprima "^4.0.0" 924 | 925 | json-schema-traverse@^0.4.1: 926 | version "0.4.1" 927 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 928 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 929 | 930 | json-stable-stringify-without-jsonify@^1.0.1: 931 | version "1.0.1" 932 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 933 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 934 | 935 | json5@^1.0.1: 936 | version "1.0.1" 937 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 938 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 939 | dependencies: 940 | minimist "^1.2.0" 941 | 942 | levn@^0.4.1: 943 | version "0.4.1" 944 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 945 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 946 | dependencies: 947 | prelude-ls "^1.2.1" 948 | type-check "~0.4.0" 949 | 950 | load-json-file@^2.0.0: 951 | version "2.0.0" 952 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 953 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 954 | dependencies: 955 | graceful-fs "^4.1.2" 956 | parse-json "^2.2.0" 957 | pify "^2.0.0" 958 | strip-bom "^3.0.0" 959 | 960 | locate-path@^2.0.0: 961 | version "2.0.0" 962 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 963 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 964 | dependencies: 965 | p-locate "^2.0.0" 966 | path-exists "^3.0.0" 967 | 968 | locate-path@^5.0.0: 969 | version "5.0.0" 970 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 971 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 972 | dependencies: 973 | p-locate "^4.1.0" 974 | 975 | lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20: 976 | version "4.17.20" 977 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 978 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 979 | 980 | log-symbols@^4.0.0: 981 | version "4.0.0" 982 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 983 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 984 | dependencies: 985 | chalk "^4.0.0" 986 | 987 | mimic-fn@^2.1.0: 988 | version "2.1.0" 989 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 990 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 991 | 992 | minimatch@^3.0.4: 993 | version "3.0.4" 994 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 995 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 996 | dependencies: 997 | brace-expansion "^1.1.7" 998 | 999 | minimist@^1.2.0, minimist@^1.2.5: 1000 | version "1.2.5" 1001 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1002 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1003 | 1004 | mkdirp-classic@^0.5.2: 1005 | version "0.5.3" 1006 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 1007 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 1008 | 1009 | mkdirp@^0.5.1: 1010 | version "0.5.5" 1011 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1012 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1013 | dependencies: 1014 | minimist "^1.2.5" 1015 | 1016 | ms@2.0.0: 1017 | version "2.0.0" 1018 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1019 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1020 | 1021 | ms@2.1.2: 1022 | version "2.1.2" 1023 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1024 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1025 | 1026 | mute-stream@0.0.8: 1027 | version "0.0.8" 1028 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1029 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1030 | 1031 | natural-compare@^1.4.0: 1032 | version "1.4.0" 1033 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1034 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1035 | 1036 | node-fetch@^2.6.1: 1037 | version "2.6.1" 1038 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 1039 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 1040 | 1041 | normalize-package-data@^2.3.2: 1042 | version "2.5.0" 1043 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1044 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1045 | dependencies: 1046 | hosted-git-info "^2.1.4" 1047 | resolve "^1.10.0" 1048 | semver "2 || 3 || 4 || 5" 1049 | validate-npm-package-license "^3.0.1" 1050 | 1051 | object-assign@^4.1.0: 1052 | version "4.1.1" 1053 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1054 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1055 | 1056 | object-inspect@^1.8.0: 1057 | version "1.8.0" 1058 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" 1059 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== 1060 | 1061 | object-keys@^1.0.12, object-keys@^1.1.1: 1062 | version "1.1.1" 1063 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1064 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1065 | 1066 | object.assign@^4.1.1, object.assign@^4.1.2: 1067 | version "4.1.2" 1068 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1069 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1070 | dependencies: 1071 | call-bind "^1.0.0" 1072 | define-properties "^1.1.3" 1073 | has-symbols "^1.0.1" 1074 | object-keys "^1.1.1" 1075 | 1076 | object.entries@^1.1.2: 1077 | version "1.1.2" 1078 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" 1079 | integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== 1080 | dependencies: 1081 | define-properties "^1.1.3" 1082 | es-abstract "^1.17.5" 1083 | has "^1.0.3" 1084 | 1085 | object.values@^1.1.1: 1086 | version "1.1.1" 1087 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" 1088 | integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== 1089 | dependencies: 1090 | define-properties "^1.1.3" 1091 | es-abstract "^1.17.0-next.1" 1092 | function-bind "^1.1.1" 1093 | has "^1.0.3" 1094 | 1095 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1096 | version "1.4.0" 1097 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1098 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1099 | dependencies: 1100 | wrappy "1" 1101 | 1102 | onetime@^5.1.0: 1103 | version "5.1.2" 1104 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1105 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1106 | dependencies: 1107 | mimic-fn "^2.1.0" 1108 | 1109 | optionator@^0.9.1: 1110 | version "0.9.1" 1111 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1112 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1113 | dependencies: 1114 | deep-is "^0.1.3" 1115 | fast-levenshtein "^2.0.6" 1116 | levn "^0.4.1" 1117 | prelude-ls "^1.2.1" 1118 | type-check "^0.4.0" 1119 | word-wrap "^1.2.3" 1120 | 1121 | ora@^5.1.0: 1122 | version "5.1.0" 1123 | resolved "https://registry.yarnpkg.com/ora/-/ora-5.1.0.tgz#b188cf8cd2d4d9b13fd25383bc3e5cba352c94f8" 1124 | integrity sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== 1125 | dependencies: 1126 | chalk "^4.1.0" 1127 | cli-cursor "^3.1.0" 1128 | cli-spinners "^2.4.0" 1129 | is-interactive "^1.0.0" 1130 | log-symbols "^4.0.0" 1131 | mute-stream "0.0.8" 1132 | strip-ansi "^6.0.0" 1133 | wcwidth "^1.0.1" 1134 | 1135 | p-limit@^1.1.0: 1136 | version "1.3.0" 1137 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1138 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1139 | dependencies: 1140 | p-try "^1.0.0" 1141 | 1142 | p-limit@^2.2.0: 1143 | version "2.3.0" 1144 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1145 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1146 | dependencies: 1147 | p-try "^2.0.0" 1148 | 1149 | p-locate@^2.0.0: 1150 | version "2.0.0" 1151 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1152 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1153 | dependencies: 1154 | p-limit "^1.1.0" 1155 | 1156 | p-locate@^4.1.0: 1157 | version "4.1.0" 1158 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1159 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1160 | dependencies: 1161 | p-limit "^2.2.0" 1162 | 1163 | p-try@^1.0.0: 1164 | version "1.0.0" 1165 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1166 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1167 | 1168 | p-try@^2.0.0: 1169 | version "2.2.0" 1170 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1171 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1172 | 1173 | parent-module@^1.0.0: 1174 | version "1.0.1" 1175 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1176 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1177 | dependencies: 1178 | callsites "^3.0.0" 1179 | 1180 | parse-json@^2.2.0: 1181 | version "2.2.0" 1182 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1183 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1184 | dependencies: 1185 | error-ex "^1.2.0" 1186 | 1187 | path-exists@^3.0.0: 1188 | version "3.0.0" 1189 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1190 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1191 | 1192 | path-exists@^4.0.0: 1193 | version "4.0.0" 1194 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1195 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1196 | 1197 | path-is-absolute@^1.0.0: 1198 | version "1.0.1" 1199 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1200 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1201 | 1202 | path-key@^3.1.0: 1203 | version "3.1.1" 1204 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1205 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1206 | 1207 | path-parse@^1.0.6: 1208 | version "1.0.6" 1209 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1210 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1211 | 1212 | path-type@^2.0.0: 1213 | version "2.0.0" 1214 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1215 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 1216 | dependencies: 1217 | pify "^2.0.0" 1218 | 1219 | pend@~1.2.0: 1220 | version "1.2.0" 1221 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1222 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1223 | 1224 | pify@^2.0.0: 1225 | version "2.3.0" 1226 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1227 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1228 | 1229 | pkg-dir@^2.0.0: 1230 | version "2.0.0" 1231 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1232 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1233 | dependencies: 1234 | find-up "^2.1.0" 1235 | 1236 | pkg-dir@^4.2.0: 1237 | version "4.2.0" 1238 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1239 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1240 | dependencies: 1241 | find-up "^4.0.0" 1242 | 1243 | prelude-ls@^1.2.1: 1244 | version "1.2.1" 1245 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1246 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1247 | 1248 | progress@^2.0.0, progress@^2.0.1: 1249 | version "2.0.3" 1250 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1251 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1252 | 1253 | proxy-from-env@^1.0.0: 1254 | version "1.1.0" 1255 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 1256 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 1257 | 1258 | pump@^3.0.0: 1259 | version "3.0.0" 1260 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1261 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1262 | dependencies: 1263 | end-of-stream "^1.1.0" 1264 | once "^1.3.1" 1265 | 1266 | punycode@^2.1.0: 1267 | version "2.1.1" 1268 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1269 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1270 | 1271 | puppeteer@^5.5.0: 1272 | version "5.5.0" 1273 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.5.0.tgz#331a7edd212ca06b4a556156435f58cbae08af00" 1274 | integrity sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg== 1275 | dependencies: 1276 | debug "^4.1.0" 1277 | devtools-protocol "0.0.818844" 1278 | extract-zip "^2.0.0" 1279 | https-proxy-agent "^4.0.0" 1280 | node-fetch "^2.6.1" 1281 | pkg-dir "^4.2.0" 1282 | progress "^2.0.1" 1283 | proxy-from-env "^1.0.0" 1284 | rimraf "^3.0.2" 1285 | tar-fs "^2.0.0" 1286 | unbzip2-stream "^1.3.3" 1287 | ws "^7.2.3" 1288 | 1289 | read-pkg-up@^2.0.0: 1290 | version "2.0.0" 1291 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1292 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 1293 | dependencies: 1294 | find-up "^2.0.0" 1295 | read-pkg "^2.0.0" 1296 | 1297 | read-pkg@^2.0.0: 1298 | version "2.0.0" 1299 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1300 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 1301 | dependencies: 1302 | load-json-file "^2.0.0" 1303 | normalize-package-data "^2.3.2" 1304 | path-type "^2.0.0" 1305 | 1306 | readable-stream@^3.1.1, readable-stream@^3.4.0: 1307 | version "3.6.0" 1308 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1309 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1310 | dependencies: 1311 | inherits "^2.0.3" 1312 | string_decoder "^1.1.1" 1313 | util-deprecate "^1.0.1" 1314 | 1315 | regexpp@^3.1.0: 1316 | version "3.1.0" 1317 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1318 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1319 | 1320 | require-directory@^2.1.1: 1321 | version "2.1.1" 1322 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1323 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1324 | 1325 | resolve-from@^4.0.0: 1326 | version "4.0.0" 1327 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1328 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1329 | 1330 | resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: 1331 | version "1.19.0" 1332 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 1333 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 1334 | dependencies: 1335 | is-core-module "^2.1.0" 1336 | path-parse "^1.0.6" 1337 | 1338 | restore-cursor@^3.1.0: 1339 | version "3.1.0" 1340 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1341 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1342 | dependencies: 1343 | onetime "^5.1.0" 1344 | signal-exit "^3.0.2" 1345 | 1346 | rimraf@2.6.3: 1347 | version "2.6.3" 1348 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1349 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1350 | dependencies: 1351 | glob "^7.1.3" 1352 | 1353 | rimraf@^3.0.2: 1354 | version "3.0.2" 1355 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1356 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1357 | dependencies: 1358 | glob "^7.1.3" 1359 | 1360 | safe-buffer@~5.2.0: 1361 | version "5.2.1" 1362 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1363 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1364 | 1365 | "semver@2 || 3 || 4 || 5": 1366 | version "5.7.1" 1367 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1368 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1369 | 1370 | semver@^7.2.1: 1371 | version "7.3.2" 1372 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 1373 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 1374 | 1375 | shebang-command@^2.0.0: 1376 | version "2.0.0" 1377 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1378 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1379 | dependencies: 1380 | shebang-regex "^3.0.0" 1381 | 1382 | shebang-regex@^3.0.0: 1383 | version "3.0.0" 1384 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1385 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1386 | 1387 | signal-exit@^3.0.2: 1388 | version "3.0.3" 1389 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1390 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1391 | 1392 | slice-ansi@^2.1.0: 1393 | version "2.1.0" 1394 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1395 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1396 | dependencies: 1397 | ansi-styles "^3.2.0" 1398 | astral-regex "^1.0.0" 1399 | is-fullwidth-code-point "^2.0.0" 1400 | 1401 | spdx-correct@^3.0.0: 1402 | version "3.1.1" 1403 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1404 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1405 | dependencies: 1406 | spdx-expression-parse "^3.0.0" 1407 | spdx-license-ids "^3.0.0" 1408 | 1409 | spdx-exceptions@^2.1.0: 1410 | version "2.3.0" 1411 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1412 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1413 | 1414 | spdx-expression-parse@^3.0.0: 1415 | version "3.0.1" 1416 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1417 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1418 | dependencies: 1419 | spdx-exceptions "^2.1.0" 1420 | spdx-license-ids "^3.0.0" 1421 | 1422 | spdx-license-ids@^3.0.0: 1423 | version "3.0.6" 1424 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" 1425 | integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== 1426 | 1427 | sprintf-js@~1.0.2: 1428 | version "1.0.3" 1429 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1430 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1431 | 1432 | string-width@^3.0.0: 1433 | version "3.1.0" 1434 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1435 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1436 | dependencies: 1437 | emoji-regex "^7.0.1" 1438 | is-fullwidth-code-point "^2.0.0" 1439 | strip-ansi "^5.1.0" 1440 | 1441 | string-width@^4.1.0, string-width@^4.2.0: 1442 | version "4.2.0" 1443 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1444 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1445 | dependencies: 1446 | emoji-regex "^8.0.0" 1447 | is-fullwidth-code-point "^3.0.0" 1448 | strip-ansi "^6.0.0" 1449 | 1450 | string.prototype.trimend@^1.0.1: 1451 | version "1.0.3" 1452 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" 1453 | integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== 1454 | dependencies: 1455 | call-bind "^1.0.0" 1456 | define-properties "^1.1.3" 1457 | 1458 | string.prototype.trimstart@^1.0.1: 1459 | version "1.0.3" 1460 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" 1461 | integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== 1462 | dependencies: 1463 | call-bind "^1.0.0" 1464 | define-properties "^1.1.3" 1465 | 1466 | string_decoder@^1.1.1: 1467 | version "1.3.0" 1468 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1469 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1470 | dependencies: 1471 | safe-buffer "~5.2.0" 1472 | 1473 | strip-ansi@^5.1.0: 1474 | version "5.2.0" 1475 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1476 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1477 | dependencies: 1478 | ansi-regex "^4.1.0" 1479 | 1480 | strip-ansi@^6.0.0: 1481 | version "6.0.0" 1482 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1483 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1484 | dependencies: 1485 | ansi-regex "^5.0.0" 1486 | 1487 | strip-bom@^3.0.0: 1488 | version "3.0.0" 1489 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1490 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1491 | 1492 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1493 | version "3.1.1" 1494 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1495 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1496 | 1497 | supports-color@^5.3.0: 1498 | version "5.5.0" 1499 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1500 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1501 | dependencies: 1502 | has-flag "^3.0.0" 1503 | 1504 | supports-color@^7.1.0: 1505 | version "7.2.0" 1506 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1507 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1508 | dependencies: 1509 | has-flag "^4.0.0" 1510 | 1511 | table@^5.2.3: 1512 | version "5.4.6" 1513 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1514 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1515 | dependencies: 1516 | ajv "^6.10.2" 1517 | lodash "^4.17.14" 1518 | slice-ansi "^2.1.0" 1519 | string-width "^3.0.0" 1520 | 1521 | tar-fs@^2.0.0: 1522 | version "2.1.1" 1523 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1524 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1525 | dependencies: 1526 | chownr "^1.1.1" 1527 | mkdirp-classic "^0.5.2" 1528 | pump "^3.0.0" 1529 | tar-stream "^2.1.4" 1530 | 1531 | tar-stream@^2.1.4: 1532 | version "2.1.4" 1533 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" 1534 | integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== 1535 | dependencies: 1536 | bl "^4.0.3" 1537 | end-of-stream "^1.4.1" 1538 | fs-constants "^1.0.0" 1539 | inherits "^2.0.3" 1540 | readable-stream "^3.1.1" 1541 | 1542 | text-table@^0.2.0: 1543 | version "0.2.0" 1544 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1545 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1546 | 1547 | through@^2.3.8: 1548 | version "2.3.8" 1549 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1550 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1551 | 1552 | tsconfig-paths@^3.9.0: 1553 | version "3.9.0" 1554 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" 1555 | integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== 1556 | dependencies: 1557 | "@types/json5" "^0.0.29" 1558 | json5 "^1.0.1" 1559 | minimist "^1.2.0" 1560 | strip-bom "^3.0.0" 1561 | 1562 | type-check@^0.4.0, type-check@~0.4.0: 1563 | version "0.4.0" 1564 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1565 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1566 | dependencies: 1567 | prelude-ls "^1.2.1" 1568 | 1569 | type-fest@^0.8.1: 1570 | version "0.8.1" 1571 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1572 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1573 | 1574 | unbzip2-stream@^1.3.3: 1575 | version "1.4.3" 1576 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" 1577 | integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== 1578 | dependencies: 1579 | buffer "^5.2.1" 1580 | through "^2.3.8" 1581 | 1582 | uri-js@^4.2.2: 1583 | version "4.4.0" 1584 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" 1585 | integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== 1586 | dependencies: 1587 | punycode "^2.1.0" 1588 | 1589 | util-deprecate@^1.0.1: 1590 | version "1.0.2" 1591 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1592 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1593 | 1594 | v8-compile-cache@^2.0.3: 1595 | version "2.2.0" 1596 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" 1597 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== 1598 | 1599 | validate-npm-package-license@^3.0.1: 1600 | version "3.0.4" 1601 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1602 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1603 | dependencies: 1604 | spdx-correct "^3.0.0" 1605 | spdx-expression-parse "^3.0.0" 1606 | 1607 | wcwidth@^1.0.1: 1608 | version "1.0.1" 1609 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 1610 | integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 1611 | dependencies: 1612 | defaults "^1.0.3" 1613 | 1614 | which@^2.0.1: 1615 | version "2.0.2" 1616 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1617 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1618 | dependencies: 1619 | isexe "^2.0.0" 1620 | 1621 | word-wrap@^1.2.3: 1622 | version "1.2.3" 1623 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1624 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1625 | 1626 | wrap-ansi@^7.0.0: 1627 | version "7.0.0" 1628 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1629 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1630 | dependencies: 1631 | ansi-styles "^4.0.0" 1632 | string-width "^4.1.0" 1633 | strip-ansi "^6.0.0" 1634 | 1635 | wrappy@1: 1636 | version "1.0.2" 1637 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1638 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1639 | 1640 | write@1.0.3: 1641 | version "1.0.3" 1642 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1643 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1644 | dependencies: 1645 | mkdirp "^0.5.1" 1646 | 1647 | ws@^7.2.3: 1648 | version "7.4.0" 1649 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" 1650 | integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== 1651 | 1652 | y18n@^5.0.5: 1653 | version "5.0.5" 1654 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" 1655 | integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== 1656 | 1657 | yargs-parser@^20.2.2: 1658 | version "20.2.4" 1659 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1660 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1661 | 1662 | yargs@^16.1.1: 1663 | version "16.1.1" 1664 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.1.tgz#5a4a095bd1ca806b0a50d0c03611d38034d219a1" 1665 | integrity sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w== 1666 | dependencies: 1667 | cliui "^7.0.2" 1668 | escalade "^3.1.1" 1669 | get-caller-file "^2.0.5" 1670 | require-directory "^2.1.1" 1671 | string-width "^4.2.0" 1672 | y18n "^5.0.5" 1673 | yargs-parser "^20.2.2" 1674 | 1675 | yauzl@^2.10.0: 1676 | version "2.10.0" 1677 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1678 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 1679 | dependencies: 1680 | buffer-crc32 "~0.2.3" 1681 | fd-slicer "~1.1.0" 1682 | --------------------------------------------------------------------------------