├── .editorconfig ├── .gitattributes ├── .github └── workflows │ ├── lint.yml │ └── test.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── action.yml ├── index.js ├── package.json ├── test ├── app-in-root │ ├── index.html │ ├── main.js │ ├── package.json │ ├── preload.js │ └── renderer.js ├── app-in-subdirectory │ ├── app │ │ ├── index.html │ │ ├── main.js │ │ ├── preload.js │ │ └── renderer.js │ └── package.json └── vue-app │ ├── babel.config.js │ ├── package.json │ ├── public │ ├── favicon.ico │ └── index.html │ ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── background.js │ ├── components │ │ └── HelloWorld.vue │ └── main.js │ └── vue.config.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 2 7 | indent_style = tab 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.{md,yml}] 12 | indent_style = space 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | test/**/* linguist-vendored 3 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: 4 | - pull_request 5 | - push 6 | 7 | jobs: 8 | lint: 9 | name: Lint 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Check out Git repository 14 | uses: actions/checkout@v2 15 | 16 | - name: Set up Node.js 17 | uses: actions/setup-node@v1 18 | with: 19 | node-version: 16 20 | 21 | - name: Install dependencies 22 | run: yarn install 23 | 24 | - name: Lint 25 | run: | 26 | yarn lint 27 | yarn format 28 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | - push 5 | - pull_request 6 | 7 | jobs: 8 | test: 9 | name: Test 10 | runs-on: ${{ matrix.os }} 11 | 12 | strategy: 13 | matrix: 14 | os: [macos-latest, ubuntu-latest, windows-latest] 15 | package_manager: [npm, yarn] 16 | package_root: ["./test/app-in-root/", "./test/app-in-subdirectory/", "./test/vue-app"] 17 | 18 | steps: 19 | - name: Check out Git repository 20 | uses: actions/checkout@v2 21 | 22 | - name: Set up Node.js 23 | uses: actions/setup-node@v1 24 | with: 25 | node-version: 16 26 | 27 | - name: Install test app dependencies 28 | run: | 29 | cd ${{ matrix.package_root }} 30 | ${{ matrix.package_manager }} install 31 | 32 | - name: Run action 33 | uses: ./ 34 | with: 35 | github_token: ${{ secrets.github_token }} 36 | package_root: ${{ matrix.package_root }} 37 | use_vue_cli: ${{ contains(matrix.package_root, 'vue')}} 38 | max_attempts: "2" 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | # Lockfiles in test projects 4 | test/**/yarn.lock 5 | test/**/dist_electron 6 | 7 | # Generated files in test projects 8 | test/**/dist/ 9 | test/**/dist_electron/ 10 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019 Samuel Meuli 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Electron Builder Action 2 | 3 | **GitHub Action for building and releasing Electron apps** 4 | 5 | This is a GitHub Action for automatically building and releasing your Electron app using GitHub's CI/CD capabilities. It uses [`electron-builder`](https://github.com/electron-userland/electron-builder) to package your app and release it to a platform like GitHub Releases. 6 | 7 | GitHub Actions allows you to build your app on macOS, Windows and Linux without needing direct access to each of these operating systems. 8 | 9 | ## Setup 10 | 11 | 1. **Install and configure `electron-builder`** (v22+) in your Electron app. You can read about this in [the project's docs](https://www.electron.build) or in [my blog post](https://samuelmeuli.com/blog/2019-04-07-packaging-and-publishing-an-electron-app). 12 | 13 | 2. If you need to compile code (e.g. TypeScript to JavaScript or Sass to CSS), make sure this is done using a **`build` script in your `package.json` file**. The action will execute that script before packaging your app. However, **make sure that the `build` script does _not_ run `electron-builder`**, as this action will do that for you. 14 | 15 | 3. **Add a workflow file** to your project (e.g. `.github/workflows/build.yml`): 16 | 17 | ```yml 18 | name: Build/release 19 | 20 | on: push 21 | 22 | jobs: 23 | release: 24 | runs-on: ${{ matrix.os }} 25 | 26 | strategy: 27 | matrix: 28 | os: [macos-latest, ubuntu-latest, windows-latest] 29 | 30 | steps: 31 | - name: Check out Git repository 32 | uses: actions/checkout@v1 33 | 34 | - name: Install Node.js, NPM and Yarn 35 | uses: actions/setup-node@v1 36 | with: 37 | node-version: 10 38 | 39 | - name: Build/release Electron app 40 | uses: samuelmeuli/action-electron-builder@v1 41 | with: 42 | # GitHub token, automatically provided to the action 43 | # (No need to define this secret in the repo settings) 44 | github_token: ${{ secrets.github_token }} 45 | 46 | # If the commit is tagged with a version (e.g. "v1.0.0"), 47 | # release the app after building 48 | release: ${{ startsWith(github.ref, 'refs/tags/v') }} 49 | ``` 50 | 51 | ## Usage 52 | 53 | ### Building 54 | 55 | Using this the workflow above, GitHub will build your app every time you push a commit. 56 | 57 | ### Releasing 58 | 59 | When you want to create a new release, follow these steps: 60 | 61 | 1. Update the version in your project's `package.json` file (e.g. `1.2.3`) 62 | 2. Commit that change (`git commit -am v1.2.3`) 63 | 3. Tag your commit (`git tag v1.2.3`). Make sure your tag name's format is `v*.*.*`. Your workflow will use this tag to detect when to create a release 64 | 4. Push your changes to GitHub (`git push && git push --tags`) 65 | 66 | After building successfully, the action will publish your release artifacts. By default, a new release draft will be created on GitHub with download links for your app. If you want to change this behavior, have a look at the [`electron-builder` docs](https://www.electron.build). 67 | 68 | ## Configuration 69 | 70 | ### Options 71 | 72 | You can configure the action further with the following options: 73 | 74 | - `package_root`: Directory where NPM/Yarn commands should be run (default: `"."`) 75 | - `build_script_name`: Name of the optional NPM build script which is executed before `electron-builder` (default: `"build"`) 76 | - `skip_build`: Whether the action should execute the NPM build script before running `electron-builder` 77 | - `use_vue_cli`: Whether to run `electron-builder` using the [Vue CLI plugin](https://nklayman.github.io/vue-cli-plugin-electron-builder) instead of calling the command directly 78 | - `args`: Other arguments to pass to the `electron-builder` command, e.g. configuration overrides (default: `""`) 79 | - `max_attempts`: Maximum number of attempts for completing the build and release step (default: `1`) 80 | 81 | See [`action.yml`](./action.yml) for a list of all possible input variables. 82 | 83 | ### Code Signing 84 | 85 | If you are building for **macOS**, you'll want your code to be [signed](https://samuelmeuli.com/blog/2019-04-07-packaging-and-publishing-an-electron-app/#code-signing). GitHub Actions therefore needs access to your code signing certificates: 86 | 87 | - Open the Keychain Access app or the Apple Developer Portal. Export all certificates related to your app into a _single_ file (e.g. `certs.p12`) and set a strong password 88 | - Base64-encode your certificates using the following command: `base64 -i certs.p12 -o encoded.txt` 89 | - In your project's GitHub repository, go to Settings → Secrets and add the following two variables: 90 | - `mac_certs`: Your encoded certificates, i.e. the content of the `encoded.txt` file you created before 91 | - `mac_certs_password`: The password you set when exporting the certificates 92 | 93 | Add the following options to your workflow's existing `action-electron-builder` step: 94 | 95 | ```yml 96 | - name: Build/release Electron app 97 | uses: samuelmeuli/action-electron-builder@v1 98 | with: 99 | # ... 100 | mac_certs: ${{ secrets.mac_certs }} 101 | mac_certs_password: ${{ secrets.mac_certs_password }} 102 | ``` 103 | 104 | The same goes for **Windows** code signing (`windows_certs` and `windows_certs_password` secrets). 105 | 106 | ### Notarization 107 | 108 | If you've configured `electron-builder` to notarize your Electron Mac app [as described in this guide](https://samuelmeuli.com/blog/2019-12-28-notarizing-your-electron-app), you can use the following steps to let GitHub Actions perform the notarization for you: 109 | 110 | 1. Define the following secrets in your repository's settings on GitHub: 111 | 112 | - `api_key`: Content of the API key file (with the `p8` file extension) 113 | - `api_key_id`: Key ID found on App Store Connect 114 | - `api_key_issuer_id`: Issuer ID found on App Store Connect 115 | 116 | 2. In your workflow file, add the following step before your `action-electron-builder` step: 117 | 118 | ```yml 119 | - name: Prepare for app notarization 120 | if: startsWith(matrix.os, 'macos') 121 | # Import Apple API key for app notarization on macOS 122 | run: | 123 | mkdir -p ~/private_keys/ 124 | echo '${{ secrets.api_key }}' > ~/private_keys/AuthKey_${{ secrets.api_key_id }}.p8 125 | ``` 126 | 127 | 3. Pass the following environment variables to `action-electron-builder`: 128 | 129 | ```yml 130 | - name: Build/release Electron app 131 | uses: samuelmeuli/action-electron-builder@v1 132 | with: 133 | # ... 134 | env: 135 | # macOS notarization API key 136 | API_KEY_ID: ${{ secrets.api_key_id }} 137 | API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id }} 138 | ``` 139 | 140 | ## Development 141 | 142 | Suggestions and contributions are always welcome! Please discuss larger changes via issue before submitting a pull request. 143 | 144 | ## Credit 145 | 146 | Credit to Samuel Meuli for starting this [project](https://github.com/samuelmeuli/action-electron-builder) 147 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: Macro Electron Builder Action 2 | author: William Hutchinson 3 | description: GitHub Action for building and releasing Electron apps 4 | 5 | inputs: 6 | github_token: 7 | description: GitHub authentication token 8 | required: true 9 | mac_certs: 10 | description: Base64-encoded code signing certificate for macOS 11 | required: false 12 | mac_certs_password: 13 | description: Password for decrypting `mac_certs` 14 | required: false 15 | release: 16 | description: Whether the app should be released after a successful build 17 | required: false 18 | default: false 19 | windows_certs: 20 | description: Base64-encoded code signing certificate for Windows 21 | required: false 22 | windows_certs_password: 23 | description: Password for decrypting `windows_certs` 24 | required: false 25 | package_root: 26 | description: Directory where NPM/Yarn commands should be run 27 | required: false 28 | default: "." 29 | build_script_name: 30 | description: Name of the optional NPM build script which is executed before `electron-builder` 31 | required: false 32 | default: build 33 | skip_build: 34 | description: Whether the action should execute the NPM build script before running `electron-builder` 35 | required: false 36 | default: false 37 | use_vue_cli: 38 | description: Whether to run `electron-builder` using the Vue CLI plugin instead of calling the command directly 39 | required: false 40 | default: false 41 | args: 42 | description: Other arguments to pass to the `electron-builder` command, e.g. configuration overrides 43 | required: false 44 | default: "" 45 | max_attempts: 46 | description: Maximum number of attempts for completing the build and release step 47 | required: false 48 | default: "1" 49 | 50 | # Deprecated 51 | app_root: 52 | description: Directory where `electron-builder` commands should be run 53 | required: false 54 | 55 | runs: 56 | using: node16 57 | main: index.js 58 | 59 | branding: 60 | icon: upload-cloud 61 | color: blue 62 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { execSync } = require("child_process"); 2 | const { existsSync, readFileSync } = require("fs"); 3 | const { join } = require("path"); 4 | 5 | /** 6 | * Logs to the console 7 | */ 8 | const log = (msg) => console.log(`\n${msg}`); // eslint-disable-line no-console 9 | 10 | /** 11 | * Exits the current process with an error code and message 12 | */ 13 | const exit = (msg) => { 14 | console.error(msg); 15 | process.exit(1); 16 | }; 17 | 18 | /** 19 | * Executes the provided shell command and redirects stdout/stderr to the console 20 | */ 21 | const run = (cmd, cwd) => execSync(cmd, { encoding: "utf8", stdio: "inherit", cwd }); 22 | 23 | /** 24 | * Determines the current operating system (one of ["mac", "windows", "linux"]) 25 | */ 26 | const getPlatform = () => { 27 | switch (process.platform) { 28 | case "darwin": 29 | return "mac"; 30 | case "win32": 31 | return "windows"; 32 | default: 33 | return "linux"; 34 | } 35 | }; 36 | 37 | /** 38 | * Returns the value for an environment variable (or `null` if it's not defined) 39 | */ 40 | const getEnv = (name) => process.env[name.toUpperCase()] || null; 41 | 42 | /** 43 | * Sets the specified env variable if the value isn't empty 44 | */ 45 | const setEnv = (name, value) => { 46 | if (value) { 47 | process.env[name.toUpperCase()] = value.toString(); 48 | } 49 | }; 50 | 51 | /** 52 | * Returns the value for an input variable (or `null` if it's not defined). If the variable is 53 | * required and doesn't have a value, abort the action 54 | */ 55 | const getInput = (name, required) => { 56 | const value = getEnv(`INPUT_${name}`); 57 | if (required && !value) { 58 | exit(`"${name}" input variable is not defined`); 59 | } 60 | return value; 61 | }; 62 | 63 | /** 64 | * Installs NPM dependencies and builds/releases the Electron app 65 | */ 66 | const runAction = () => { 67 | const platform = getPlatform(); 68 | const release = getInput("release", true) === "true"; 69 | const pkgRoot = getInput("package_root", true); 70 | const buildScriptName = getInput("build_script_name", true); 71 | const skipBuild = getInput("skip_build") === "true"; 72 | const useVueCli = getInput("use_vue_cli") === "true"; 73 | const args = getInput("args") || ""; 74 | const maxAttempts = Number(getInput("max_attempts") || "1"); 75 | 76 | // TODO: Deprecated option, remove in v2.0. `electron-builder` always requires a `package.json` in 77 | // the same directory as the Electron app, so the `package_root` option should be used instead 78 | const appRoot = getInput("app_root") || pkgRoot; 79 | 80 | const pkgJsonPath = join(pkgRoot, "package.json"); 81 | const pkgLockPath = join(pkgRoot, "package-lock.json"); 82 | 83 | // Determine whether NPM should be used to run commands (instead of Yarn, which is the default) 84 | const useNpm = existsSync(pkgLockPath); 85 | log(`Will run ${useNpm ? "NPM" : "Yarn"} commands in directory "${pkgRoot}"`); 86 | 87 | // Make sure `package.json` file exists 88 | if (!existsSync(pkgJsonPath)) { 89 | exit(`\`package.json\` file not found at path "${pkgJsonPath}"`); 90 | } 91 | 92 | // Copy "github_token" input variable to "GH_TOKEN" env variable (required by `electron-builder`) 93 | setEnv("GH_TOKEN", getInput("github_token", true)); 94 | 95 | // Require code signing certificate and password if building for macOS. Export them to environment 96 | // variables (required by `electron-builder`) 97 | if (platform === "mac") { 98 | setEnv("CSC_LINK", getInput("mac_certs")); 99 | setEnv("CSC_KEY_PASSWORD", getInput("mac_certs_password")); 100 | } else if (platform === "windows") { 101 | setEnv("CSC_LINK", getInput("windows_certs")); 102 | setEnv("CSC_KEY_PASSWORD", getInput("windows_certs_password")); 103 | } 104 | 105 | // Disable console advertisements during install phase 106 | setEnv("ADBLOCK", true); 107 | 108 | log(`Installing dependencies using ${useNpm ? "NPM" : "Yarn"}…`); 109 | run(useNpm ? "npm install" : "yarn", pkgRoot); 110 | 111 | // Run NPM build script if it exists 112 | if (skipBuild) { 113 | log("Skipping build script because `skip_build` option is set"); 114 | } else { 115 | log("Running the build script…"); 116 | if (useNpm) { 117 | run(`npm run ${buildScriptName} --if-present`, pkgRoot); 118 | } else { 119 | // TODO: Use `yarn run ${buildScriptName} --if-present` once supported 120 | // https://github.com/yarnpkg/yarn/issues/6894 121 | const pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf8")); 122 | if (pkgJson.scripts && pkgJson.scripts[buildScriptName]) { 123 | run(`yarn run ${buildScriptName}`, pkgRoot); 124 | } 125 | } 126 | } 127 | 128 | log(`Building${release ? " and releasing" : ""} the Electron app…`); 129 | const cmd = useVueCli ? "vue-cli-service electron:build" : "electron-builder"; 130 | for (let i = 0; i < maxAttempts; i += 1) { 131 | try { 132 | run( 133 | `${useNpm ? "npx --no-install" : "yarn run"} ${cmd} --${platform} ${ 134 | release ? "--publish always" : "" 135 | } ${args}`, 136 | appRoot, 137 | ); 138 | break; 139 | } catch (err) { 140 | if (i < maxAttempts - 1) { 141 | log(`Attempt ${i + 1} failed:`); 142 | log(err); 143 | } else { 144 | throw err; 145 | } 146 | } 147 | } 148 | }; 149 | 150 | runAction(); 151 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "action-electron-builder", 3 | "version": "1.6.0", 4 | "description": "GitHub Action for building and releasing Electron apps", 5 | "author": { 6 | "name": "William Hutchinson", 7 | "email": "hutch@macro.com" 8 | }, 9 | "repository": "github:coparse-inc/action-electron-builder", 10 | "license": "MIT", 11 | "private": true, 12 | "main": "./index.js", 13 | "scripts": { 14 | "lint": "eslint --max-warnings 0 \"**/*.js\"", 15 | "lint:fix": "yarn lint --fix", 16 | "format": "prettier --ignore-path ./.gitignore --list-different \"**/*.{css,html,js,json,jsx,less,md,scss,ts,tsx,vue,yaml,yml}\"", 17 | "format:fix": "yarn format --write" 18 | }, 19 | "dependencies": {}, 20 | "peerDependencies": {}, 21 | "devDependencies": { 22 | "@samuelmeuli/eslint-config": "^6.0.0", 23 | "@samuelmeuli/prettier-config": "^2.0.1", 24 | "eslint": "6.8.0", 25 | "eslint-config-airbnb-base": "14.1.0", 26 | "eslint-config-prettier": "^6.10.1", 27 | "eslint-plugin-import": "^2.20.2", 28 | "prettier": "^2.0.4" 29 | }, 30 | "eslintConfig": { 31 | "root": true, 32 | "extends": "@samuelmeuli/eslint-config", 33 | "env": { 34 | "node": true 35 | } 36 | }, 37 | "eslintIgnore": [ 38 | "node_modules/", 39 | "test/" 40 | ], 41 | "prettier": "@samuelmeuli/prettier-config" 42 | } 43 | -------------------------------------------------------------------------------- /test/app-in-root/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Hello World! 9 | 10 | 11 |

Hello World!

12 | We are using Node.js , Chromium 13 | , and Electron . 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /test/app-in-root/main.js: -------------------------------------------------------------------------------- 1 | // Modules to control application life and create native browser window 2 | const { app, BrowserWindow } = require("electron"); 3 | const path = require("path"); 4 | 5 | // Keep a global reference of the window object, if you don't, the window will 6 | // be closed automatically when the JavaScript object is garbage collected. 7 | let mainWindow; 8 | 9 | function createWindow() { 10 | // Create the browser window. 11 | mainWindow = new BrowserWindow({ 12 | width: 800, 13 | height: 600, 14 | webPreferences: { 15 | preload: path.join(__dirname, "preload.js"), 16 | }, 17 | }); 18 | 19 | // and load the index.html of the app. 20 | mainWindow.loadFile(path.join(__dirname, "index.html")); 21 | 22 | // Open the DevTools. 23 | // mainWindow.webContents.openDevTools() 24 | 25 | // Emitted when the window is closed. 26 | mainWindow.on("closed", function () { 27 | // Dereference the window object, usually you would store windows 28 | // in an array if your app supports multi windows, this is the time 29 | // when you should delete the corresponding element. 30 | mainWindow = null; 31 | }); 32 | } 33 | 34 | // This method will be called when Electron has finished 35 | // initialization and is ready to create browser windows. 36 | // Some APIs can only be used after this event occurs. 37 | app.on("ready", createWindow); 38 | 39 | // Quit when all windows are closed. 40 | app.on("window-all-closed", function () { 41 | // On macOS it is common for applications and their menu bar 42 | // to stay active until the user quits explicitly with Cmd + Q 43 | if (process.platform !== "darwin") app.quit(); 44 | }); 45 | 46 | app.on("activate", function () { 47 | // On macOS it's common to re-create a window in the app when the 48 | // dock icon is clicked and there are no other windows open. 49 | if (mainWindow === null) createWindow(); 50 | }); 51 | 52 | // In this file you can include the rest of your app's specific main process 53 | // code. You can also put them in separate files and require them here. 54 | -------------------------------------------------------------------------------- /test/app-in-root/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-quick-start", 3 | "version": "1.0.0", 4 | "description": "A minimal Electron application", 5 | "main": "main.js", 6 | "scripts": { 7 | "start": "electron ." 8 | }, 9 | "repository": "https://github.com/electron/electron-quick-start", 10 | "keywords": [ 11 | "Electron", 12 | "quick", 13 | "start", 14 | "tutorial", 15 | "demo" 16 | ], 17 | "author": "GitHub", 18 | "license": "CC0-1.0", 19 | "devDependencies": { 20 | "electron": "^7.1.7", 21 | "electron-builder": "^22.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/app-in-root/preload.js: -------------------------------------------------------------------------------- 1 | // All of the Node.js APIs are available in the preload process. 2 | // It has the same sandbox as a Chrome extension. 3 | window.addEventListener("DOMContentLoaded", () => { 4 | const replaceText = (selector, text) => { 5 | const element = document.getElementById(selector); 6 | if (element) element.innerText = text; 7 | }; 8 | 9 | for (const type of ["chrome", "node", "electron"]) { 10 | replaceText(`${type}-version`, process.versions[type]); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /test/app-in-root/renderer.js: -------------------------------------------------------------------------------- 1 | // This file is required by the index.html file and will 2 | // be executed in the renderer process for that window. 3 | // No Node.js APIs are available in this process because 4 | // `nodeIntegration` is turned off. Use `preload.js` to 5 | // selectively enable features needed in the rendering 6 | // process. 7 | -------------------------------------------------------------------------------- /test/app-in-subdirectory/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Hello World! 9 | 10 | 11 |

Hello World!

12 | We are using Node.js , Chromium 13 | , and Electron . 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /test/app-in-subdirectory/app/main.js: -------------------------------------------------------------------------------- 1 | // Modules to control application life and create native browser window 2 | const { app, BrowserWindow } = require("electron"); 3 | const path = require("path"); 4 | 5 | // Keep a global reference of the window object, if you don't, the window will 6 | // be closed automatically when the JavaScript object is garbage collected. 7 | let mainWindow; 8 | 9 | function createWindow() { 10 | // Create the browser window. 11 | mainWindow = new BrowserWindow({ 12 | width: 800, 13 | height: 600, 14 | webPreferences: { 15 | preload: path.join(__dirname, "preload.js"), 16 | }, 17 | }); 18 | 19 | // and load the index.html of the app. 20 | mainWindow.loadFile(path.join(__dirname, "index.html")); 21 | 22 | // Open the DevTools. 23 | // mainWindow.webContents.openDevTools() 24 | 25 | // Emitted when the window is closed. 26 | mainWindow.on("closed", function () { 27 | // Dereference the window object, usually you would store windows 28 | // in an array if your app supports multi windows, this is the time 29 | // when you should delete the corresponding element. 30 | mainWindow = null; 31 | }); 32 | } 33 | 34 | // This method will be called when Electron has finished 35 | // initialization and is ready to create browser windows. 36 | // Some APIs can only be used after this event occurs. 37 | app.on("ready", createWindow); 38 | 39 | // Quit when all windows are closed. 40 | app.on("window-all-closed", function () { 41 | // On macOS it is common for applications and their menu bar 42 | // to stay active until the user quits explicitly with Cmd + Q 43 | if (process.platform !== "darwin") app.quit(); 44 | }); 45 | 46 | app.on("activate", function () { 47 | // On macOS it's common to re-create a window in the app when the 48 | // dock icon is clicked and there are no other windows open. 49 | if (mainWindow === null) createWindow(); 50 | }); 51 | 52 | // In this file you can include the rest of your app's specific main process 53 | // code. You can also put them in separate files and require them here. 54 | -------------------------------------------------------------------------------- /test/app-in-subdirectory/app/preload.js: -------------------------------------------------------------------------------- 1 | // All of the Node.js APIs are available in the preload process. 2 | // It has the same sandbox as a Chrome extension. 3 | window.addEventListener("DOMContentLoaded", () => { 4 | const replaceText = (selector, text) => { 5 | const element = document.getElementById(selector); 6 | if (element) element.innerText = text; 7 | }; 8 | 9 | for (const type of ["chrome", "node", "electron"]) { 10 | replaceText(`${type}-version`, process.versions[type]); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /test/app-in-subdirectory/app/renderer.js: -------------------------------------------------------------------------------- 1 | // This file is required by the index.html file and will 2 | // be executed in the renderer process for that window. 3 | // No Node.js APIs are available in this process because 4 | // `nodeIntegration` is turned off. Use `preload.js` to 5 | // selectively enable features needed in the rendering 6 | // process. 7 | -------------------------------------------------------------------------------- /test/app-in-subdirectory/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-quick-start", 3 | "version": "1.0.0", 4 | "description": "A minimal Electron application", 5 | "main": "./app/main.js", 6 | "scripts": { 7 | "start": "electron ." 8 | }, 9 | "repository": "https://github.com/electron/electron-quick-start", 10 | "keywords": [ 11 | "Electron", 12 | "quick", 13 | "start", 14 | "tutorial", 15 | "demo" 16 | ], 17 | "author": "GitHub", 18 | "license": "CC0-1.0", 19 | "devDependencies": { 20 | "electron": "^7.1.7", 21 | "electron-builder": "^22.0.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/vue-app/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/cli-plugin-babel/preset"], 3 | }; 4 | -------------------------------------------------------------------------------- /test/vue-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-app", 3 | "version": "0.1.0", 4 | "author": { 5 | "email": "matthew@rathbonelabs.com", 6 | "url": "https://github.com/samuelmeuli/action-electron-builder" 7 | }, 8 | "repository": "https://github.com/samuelmeuli/action-electron-builder", 9 | "private": true, 10 | "scripts": { 11 | "serve": "vue-cli-service serve", 12 | "build": "vue-cli-service build", 13 | "lint": "vue-cli-service lint", 14 | "electron:build": "vue-cli-service electron:build", 15 | "electron:serve": "vue-cli-service electron:serve", 16 | "postinstall": "electron-builder install-app-deps", 17 | "postuninstall": "electron-builder install-app-deps" 18 | }, 19 | "main": "background.js", 20 | "dependencies": { 21 | "core-js": "^3.6.4", 22 | "vue": "^2.6.11" 23 | }, 24 | "devDependencies": { 25 | "@vue/cli-plugin-babel": "~4.3.0", 26 | "@vue/cli-plugin-eslint": "~4.3.0", 27 | "@vue/cli-service": "~4.3.0", 28 | "babel-eslint": "^10.1.0", 29 | "electron": "^6.0.0", 30 | "eslint": "^6.7.2", 31 | "eslint-plugin-vue": "^6.2.2", 32 | "vue-cli-plugin-electron-builder": "^2.0.0-beta.6", 33 | "vue-template-compiler": "^2.6.11" 34 | }, 35 | "eslintConfig": { 36 | "root": true, 37 | "env": { 38 | "node": true 39 | }, 40 | "extends": [ 41 | "plugin:vue/essential", 42 | "eslint:recommended" 43 | ], 44 | "parserOptions": { 45 | "parser": "babel-eslint" 46 | }, 47 | "rules": {} 48 | }, 49 | "browserslist": [ 50 | "> 1%", 51 | "last 2 versions", 52 | "not dead" 53 | ] 54 | } 55 | -------------------------------------------------------------------------------- /test/vue-app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macro-inc/action-electron-builder/29a7606c7d726b5b0f4dc2f334026f58bea0e1bb/test/vue-app/public/favicon.ico -------------------------------------------------------------------------------- /test/vue-app/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /test/vue-app/src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 18 | 19 | 29 | -------------------------------------------------------------------------------- /test/vue-app/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macro-inc/action-electron-builder/29a7606c7d726b5b0f4dc2f334026f58bea0e1bb/test/vue-app/src/assets/logo.png -------------------------------------------------------------------------------- /test/vue-app/src/background.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import { app, protocol, BrowserWindow } from "electron"; 4 | import { 5 | createProtocol, 6 | /* installVueDevtools */ 7 | } from "vue-cli-plugin-electron-builder/lib"; 8 | const isDevelopment = process.env.NODE_ENV !== "production"; 9 | 10 | // Keep a global reference of the window object, if you don't, the window will 11 | // be closed automatically when the JavaScript object is garbage collected. 12 | let win; 13 | 14 | // Scheme must be registered before the app is ready 15 | protocol.registerSchemesAsPrivileged([ 16 | { scheme: "app", privileges: { secure: true, standard: true } }, 17 | ]); 18 | 19 | function createWindow() { 20 | // Create the browser window. 21 | win = new BrowserWindow({ 22 | width: 800, 23 | height: 600, 24 | webPreferences: { 25 | nodeIntegration: true, 26 | }, 27 | }); 28 | 29 | if (process.env.WEBPACK_DEV_SERVER_URL) { 30 | // Load the url of the dev server if in development mode 31 | win.loadURL(process.env.WEBPACK_DEV_SERVER_URL); 32 | if (!process.env.IS_TEST) win.webContents.openDevTools(); 33 | } else { 34 | createProtocol("app"); 35 | // Load the index.html when not in development 36 | win.loadURL("app://./index.html"); 37 | } 38 | 39 | win.on("closed", () => { 40 | win = null; 41 | }); 42 | } 43 | 44 | // Quit when all windows are closed. 45 | app.on("window-all-closed", () => { 46 | // On macOS it is common for applications and their menu bar 47 | // to stay active until the user quits explicitly with Cmd + Q 48 | if (process.platform !== "darwin") { 49 | app.quit(); 50 | } 51 | }); 52 | 53 | app.on("activate", () => { 54 | // On macOS it's common to re-create a window in the app when the 55 | // dock icon is clicked and there are no other windows open. 56 | if (win === null) { 57 | createWindow(); 58 | } 59 | }); 60 | 61 | // This method will be called when Electron has finished 62 | // initialization and is ready to create browser windows. 63 | // Some APIs can only be used after this event occurs. 64 | app.on("ready", async () => { 65 | if (isDevelopment && !process.env.IS_TEST) { 66 | // Install Vue Devtools 67 | // Devtools extensions are broken in Electron 6.0.0 and greater 68 | // See https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/378 for more info 69 | // Electron will not launch with Devtools extensions installed on Windows 10 with dark mode 70 | // If you are not using Windows 10 dark mode, you may uncomment these lines 71 | // In addition, if the linked issue is closed, you can upgrade electron and uncomment these lines 72 | // try { 73 | // await installVueDevtools() 74 | // } catch (e) { 75 | // console.error('Vue Devtools failed to install:', e.toString()) 76 | // } 77 | } 78 | createWindow(); 79 | }); 80 | 81 | // Exit cleanly on request from parent process in development mode. 82 | if (isDevelopment) { 83 | if (process.platform === "win32") { 84 | process.on("message", (data) => { 85 | if (data === "graceful-exit") { 86 | app.quit(); 87 | } 88 | }); 89 | } else { 90 | process.on("SIGTERM", () => { 91 | app.quit(); 92 | }); 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /test/vue-app/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 63 | 64 | 65 | 81 | -------------------------------------------------------------------------------- /test/vue-app/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import App from "./App.vue"; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: (h) => h(App), 8 | }).$mount("#app"); 9 | -------------------------------------------------------------------------------- /test/vue-app/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | pluginOptions: { 3 | electronBuilder: { 4 | builderOptions: { 5 | linux: { 6 | target: ["AppImage"], 7 | }, 8 | }, 9 | }, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /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.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/helper-validator-identifier@^7.9.0": 13 | version "7.9.5" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" 15 | integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== 16 | 17 | "@babel/highlight@^7.8.3": 18 | version "7.9.0" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" 20 | integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.9.0" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@samuelmeuli/eslint-config@^6.0.0": 27 | version "6.0.0" 28 | resolved "https://registry.yarnpkg.com/@samuelmeuli/eslint-config/-/eslint-config-6.0.0.tgz#bae3356064c5d19c0201f4842af2b568940e9db4" 29 | integrity sha512-CnICdJIFgfWv/p//jDXd7atart+2Ww7vSu+VX+73f65XEdoU9g2MSxom27uOg8cdL/CTrHXdUbcnW3Br7E2NGg== 30 | 31 | "@samuelmeuli/prettier-config@^2.0.1": 32 | version "2.0.1" 33 | resolved "https://registry.yarnpkg.com/@samuelmeuli/prettier-config/-/prettier-config-2.0.1.tgz#388e598587a413978611b59d5b8ee56c7d22bd12" 34 | integrity sha512-K9Xr+CS/UvQ+8gkKkPfupPLXxZj8s0kLz9ZOo+6V0QJmOj/VEJdaGR+0cVCDQXDFcOdzdP11O/KrbOgjniWb2w== 35 | 36 | "@types/color-name@^1.1.1": 37 | version "1.1.1" 38 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 39 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 40 | 41 | acorn-jsx@^5.2.0: 42 | version "5.2.0" 43 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 44 | integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 45 | 46 | acorn@^7.1.1: 47 | version "7.1.1" 48 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" 49 | integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== 50 | 51 | ajv@^6.10.0, ajv@^6.10.2: 52 | version "6.12.0" 53 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" 54 | integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== 55 | dependencies: 56 | fast-deep-equal "^3.1.1" 57 | fast-json-stable-stringify "^2.0.0" 58 | json-schema-traverse "^0.4.1" 59 | uri-js "^4.2.2" 60 | 61 | ansi-escapes@^4.2.1: 62 | version "4.3.1" 63 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 64 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 65 | dependencies: 66 | type-fest "^0.11.0" 67 | 68 | ansi-regex@^4.1.0: 69 | version "4.1.0" 70 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 71 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 72 | 73 | ansi-regex@^5.0.0: 74 | version "5.0.0" 75 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 76 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 77 | 78 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 79 | version "3.2.1" 80 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 81 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 82 | dependencies: 83 | color-convert "^1.9.0" 84 | 85 | ansi-styles@^4.1.0: 86 | version "4.2.1" 87 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 88 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 89 | dependencies: 90 | "@types/color-name" "^1.1.1" 91 | color-convert "^2.0.1" 92 | 93 | argparse@^1.0.7: 94 | version "1.0.10" 95 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 96 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 97 | dependencies: 98 | sprintf-js "~1.0.2" 99 | 100 | array-includes@^3.0.3: 101 | version "3.1.1" 102 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" 103 | integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== 104 | dependencies: 105 | define-properties "^1.1.3" 106 | es-abstract "^1.17.0" 107 | is-string "^1.0.5" 108 | 109 | array.prototype.flat@^1.2.1: 110 | version "1.2.3" 111 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" 112 | integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== 113 | dependencies: 114 | define-properties "^1.1.3" 115 | es-abstract "^1.17.0-next.1" 116 | 117 | astral-regex@^1.0.0: 118 | version "1.0.0" 119 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 120 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 121 | 122 | balanced-match@^1.0.0: 123 | version "1.0.0" 124 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 125 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 126 | 127 | brace-expansion@^1.1.7: 128 | version "1.1.11" 129 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 130 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 131 | dependencies: 132 | balanced-match "^1.0.0" 133 | concat-map "0.0.1" 134 | 135 | callsites@^3.0.0: 136 | version "3.1.0" 137 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 138 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 139 | 140 | chalk@^2.0.0, chalk@^2.1.0: 141 | version "2.4.2" 142 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 143 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 144 | dependencies: 145 | ansi-styles "^3.2.1" 146 | escape-string-regexp "^1.0.5" 147 | supports-color "^5.3.0" 148 | 149 | chalk@^3.0.0: 150 | version "3.0.0" 151 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 152 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 153 | dependencies: 154 | ansi-styles "^4.1.0" 155 | supports-color "^7.1.0" 156 | 157 | chardet@^0.7.0: 158 | version "0.7.0" 159 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 160 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 161 | 162 | cli-cursor@^3.1.0: 163 | version "3.1.0" 164 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 165 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 166 | dependencies: 167 | restore-cursor "^3.1.0" 168 | 169 | cli-width@^2.0.0: 170 | version "2.2.1" 171 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" 172 | integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== 173 | 174 | color-convert@^1.9.0: 175 | version "1.9.3" 176 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 177 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 178 | dependencies: 179 | color-name "1.1.3" 180 | 181 | color-convert@^2.0.1: 182 | version "2.0.1" 183 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 184 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 185 | dependencies: 186 | color-name "~1.1.4" 187 | 188 | color-name@1.1.3: 189 | version "1.1.3" 190 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 191 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 192 | 193 | color-name@~1.1.4: 194 | version "1.1.4" 195 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 196 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 197 | 198 | concat-map@0.0.1: 199 | version "0.0.1" 200 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 201 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 202 | 203 | confusing-browser-globals@^1.0.9: 204 | version "1.0.9" 205 | resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" 206 | integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== 207 | 208 | contains-path@^0.1.0: 209 | version "0.1.0" 210 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 211 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 212 | 213 | cross-spawn@^6.0.5: 214 | version "6.0.5" 215 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 216 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 217 | dependencies: 218 | nice-try "^1.0.4" 219 | path-key "^2.0.1" 220 | semver "^5.5.0" 221 | shebang-command "^1.2.0" 222 | which "^1.2.9" 223 | 224 | debug@^2.6.9: 225 | version "2.6.9" 226 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 227 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 228 | dependencies: 229 | ms "2.0.0" 230 | 231 | debug@^4.0.1: 232 | version "4.1.1" 233 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 234 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 235 | dependencies: 236 | ms "^2.1.1" 237 | 238 | deep-is@~0.1.3: 239 | version "0.1.3" 240 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 241 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 242 | 243 | define-properties@^1.1.2, define-properties@^1.1.3: 244 | version "1.1.3" 245 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 246 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 247 | dependencies: 248 | object-keys "^1.0.12" 249 | 250 | doctrine@1.5.0: 251 | version "1.5.0" 252 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 253 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 254 | dependencies: 255 | esutils "^2.0.2" 256 | isarray "^1.0.0" 257 | 258 | doctrine@^3.0.0: 259 | version "3.0.0" 260 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 261 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 262 | dependencies: 263 | esutils "^2.0.2" 264 | 265 | emoji-regex@^7.0.1: 266 | version "7.0.3" 267 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 268 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 269 | 270 | emoji-regex@^8.0.0: 271 | version "8.0.0" 272 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 273 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 274 | 275 | error-ex@^1.2.0: 276 | version "1.3.2" 277 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 278 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 279 | dependencies: 280 | is-arrayish "^0.2.1" 281 | 282 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: 283 | version "1.17.5" 284 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" 285 | integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== 286 | dependencies: 287 | es-to-primitive "^1.2.1" 288 | function-bind "^1.1.1" 289 | has "^1.0.3" 290 | has-symbols "^1.0.1" 291 | is-callable "^1.1.5" 292 | is-regex "^1.0.5" 293 | object-inspect "^1.7.0" 294 | object-keys "^1.1.1" 295 | object.assign "^4.1.0" 296 | string.prototype.trimleft "^2.1.1" 297 | string.prototype.trimright "^2.1.1" 298 | 299 | es-to-primitive@^1.2.1: 300 | version "1.2.1" 301 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 302 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 303 | dependencies: 304 | is-callable "^1.1.4" 305 | is-date-object "^1.0.1" 306 | is-symbol "^1.0.2" 307 | 308 | escape-string-regexp@^1.0.5: 309 | version "1.0.5" 310 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 311 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 312 | 313 | eslint-config-airbnb-base@14.1.0: 314 | version "14.1.0" 315 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4" 316 | integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw== 317 | dependencies: 318 | confusing-browser-globals "^1.0.9" 319 | object.assign "^4.1.0" 320 | object.entries "^1.1.1" 321 | 322 | eslint-config-prettier@^6.10.1: 323 | version "6.10.1" 324 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" 325 | integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== 326 | dependencies: 327 | get-stdin "^6.0.0" 328 | 329 | eslint-import-resolver-node@^0.3.2: 330 | version "0.3.3" 331 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" 332 | integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== 333 | dependencies: 334 | debug "^2.6.9" 335 | resolve "^1.13.1" 336 | 337 | eslint-module-utils@^2.4.1: 338 | version "2.6.0" 339 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" 340 | integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== 341 | dependencies: 342 | debug "^2.6.9" 343 | pkg-dir "^2.0.0" 344 | 345 | eslint-plugin-import@^2.20.2: 346 | version "2.20.2" 347 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" 348 | integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== 349 | dependencies: 350 | array-includes "^3.0.3" 351 | array.prototype.flat "^1.2.1" 352 | contains-path "^0.1.0" 353 | debug "^2.6.9" 354 | doctrine "1.5.0" 355 | eslint-import-resolver-node "^0.3.2" 356 | eslint-module-utils "^2.4.1" 357 | has "^1.0.3" 358 | minimatch "^3.0.4" 359 | object.values "^1.1.0" 360 | read-pkg-up "^2.0.0" 361 | resolve "^1.12.0" 362 | 363 | eslint-scope@^5.0.0: 364 | version "5.0.0" 365 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 366 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 367 | dependencies: 368 | esrecurse "^4.1.0" 369 | estraverse "^4.1.1" 370 | 371 | eslint-utils@^1.4.3: 372 | version "1.4.3" 373 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 374 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 375 | dependencies: 376 | eslint-visitor-keys "^1.1.0" 377 | 378 | eslint-visitor-keys@^1.1.0: 379 | version "1.1.0" 380 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 381 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 382 | 383 | eslint@6.8.0: 384 | version "6.8.0" 385 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" 386 | integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== 387 | dependencies: 388 | "@babel/code-frame" "^7.0.0" 389 | ajv "^6.10.0" 390 | chalk "^2.1.0" 391 | cross-spawn "^6.0.5" 392 | debug "^4.0.1" 393 | doctrine "^3.0.0" 394 | eslint-scope "^5.0.0" 395 | eslint-utils "^1.4.3" 396 | eslint-visitor-keys "^1.1.0" 397 | espree "^6.1.2" 398 | esquery "^1.0.1" 399 | esutils "^2.0.2" 400 | file-entry-cache "^5.0.1" 401 | functional-red-black-tree "^1.0.1" 402 | glob-parent "^5.0.0" 403 | globals "^12.1.0" 404 | ignore "^4.0.6" 405 | import-fresh "^3.0.0" 406 | imurmurhash "^0.1.4" 407 | inquirer "^7.0.0" 408 | is-glob "^4.0.0" 409 | js-yaml "^3.13.1" 410 | json-stable-stringify-without-jsonify "^1.0.1" 411 | levn "^0.3.0" 412 | lodash "^4.17.14" 413 | minimatch "^3.0.4" 414 | mkdirp "^0.5.1" 415 | natural-compare "^1.4.0" 416 | optionator "^0.8.3" 417 | progress "^2.0.0" 418 | regexpp "^2.0.1" 419 | semver "^6.1.2" 420 | strip-ansi "^5.2.0" 421 | strip-json-comments "^3.0.1" 422 | table "^5.2.3" 423 | text-table "^0.2.0" 424 | v8-compile-cache "^2.0.3" 425 | 426 | espree@^6.1.2: 427 | version "6.2.1" 428 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" 429 | integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== 430 | dependencies: 431 | acorn "^7.1.1" 432 | acorn-jsx "^5.2.0" 433 | eslint-visitor-keys "^1.1.0" 434 | 435 | esprima@^4.0.0: 436 | version "4.0.1" 437 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 438 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 439 | 440 | esquery@^1.0.1: 441 | version "1.3.0" 442 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.0.tgz#e5e29a6f66a837840d34f68cb9ce355260d1128b" 443 | integrity sha512-/5qB+Mb0m2bh86tjGbA8pB0qBfdmCIK6ZNPjcw4/TtEH0+tTf0wLA5HK4KMTweSMwLGHwBDWCBV+6+2+EuHmgg== 444 | dependencies: 445 | estraverse "^5.0.0" 446 | 447 | esrecurse@^4.1.0: 448 | version "4.2.1" 449 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 450 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 451 | dependencies: 452 | estraverse "^4.1.0" 453 | 454 | estraverse@^4.1.0, estraverse@^4.1.1: 455 | version "4.3.0" 456 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 457 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 458 | 459 | estraverse@^5.0.0: 460 | version "5.0.0" 461 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" 462 | integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== 463 | 464 | esutils@^2.0.2: 465 | version "2.0.3" 466 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 467 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 468 | 469 | external-editor@^3.0.3: 470 | version "3.1.0" 471 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 472 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 473 | dependencies: 474 | chardet "^0.7.0" 475 | iconv-lite "^0.4.24" 476 | tmp "^0.0.33" 477 | 478 | fast-deep-equal@^3.1.1: 479 | version "3.1.1" 480 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 481 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 482 | 483 | fast-json-stable-stringify@^2.0.0: 484 | version "2.1.0" 485 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 486 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 487 | 488 | fast-levenshtein@~2.0.6: 489 | version "2.0.6" 490 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 491 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 492 | 493 | figures@^3.0.0: 494 | version "3.2.0" 495 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 496 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 497 | dependencies: 498 | escape-string-regexp "^1.0.5" 499 | 500 | file-entry-cache@^5.0.1: 501 | version "5.0.1" 502 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 503 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 504 | dependencies: 505 | flat-cache "^2.0.1" 506 | 507 | find-up@^2.0.0, find-up@^2.1.0: 508 | version "2.1.0" 509 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 510 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 511 | dependencies: 512 | locate-path "^2.0.0" 513 | 514 | flat-cache@^2.0.1: 515 | version "2.0.1" 516 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 517 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 518 | dependencies: 519 | flatted "^2.0.0" 520 | rimraf "2.6.3" 521 | write "1.0.3" 522 | 523 | flatted@^2.0.0: 524 | version "2.0.2" 525 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 526 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 527 | 528 | fs.realpath@^1.0.0: 529 | version "1.0.0" 530 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 531 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 532 | 533 | function-bind@^1.1.1: 534 | version "1.1.1" 535 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 536 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 537 | 538 | functional-red-black-tree@^1.0.1: 539 | version "1.0.1" 540 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 541 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 542 | 543 | get-stdin@^6.0.0: 544 | version "6.0.0" 545 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" 546 | integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== 547 | 548 | glob-parent@^5.0.0: 549 | version "5.1.1" 550 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 551 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 552 | dependencies: 553 | is-glob "^4.0.1" 554 | 555 | glob@^7.1.3: 556 | version "7.1.6" 557 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 558 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 559 | dependencies: 560 | fs.realpath "^1.0.0" 561 | inflight "^1.0.4" 562 | inherits "2" 563 | minimatch "^3.0.4" 564 | once "^1.3.0" 565 | path-is-absolute "^1.0.0" 566 | 567 | globals@^12.1.0: 568 | version "12.4.0" 569 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 570 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 571 | dependencies: 572 | type-fest "^0.8.1" 573 | 574 | graceful-fs@^4.1.2: 575 | version "4.2.3" 576 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 577 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 578 | 579 | has-flag@^3.0.0: 580 | version "3.0.0" 581 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 582 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 583 | 584 | has-flag@^4.0.0: 585 | version "4.0.0" 586 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 587 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 588 | 589 | has-symbols@^1.0.0, has-symbols@^1.0.1: 590 | version "1.0.1" 591 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 592 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 593 | 594 | has@^1.0.3: 595 | version "1.0.3" 596 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 597 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 598 | dependencies: 599 | function-bind "^1.1.1" 600 | 601 | hosted-git-info@^2.1.4: 602 | version "2.8.8" 603 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 604 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== 605 | 606 | iconv-lite@^0.4.24: 607 | version "0.4.24" 608 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 609 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 610 | dependencies: 611 | safer-buffer ">= 2.1.2 < 3" 612 | 613 | ignore@^4.0.6: 614 | version "4.0.6" 615 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 616 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 617 | 618 | import-fresh@^3.0.0: 619 | version "3.2.1" 620 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 621 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 622 | dependencies: 623 | parent-module "^1.0.0" 624 | resolve-from "^4.0.0" 625 | 626 | imurmurhash@^0.1.4: 627 | version "0.1.4" 628 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 629 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 630 | 631 | inflight@^1.0.4: 632 | version "1.0.6" 633 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 634 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 635 | dependencies: 636 | once "^1.3.0" 637 | wrappy "1" 638 | 639 | inherits@2: 640 | version "2.0.4" 641 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 642 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 643 | 644 | inquirer@^7.0.0: 645 | version "7.1.0" 646 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" 647 | integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== 648 | dependencies: 649 | ansi-escapes "^4.2.1" 650 | chalk "^3.0.0" 651 | cli-cursor "^3.1.0" 652 | cli-width "^2.0.0" 653 | external-editor "^3.0.3" 654 | figures "^3.0.0" 655 | lodash "^4.17.15" 656 | mute-stream "0.0.8" 657 | run-async "^2.4.0" 658 | rxjs "^6.5.3" 659 | string-width "^4.1.0" 660 | strip-ansi "^6.0.0" 661 | through "^2.3.6" 662 | 663 | is-arrayish@^0.2.1: 664 | version "0.2.1" 665 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 666 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 667 | 668 | is-callable@^1.1.4, is-callable@^1.1.5: 669 | version "1.1.5" 670 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 671 | integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 672 | 673 | is-date-object@^1.0.1: 674 | version "1.0.2" 675 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 676 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 677 | 678 | is-extglob@^2.1.1: 679 | version "2.1.1" 680 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 681 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 682 | 683 | is-fullwidth-code-point@^2.0.0: 684 | version "2.0.0" 685 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 686 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 687 | 688 | is-fullwidth-code-point@^3.0.0: 689 | version "3.0.0" 690 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 691 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 692 | 693 | is-glob@^4.0.0, is-glob@^4.0.1: 694 | version "4.0.1" 695 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 696 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 697 | dependencies: 698 | is-extglob "^2.1.1" 699 | 700 | is-promise@^2.1.0: 701 | version "2.1.0" 702 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 703 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 704 | 705 | is-regex@^1.0.5: 706 | version "1.0.5" 707 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 708 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 709 | dependencies: 710 | has "^1.0.3" 711 | 712 | is-string@^1.0.5: 713 | version "1.0.5" 714 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 715 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 716 | 717 | is-symbol@^1.0.2: 718 | version "1.0.3" 719 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 720 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 721 | dependencies: 722 | has-symbols "^1.0.1" 723 | 724 | isarray@^1.0.0: 725 | version "1.0.0" 726 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 727 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 728 | 729 | isexe@^2.0.0: 730 | version "2.0.0" 731 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 732 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 733 | 734 | js-tokens@^4.0.0: 735 | version "4.0.0" 736 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 737 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 738 | 739 | js-yaml@^3.13.1: 740 | version "3.13.1" 741 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 742 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 743 | dependencies: 744 | argparse "^1.0.7" 745 | esprima "^4.0.0" 746 | 747 | json-schema-traverse@^0.4.1: 748 | version "0.4.1" 749 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 750 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 751 | 752 | json-stable-stringify-without-jsonify@^1.0.1: 753 | version "1.0.1" 754 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 755 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 756 | 757 | levn@^0.3.0, levn@~0.3.0: 758 | version "0.3.0" 759 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 760 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 761 | dependencies: 762 | prelude-ls "~1.1.2" 763 | type-check "~0.3.2" 764 | 765 | load-json-file@^2.0.0: 766 | version "2.0.0" 767 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 768 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 769 | dependencies: 770 | graceful-fs "^4.1.2" 771 | parse-json "^2.2.0" 772 | pify "^2.0.0" 773 | strip-bom "^3.0.0" 774 | 775 | locate-path@^2.0.0: 776 | version "2.0.0" 777 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 778 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 779 | dependencies: 780 | p-locate "^2.0.0" 781 | path-exists "^3.0.0" 782 | 783 | lodash@^4.17.14, lodash@^4.17.15: 784 | version "4.17.15" 785 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 786 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 787 | 788 | mimic-fn@^2.1.0: 789 | version "2.1.0" 790 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 791 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 792 | 793 | minimatch@^3.0.4: 794 | version "3.0.4" 795 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 796 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 797 | dependencies: 798 | brace-expansion "^1.1.7" 799 | 800 | minimist@^1.2.5: 801 | version "1.2.5" 802 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 803 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 804 | 805 | mkdirp@^0.5.1: 806 | version "0.5.5" 807 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 808 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 809 | dependencies: 810 | minimist "^1.2.5" 811 | 812 | ms@2.0.0: 813 | version "2.0.0" 814 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 815 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 816 | 817 | ms@^2.1.1: 818 | version "2.1.2" 819 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 820 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 821 | 822 | mute-stream@0.0.8: 823 | version "0.0.8" 824 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 825 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 826 | 827 | natural-compare@^1.4.0: 828 | version "1.4.0" 829 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 830 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 831 | 832 | nice-try@^1.0.4: 833 | version "1.0.5" 834 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 835 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 836 | 837 | normalize-package-data@^2.3.2: 838 | version "2.5.0" 839 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 840 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 841 | dependencies: 842 | hosted-git-info "^2.1.4" 843 | resolve "^1.10.0" 844 | semver "2 || 3 || 4 || 5" 845 | validate-npm-package-license "^3.0.1" 846 | 847 | object-inspect@^1.7.0: 848 | version "1.7.0" 849 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 850 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 851 | 852 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 853 | version "1.1.1" 854 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 855 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 856 | 857 | object.assign@^4.1.0: 858 | version "4.1.0" 859 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 860 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 861 | dependencies: 862 | define-properties "^1.1.2" 863 | function-bind "^1.1.1" 864 | has-symbols "^1.0.0" 865 | object-keys "^1.0.11" 866 | 867 | object.entries@^1.1.1: 868 | version "1.1.1" 869 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" 870 | integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== 871 | dependencies: 872 | define-properties "^1.1.3" 873 | es-abstract "^1.17.0-next.1" 874 | function-bind "^1.1.1" 875 | has "^1.0.3" 876 | 877 | object.values@^1.1.0: 878 | version "1.1.1" 879 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" 880 | integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== 881 | dependencies: 882 | define-properties "^1.1.3" 883 | es-abstract "^1.17.0-next.1" 884 | function-bind "^1.1.1" 885 | has "^1.0.3" 886 | 887 | once@^1.3.0: 888 | version "1.4.0" 889 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 890 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 891 | dependencies: 892 | wrappy "1" 893 | 894 | onetime@^5.1.0: 895 | version "5.1.0" 896 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 897 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 898 | dependencies: 899 | mimic-fn "^2.1.0" 900 | 901 | optionator@^0.8.3: 902 | version "0.8.3" 903 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 904 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 905 | dependencies: 906 | deep-is "~0.1.3" 907 | fast-levenshtein "~2.0.6" 908 | levn "~0.3.0" 909 | prelude-ls "~1.1.2" 910 | type-check "~0.3.2" 911 | word-wrap "~1.2.3" 912 | 913 | os-tmpdir@~1.0.2: 914 | version "1.0.2" 915 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 916 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 917 | 918 | p-limit@^1.1.0: 919 | version "1.3.0" 920 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 921 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 922 | dependencies: 923 | p-try "^1.0.0" 924 | 925 | p-locate@^2.0.0: 926 | version "2.0.0" 927 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 928 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 929 | dependencies: 930 | p-limit "^1.1.0" 931 | 932 | p-try@^1.0.0: 933 | version "1.0.0" 934 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 935 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 936 | 937 | parent-module@^1.0.0: 938 | version "1.0.1" 939 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 940 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 941 | dependencies: 942 | callsites "^3.0.0" 943 | 944 | parse-json@^2.2.0: 945 | version "2.2.0" 946 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 947 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 948 | dependencies: 949 | error-ex "^1.2.0" 950 | 951 | path-exists@^3.0.0: 952 | version "3.0.0" 953 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 954 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 955 | 956 | path-is-absolute@^1.0.0: 957 | version "1.0.1" 958 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 959 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 960 | 961 | path-key@^2.0.1: 962 | version "2.0.1" 963 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 964 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 965 | 966 | path-parse@^1.0.6: 967 | version "1.0.6" 968 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 969 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 970 | 971 | path-type@^2.0.0: 972 | version "2.0.0" 973 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 974 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 975 | dependencies: 976 | pify "^2.0.0" 977 | 978 | pify@^2.0.0: 979 | version "2.3.0" 980 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 981 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 982 | 983 | pkg-dir@^2.0.0: 984 | version "2.0.0" 985 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 986 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 987 | dependencies: 988 | find-up "^2.1.0" 989 | 990 | prelude-ls@~1.1.2: 991 | version "1.1.2" 992 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 993 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 994 | 995 | prettier@^2.0.4: 996 | version "2.0.4" 997 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" 998 | integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== 999 | 1000 | progress@^2.0.0: 1001 | version "2.0.3" 1002 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1003 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1004 | 1005 | punycode@^2.1.0: 1006 | version "2.1.1" 1007 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1008 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1009 | 1010 | read-pkg-up@^2.0.0: 1011 | version "2.0.0" 1012 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1013 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 1014 | dependencies: 1015 | find-up "^2.0.0" 1016 | read-pkg "^2.0.0" 1017 | 1018 | read-pkg@^2.0.0: 1019 | version "2.0.0" 1020 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1021 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 1022 | dependencies: 1023 | load-json-file "^2.0.0" 1024 | normalize-package-data "^2.3.2" 1025 | path-type "^2.0.0" 1026 | 1027 | regexpp@^2.0.1: 1028 | version "2.0.1" 1029 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1030 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 1031 | 1032 | resolve-from@^4.0.0: 1033 | version "4.0.0" 1034 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1035 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1036 | 1037 | resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1: 1038 | version "1.15.1" 1039 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" 1040 | integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== 1041 | dependencies: 1042 | path-parse "^1.0.6" 1043 | 1044 | restore-cursor@^3.1.0: 1045 | version "3.1.0" 1046 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1047 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1048 | dependencies: 1049 | onetime "^5.1.0" 1050 | signal-exit "^3.0.2" 1051 | 1052 | rimraf@2.6.3: 1053 | version "2.6.3" 1054 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1055 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1056 | dependencies: 1057 | glob "^7.1.3" 1058 | 1059 | run-async@^2.4.0: 1060 | version "2.4.0" 1061 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" 1062 | integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== 1063 | dependencies: 1064 | is-promise "^2.1.0" 1065 | 1066 | rxjs@^6.5.3: 1067 | version "6.5.5" 1068 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" 1069 | integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== 1070 | dependencies: 1071 | tslib "^1.9.0" 1072 | 1073 | "safer-buffer@>= 2.1.2 < 3": 1074 | version "2.1.2" 1075 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1076 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1077 | 1078 | "semver@2 || 3 || 4 || 5", semver@^5.5.0: 1079 | version "5.7.1" 1080 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1081 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1082 | 1083 | semver@^6.1.2: 1084 | version "6.3.0" 1085 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1086 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1087 | 1088 | shebang-command@^1.2.0: 1089 | version "1.2.0" 1090 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1091 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1092 | dependencies: 1093 | shebang-regex "^1.0.0" 1094 | 1095 | shebang-regex@^1.0.0: 1096 | version "1.0.0" 1097 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1098 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1099 | 1100 | signal-exit@^3.0.2: 1101 | version "3.0.3" 1102 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1103 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1104 | 1105 | slice-ansi@^2.1.0: 1106 | version "2.1.0" 1107 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1108 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1109 | dependencies: 1110 | ansi-styles "^3.2.0" 1111 | astral-regex "^1.0.0" 1112 | is-fullwidth-code-point "^2.0.0" 1113 | 1114 | spdx-correct@^3.0.0: 1115 | version "3.1.0" 1116 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 1117 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 1118 | dependencies: 1119 | spdx-expression-parse "^3.0.0" 1120 | spdx-license-ids "^3.0.0" 1121 | 1122 | spdx-exceptions@^2.1.0: 1123 | version "2.2.0" 1124 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 1125 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 1126 | 1127 | spdx-expression-parse@^3.0.0: 1128 | version "3.0.0" 1129 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 1130 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 1131 | dependencies: 1132 | spdx-exceptions "^2.1.0" 1133 | spdx-license-ids "^3.0.0" 1134 | 1135 | spdx-license-ids@^3.0.0: 1136 | version "3.0.5" 1137 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 1138 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 1139 | 1140 | sprintf-js@~1.0.2: 1141 | version "1.0.3" 1142 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1143 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1144 | 1145 | string-width@^3.0.0: 1146 | version "3.1.0" 1147 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1148 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1149 | dependencies: 1150 | emoji-regex "^7.0.1" 1151 | is-fullwidth-code-point "^2.0.0" 1152 | strip-ansi "^5.1.0" 1153 | 1154 | string-width@^4.1.0: 1155 | version "4.2.0" 1156 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1157 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1158 | dependencies: 1159 | emoji-regex "^8.0.0" 1160 | is-fullwidth-code-point "^3.0.0" 1161 | strip-ansi "^6.0.0" 1162 | 1163 | string.prototype.trimend@^1.0.0: 1164 | version "1.0.1" 1165 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 1166 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 1167 | dependencies: 1168 | define-properties "^1.1.3" 1169 | es-abstract "^1.17.5" 1170 | 1171 | string.prototype.trimleft@^2.1.1: 1172 | version "2.1.2" 1173 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" 1174 | integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== 1175 | dependencies: 1176 | define-properties "^1.1.3" 1177 | es-abstract "^1.17.5" 1178 | string.prototype.trimstart "^1.0.0" 1179 | 1180 | string.prototype.trimright@^2.1.1: 1181 | version "2.1.2" 1182 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" 1183 | integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== 1184 | dependencies: 1185 | define-properties "^1.1.3" 1186 | es-abstract "^1.17.5" 1187 | string.prototype.trimend "^1.0.0" 1188 | 1189 | string.prototype.trimstart@^1.0.0: 1190 | version "1.0.1" 1191 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 1192 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 1193 | dependencies: 1194 | define-properties "^1.1.3" 1195 | es-abstract "^1.17.5" 1196 | 1197 | strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1198 | version "5.2.0" 1199 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1200 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1201 | dependencies: 1202 | ansi-regex "^4.1.0" 1203 | 1204 | strip-ansi@^6.0.0: 1205 | version "6.0.0" 1206 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1207 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1208 | dependencies: 1209 | ansi-regex "^5.0.0" 1210 | 1211 | strip-bom@^3.0.0: 1212 | version "3.0.0" 1213 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1214 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1215 | 1216 | strip-json-comments@^3.0.1: 1217 | version "3.1.0" 1218 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" 1219 | integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== 1220 | 1221 | supports-color@^5.3.0: 1222 | version "5.5.0" 1223 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1224 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1225 | dependencies: 1226 | has-flag "^3.0.0" 1227 | 1228 | supports-color@^7.1.0: 1229 | version "7.1.0" 1230 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1231 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1232 | dependencies: 1233 | has-flag "^4.0.0" 1234 | 1235 | table@^5.2.3: 1236 | version "5.4.6" 1237 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1238 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1239 | dependencies: 1240 | ajv "^6.10.2" 1241 | lodash "^4.17.14" 1242 | slice-ansi "^2.1.0" 1243 | string-width "^3.0.0" 1244 | 1245 | text-table@^0.2.0: 1246 | version "0.2.0" 1247 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1248 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1249 | 1250 | through@^2.3.6: 1251 | version "2.3.8" 1252 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1253 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1254 | 1255 | tmp@^0.0.33: 1256 | version "0.0.33" 1257 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1258 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1259 | dependencies: 1260 | os-tmpdir "~1.0.2" 1261 | 1262 | tslib@^1.9.0: 1263 | version "1.11.1" 1264 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 1265 | integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== 1266 | 1267 | type-check@~0.3.2: 1268 | version "0.3.2" 1269 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1270 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1271 | dependencies: 1272 | prelude-ls "~1.1.2" 1273 | 1274 | type-fest@^0.11.0: 1275 | version "0.11.0" 1276 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 1277 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 1278 | 1279 | type-fest@^0.8.1: 1280 | version "0.8.1" 1281 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1282 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1283 | 1284 | uri-js@^4.2.2: 1285 | version "4.2.2" 1286 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1287 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1288 | dependencies: 1289 | punycode "^2.1.0" 1290 | 1291 | v8-compile-cache@^2.0.3: 1292 | version "2.1.0" 1293 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1294 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 1295 | 1296 | validate-npm-package-license@^3.0.1: 1297 | version "3.0.4" 1298 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1299 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1300 | dependencies: 1301 | spdx-correct "^3.0.0" 1302 | spdx-expression-parse "^3.0.0" 1303 | 1304 | which@^1.2.9: 1305 | version "1.3.1" 1306 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1307 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1308 | dependencies: 1309 | isexe "^2.0.0" 1310 | 1311 | word-wrap@~1.2.3: 1312 | version "1.2.3" 1313 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1314 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1315 | 1316 | wrappy@1: 1317 | version "1.0.2" 1318 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1319 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1320 | 1321 | write@1.0.3: 1322 | version "1.0.3" 1323 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1324 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1325 | dependencies: 1326 | mkdirp "^0.5.1" 1327 | --------------------------------------------------------------------------------