├── example ├── config.bar └── README.md ├── assets ├── redIcon@3x.png ├── windows │ ├── icon@3x.png │ ├── alert@2x.png │ └── transparentIcon@3x.png └── macos │ ├── alertTemplate@2x.png │ ├── iconTemplate@3x.png │ └── transparentIconTemplate@3x.png ├── .eslintrc.json ├── LICENSE ├── package.json ├── views ├── downloader │ ├── main.js │ └── index.html └── preferences │ ├── main.js │ └── index.html ├── .gitignore ├── modules ├── iconDownloader.js ├── configuration.js ├── itemBuilder.js ├── hass.js └── data.js ├── index.js ├── README.md └── yarn.lock /example/config.bar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/example/config.bar -------------------------------------------------------------------------------- /assets/redIcon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/redIcon@3x.png -------------------------------------------------------------------------------- /assets/windows/icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/windows/icon@3x.png -------------------------------------------------------------------------------- /assets/windows/alert@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/windows/alert@2x.png -------------------------------------------------------------------------------- /assets/macos/alertTemplate@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/macos/alertTemplate@2x.png -------------------------------------------------------------------------------- /assets/macos/iconTemplate@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/macos/iconTemplate@3x.png -------------------------------------------------------------------------------- /assets/windows/transparentIcon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/windows/transparentIcon@3x.png -------------------------------------------------------------------------------- /assets/macos/transparentIconTemplate@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/addyire/ha-menu/main/assets/macos/transparentIconTemplate@3x.png -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es2021": true 6 | }, 7 | "extends": [ 8 | "standard" 9 | ], 10 | "parserOptions": { 11 | "ecmaVersion": "latest" 12 | }, 13 | "rules": { 14 | 15 | }, 16 | "ignorePatterns": ["**/views/**"] 17 | } 18 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # Example Configurations 2 | 3 | This folder contains a example configuration that will demonstrate the different parts of `ha-menu`. 4 | 5 | ## Usage 6 | 7 | 1. Download `config.bar` from this folder 8 | 2. Open `ha-menu` preferences 9 | 3. Click `Import` on the top 10 | 4. Find the downloaded `config.bar` file on your computer and click `Open` 11 | 5. Change the connection settings 12 | 6. Click `Save + Reload` -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 addyire 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ha-menu", 3 | "description": "Customizable way to interact with Home Assistant through the menu bar on macOS.", 4 | "version": "2.2.1", 5 | "author": { 6 | "name": "Addison Ireland" 7 | }, 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/addyire/ha-menu" 11 | }, 12 | "main": "index.js", 13 | "license": "MIT", 14 | "build": { 15 | "appId": "com.addyire.hamenu", 16 | "productName": "HA Menu", 17 | "fileAssociations": [ 18 | { 19 | "ext": "bar", 20 | "name": "ha-menu config", 21 | "isPackage": true, 22 | "role": "Editor" 23 | } 24 | ], 25 | "files": [ 26 | "!**/img", 27 | "!**/example" 28 | ] 29 | }, 30 | "scripts": { 31 | "start": "electron .", 32 | "lint": "eslint . --fix", 33 | "pack": "electron-builder --dir", 34 | "dist": "electron-builder", 35 | "publish": "electron-builder --mac --x64 --arm64 --win -p always" 36 | }, 37 | "devDependencies": { 38 | "electron": "^15.3.0", 39 | "electron-builder": "^23.6.0", 40 | "eslint": "^7.12.1", 41 | "eslint-config-standard": "^16.0.3", 42 | "eslint-plugin-import": "^2.22.1", 43 | "eslint-plugin-node": "^11.1.0", 44 | "eslint-plugin-promise": "^5.1.1" 45 | }, 46 | "dependencies": { 47 | "archiver": "^5.3.0", 48 | "axios": "^0.24.0", 49 | "electron-log": "^4.4.1", 50 | "homeassistant": "^0.2.0", 51 | "ncp": "^2.0.0", 52 | "unzipper": "^0.10.11" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /views/downloader/main.js: -------------------------------------------------------------------------------- 1 | const { ipcRenderer } = require('electron') 2 | 3 | const elements = { 4 | icon: document.getElementById('name'), 5 | fileName: document.getElementById('file-name'), 6 | iconDisplay: document.getElementById('iconDisplay'), 7 | form: document.getElementById('form'), 8 | toastError: document.getElementById('toast-error'), 9 | toasts: { 10 | success: new bootstrap.Toast(document.getElementById('toastSuccess')), 11 | error: new bootstrap.Toast(document.getElementById('toastFailed')) 12 | } 13 | } 14 | 15 | elements.icon.oninput = async () => { 16 | const iconExists = await ipcRenderer.sendSync('icon-exists', elements.icon.value) 17 | if (iconExists) { 18 | iconDisplay(elements.icon.value) 19 | } else { 20 | iconDisplay('help-circle') 21 | } 22 | } 23 | 24 | elements.form.onsubmit = async (e) => { 25 | e.preventDefault() 26 | 27 | const result = await ipcRenderer.sendSync('download-icon', generateRequestJSON()) 28 | console.log(result) 29 | if (result.success) { 30 | elements.toasts.success.show() 31 | } else { 32 | elements.toastError.innerText = result.message 33 | elements.toasts.error.show() 34 | } 35 | } 36 | 37 | function iconDisplay (icon) { 38 | elements.iconDisplay.innerHTML = ` 39 | 40 | ` 41 | } 42 | 43 | function generateRequestJSON () { 44 | const name = elements.icon.value 45 | const fileName = elements.fileName.value.replace(/\.[^/.]+$/, "") 46 | const size = selectedRadio('size') 47 | const color = selectedRadio('color') 48 | 49 | return { 50 | name, 51 | fileName, 52 | size, 53 | color 54 | } 55 | } 56 | 57 | function selectedRadio (name) { 58 | const radios = document.getElementsByName(name) 59 | for (const radio of radios) { 60 | if (radio.checked) return radio.id 61 | } 62 | return undefined 63 | } 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # Ignore test config file 107 | config.json 108 | # Ignore icon psd 109 | icon.psd 110 | 111 | *.DS_store -------------------------------------------------------------------------------- /modules/iconDownloader.js: -------------------------------------------------------------------------------- 1 | const { ipcMain } = require('electron') 2 | const axios = require('axios') 3 | const log = require('electron-log') 4 | const fs = require('fs') 5 | const path = require('path') 6 | 7 | const { PATHS } = require('./data.js') 8 | 9 | const ICON_URL = 'https://materialdesignicons.com/api' 10 | 11 | const COLORS = { 12 | white: 'FFFFFF', 13 | black: '000000' 14 | } 15 | const SIZES = { 16 | small: 24, 17 | medium: 32, 18 | large: 48 19 | } 20 | 21 | let icons 22 | 23 | async function loadIcons () { 24 | icons = icons || await getIcons() 25 | } 26 | 27 | async function clearIcons () { 28 | icons = null 29 | } 30 | 31 | async function iconExists (name) { 32 | try { 33 | icons = icons || await getIcons() 34 | if (!icons) { 35 | return false 36 | } 37 | 38 | const icon = icons.find(icon => icon.name === name) 39 | return !!icon 40 | } catch (error) { 41 | log.error('Encountered error while checking if icon exists', error) 42 | return false 43 | } 44 | } 45 | 46 | async function downloadIcon (name, fileName, size, color) { 47 | try { 48 | log.info(`Downloading ${name} to ${fileName} with size ${size} and color ${color}`) 49 | 50 | icons = icons || await getIcons() 51 | if (!icons) { 52 | return { 53 | success: false, 54 | message: 'Could not fetch icons. (Connection Error)' 55 | } 56 | } 57 | 58 | const icon = icons.find(icon => icon.name === name) 59 | if (!icon) { 60 | return { 61 | success: false, 62 | message: `I could not find an icon called "${name}"` 63 | } 64 | } 65 | 66 | size = SIZES[size] 67 | color = COLORS[color] 68 | 69 | const iconDownload = await axios.get(`${ICON_URL}/download/${icon.id}/${color}/1/FFFFFF/0/${size}`, { responseType: 'stream' }) 70 | iconDownload.data.pipe(fs.createWriteStream(path.join(PATHS.ICONS_FOLDER, fileName + '.png'))) 71 | 72 | return { 73 | success: true 74 | } 75 | } catch (err) { 76 | log.error('Encountered error while downloading icon', err) 77 | return { 78 | success: false, 79 | message: err.message 80 | } 81 | } 82 | } 83 | 84 | async function getIcons () { 85 | log.info('Fetching icons') 86 | try { 87 | const icons = (await axios.get(ICON_URL + '/package/38EF63D0-4744-11E4-B3CF-842B2B6CFE1B')).data.icons 88 | log.info(`Fetched ${icons.length} icons`) 89 | return icons 90 | } catch (error) { 91 | log.error('Encountered error while fetching icon packages', error) 92 | return undefined 93 | } 94 | } 95 | 96 | // on download icon request... 97 | ipcMain.on('download-icon', async (event, data) => { 98 | // extract the data from the payload 99 | const { name, fileName, size, color } = data 100 | // try to download the icon 101 | const result = await downloadIcon(name, fileName, size, color) 102 | // return the result 103 | event.returnValue = result 104 | }) 105 | 106 | // on icon-exists... 107 | ipcMain.on('icon-exists', async (event, iconName) => { 108 | // try to check if the icon exists 109 | event.returnValue = await iconExists(iconName) 110 | }) 111 | 112 | module.exports = { 113 | loadIcons, 114 | clearIcons 115 | } 116 | -------------------------------------------------------------------------------- /modules/configuration.js: -------------------------------------------------------------------------------- 1 | const { Notification, dialog, shell } = require('electron') 2 | 3 | const fs = require('fs') 4 | const path = require('path') 5 | const archiver = require('archiver') 6 | const unzipper = require('unzipper') 7 | 8 | const { settings, PATHS } = require('./data') 9 | 10 | // function to export configuration 11 | const exportConfig = (savePath) => { 12 | // if no path... return 13 | if (!savePath) return 14 | 15 | // create the archive and set where to output 16 | const archive = archiver('zip') 17 | archive.pipe(fs.createWriteStream(savePath)) 18 | 19 | // set handlers 20 | archive.on('warning', console.warn) 21 | archive.on('error', (err) => { 22 | dialog.showErrorBox('Export Error', 'There was an error exporting your configuration file. \n' + err) 23 | }) 24 | 25 | // add the config file 26 | archive.append(JSON.stringify(settings.getAll()), { name: 'config.json' }) 27 | // add the icons folder 28 | archive.directory(PATHS.ICONS_FOLDER, 'icons') 29 | // finalize the archive 30 | archive.finalize() 31 | } 32 | 33 | // TODO move this somewhere else 34 | // function to open HASS url in browser 35 | const openHASSInBrowser = () => { 36 | // get the url and port from settings 37 | const { url, port } = settings.getAll() 38 | 39 | // if no url or port... return 40 | if (!url || !port) return 41 | 42 | // open the url in the default browser 43 | shell.openExternal(`${url}:${port}`) 44 | } 45 | 46 | // function to import configuration 47 | const importConfig = (filePath, rebuildFunction) => { 48 | // if no path or file doesn't exist... return 49 | if (!filePath || !fs.existsSync(filePath)) return 50 | 51 | // open the file 52 | fs.createReadStream(filePath) 53 | // pipe to unzipper 54 | .pipe(unzipper.Parse()) 55 | // on file... 56 | .on('entry', async (entry) => { 57 | // try... 58 | try { 59 | // if the entry is the config file... 60 | if (entry.path === 'config.json') { 61 | // set the settings 62 | settings.setAll(JSON.parse(await entry.buffer())) 63 | } else if (entry.path.startsWith('icons/')) { // if the entry is in the icons folder... 64 | // if the entry is a directory... 65 | if (entry.type === 'Directory') { 66 | // create the directory recursively 67 | fs.mkdirSync(path.join(PATHS.ICONS_FOLDER, entry.path.replace('icons/', '')), { recursive: true }) 68 | } else { // otherwise... 69 | // write the icon file 70 | entry.pipe(fs.createWriteStream(path.join(PATHS.ICONS_FOLDER, entry.path.replace('icons/', '')))) 71 | } 72 | } else { // if none of the above... 73 | // unkown file, ignore 74 | console.log('unkown item', entry.path) 75 | entry.autodrain() 76 | } 77 | } catch (err) { 78 | // on error... 79 | dialog.showErrorBox('Import Error', 'Something is wrong with your configuration file. \n' + err) 80 | } 81 | }) 82 | // on finished... 83 | .on('finish', () => { 84 | // display notificiation 85 | new Notification({ 86 | title: 'Configuration File Imported', 87 | body: 'Your configuration file has been imported successfully.', 88 | silent: true 89 | }).show() 90 | // if rebuild function is defined... run it 91 | if (rebuildFunction) rebuildFunction() 92 | }) 93 | // on error... 94 | .on('error', (err) => { 95 | // show error 96 | dialog.showErrorBox('Import Error', 'Something is wrong with your configuration file. \n' + err) 97 | }) 98 | } 99 | 100 | module.exports = { 101 | importConfig, 102 | exportConfig, 103 | openHASSInBrowser 104 | } 105 | -------------------------------------------------------------------------------- /views/downloader/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Icon Downloader 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |

Icon Downloader

17 |
18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 |
27 | 28 |
29 |
30 |
31 |
32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 |
40 |
41 |
42 |
43 | 44 | 45 | 46 | 47 |
48 |
49 |
50 |
51 | 52 | 53 |
54 |
55 |
56 | 59 |
60 |
61 |
62 | 63 |
64 | 72 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /modules/itemBuilder.js: -------------------------------------------------------------------------------- 1 | const hass = require('./hass') 2 | const { PATHS } = require('./data') 3 | const { openHASSInBrowser } = require('./configuration') 4 | 5 | // define function to build items from config 6 | const buildItems = async (items, rebuildFunction) => { 7 | // start with empty list of items 8 | const builtItems = [] 9 | 10 | // if theres no items... return the empty list 11 | if (!items || !(items instanceof Array) || items.length === 0) return builtItems 12 | 13 | // loop through the config items 14 | for (const item of items) { 15 | // if the item has no type... skip it 16 | if (!item.type) continue 17 | 18 | // if the item has a template for whether or not to hide... 19 | if (item.hiddenTemplate) { 20 | // render the template 21 | const hidden = (await hass.render(item.hiddenTemplate)).toLowerCase() 22 | // if the template returns true or on then skip this item 23 | if (hidden === 'true' || hidden === 'on') continue 24 | } 25 | 26 | // initialize the item 27 | const builtItem = { 28 | // if the label is a template, render it otherwise use the regular label 29 | label: item.labelTemplate ? await hass.render(item.labelTemplate) : item.label 30 | } 31 | 32 | // if the item has a regular icon... 33 | if (item.icon) { 34 | // get the icon path and set it 35 | builtItem.icon = PATHS.ICON_PATH_GENERATOR(item.icon) 36 | } else if (item.iconTemplate) { // if the item has a template for the icon... 37 | // render the template, get the path, and then set it 38 | builtItem.icon = PATHS.ICON_PATH_GENERATOR(await hass.render(item.iconTemplate)) 39 | } 40 | 41 | // switch on item type 42 | switch (item.type) { 43 | // for dropdowns... 44 | case 'dropdown': { 45 | // set the submenu to be a built list of items from the dropdown items 46 | builtItem.submenu = await buildItems(item.items, rebuildFunction) 47 | // set the type 48 | builtItem.type = 'submenu' 49 | // break out of the switch 50 | break 51 | } 52 | // for label... 53 | case 'label': { 54 | // if the item has a template for if it should be checked... 55 | if (item.checkedTemplate) { 56 | // render the template 57 | const state = await hass.render(item.checkedTemplate) 58 | // set checked to true if the template returns true or on 59 | builtItem.checked = state === 'on' || state === 'true' 60 | // set the item type 61 | builtItem.type = 'checkbox' 62 | } 63 | 64 | // if there is no action or the item doesnt have reload enabled then disable the item 65 | builtItem.enabled = !!item.action || !!item.reload 66 | 67 | // if there is an action... 68 | if (item.action) { 69 | // set the click function 70 | builtItem.click = item.reload // if reload is enabled, set the click function to reload also 71 | ? () => { 72 | // call action 73 | hass.action(item.action) 74 | // rebuild the tray after 2 seconds so the action goes through first 75 | setTimeout(rebuildFunction, 2000) 76 | } 77 | : () => { 78 | // call action 79 | hass.action(item.action) 80 | } 81 | } else if (item.reload) { // otherwise if reload is enabled... 82 | // set the click function to be the rebuild tray function 83 | builtItem.click = rebuildFunction 84 | } 85 | 86 | // break 87 | break 88 | } 89 | // for separator... 90 | case 'separator': { 91 | // set the type to separator 92 | builtItem.type = 'separator' 93 | // break 94 | break 95 | } 96 | // for open_hass... 97 | case 'open_hass': { 98 | // set the click function 99 | builtItem.click = openHASSInBrowser 100 | // break 101 | break 102 | } 103 | // idk if i need this 104 | default: { 105 | continue 106 | } 107 | } 108 | 109 | // push the built item to the list 110 | builtItems.push(builtItem) 111 | } 112 | 113 | // return the built items 114 | return builtItems 115 | } 116 | 117 | // export the build items function 118 | module.exports = buildItems 119 | -------------------------------------------------------------------------------- /modules/hass.js: -------------------------------------------------------------------------------- 1 | const HomeAssistant = require('homeassistant') 2 | const { Notification } = require('electron') 3 | const log = require('electron-log') 4 | const axios = require('axios') 5 | 6 | const data = require('./data') 7 | const settingsManager = data.settings 8 | const cache = data.cache 9 | 10 | let hass, settings 11 | 12 | // define reload function 13 | const reload = () => { 14 | log.info('Reloading hass connection') 15 | // get new settings 16 | settings = settingsManager.getAll() 17 | // create new hass instance 18 | hass = new HomeAssistant({ 19 | host: settings.url, 20 | token: settings.llac, 21 | port: settings.port 22 | }) 23 | } 24 | // reload so hass is defined 25 | reload() 26 | 27 | // export reload 28 | module.exports.reload = reload 29 | 30 | // make test function to test hass conneciton 31 | module.exports.test = async (connection) => { 32 | log.info('Testing connection...') 33 | // extract the url, port, and long lived access token 34 | const { url, port, llac } = connection 35 | // try... 36 | try { 37 | // try sending req to hass 38 | const apiStatus = await axios({ 39 | method: 'get', 40 | baseURL: `${url}:${port}`, 41 | url: '/api/', 42 | headers: { 43 | Authorization: `Bearer ${llac}` 44 | }, 45 | timeout: 2500 46 | }) 47 | log.info('Connection successful!') 48 | // if successful, return true wih the api message 49 | return { 50 | valid: true, 51 | message: apiStatus.message 52 | } 53 | } catch (err) { 54 | log.info('Connection failed ' + err.message) 55 | // on error, return false and the error message 56 | return { 57 | valid: false, 58 | message: err.message 59 | } 60 | } 61 | } 62 | 63 | // function to check the status of hass 64 | module.exports.status = async () => { 65 | log.info('Checking status...') 66 | // get latest settings 67 | const settings = settingsManager.getAll() 68 | 69 | // if any settings missing, return 70 | if (!settings.url || !settings.llac || !settings.port) { 71 | log.info('No settings found') 72 | return { 73 | connected: false, 74 | message: 'No settings found' 75 | } 76 | } 77 | 78 | // try... 79 | try { 80 | // try sending req to hass 81 | const apiStatus = await axios({ 82 | method: 'get', 83 | baseURL: `${settings.url}:${settings.port}`, 84 | url: '/api/', 85 | headers: { 86 | Authorization: `Bearer ${settings.llac}` 87 | }, 88 | timeout: 2500 89 | }) 90 | log.info('Connection successful!') 91 | // if successful, return true wih the api message 92 | return { 93 | connected: true, 94 | message: apiStatus.data 95 | } 96 | } catch (err) { 97 | log.info('Connection failed ' + err.message) 98 | // on error, return false and the error message 99 | return { 100 | connected: false, 101 | message: err.message 102 | } 103 | } 104 | } 105 | 106 | // function to run actions 107 | module.exports.action = (action) => { 108 | log.info('Running action...') 109 | // call the service 110 | hass.services.call(action.service, action.domain, action.serviceData) 111 | // when promise resolves... 112 | .then((res) => { 113 | log.info('Action completed') 114 | // if the result is not a string then it was succesfull so return 115 | if (typeof res !== 'string') return 116 | // otherwise throw an error 117 | throw new Error(res) 118 | }) 119 | // on error... 120 | .catch((err) => { 121 | log.info('Failed to call action ' + err.message) 122 | // show a notification with the error 123 | new Notification({ 124 | title: 'Action Failed', 125 | body: err.message, 126 | silent: true 127 | }).show() 128 | }) 129 | } 130 | 131 | // function to render a template 132 | module.exports.render = async (template) => { 133 | log.debug('Rendering template...') 134 | log.debug(template) 135 | // if the template is in the cache... 136 | if (cache.get(template)) { 137 | log.debug('Template found in cache') 138 | // return the cached template 139 | return cache.get(template) 140 | } 141 | // try... 142 | try { 143 | // render the template 144 | const value = await hass.templates.render(template) 145 | // if error message... 146 | if (value.message) throw new Error(value.message) 147 | log.debug(`Template resolved to: ${String(value)}`) 148 | // store in cache 149 | cache.set(template, value) 150 | // return the rendered template as a string 151 | return String(value) 152 | } catch (err) { 153 | log.info('Failed to render template') 154 | log.error(err.message) 155 | // on error... 156 | // log the error 157 | // return INVALID TEMPLATE 158 | return 'INVALID TEMPLATE' 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /modules/data.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const fs = require('fs') 3 | const electron = require('electron') 4 | 5 | const isWindows = process.platform === 'win32' 6 | const userDataPath = (electron.app || electron.remote.app).getPath('userData') 7 | 8 | const settingsPath = path.join(userDataPath, 'settings.json') 9 | const iconPath = path.join(__dirname, '..', 'assets') 10 | 11 | const DEFAULT_SETTINGS = { 12 | url: '', 13 | llac: '', 14 | port: 8123, 15 | openOnStart: false, 16 | refreshInterval: 30, 17 | config: { 18 | items: [], 19 | title: '' 20 | } 21 | } 22 | 23 | class SpecialDictionary { 24 | constructor (filePath, defaults, validator) { 25 | // eslint complains when defaults aren't in the constructor 26 | this.writeToFile = false 27 | this.filePath = undefined 28 | this.data = {} 29 | this.defaults = undefined 30 | 31 | // if filePath is a string... 32 | if (filePath) { 33 | this.writeToFile = true 34 | this.filePath = filePath 35 | if (fs.existsSync(filePath)) this.data = JSON.parse(fs.readFileSync(filePath)) 36 | } 37 | this.defaults = defaults 38 | this.validator = validator 39 | } 40 | 41 | set (key, value) { 42 | this.data[key] = value 43 | if (this.writeToFile) this.write() 44 | } 45 | 46 | get (key) { 47 | if (this.defaults && !this.data[key]) return this.defaults[key] 48 | return this.data[key] 49 | } 50 | 51 | getAll () { 52 | return { ...this.defaults, ...this.data } 53 | } 54 | 55 | setAll (data) { 56 | this.data = data 57 | if (this.writeToFile) this.write() 58 | } 59 | 60 | write (path) { 61 | fs.writeFileSync(path || this.filePath, JSON.stringify(this.data)) 62 | } 63 | 64 | clear () { 65 | this.data = {} 66 | if (this.writeToFile) this.write() 67 | } 68 | 69 | validate (newData) { 70 | if (this.validator) return this.validator(newData || this.data) 71 | } 72 | } 73 | 74 | // export all of the different paths 75 | module.exports = { 76 | PATHS: { 77 | MENUBAR_ICONS: { 78 | DEFAULT: path.join(iconPath, isWindows ? 'windows' : 'macos', isWindows ? 'icon@3x.png' : 'iconTemplate@3x.png'), 79 | TRANSPARENT: path.join(iconPath, isWindows ? 'windows' : 'macos', isWindows ? 'transparentIcon@3x.png' : 'transparentIconTemplate@3x.png'), 80 | WARNING_ICON: path.join(iconPath, isWindows ? 'windows' : 'macos', isWindows ? 'alert@2x.png' : 'alertTemplate@2x.png'), 81 | ERROR: path.join(iconPath, 'redIcon@3x.png') 82 | }, 83 | ICONS_FOLDER: path.join(userDataPath, 'icons'), 84 | PAGES: { 85 | PREFERENCES: path.join(__dirname, '../views/preferences/index.html'), 86 | ICON_DOWNLOADER: path.join(__dirname, '../views/downloader/index.html') 87 | } 88 | }, 89 | settings: new SpecialDictionary(settingsPath, DEFAULT_SETTINGS, configValidator), 90 | cache: new SpecialDictionary() 91 | } 92 | 93 | module.exports.DELETE_ALL_ICONS = () => { 94 | fs.rmSync(module.exports.PATHS.ICONS_FOLDER, { recursive: true }) 95 | fs.mkdirSync(module.exports.PATHS.ICONS_FOLDER) 96 | } 97 | 98 | module.exports.PATHS.ICON_PATH_GENERATOR = (name) => { 99 | // make the path 100 | const iconPath = path.join(module.exports.PATHS.ICONS_FOLDER, name) 101 | // check if the icon exists... if it does return the path 102 | if (fs.existsSync(iconPath)) return iconPath 103 | // otherwise return the warning icon because the path wasn't found 104 | else return module.exports.PATHS.MENUBAR_ICONS.WARNING_ICON 105 | } 106 | 107 | // check if the icons folder doesnt exists 108 | if (!fs.existsSync(module.exports.PATHS.ICONS_FOLDER)) { 109 | // create the icons folder 110 | fs.mkdirSync(module.exports.PATHS.ICONS_FOLDER) 111 | } 112 | 113 | // function to validate settings 114 | function configValidator (settings) { 115 | // if the settings are undefined... 116 | if (!settings) { 117 | // return false 118 | console.log('settings are undefined') 119 | return false 120 | } 121 | // if the settings are not an object... 122 | if (typeof settings !== 'object') { 123 | // return false 124 | console.log('settings are not an object') 125 | return false 126 | } 127 | // if the settings do not contain a url... 128 | if (!settings.url) { 129 | // return false 130 | console.log('settings do not contain a url') 131 | return false 132 | } 133 | // if the settings do not contain a llac... 134 | if (!settings.llac) { 135 | // return false 136 | console.log('settings do not contain a llac') 137 | return false 138 | } 139 | // if the settings do not contain a port... 140 | if (!settings.port) { 141 | // return false 142 | console.log('settings do not contain a port') 143 | return false 144 | } 145 | // if the settings do not contain an openOnStart... 146 | if (!settings.openOnStart || typeof settings.openOnStart !== 'boolean') { 147 | // return false 148 | console.log('settings do not contain an openOnStart') 149 | return false 150 | } 151 | // if the settings do not contain a refresh interval... 152 | if (typeof settings.refreshInterval !== 'number' || settings.refreshInterval < 0) { 153 | // return false 154 | console.log('settings do not contain a refresh interval') 155 | return false 156 | } 157 | // if the settings do not contain a config... 158 | if (!settings.config) { 159 | // return false 160 | console.log('settings do not contain a config') 161 | return false 162 | } 163 | 164 | return true 165 | } 166 | -------------------------------------------------------------------------------- /views/preferences/main.js: -------------------------------------------------------------------------------- 1 | const { ipcRenderer } = require('electron') 2 | 3 | const elements = { 4 | buttons: { 5 | connect: document.getElementById('connect'), 6 | openIcons: document.getElementById('open-icons'), 7 | save: document.getElementById('save'), 8 | exit: document.getElementById('exit'), 9 | saveConfig: document.getElementById('saveConfig'), 10 | loadFile: document.getElementById('loadFile'), 11 | paste: document.getElementById('paste'), 12 | iconDownloader: document.getElementById('icon-downloader'), 13 | }, 14 | fields: { 15 | url: document.getElementById('hassURL'), 16 | llac: document.getElementById('hassLLAC'), 17 | port: document.getElementById('hassPORT'), 18 | config: document.getElementById('appConfig'), 19 | openOnStart: document.getElementById('openOnStart'), 20 | refreshInterval: document.getElementById('refreshInterval') 21 | }, 22 | elements: { 23 | version: document.getElementById('version'), 24 | refreshTime: document.getElementById('refreshTime'), 25 | failedConnectionReason: document.getElementById('failed-connection-reason'), 26 | }, 27 | toasts: { 28 | connectSuccess: new bootstrap.Toast(document.getElementById('connect-success-toast')), 29 | connectFailure: new bootstrap.Toast(document.getElementById('connect-failed-toast')), 30 | saveSuccess: new bootstrap.Toast(document.getElementById('save-success-toast')), 31 | saveFailure: new bootstrap.Toast(document.getElementById('save-failed-toast')), 32 | }, 33 | toastMessages: { 34 | saveError: document.getElementById('save-error-reason') 35 | } 36 | } 37 | 38 | // EVENT LISTENERS 39 | elements.fields.refreshInterval.oninput = (event) => { 40 | const {refreshInterval} = elements.fields 41 | elements.elements.refreshTime.innerText = refreshInterval.value === '0' ? 'Never' : refreshInterval.value + ' minutes' 42 | } 43 | 44 | elements.fields.config.addEventListener('onChange', () => { 45 | const config = elements.fields.config 46 | try { 47 | config.value = JSON.stringify(JSON.parse(config.value), undefined, 2) 48 | } catch (e) { 49 | console.log('Invalid JSON') 50 | } 51 | }) 52 | 53 | elements.buttons.connect.addEventListener('click', async () => { 54 | const { url, llac, port } = elements.fields 55 | await clearValidation(url, llac, port) 56 | const allValid = showValidation(url, llac, port) 57 | 58 | if (!allValid) return 59 | 60 | const response = await ipcRenderer.sendSync('connect', { 61 | url: url.value, 62 | llac: llac.value, 63 | port: port.value 64 | }) 65 | 66 | if (response.valid) { 67 | elements.toasts.connectSuccess.show() 68 | } else { 69 | elements.elements.failedConnectionReason.innerText = response.message 70 | elements.toasts.connectFailure.show() 71 | } 72 | }) 73 | 74 | elements.buttons.saveConfig.addEventListener('click', (e) => { 75 | e.preventDefault() 76 | ipcRenderer.send('exportConfig', {}) 77 | }) 78 | 79 | elements.buttons.loadFile.addEventListener('click', (e) => { 80 | e.preventDefault() 81 | ipcRenderer.send('importConfig', {}) 82 | location.reload() 83 | }) 84 | 85 | elements.buttons.paste.addEventListener('click', (e) => { 86 | e.preventDefault() 87 | navigator.clipboard.readText().then(text => { 88 | try{ 89 | let parsedData = JSON.parse(text) 90 | elements.fields.config.value = JSON.stringify(parsedData, undefined, 2) 91 | } catch (e) { 92 | console.log('Invalid JSON') 93 | } 94 | }).catch(err => { 95 | console.log('Failed to read clipboard contents: ', err) 96 | }) 97 | }) 98 | 99 | elements.buttons.openIcons.addEventListener('click', () => { 100 | ipcRenderer.send('openIconsFolder', {}) 101 | }) 102 | 103 | elements.buttons.exit.addEventListener('click', (e) => { 104 | e.preventDefault() 105 | ipcRenderer.send('exit', {}) 106 | }) 107 | 108 | elements.buttons.iconDownloader.addEventListener('click', () => { 109 | ipcRenderer.send('open-icon-downloader', {}) 110 | }) 111 | 112 | elements.buttons.save.addEventListener('click', async (e) => { 113 | e.preventDefault() 114 | const { url, llac, port, config, openOnStart, refreshInterval } = elements.fields 115 | clearValidation(url, llac, port, config) 116 | const allValid = showValidation(url, llac, port) 117 | let parsedConfig 118 | 119 | if (!allValid) return 120 | 121 | try { 122 | parsedConfig = JSON.parse(config.value) 123 | if(!(parsedConfig.items instanceof Array)) throw new Error('Invalid config') 124 | setValidation(config, true) 125 | } catch (err) { 126 | setValidation(config, false) 127 | return 128 | } 129 | 130 | let response = await ipcRenderer.sendSync('save', { 131 | url: url.value, 132 | llac: llac.value, 133 | port: port.value, 134 | refreshInterval: parseInt(refreshInterval.value), 135 | config: parsedConfig, 136 | openOnStart: openOnStart.checked 137 | }) 138 | 139 | if(!response.success) { 140 | elements.toastMessages.saveError.innerText = response.message 141 | elements.toasts.saveFailure.show() 142 | } else { 143 | elements.toasts.saveSuccess.show() 144 | } 145 | }) 146 | 147 | // IPC EVENTS 148 | ipcRenderer.on('settings', (event, data) => { 149 | console.log(data) 150 | const { url, llac, port, config, refreshInterval } = elements.fields 151 | 152 | elements.elements.version.innerText = `v${data.version}` 153 | url.value = data.url 154 | llac.value = data.llac 155 | port.value = data.port 156 | refreshInterval.value = data.refreshInterval 157 | config.value = JSON.stringify(data.config, undefined, 2) 158 | openOnStart.checked = data.openOnStart 159 | 160 | refreshInterval.oninput() 161 | }) 162 | 163 | // FUNCTIONS 164 | function showValidation (...elements) { 165 | let allValid = true 166 | elements.forEach(element => { 167 | element.classList.add(element.checkValidity() ? 'is-valid' : 'is-invalid') 168 | allValid = allValid && element.checkValidity() 169 | }) 170 | return allValid 171 | } 172 | 173 | function clearValidation (...elements) { 174 | elements.forEach(element => { 175 | element.classList.remove('is-valid', 'is-invalid') 176 | }) 177 | } 178 | 179 | function setValidation (element, valid) { 180 | element.classList.remove('is-valid', 'is-invalid') 181 | element.classList.add(valid ? 'is-valid' : 'is-invalid') 182 | } -------------------------------------------------------------------------------- /views/preferences/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HA Menu Settings 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 | Settings 23 | v 24 |
25 |
26 |
27 | 31 | 35 |
36 |
37 |
38 |
39 | 40 | 41 |
42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 | 52 | 53 |
54 |
55 |
56 | 57 | 61 |
62 |
63 | 67 |
68 |
69 | 73 |
74 |
75 | 79 |
80 |
81 |
82 |
83 |

Refresh Interval

84 |
85 |
86 | 87 |
88 |
89 | 90 |
91 |
92 |

Configuration

93 |
94 |
95 | 99 |
100 |
101 | 102 |
103 | Invalid JSON 104 |
105 |
106 |
107 | 111 |
112 |
113 | 117 |
118 |
119 |
120 | 121 |
122 | 136 | 150 | 164 | 179 |
180 |
181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { app, BrowserWindow, ipcMain, shell, Tray, Menu, dialog } = require('electron') 2 | const log = require('electron-log') 3 | 4 | const { PATHS, settings, cache, DELETE_ALL_ICONS } = require('./modules/data') 5 | const hass = require('./modules/hass') 6 | const itemBuilder = require('./modules/itemBuilder') 7 | const { importConfig, exportConfig, openHASSInBrowser } = require('./modules/configuration') 8 | const { loadIcons } = require('./modules/iconDownloader') 9 | 10 | // set some variables 11 | const isWindows = process.platform === 'win32' 12 | let refreshInterval = settings.get('refreshInterval') * 60 * 1000 // default to 30 minutes 13 | let win, tray, downloader 14 | 15 | if (isWindows && app.isPackaged && process.argv.length >= 2) { 16 | (async () => { 17 | await app.whenReady() 18 | dialog.showErrorBox({ 19 | title: 'Feature Not Supported', 20 | message: 'Please import the configuration file from the preferences window.' 21 | }) 22 | process.exit() 23 | })() 24 | } 25 | 26 | // function to open icon downloader 27 | const openIconDownloader = () => { 28 | loadIcons() 29 | 30 | if (downloader && downloader.isDestroyed && !downloader.isDestroyed()) return downloader.show() 31 | 32 | downloader = new BrowserWindow({ 33 | width: 600, 34 | height: 350, 35 | webPreferences: { 36 | nodeIntegration: true, 37 | contextIsolation: false 38 | } 39 | }) 40 | 41 | downloader.loadURL(`file://${PATHS.PAGES.ICON_DOWNLOADER}`) 42 | } 43 | 44 | // open the preferences window 45 | const openPreferences = () => { 46 | log.info('Opening preferences window') 47 | // show the preference window if one is already open 48 | if (win) return win.show() 49 | 50 | // create the preference window 51 | win = new BrowserWindow({ 52 | width: 850, 53 | height: 720, 54 | webPreferences: { 55 | nodeIntegration: true, 56 | contextIsolation: false 57 | } 58 | }) 59 | 60 | // once the window loads, send the settings and hass status 61 | win.webContents.on('did-finish-load', async () => { 62 | log.info('Preferences window finished loading. Sending settings, and hass status.') 63 | win.webContents.send('settings', { 64 | ...settings.getAll(), 65 | version: app.getVersion() 66 | }) 67 | win.webContents.send('hassStatus', await hass.status()) 68 | }) 69 | 70 | // load the html 71 | win.loadURL(`file://${PATHS.PAGES.PREFERENCES}`) 72 | } 73 | 74 | // open a configuration file 75 | const openLoadConfigDialog = () => { 76 | log.info('Opening load config flow') 77 | 78 | const deleteAll = dialog.showMessageBoxSync({ 79 | type: 'question', 80 | buttons: ['Cancel', 'Delete', 'Merge'], 81 | defaultId: 2, 82 | cancelId: 0, 83 | message: 'What would you like to do with your pre-existing icons?', 84 | title: 'Delete or Merge?' 85 | }) 86 | 87 | // if cancel, return 88 | if (deleteAll === 0) return 89 | // if delete, delete icons 90 | if (deleteAll === 1) DELETE_ALL_ICONS() 91 | 92 | // log the action 93 | log.info(`The user chose to ${deleteAll === 1 ? 'delete' : 'merge'} all icons.`) 94 | 95 | const path = dialog.showOpenDialogSync({ 96 | title: 'Open Configuration File', 97 | message: 'This file should end in .bar', 98 | properties: ['openFile'], 99 | filters: [ 100 | { name: 'bar', extensions: ['bar'] } 101 | ] 102 | }) 103 | 104 | log.info(path ? `Loading config file ${path}` : 'No config file selected. Doing nothing.') 105 | if (!path) return 106 | 107 | importConfig(path[0], () => { buildTray(openPreferences) }) 108 | } 109 | 110 | // build tray menu 111 | const buildTray = async () => { 112 | log.info('Building tray menu') 113 | 114 | // get latest config and hass status 115 | const { config } = settings.getAll() 116 | const hassStatus = await hass.status() 117 | 118 | // define icon 119 | const trayIcon = config.icon || config.iconTemplate ? PATHS.ICON_PATH_GENERATOR(config.icon || (await hass.render(config.iconTemplate))) : PATHS.MENUBAR_ICONS.DEFAULT 120 | 121 | // create the tray if one doesnt exist 122 | if (!tray) tray = new Tray(trayIcon) 123 | 124 | // update tray text to reflect that an update is taking place 125 | if (config.icon || config.iconTemplate) tray.setTitle(tray.getTitle().substr(0, 33) + '*') 126 | 127 | // open tray on click on windows 128 | isWindows && tray.on('click', () => tray.popUpContextMenu()) 129 | 130 | tray.on('right-click', openHASSInBrowser) 131 | 132 | // set the tray icon to be transparent to indicate reload 133 | if (!config.icon && !config.iconTemplate) tray.setImage(PATHS.MENUBAR_ICONS.TRANSPARENT) 134 | 135 | // initialize the menuTemplate and trayTitle 136 | let menuTemplate = [] 137 | let trayTitle = '' 138 | 139 | // if not connected to hass... 140 | if (!hassStatus.connected) { 141 | log.info('Not connected to hass') 142 | // set tray image to red, and clear title 143 | tray.setImage(PATHS.MENUBAR_ICONS.ERROR) 144 | tray.setTitle('') 145 | 146 | // add unable to connect and retry items to window 147 | menuTemplate.push({ 148 | label: 'Unable To Connect', 149 | enabled: false, 150 | icon: PATHS.MENUBAR_ICONS.WARNING_ICON 151 | }, { 152 | label: 'Retry', 153 | click: () => { buildTray() } 154 | }) 155 | } else { 156 | // otherwise, set the tray title 157 | if (!isWindows && config.titleTemplate) { 158 | trayTitle = await hass.render(config.titleTemplate) 159 | } else if (!isWindows && config.title) { 160 | trayTitle = config.title 161 | } 162 | 163 | log.info('Building items') 164 | // build the tray items 165 | menuTemplate = await itemBuilder(config.items, () => { buildTray() }) 166 | // set the tray image 167 | tray.setImage(trayIcon) 168 | } 169 | 170 | // add constant items 171 | menuTemplate.push( 172 | { type: 'separator' }, 173 | { 174 | label: 'Preferences', 175 | click: (_, __, event) => { 176 | event.shiftKey ? openLoadConfigDialog() : openPreferences() 177 | } 178 | }, 179 | { label: 'Quit', click: () => { app.quit() } } 180 | ) 181 | 182 | // set the tray context menu 183 | tray.setContextMenu(Menu.buildFromTemplate(menuTemplate)) 184 | 185 | // set the tray title 186 | // substr makes sure the title is not too long 187 | tray.setTitle(trayTitle.substr(0, 34)) 188 | 189 | // clear the cache for next time 190 | cache.clear() 191 | } 192 | 193 | // when app is opened from file... 194 | app.on('open-file', async (event, path) => { 195 | log.info(`Config file opened: ${path}`) 196 | // prevent default 197 | event.preventDefault() 198 | // load the file 199 | importConfig(path, () => { buildTray(openPreferences) }) 200 | // if there is a window open... reload it 201 | if (win) win.reload() 202 | }) 203 | 204 | // when app is ready... 205 | app.on('ready', async () => { 206 | loadIcons() 207 | 208 | log.info('App is ready') 209 | // hide from dock 210 | !isWindows && app.dock.hide() 211 | const autoRebuild = () => { 212 | // build the tray 213 | buildTray() 214 | // get the refresh interval 215 | refreshInterval = settings.get('refreshInterval') * 60 * 1000 216 | // if refreshInterval is not 0, set timeout for refresh 217 | refreshInterval !== 0 && setTimeout(autoRebuild, refreshInterval) 218 | } 219 | // build the tray 220 | autoRebuild() 221 | }) 222 | 223 | // when the window is closed... 224 | app.on('window-all-closed', () => { 225 | // set the windows to null 226 | win = null 227 | downloader = null 228 | // this also prevents the default behavior of quitting the app 229 | }) 230 | 231 | // IPC 232 | 233 | // when openIconsFolder is recieved 234 | ipcMain.on('openIconsFolder', (_, __) => { 235 | log.info('Opening icons folder') 236 | // open the icons folder 237 | shell.openPath(PATHS.ICONS_FOLDER) 238 | }) 239 | 240 | // when connect is recieved 241 | ipcMain.on('connect', async (event, data) => { 242 | log.info('Testing HASS connection') 243 | // check the connection and return the results 244 | event.returnValue = await hass.test(data) 245 | }) 246 | 247 | // when save is recieved 248 | ipcMain.on('save', async (event, data) => { 249 | log.info('Saving config') 250 | // try... 251 | try { 252 | // set the settings 253 | settings.setAll(data) 254 | // set refresh interval 255 | refreshInterval = data.refreshInterval * 60 * 1000 256 | // set whether or not to open on startup 257 | app.setLoginItemSettings({ openAtLogin: data.openOnStart }) 258 | // reload home assistant connection 259 | hass.reload() 260 | // build the tray 261 | buildTray(openPreferences) 262 | // if no errors then return that it was successful 263 | event.returnValue = { 264 | success: true 265 | } 266 | } catch (err) { 267 | log.info('Failed to save config') 268 | log.error(err) 269 | // on error... return the error 270 | event.returnValue = { 271 | success: false, 272 | message: err.message 273 | } 274 | } 275 | }) 276 | 277 | // on save config... 278 | ipcMain.on('exportConfig', (_, __) => { 279 | log.info('Exporting config') 280 | // open the save dialog 281 | const saveDir = dialog.showSaveDialogSync(win, { 282 | filters: [{ name: 'Config', extensions: ['bar'] }], 283 | showsTagField: false, 284 | defaultPath: 'config.bar' 285 | }) 286 | log.info(saveDir ? `Saving config to ${saveDir}` : 'No save location specified. Doing nothing.') 287 | 288 | // if no save directory was selected... return 289 | if (!saveDir) return 290 | 291 | try { 292 | exportConfig(saveDir) 293 | } catch (err) { 294 | log.info('Failed to export config') 295 | log.error(err) 296 | dialog.showErrorBox('Cannot Save Configuration', err.message) 297 | } 298 | }) 299 | 300 | // on open icon downloader... 301 | ipcMain.on('open-icon-downloader', (_, __) => { 302 | openIconDownloader() 303 | }) 304 | 305 | // on load from file... 306 | ipcMain.on('importConfig', (_, __) => { 307 | openLoadConfigDialog() 308 | }) 309 | 310 | // on exit... 311 | ipcMain.on('exit', (_, __) => { 312 | // close the window 313 | if (win) win.close() 314 | if (downloader && !downloader.isDestroyed()) downloader.close() 315 | }) 316 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | # ha-menu 3 |
4 | An **insanely** customizable way to interact with Home Assistant in the menubar 5 | 6 | 7 | # [Example Configuration](example/README.md) 8 | 9 | # Table Of Contents 10 | 11 | - [Installation](#installation) 12 | - [App Configuration](#app-configuration) 13 | - [Importing & Exporting](#importing-&-exporting) 14 | - [Icon Downloader](#icon-downloader) 15 | - [Menubar Configuration](#menubar-configuration) 16 | - [Title](#title) 17 | - [Menu Item Types](#menu-item-types) 18 | - [MenuAction](#menuaction) 19 | - [Icons](#icons) 20 | - [Templating](#templating) 21 | 22 | # Installation 23 | 24 | To use a prebuilt version... 25 | 1. Head over to [releases](https://github.com/addyire/ha-menu/releases) and download the latest release 26 | 2. Extract the zip and drag the application into your `Applications` folder. 27 | 3. Open HA Menu 28 | 29 | To build it yourself... 30 | 1. Clone this repository 31 | 2. Run `yarn install` 32 | 3. Run `yarn dist` 33 | 4. Your executable will be found in the newly created `dist` folder 34 | 35 | # App Configuration 36 | 37 | To open the Preferences window, click the Home Assistant Icon in your menubar, and then go to `Preferences`. 38 | 39 | * ### `Server URL` 40 | * #### Example: `http://homeassistant` 41 | * The URL to your server. Don't add a `/` or a port to the end of the URL. 42 | 43 | * ### `Server Port` 44 | * #### Example: `443` 45 | * The port to your server. If you use https make sure you put in port `443`. 46 | 47 | * ### `Long Lived Access Token` 48 | * Your long lived access token from home assistant. To make one go to Your Profile -> Long-Lived Access Tokens 49 | 50 | ### Refresh Interval 51 | 52 | The refresh interval is how often the menubar will automatically refresh with new data. If set to never, the menubar will never automatically refresh, but a refresh can still be triggered from a Menu Item. 53 | 54 | # Importing & Exporting 55 | 56 | In the preferences window, you can export your configuration as a `.bar` file. You can also import `.bar` configuration files from the preferences window. If you want a shortcut to import configuration files, you can hold **Shift** while clicking `Preferences` in the menubar or you can just double click on a `.bar` file. 57 | 58 | # Icon Downloader 59 | 60 | The icon downloader allows you to easily download icons from `materialdesignicons.com`. I would recommend searching for icons on their website, then downloading them with the downloader. You can open the `Icon Downloader` by clicking `Icon Downloader` in the preferences window. All downloaded icons are stored in the `Icons Folder`. 61 | 62 | ## Inputs 63 | 64 | * ### Icon Name 65 | * The materialdesignicons name of the icon 66 | 67 | * ### Size 68 | * The size of the icon 69 | 70 | * ### Color 71 | * The color of the icon 72 | 73 | * ### File Name 74 | * The path the file with be stored at. *This is just a path that gets added on to the icons folder path, so you can use slashes to go into folders* 75 | 76 | # Menubar Configuration 77 | 78 | In the preferences window, under `Config` is where you will put the JSON which creates your custom menubar. 79 | 80 | * **required** `items` {[`MenuItem`]}: Your list of menu items 81 | * **templatable** `title` {`String`} : The text that will show up next to the Home Assistant icon in the MenuBar. **Limited to 34 charachters.** 82 | * **templatable** `icon` {`String`}: Name of the icon you wish to use 83 | 84 | #### Example 85 | ```json 86 | { 87 | "items": [ 88 | { 89 | "type": "label", 90 | "label": "So much customization!" 91 | } 92 | ], 93 | "title": "Hello World!", 94 | " 95 | } 96 | ``` 97 | 98 | ## Title 99 | 100 | The title shows to the right of the icon in the menu bar. The title can be set by adding the `title` key to the main JSON. The title should be a string and templating is supported (scroll down for more info on templating). 101 | 102 | 103 | #### Example 104 |
105 | ```json 106 | { 107 | "items": [], 108 | "title": "Hello!" 109 | } 110 | ``` 111 | 112 | #### Note 113 | - The title is limited to 24 characters 114 | 115 | ## Menu Item Types 116 | 117 | There are 4 types of Menu Items 118 | 119 | * Label 120 | * Dropdown 121 | * Separator 122 | * Open HASS 123 | 124 | ### Type: `label` 125 | 126 | * **required** `type`: `label` 127 | * **templatable** `label` {`String`}: The label for this Menu Item 128 | * **templatable** `icon` {`String`}: The icon name for this item 129 | * `reload` {`Boolean`}: Whether or not the Menu Bar should be reloaded on click 130 | * `action` {`MenuAction`}: The action to run when clicked 131 | * `checkedTemplate` {`String`}: Whether or not this label should be checked. The string is a Home Assistant template which should resolve to `on`, `true`,`off`, or `false`. When clicked the check will toggle IN THE UI ONLY. I would recommend making the action some sort of toggle, and having `reload` set to `true`. 132 | * `hiddenTemplate` {`String`}: Whether or not this label should be hidden. The string is a Home Assistant template which should resolve to `on`, `true`,`off`, or `false`. 133 | 134 | #### Note 135 | 136 | * If an item has no `action` and `reload` is not true, the item will be greyed out. 137 | 138 | #### Examples 139 | 140 | 141 | ```json 142 | { 143 | "type": "label", 144 | "label": "No Action" 145 | }, 146 | { 147 | "type": "label", 148 | "label": "Reload", 149 | "reload": true 150 | }, 151 | { 152 | "type": "label", 153 | "label": "Checked + Reload", 154 | "reload": true, 155 | "checkedTemplate": "true" 156 | }, 157 | { 158 | "type": "label", 159 | "label": "Action", 160 | "action": { 161 | "domain": "light", 162 | "service": "toggle", 163 | "serviceData": { 164 | "entity_id": "light.my_light" 165 | } 166 | } 167 | } 168 | ``` 169 | 170 | ### Type: `dropdown` 171 | 172 | Creates a dropdown menu 173 | 174 | * **required** `type`: `dropdown` 175 | * **required** **templatable**`label` {`String`}: The label for this dropdown 176 | * **required** `items` {[`MenuItem`]}: A list of Menu Items to be displayed 177 | * **templatable** `icon` {`String`} : The icon name for this item 178 | 179 | #### Example 180 | 181 | 182 | ```json 183 | { 184 | "type": "dropdown", 185 | "label": "Dropdown", 186 | "items": [ 187 | { 188 | "type": "label", 189 | "label": "Item 1" 190 | }, 191 | { 192 | "type": "label", 193 | "label": "Item 2" 194 | }, 195 | { 196 | "type": "label", 197 | "label": "Item 3" 198 | } 199 | ] 200 | } 201 | ``` 202 | 203 | ## Type: `separator` 204 | 205 | * **required** `type`: `separator` 206 | 207 | #### Example 208 | 209 | 210 | ```json 211 | { 212 | "type": "normal", 213 | "label": "Item 1" 214 | }, 215 | { 216 | "type": "separator" 217 | }, 218 | { 219 | "type": "normal", 220 | "label": "Item 2" 221 | } 222 | ``` 223 | 224 | ## Type: `open_hass` 225 | 226 | Looks like a label but opens Home Assistant in your browser when clicked. 227 | 228 | * **required** `type`: `open_hass` 229 | * **required** **templatable** `label` {`String`}: The label for this item 230 | * `icon` **templatable** {`String`}: The icon name for this item 231 | 232 | ## MenuAction 233 | 234 | A `MenuAction` is how you can interact with Home Assistant. 235 | 236 | * **required** `domain` {`String`}: The domain to be called 237 | * **required** `service` {`String`}: The service of the domain 238 | * **required** `serviceeData` {{`Service Data`}}: The data that will be given when the service is called 239 | 240 | #### Example 241 | ```json 242 | { 243 | "domain" : "light", 244 | "service": "toggle", 245 | "serviceData": { 246 | "entity_id": "light.my_light" 247 | } 248 | } 249 | ``` 250 | 251 | ## Icons 252 | 253 | To add an icon to your Menu Bar follow these steps 254 | 255 | * Open Preferences 256 | * Click `Open Icons Folder` 257 | * Put all icons in the folder that opens 258 | * On your `MenuItem` add the `icon` field and enter the name of the file **including the file extension** 259 | 260 | ### Recommendations 261 | 262 | * Make the size of your image `32x32` 263 | * Add `@2x` to the end of your file name to make it a "High Resolution Image" (Read below for more information) 264 | * Get icons from [here](https://materialdesignicons.com/). Export them as PNG at 36x66 then use @2x magnification 265 | 266 | ### High Resolution Image 267 | 268 | To make your image look better in the Menubar you can make it "High Resolution" which increases the DPI. Here are the following options: 269 | 270 | * `@1x` 271 | * `@1.25x` 272 | * `@1.33x` 273 | * `@1.4x` 274 | * `@1.5x` 275 | * `@1.8x` 276 | * `@2x` 277 | * `@2.5x` 278 | * `@3x` 279 | * `@4x` 280 | * `@5x` 281 | 282 | Just add one of these to the end of your file. 283 | 284 | #### Example 285 | `icon.png` -> `icon@2x.png` 286 | 287 | ### Icon Templates 288 | 289 | It is recommended that your icons are made a template. To make your icon a template 290 | 291 | * Your image **must** be only black pixels with a transparent background 292 | * Add `Template` to the end of the name of your file. 293 | 294 | ### File Name Examples 295 | 296 | * `icon.png` -> `iconTemplate.png` 297 | * `icon@2x.png` -> `iconTemplate@2x.png` 298 | 299 | ### [More Information Here](https://www.electronjs.org/docs/latest/api/native-image#high-resolution-image) 300 | 301 | ## Templating 302 | 303 | **The customization is not over!** You can also use Home Assistant Templates in certain fields! 304 | 305 | ### Supported Fields 306 | 307 | * `label` 308 | * `icon` 309 | * `title` 310 | 311 | ### Converting To Templates 312 | 313 | To make a field a template just add `Template` to the end of the field name and put your template in the value. 314 | 315 | #### Example 316 | ```json 317 | { 318 | "label": "State of my light" 319 | } 320 | ``` 321 | Turns into... 322 | 323 | ```json 324 | { 325 | "labelTemplate": "{{ states('light.my_light') }}" 326 | } 327 | ``` 328 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "7zip-bin@~5.1.1": 6 | version "5.1.1" 7 | resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" 8 | integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== 9 | 10 | "@babel/code-frame@7.12.11": 11 | version "7.12.11" 12 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 13 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 14 | dependencies: 15 | "@babel/highlight" "^7.10.4" 16 | 17 | "@babel/helper-validator-identifier@^7.18.6": 18 | version "7.19.1" 19 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 20 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 21 | 22 | "@babel/highlight@^7.10.4": 23 | version "7.18.6" 24 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 25 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 26 | dependencies: 27 | "@babel/helper-validator-identifier" "^7.18.6" 28 | chalk "^2.0.0" 29 | js-tokens "^4.0.0" 30 | 31 | "@develar/schema-utils@~2.6.5": 32 | version "2.6.5" 33 | resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" 34 | integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== 35 | dependencies: 36 | ajv "^6.12.0" 37 | ajv-keywords "^3.4.1" 38 | 39 | "@electron/get@^1.13.0": 40 | version "1.14.1" 41 | resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" 42 | integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== 43 | dependencies: 44 | debug "^4.1.1" 45 | env-paths "^2.2.0" 46 | fs-extra "^8.1.0" 47 | got "^9.6.0" 48 | progress "^2.0.3" 49 | semver "^6.2.0" 50 | sumchecker "^3.0.1" 51 | optionalDependencies: 52 | global-agent "^3.0.0" 53 | global-tunnel-ng "^2.7.1" 54 | 55 | "@electron/universal@1.2.1": 56 | version "1.2.1" 57 | resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.2.1.tgz#3c2c4ff37063a4e9ab1e6ff57db0bc619bc82339" 58 | integrity sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ== 59 | dependencies: 60 | "@malept/cross-spawn-promise" "^1.1.0" 61 | asar "^3.1.0" 62 | debug "^4.3.1" 63 | dir-compare "^2.4.0" 64 | fs-extra "^9.0.1" 65 | minimatch "^3.0.4" 66 | plist "^3.0.4" 67 | 68 | "@eslint/eslintrc@^0.4.3": 69 | version "0.4.3" 70 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 71 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 72 | dependencies: 73 | ajv "^6.12.4" 74 | debug "^4.1.1" 75 | espree "^7.3.0" 76 | globals "^13.9.0" 77 | ignore "^4.0.6" 78 | import-fresh "^3.2.1" 79 | js-yaml "^3.13.1" 80 | minimatch "^3.0.4" 81 | strip-json-comments "^3.1.1" 82 | 83 | "@humanwhocodes/config-array@^0.5.0": 84 | version "0.5.0" 85 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 86 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 87 | dependencies: 88 | "@humanwhocodes/object-schema" "^1.2.0" 89 | debug "^4.1.1" 90 | minimatch "^3.0.4" 91 | 92 | "@humanwhocodes/object-schema@^1.2.0": 93 | version "1.2.1" 94 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 95 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 96 | 97 | "@malept/cross-spawn-promise@^1.1.0": 98 | version "1.1.1" 99 | resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" 100 | integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== 101 | dependencies: 102 | cross-spawn "^7.0.1" 103 | 104 | "@malept/flatpak-bundler@^0.4.0": 105 | version "0.4.0" 106 | resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" 107 | integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== 108 | dependencies: 109 | debug "^4.1.1" 110 | fs-extra "^9.0.0" 111 | lodash "^4.17.15" 112 | tmp-promise "^3.0.2" 113 | 114 | "@sindresorhus/is@^0.14.0": 115 | version "0.14.0" 116 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 117 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 118 | 119 | "@szmarczak/http-timer@^1.1.2": 120 | version "1.1.2" 121 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 122 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 123 | dependencies: 124 | defer-to-connect "^1.0.1" 125 | 126 | "@tootallnate/once@2": 127 | version "2.0.0" 128 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" 129 | integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== 130 | 131 | "@types/debug@^4.1.6": 132 | version "4.1.7" 133 | resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" 134 | integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== 135 | dependencies: 136 | "@types/ms" "*" 137 | 138 | "@types/fs-extra@^9.0.11": 139 | version "9.0.13" 140 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" 141 | integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== 142 | dependencies: 143 | "@types/node" "*" 144 | 145 | "@types/glob@^7.1.1": 146 | version "7.2.0" 147 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" 148 | integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== 149 | dependencies: 150 | "@types/minimatch" "*" 151 | "@types/node" "*" 152 | 153 | "@types/json5@^0.0.29": 154 | version "0.0.29" 155 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 156 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== 157 | 158 | "@types/minimatch@*": 159 | version "5.1.2" 160 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" 161 | integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== 162 | 163 | "@types/ms@*": 164 | version "0.7.31" 165 | resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" 166 | integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== 167 | 168 | "@types/node@*": 169 | version "18.8.5" 170 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.5.tgz#6a31f820c1077c3f8ce44f9e203e68a176e8f59e" 171 | integrity sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q== 172 | 173 | "@types/node@^14.6.2": 174 | version "14.18.32" 175 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.32.tgz#8074f7106731f1a12ba993fe8bad86ee73905014" 176 | integrity sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow== 177 | 178 | "@types/plist@^3.0.1": 179 | version "3.0.2" 180 | resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" 181 | integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== 182 | dependencies: 183 | "@types/node" "*" 184 | xmlbuilder ">=11.0.1" 185 | 186 | "@types/verror@^1.10.3": 187 | version "1.10.6" 188 | resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.6.tgz#3e600c62d210c5826460858f84bcbb65805460bb" 189 | integrity sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ== 190 | 191 | "@types/yargs-parser@*": 192 | version "21.0.0" 193 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" 194 | integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== 195 | 196 | "@types/yargs@^17.0.1": 197 | version "17.0.13" 198 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" 199 | integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== 200 | dependencies: 201 | "@types/yargs-parser" "*" 202 | 203 | acorn-jsx@^5.3.1: 204 | version "5.3.2" 205 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 206 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 207 | 208 | acorn@^7.4.0: 209 | version "7.4.1" 210 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 211 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 212 | 213 | agent-base@6: 214 | version "6.0.2" 215 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 216 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 217 | dependencies: 218 | debug "4" 219 | 220 | ajv-keywords@^3.4.1: 221 | version "3.5.2" 222 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 223 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 224 | 225 | ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4: 226 | version "6.12.6" 227 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 228 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 229 | dependencies: 230 | fast-deep-equal "^3.1.1" 231 | fast-json-stable-stringify "^2.0.0" 232 | json-schema-traverse "^0.4.1" 233 | uri-js "^4.2.2" 234 | 235 | ajv@^8.0.1: 236 | version "8.11.0" 237 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" 238 | integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== 239 | dependencies: 240 | fast-deep-equal "^3.1.1" 241 | json-schema-traverse "^1.0.0" 242 | require-from-string "^2.0.2" 243 | uri-js "^4.2.2" 244 | 245 | ansi-colors@^4.1.1: 246 | version "4.1.3" 247 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" 248 | integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== 249 | 250 | ansi-regex@^5.0.1: 251 | version "5.0.1" 252 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 253 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 254 | 255 | ansi-styles@^3.2.1: 256 | version "3.2.1" 257 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 258 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 259 | dependencies: 260 | color-convert "^1.9.0" 261 | 262 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 263 | version "4.3.0" 264 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 265 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 266 | dependencies: 267 | color-convert "^2.0.1" 268 | 269 | app-builder-bin@4.0.0: 270 | version "4.0.0" 271 | resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" 272 | integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== 273 | 274 | app-builder-lib@23.6.0: 275 | version "23.6.0" 276 | resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-23.6.0.tgz#03cade02838c077db99d86212d61c5fc1d6da1a8" 277 | integrity sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA== 278 | dependencies: 279 | "7zip-bin" "~5.1.1" 280 | "@develar/schema-utils" "~2.6.5" 281 | "@electron/universal" "1.2.1" 282 | "@malept/flatpak-bundler" "^0.4.0" 283 | async-exit-hook "^2.0.1" 284 | bluebird-lst "^1.0.9" 285 | builder-util "23.6.0" 286 | builder-util-runtime "9.1.1" 287 | chromium-pickle-js "^0.2.0" 288 | debug "^4.3.4" 289 | ejs "^3.1.7" 290 | electron-osx-sign "^0.6.0" 291 | electron-publish "23.6.0" 292 | form-data "^4.0.0" 293 | fs-extra "^10.1.0" 294 | hosted-git-info "^4.1.0" 295 | is-ci "^3.0.0" 296 | isbinaryfile "^4.0.10" 297 | js-yaml "^4.1.0" 298 | lazy-val "^1.0.5" 299 | minimatch "^3.1.2" 300 | read-config-file "6.2.0" 301 | sanitize-filename "^1.6.3" 302 | semver "^7.3.7" 303 | tar "^6.1.11" 304 | temp-file "^3.4.0" 305 | 306 | archiver-utils@^2.1.0: 307 | version "2.1.0" 308 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" 309 | integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== 310 | dependencies: 311 | glob "^7.1.4" 312 | graceful-fs "^4.2.0" 313 | lazystream "^1.0.0" 314 | lodash.defaults "^4.2.0" 315 | lodash.difference "^4.5.0" 316 | lodash.flatten "^4.4.0" 317 | lodash.isplainobject "^4.0.6" 318 | lodash.union "^4.6.0" 319 | normalize-path "^3.0.0" 320 | readable-stream "^2.0.0" 321 | 322 | archiver@^5.3.0: 323 | version "5.3.1" 324 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" 325 | integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== 326 | dependencies: 327 | archiver-utils "^2.1.0" 328 | async "^3.2.3" 329 | buffer-crc32 "^0.2.1" 330 | readable-stream "^3.6.0" 331 | readdir-glob "^1.0.0" 332 | tar-stream "^2.2.0" 333 | zip-stream "^4.1.0" 334 | 335 | argparse@^1.0.7: 336 | version "1.0.10" 337 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 338 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 339 | dependencies: 340 | sprintf-js "~1.0.2" 341 | 342 | argparse@^2.0.1: 343 | version "2.0.1" 344 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 345 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 346 | 347 | array-includes@^3.1.4: 348 | version "3.1.5" 349 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" 350 | integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== 351 | dependencies: 352 | call-bind "^1.0.2" 353 | define-properties "^1.1.4" 354 | es-abstract "^1.19.5" 355 | get-intrinsic "^1.1.1" 356 | is-string "^1.0.7" 357 | 358 | array.prototype.flat@^1.2.5: 359 | version "1.3.0" 360 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" 361 | integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== 362 | dependencies: 363 | call-bind "^1.0.2" 364 | define-properties "^1.1.3" 365 | es-abstract "^1.19.2" 366 | es-shim-unscopables "^1.0.0" 367 | 368 | asar@^3.1.0: 369 | version "3.2.0" 370 | resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" 371 | integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== 372 | dependencies: 373 | chromium-pickle-js "^0.2.0" 374 | commander "^5.0.0" 375 | glob "^7.1.6" 376 | minimatch "^3.0.4" 377 | optionalDependencies: 378 | "@types/glob" "^7.1.1" 379 | 380 | asn1@~0.2.3: 381 | version "0.2.6" 382 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" 383 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== 384 | dependencies: 385 | safer-buffer "~2.1.0" 386 | 387 | assert-plus@1.0.0, assert-plus@^1.0.0: 388 | version "1.0.0" 389 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 390 | integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== 391 | 392 | astral-regex@^2.0.0: 393 | version "2.0.0" 394 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 395 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 396 | 397 | async-exit-hook@^2.0.1: 398 | version "2.0.1" 399 | resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" 400 | integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== 401 | 402 | async@^3.2.3: 403 | version "3.2.4" 404 | resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" 405 | integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== 406 | 407 | asynckit@^0.4.0: 408 | version "0.4.0" 409 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 410 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 411 | 412 | at-least-node@^1.0.0: 413 | version "1.0.0" 414 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" 415 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 416 | 417 | aws-sign2@~0.7.0: 418 | version "0.7.0" 419 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 420 | integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== 421 | 422 | aws4@^1.8.0: 423 | version "1.11.0" 424 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 425 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 426 | 427 | axios@^0.24.0: 428 | version "0.24.0" 429 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" 430 | integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== 431 | dependencies: 432 | follow-redirects "^1.14.4" 433 | 434 | balanced-match@^1.0.0: 435 | version "1.0.2" 436 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 437 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 438 | 439 | base64-js@^1.3.1, base64-js@^1.5.1: 440 | version "1.5.1" 441 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 442 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 443 | 444 | bcrypt-pbkdf@^1.0.0: 445 | version "1.0.2" 446 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 447 | integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== 448 | dependencies: 449 | tweetnacl "^0.14.3" 450 | 451 | big-integer@^1.6.17: 452 | version "1.6.51" 453 | resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" 454 | integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== 455 | 456 | binary@~0.3.0: 457 | version "0.3.0" 458 | resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" 459 | integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== 460 | dependencies: 461 | buffers "~0.1.1" 462 | chainsaw "~0.1.0" 463 | 464 | bl@^4.0.3: 465 | version "4.1.0" 466 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 467 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 468 | dependencies: 469 | buffer "^5.5.0" 470 | inherits "^2.0.4" 471 | readable-stream "^3.4.0" 472 | 473 | bluebird-lst@^1.0.9: 474 | version "1.0.9" 475 | resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" 476 | integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== 477 | dependencies: 478 | bluebird "^3.5.5" 479 | 480 | bluebird@^3.5.0, bluebird@^3.5.5: 481 | version "3.7.2" 482 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 483 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 484 | 485 | bluebird@~3.4.1: 486 | version "3.4.7" 487 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" 488 | integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== 489 | 490 | boolean@^3.0.1: 491 | version "3.2.0" 492 | resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" 493 | integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== 494 | 495 | brace-expansion@^1.1.7: 496 | version "1.1.11" 497 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 498 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 499 | dependencies: 500 | balanced-match "^1.0.0" 501 | concat-map "0.0.1" 502 | 503 | brace-expansion@^2.0.1: 504 | version "2.0.1" 505 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 506 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 507 | dependencies: 508 | balanced-match "^1.0.0" 509 | 510 | buffer-alloc-unsafe@^1.1.0: 511 | version "1.1.0" 512 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 513 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 514 | 515 | buffer-alloc@^1.2.0: 516 | version "1.2.0" 517 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 518 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 519 | dependencies: 520 | buffer-alloc-unsafe "^1.1.0" 521 | buffer-fill "^1.0.0" 522 | 523 | buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: 524 | version "0.2.13" 525 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 526 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== 527 | 528 | buffer-equal@1.0.0: 529 | version "1.0.0" 530 | resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" 531 | integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== 532 | 533 | buffer-fill@^1.0.0: 534 | version "1.0.0" 535 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 536 | integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== 537 | 538 | buffer-from@^1.0.0: 539 | version "1.1.2" 540 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 541 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 542 | 543 | buffer-indexof-polyfill@~1.0.0: 544 | version "1.0.2" 545 | resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" 546 | integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== 547 | 548 | buffer@^5.1.0, buffer@^5.5.0: 549 | version "5.7.1" 550 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 551 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 552 | dependencies: 553 | base64-js "^1.3.1" 554 | ieee754 "^1.1.13" 555 | 556 | buffers@~0.1.1: 557 | version "0.1.1" 558 | resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" 559 | integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== 560 | 561 | builder-util-runtime@9.1.1: 562 | version "9.1.1" 563 | resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz#2da7b34e78a64ad14ccd070d6eed4662d893bd60" 564 | integrity sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw== 565 | dependencies: 566 | debug "^4.3.4" 567 | sax "^1.2.4" 568 | 569 | builder-util@23.6.0: 570 | version "23.6.0" 571 | resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-23.6.0.tgz#1880ec6da7da3fd6fa19b8bd71df7f39e8d17dd9" 572 | integrity sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ== 573 | dependencies: 574 | "7zip-bin" "~5.1.1" 575 | "@types/debug" "^4.1.6" 576 | "@types/fs-extra" "^9.0.11" 577 | app-builder-bin "4.0.0" 578 | bluebird-lst "^1.0.9" 579 | builder-util-runtime "9.1.1" 580 | chalk "^4.1.1" 581 | cross-spawn "^7.0.3" 582 | debug "^4.3.4" 583 | fs-extra "^10.0.0" 584 | http-proxy-agent "^5.0.0" 585 | https-proxy-agent "^5.0.0" 586 | is-ci "^3.0.0" 587 | js-yaml "^4.1.0" 588 | source-map-support "^0.5.19" 589 | stat-mode "^1.0.0" 590 | temp-file "^3.4.0" 591 | 592 | cacheable-request@^6.0.0: 593 | version "6.1.0" 594 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 595 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 596 | dependencies: 597 | clone-response "^1.0.2" 598 | get-stream "^5.1.0" 599 | http-cache-semantics "^4.0.0" 600 | keyv "^3.0.0" 601 | lowercase-keys "^2.0.0" 602 | normalize-url "^4.1.0" 603 | responselike "^1.0.2" 604 | 605 | call-bind@^1.0.0, call-bind@^1.0.2: 606 | version "1.0.2" 607 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 608 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 609 | dependencies: 610 | function-bind "^1.1.1" 611 | get-intrinsic "^1.0.2" 612 | 613 | callsites@^3.0.0: 614 | version "3.1.0" 615 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 616 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 617 | 618 | caseless@~0.12.0: 619 | version "0.12.0" 620 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 621 | integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== 622 | 623 | chainsaw@~0.1.0: 624 | version "0.1.0" 625 | resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" 626 | integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== 627 | dependencies: 628 | traverse ">=0.3.0 <0.4" 629 | 630 | chalk@^2.0.0: 631 | version "2.4.2" 632 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 633 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 634 | dependencies: 635 | ansi-styles "^3.2.1" 636 | escape-string-regexp "^1.0.5" 637 | supports-color "^5.3.0" 638 | 639 | chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.1: 640 | version "4.1.2" 641 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 642 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 643 | dependencies: 644 | ansi-styles "^4.1.0" 645 | supports-color "^7.1.0" 646 | 647 | chownr@^2.0.0: 648 | version "2.0.0" 649 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" 650 | integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== 651 | 652 | chromium-pickle-js@^0.2.0: 653 | version "0.2.0" 654 | resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" 655 | integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== 656 | 657 | ci-info@^3.2.0: 658 | version "3.5.0" 659 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f" 660 | integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw== 661 | 662 | cli-truncate@^2.1.0: 663 | version "2.1.0" 664 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 665 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 666 | dependencies: 667 | slice-ansi "^3.0.0" 668 | string-width "^4.2.0" 669 | 670 | cliui@^8.0.1: 671 | version "8.0.1" 672 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 673 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 674 | dependencies: 675 | string-width "^4.2.0" 676 | strip-ansi "^6.0.1" 677 | wrap-ansi "^7.0.0" 678 | 679 | clone-response@^1.0.2: 680 | version "1.0.3" 681 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" 682 | integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== 683 | dependencies: 684 | mimic-response "^1.0.0" 685 | 686 | color-convert@^1.9.0: 687 | version "1.9.3" 688 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 689 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 690 | dependencies: 691 | color-name "1.1.3" 692 | 693 | color-convert@^2.0.1: 694 | version "2.0.1" 695 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 696 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 697 | dependencies: 698 | color-name "~1.1.4" 699 | 700 | color-name@1.1.3: 701 | version "1.1.3" 702 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 703 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 704 | 705 | color-name@~1.1.4: 706 | version "1.1.4" 707 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 708 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 709 | 710 | colors@1.0.3: 711 | version "1.0.3" 712 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" 713 | integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== 714 | 715 | combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: 716 | version "1.0.8" 717 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 718 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 719 | dependencies: 720 | delayed-stream "~1.0.0" 721 | 722 | commander@2.9.0: 723 | version "2.9.0" 724 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 725 | integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== 726 | dependencies: 727 | graceful-readlink ">= 1.0.0" 728 | 729 | commander@^5.0.0: 730 | version "5.1.0" 731 | resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" 732 | integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== 733 | 734 | compare-version@^0.1.2: 735 | version "0.1.2" 736 | resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" 737 | integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== 738 | 739 | compress-commons@^4.1.0: 740 | version "4.1.1" 741 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" 742 | integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== 743 | dependencies: 744 | buffer-crc32 "^0.2.13" 745 | crc32-stream "^4.0.2" 746 | normalize-path "^3.0.0" 747 | readable-stream "^3.6.0" 748 | 749 | concat-map@0.0.1: 750 | version "0.0.1" 751 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 752 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 753 | 754 | concat-stream@^1.6.2: 755 | version "1.6.2" 756 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 757 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 758 | dependencies: 759 | buffer-from "^1.0.0" 760 | inherits "^2.0.3" 761 | readable-stream "^2.2.2" 762 | typedarray "^0.0.6" 763 | 764 | config-chain@^1.1.11: 765 | version "1.1.13" 766 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" 767 | integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== 768 | dependencies: 769 | ini "^1.3.4" 770 | proto-list "~1.2.1" 771 | 772 | core-util-is@1.0.2: 773 | version "1.0.2" 774 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 775 | integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== 776 | 777 | core-util-is@~1.0.0: 778 | version "1.0.3" 779 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 780 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 781 | 782 | crc-32@^1.2.0: 783 | version "1.2.2" 784 | resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" 785 | integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== 786 | 787 | crc32-stream@^4.0.2: 788 | version "4.0.2" 789 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" 790 | integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== 791 | dependencies: 792 | crc-32 "^1.2.0" 793 | readable-stream "^3.4.0" 794 | 795 | crc@^3.8.0: 796 | version "3.8.0" 797 | resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" 798 | integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== 799 | dependencies: 800 | buffer "^5.1.0" 801 | 802 | cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: 803 | version "7.0.3" 804 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 805 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 806 | dependencies: 807 | path-key "^3.1.0" 808 | shebang-command "^2.0.0" 809 | which "^2.0.1" 810 | 811 | dashdash@^1.12.0: 812 | version "1.14.1" 813 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 814 | integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== 815 | dependencies: 816 | assert-plus "^1.0.0" 817 | 818 | debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: 819 | version "4.3.4" 820 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 821 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 822 | dependencies: 823 | ms "2.1.2" 824 | 825 | debug@^2.6.8, debug@^2.6.9: 826 | version "2.6.9" 827 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 828 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 829 | dependencies: 830 | ms "2.0.0" 831 | 832 | debug@^3.2.7: 833 | version "3.2.7" 834 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 835 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 836 | dependencies: 837 | ms "^2.1.1" 838 | 839 | decompress-response@^3.3.0: 840 | version "3.3.0" 841 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 842 | integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== 843 | dependencies: 844 | mimic-response "^1.0.0" 845 | 846 | deep-is@^0.1.3: 847 | version "0.1.4" 848 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 849 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 850 | 851 | defer-to-connect@^1.0.1: 852 | version "1.1.3" 853 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 854 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 855 | 856 | define-properties@^1.1.3, define-properties@^1.1.4: 857 | version "1.1.4" 858 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" 859 | integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== 860 | dependencies: 861 | has-property-descriptors "^1.0.0" 862 | object-keys "^1.1.1" 863 | 864 | delayed-stream@~1.0.0: 865 | version "1.0.0" 866 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 867 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 868 | 869 | detect-node@^2.0.4: 870 | version "2.1.0" 871 | resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" 872 | integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== 873 | 874 | dir-compare@^2.4.0: 875 | version "2.4.0" 876 | resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" 877 | integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== 878 | dependencies: 879 | buffer-equal "1.0.0" 880 | colors "1.0.3" 881 | commander "2.9.0" 882 | minimatch "3.0.4" 883 | 884 | dmg-builder@23.6.0: 885 | version "23.6.0" 886 | resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-23.6.0.tgz#d39d3871bce996f16c07d2cafe922d6ecbb2a948" 887 | integrity sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA== 888 | dependencies: 889 | app-builder-lib "23.6.0" 890 | builder-util "23.6.0" 891 | builder-util-runtime "9.1.1" 892 | fs-extra "^10.0.0" 893 | iconv-lite "^0.6.2" 894 | js-yaml "^4.1.0" 895 | optionalDependencies: 896 | dmg-license "^1.0.11" 897 | 898 | dmg-license@^1.0.11: 899 | version "1.0.11" 900 | resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" 901 | integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== 902 | dependencies: 903 | "@types/plist" "^3.0.1" 904 | "@types/verror" "^1.10.3" 905 | ajv "^6.10.0" 906 | crc "^3.8.0" 907 | iconv-corefoundation "^1.1.7" 908 | plist "^3.0.4" 909 | smart-buffer "^4.0.2" 910 | verror "^1.10.0" 911 | 912 | doctrine@^2.1.0: 913 | version "2.1.0" 914 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 915 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 916 | dependencies: 917 | esutils "^2.0.2" 918 | 919 | doctrine@^3.0.0: 920 | version "3.0.0" 921 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 922 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 923 | dependencies: 924 | esutils "^2.0.2" 925 | 926 | dotenv-expand@^5.1.0: 927 | version "5.1.0" 928 | resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" 929 | integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== 930 | 931 | dotenv@^9.0.2: 932 | version "9.0.2" 933 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" 934 | integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== 935 | 936 | duplexer2@~0.1.4: 937 | version "0.1.4" 938 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 939 | integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== 940 | dependencies: 941 | readable-stream "^2.0.2" 942 | 943 | duplexer3@^0.1.4: 944 | version "0.1.5" 945 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" 946 | integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== 947 | 948 | ecc-jsbn@~0.1.1: 949 | version "0.1.2" 950 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 951 | integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== 952 | dependencies: 953 | jsbn "~0.1.0" 954 | safer-buffer "^2.1.0" 955 | 956 | ejs@^3.1.7: 957 | version "3.1.8" 958 | resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" 959 | integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== 960 | dependencies: 961 | jake "^10.8.5" 962 | 963 | electron-builder@^23.6.0: 964 | version "23.6.0" 965 | resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-23.6.0.tgz#c79050cbdce90ed96c5feb67c34e9e0a21b5331b" 966 | integrity sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw== 967 | dependencies: 968 | "@types/yargs" "^17.0.1" 969 | app-builder-lib "23.6.0" 970 | builder-util "23.6.0" 971 | builder-util-runtime "9.1.1" 972 | chalk "^4.1.1" 973 | dmg-builder "23.6.0" 974 | fs-extra "^10.0.0" 975 | is-ci "^3.0.0" 976 | lazy-val "^1.0.5" 977 | read-config-file "6.2.0" 978 | simple-update-notifier "^1.0.7" 979 | yargs "^17.5.1" 980 | 981 | electron-log@^4.4.1: 982 | version "4.4.8" 983 | resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.4.8.tgz#fcb9f714dbcaefb6ac7984c4683912c74730248a" 984 | integrity sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA== 985 | 986 | electron-osx-sign@^0.6.0: 987 | version "0.6.0" 988 | resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz#9b69c191d471d9458ef5b1e4fdd52baa059f1bb8" 989 | integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg== 990 | dependencies: 991 | bluebird "^3.5.0" 992 | compare-version "^0.1.2" 993 | debug "^2.6.8" 994 | isbinaryfile "^3.0.2" 995 | minimist "^1.2.0" 996 | plist "^3.0.1" 997 | 998 | electron-publish@23.6.0: 999 | version "23.6.0" 1000 | resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-23.6.0.tgz#ac9b469e0b07752eb89357dd660e5fb10b3d1ce9" 1001 | integrity sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg== 1002 | dependencies: 1003 | "@types/fs-extra" "^9.0.11" 1004 | builder-util "23.6.0" 1005 | builder-util-runtime "9.1.1" 1006 | chalk "^4.1.1" 1007 | fs-extra "^10.0.0" 1008 | lazy-val "^1.0.5" 1009 | mime "^2.5.2" 1010 | 1011 | electron@^15.3.0: 1012 | version "15.5.7" 1013 | resolved "https://registry.yarnpkg.com/electron/-/electron-15.5.7.tgz#aadb0081c504f2c2d8f81ea5fd23e38881afe86a" 1014 | integrity sha512-n4mVlxoMc4eYx07wWFWGficL+iOMz5xZEf5dBtE/wwLm0fQpYVyW4AlknMFG9F8Css0MM0JSwNMOyRg5e1vDtg== 1015 | dependencies: 1016 | "@electron/get" "^1.13.0" 1017 | "@types/node" "^14.6.2" 1018 | extract-zip "^1.0.3" 1019 | 1020 | emoji-regex@^8.0.0: 1021 | version "8.0.0" 1022 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1023 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1024 | 1025 | encodeurl@^1.0.2: 1026 | version "1.0.2" 1027 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 1028 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 1029 | 1030 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 1031 | version "1.4.4" 1032 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1033 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1034 | dependencies: 1035 | once "^1.4.0" 1036 | 1037 | enquirer@^2.3.5: 1038 | version "2.3.6" 1039 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 1040 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 1041 | dependencies: 1042 | ansi-colors "^4.1.1" 1043 | 1044 | env-paths@^2.2.0: 1045 | version "2.2.1" 1046 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" 1047 | integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== 1048 | 1049 | es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: 1050 | version "1.20.4" 1051 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" 1052 | integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== 1053 | dependencies: 1054 | call-bind "^1.0.2" 1055 | es-to-primitive "^1.2.1" 1056 | function-bind "^1.1.1" 1057 | function.prototype.name "^1.1.5" 1058 | get-intrinsic "^1.1.3" 1059 | get-symbol-description "^1.0.0" 1060 | has "^1.0.3" 1061 | has-property-descriptors "^1.0.0" 1062 | has-symbols "^1.0.3" 1063 | internal-slot "^1.0.3" 1064 | is-callable "^1.2.7" 1065 | is-negative-zero "^2.0.2" 1066 | is-regex "^1.1.4" 1067 | is-shared-array-buffer "^1.0.2" 1068 | is-string "^1.0.7" 1069 | is-weakref "^1.0.2" 1070 | object-inspect "^1.12.2" 1071 | object-keys "^1.1.1" 1072 | object.assign "^4.1.4" 1073 | regexp.prototype.flags "^1.4.3" 1074 | safe-regex-test "^1.0.0" 1075 | string.prototype.trimend "^1.0.5" 1076 | string.prototype.trimstart "^1.0.5" 1077 | unbox-primitive "^1.0.2" 1078 | 1079 | es-shim-unscopables@^1.0.0: 1080 | version "1.0.0" 1081 | resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" 1082 | integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== 1083 | dependencies: 1084 | has "^1.0.3" 1085 | 1086 | es-to-primitive@^1.2.1: 1087 | version "1.2.1" 1088 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1089 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1090 | dependencies: 1091 | is-callable "^1.1.4" 1092 | is-date-object "^1.0.1" 1093 | is-symbol "^1.0.2" 1094 | 1095 | es6-error@^4.1.1: 1096 | version "4.1.1" 1097 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 1098 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 1099 | 1100 | escalade@^3.1.1: 1101 | version "3.1.1" 1102 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1103 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1104 | 1105 | escape-string-regexp@^1.0.5: 1106 | version "1.0.5" 1107 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1108 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1109 | 1110 | escape-string-regexp@^4.0.0: 1111 | version "4.0.0" 1112 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1113 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1114 | 1115 | eslint-config-standard@^16.0.3: 1116 | version "16.0.3" 1117 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" 1118 | integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== 1119 | 1120 | eslint-import-resolver-node@^0.3.6: 1121 | version "0.3.6" 1122 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" 1123 | integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== 1124 | dependencies: 1125 | debug "^3.2.7" 1126 | resolve "^1.20.0" 1127 | 1128 | eslint-module-utils@^2.7.3: 1129 | version "2.7.4" 1130 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" 1131 | integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== 1132 | dependencies: 1133 | debug "^3.2.7" 1134 | 1135 | eslint-plugin-es@^3.0.0: 1136 | version "3.0.1" 1137 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" 1138 | integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== 1139 | dependencies: 1140 | eslint-utils "^2.0.0" 1141 | regexpp "^3.0.0" 1142 | 1143 | eslint-plugin-import@^2.22.1: 1144 | version "2.26.0" 1145 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" 1146 | integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== 1147 | dependencies: 1148 | array-includes "^3.1.4" 1149 | array.prototype.flat "^1.2.5" 1150 | debug "^2.6.9" 1151 | doctrine "^2.1.0" 1152 | eslint-import-resolver-node "^0.3.6" 1153 | eslint-module-utils "^2.7.3" 1154 | has "^1.0.3" 1155 | is-core-module "^2.8.1" 1156 | is-glob "^4.0.3" 1157 | minimatch "^3.1.2" 1158 | object.values "^1.1.5" 1159 | resolve "^1.22.0" 1160 | tsconfig-paths "^3.14.1" 1161 | 1162 | eslint-plugin-node@^11.1.0: 1163 | version "11.1.0" 1164 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" 1165 | integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== 1166 | dependencies: 1167 | eslint-plugin-es "^3.0.0" 1168 | eslint-utils "^2.0.0" 1169 | ignore "^5.1.1" 1170 | minimatch "^3.0.4" 1171 | resolve "^1.10.1" 1172 | semver "^6.1.0" 1173 | 1174 | eslint-plugin-promise@^5.1.1: 1175 | version "5.2.0" 1176 | resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" 1177 | integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== 1178 | 1179 | eslint-scope@^5.1.1: 1180 | version "5.1.1" 1181 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1182 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1183 | dependencies: 1184 | esrecurse "^4.3.0" 1185 | estraverse "^4.1.1" 1186 | 1187 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 1188 | version "2.1.0" 1189 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 1190 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 1191 | dependencies: 1192 | eslint-visitor-keys "^1.1.0" 1193 | 1194 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 1195 | version "1.3.0" 1196 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 1197 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 1198 | 1199 | eslint-visitor-keys@^2.0.0: 1200 | version "2.1.0" 1201 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 1202 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 1203 | 1204 | eslint@^7.12.1: 1205 | version "7.32.0" 1206 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 1207 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 1208 | dependencies: 1209 | "@babel/code-frame" "7.12.11" 1210 | "@eslint/eslintrc" "^0.4.3" 1211 | "@humanwhocodes/config-array" "^0.5.0" 1212 | ajv "^6.10.0" 1213 | chalk "^4.0.0" 1214 | cross-spawn "^7.0.2" 1215 | debug "^4.0.1" 1216 | doctrine "^3.0.0" 1217 | enquirer "^2.3.5" 1218 | escape-string-regexp "^4.0.0" 1219 | eslint-scope "^5.1.1" 1220 | eslint-utils "^2.1.0" 1221 | eslint-visitor-keys "^2.0.0" 1222 | espree "^7.3.1" 1223 | esquery "^1.4.0" 1224 | esutils "^2.0.2" 1225 | fast-deep-equal "^3.1.3" 1226 | file-entry-cache "^6.0.1" 1227 | functional-red-black-tree "^1.0.1" 1228 | glob-parent "^5.1.2" 1229 | globals "^13.6.0" 1230 | ignore "^4.0.6" 1231 | import-fresh "^3.0.0" 1232 | imurmurhash "^0.1.4" 1233 | is-glob "^4.0.0" 1234 | js-yaml "^3.13.1" 1235 | json-stable-stringify-without-jsonify "^1.0.1" 1236 | levn "^0.4.1" 1237 | lodash.merge "^4.6.2" 1238 | minimatch "^3.0.4" 1239 | natural-compare "^1.4.0" 1240 | optionator "^0.9.1" 1241 | progress "^2.0.0" 1242 | regexpp "^3.1.0" 1243 | semver "^7.2.1" 1244 | strip-ansi "^6.0.0" 1245 | strip-json-comments "^3.1.0" 1246 | table "^6.0.9" 1247 | text-table "^0.2.0" 1248 | v8-compile-cache "^2.0.3" 1249 | 1250 | espree@^7.3.0, espree@^7.3.1: 1251 | version "7.3.1" 1252 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 1253 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 1254 | dependencies: 1255 | acorn "^7.4.0" 1256 | acorn-jsx "^5.3.1" 1257 | eslint-visitor-keys "^1.3.0" 1258 | 1259 | esprima@^4.0.0: 1260 | version "4.0.1" 1261 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1262 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1263 | 1264 | esquery@^1.4.0: 1265 | version "1.4.0" 1266 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 1267 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 1268 | dependencies: 1269 | estraverse "^5.1.0" 1270 | 1271 | esrecurse@^4.3.0: 1272 | version "4.3.0" 1273 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1274 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1275 | dependencies: 1276 | estraverse "^5.2.0" 1277 | 1278 | estraverse@^4.1.1: 1279 | version "4.3.0" 1280 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1281 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1282 | 1283 | estraverse@^5.1.0, estraverse@^5.2.0: 1284 | version "5.3.0" 1285 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1286 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1287 | 1288 | esutils@^2.0.2: 1289 | version "2.0.3" 1290 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1291 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1292 | 1293 | extend@~3.0.2: 1294 | version "3.0.2" 1295 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1296 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1297 | 1298 | extract-zip@^1.0.3: 1299 | version "1.7.0" 1300 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" 1301 | integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== 1302 | dependencies: 1303 | concat-stream "^1.6.2" 1304 | debug "^2.6.9" 1305 | mkdirp "^0.5.4" 1306 | yauzl "^2.10.0" 1307 | 1308 | extsprintf@1.3.0: 1309 | version "1.3.0" 1310 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1311 | integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== 1312 | 1313 | extsprintf@^1.2.0: 1314 | version "1.4.1" 1315 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" 1316 | integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== 1317 | 1318 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1319 | version "3.1.3" 1320 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1321 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1322 | 1323 | fast-json-stable-stringify@^2.0.0: 1324 | version "2.1.0" 1325 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1326 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1327 | 1328 | fast-levenshtein@^2.0.6: 1329 | version "2.0.6" 1330 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1331 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1332 | 1333 | fd-slicer@~1.1.0: 1334 | version "1.1.0" 1335 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 1336 | integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== 1337 | dependencies: 1338 | pend "~1.2.0" 1339 | 1340 | file-entry-cache@^6.0.1: 1341 | version "6.0.1" 1342 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1343 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1344 | dependencies: 1345 | flat-cache "^3.0.4" 1346 | 1347 | filelist@^1.0.1: 1348 | version "1.0.4" 1349 | resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" 1350 | integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== 1351 | dependencies: 1352 | minimatch "^5.0.1" 1353 | 1354 | flat-cache@^3.0.4: 1355 | version "3.0.4" 1356 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1357 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1358 | dependencies: 1359 | flatted "^3.1.0" 1360 | rimraf "^3.0.2" 1361 | 1362 | flatted@^3.1.0: 1363 | version "3.2.7" 1364 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 1365 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 1366 | 1367 | follow-redirects@^1.14.4: 1368 | version "1.15.2" 1369 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 1370 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 1371 | 1372 | forever-agent@~0.6.1: 1373 | version "0.6.1" 1374 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1375 | integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== 1376 | 1377 | form-data@^4.0.0: 1378 | version "4.0.0" 1379 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 1380 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 1381 | dependencies: 1382 | asynckit "^0.4.0" 1383 | combined-stream "^1.0.8" 1384 | mime-types "^2.1.12" 1385 | 1386 | form-data@~2.3.2: 1387 | version "2.3.3" 1388 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 1389 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 1390 | dependencies: 1391 | asynckit "^0.4.0" 1392 | combined-stream "^1.0.6" 1393 | mime-types "^2.1.12" 1394 | 1395 | fs-constants@^1.0.0: 1396 | version "1.0.0" 1397 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 1398 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 1399 | 1400 | fs-extra@^10.0.0, fs-extra@^10.1.0: 1401 | version "10.1.0" 1402 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 1403 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== 1404 | dependencies: 1405 | graceful-fs "^4.2.0" 1406 | jsonfile "^6.0.1" 1407 | universalify "^2.0.0" 1408 | 1409 | fs-extra@^8.1.0: 1410 | version "8.1.0" 1411 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 1412 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 1413 | dependencies: 1414 | graceful-fs "^4.2.0" 1415 | jsonfile "^4.0.0" 1416 | universalify "^0.1.0" 1417 | 1418 | fs-extra@^9.0.0, fs-extra@^9.0.1: 1419 | version "9.1.0" 1420 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" 1421 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 1422 | dependencies: 1423 | at-least-node "^1.0.0" 1424 | graceful-fs "^4.2.0" 1425 | jsonfile "^6.0.1" 1426 | universalify "^2.0.0" 1427 | 1428 | fs-minipass@^2.0.0: 1429 | version "2.1.0" 1430 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" 1431 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== 1432 | dependencies: 1433 | minipass "^3.0.0" 1434 | 1435 | fs.realpath@^1.0.0: 1436 | version "1.0.0" 1437 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1438 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1439 | 1440 | fstream@^1.0.12: 1441 | version "1.0.12" 1442 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" 1443 | integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== 1444 | dependencies: 1445 | graceful-fs "^4.1.2" 1446 | inherits "~2.0.0" 1447 | mkdirp ">=0.5 0" 1448 | rimraf "2" 1449 | 1450 | function-bind@^1.1.1: 1451 | version "1.1.1" 1452 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1453 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1454 | 1455 | function.prototype.name@^1.1.5: 1456 | version "1.1.5" 1457 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" 1458 | integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== 1459 | dependencies: 1460 | call-bind "^1.0.2" 1461 | define-properties "^1.1.3" 1462 | es-abstract "^1.19.0" 1463 | functions-have-names "^1.2.2" 1464 | 1465 | functional-red-black-tree@^1.0.1: 1466 | version "1.0.1" 1467 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1468 | integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== 1469 | 1470 | functions-have-names@^1.2.2: 1471 | version "1.2.3" 1472 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" 1473 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== 1474 | 1475 | get-caller-file@^2.0.5: 1476 | version "2.0.5" 1477 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1478 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1479 | 1480 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: 1481 | version "1.1.3" 1482 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" 1483 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== 1484 | dependencies: 1485 | function-bind "^1.1.1" 1486 | has "^1.0.3" 1487 | has-symbols "^1.0.3" 1488 | 1489 | get-stream@^4.1.0: 1490 | version "4.1.0" 1491 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 1492 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 1493 | dependencies: 1494 | pump "^3.0.0" 1495 | 1496 | get-stream@^5.1.0: 1497 | version "5.2.0" 1498 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 1499 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 1500 | dependencies: 1501 | pump "^3.0.0" 1502 | 1503 | get-symbol-description@^1.0.0: 1504 | version "1.0.0" 1505 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 1506 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 1507 | dependencies: 1508 | call-bind "^1.0.2" 1509 | get-intrinsic "^1.1.1" 1510 | 1511 | getpass@^0.1.1: 1512 | version "0.1.7" 1513 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1514 | integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== 1515 | dependencies: 1516 | assert-plus "^1.0.0" 1517 | 1518 | glob-parent@^5.1.2: 1519 | version "5.1.2" 1520 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1521 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1522 | dependencies: 1523 | is-glob "^4.0.1" 1524 | 1525 | glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: 1526 | version "7.2.3" 1527 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1528 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1529 | dependencies: 1530 | fs.realpath "^1.0.0" 1531 | inflight "^1.0.4" 1532 | inherits "2" 1533 | minimatch "^3.1.1" 1534 | once "^1.3.0" 1535 | path-is-absolute "^1.0.0" 1536 | 1537 | global-agent@^3.0.0: 1538 | version "3.0.0" 1539 | resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" 1540 | integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== 1541 | dependencies: 1542 | boolean "^3.0.1" 1543 | es6-error "^4.1.1" 1544 | matcher "^3.0.0" 1545 | roarr "^2.15.3" 1546 | semver "^7.3.2" 1547 | serialize-error "^7.0.1" 1548 | 1549 | global-tunnel-ng@^2.7.1: 1550 | version "2.7.1" 1551 | resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" 1552 | integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== 1553 | dependencies: 1554 | encodeurl "^1.0.2" 1555 | lodash "^4.17.10" 1556 | npm-conf "^1.1.3" 1557 | tunnel "^0.0.6" 1558 | 1559 | globals@^13.6.0, globals@^13.9.0: 1560 | version "13.17.0" 1561 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" 1562 | integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== 1563 | dependencies: 1564 | type-fest "^0.20.2" 1565 | 1566 | globalthis@^1.0.1: 1567 | version "1.0.3" 1568 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" 1569 | integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== 1570 | dependencies: 1571 | define-properties "^1.1.3" 1572 | 1573 | got@^9.6.0: 1574 | version "9.6.0" 1575 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 1576 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 1577 | dependencies: 1578 | "@sindresorhus/is" "^0.14.0" 1579 | "@szmarczak/http-timer" "^1.1.2" 1580 | cacheable-request "^6.0.0" 1581 | decompress-response "^3.3.0" 1582 | duplexer3 "^0.1.4" 1583 | get-stream "^4.1.0" 1584 | lowercase-keys "^1.0.1" 1585 | mimic-response "^1.0.1" 1586 | p-cancelable "^1.0.0" 1587 | to-readable-stream "^1.0.0" 1588 | url-parse-lax "^3.0.0" 1589 | 1590 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: 1591 | version "4.2.10" 1592 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1593 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1594 | 1595 | "graceful-readlink@>= 1.0.0": 1596 | version "1.0.1" 1597 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1598 | integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== 1599 | 1600 | har-schema@^2.0.0: 1601 | version "2.0.0" 1602 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1603 | integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== 1604 | 1605 | har-validator@~5.1.3: 1606 | version "5.1.5" 1607 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 1608 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 1609 | dependencies: 1610 | ajv "^6.12.3" 1611 | har-schema "^2.0.0" 1612 | 1613 | has-bigints@^1.0.1, has-bigints@^1.0.2: 1614 | version "1.0.2" 1615 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" 1616 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== 1617 | 1618 | has-flag@^3.0.0: 1619 | version "3.0.0" 1620 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1621 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1622 | 1623 | has-flag@^4.0.0: 1624 | version "4.0.0" 1625 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1626 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1627 | 1628 | has-property-descriptors@^1.0.0: 1629 | version "1.0.0" 1630 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" 1631 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== 1632 | dependencies: 1633 | get-intrinsic "^1.1.1" 1634 | 1635 | has-symbols@^1.0.2, has-symbols@^1.0.3: 1636 | version "1.0.3" 1637 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 1638 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 1639 | 1640 | has-tostringtag@^1.0.0: 1641 | version "1.0.0" 1642 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 1643 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 1644 | dependencies: 1645 | has-symbols "^1.0.2" 1646 | 1647 | has@^1.0.3: 1648 | version "1.0.3" 1649 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1650 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1651 | dependencies: 1652 | function-bind "^1.1.1" 1653 | 1654 | homeassistant@^0.2.0: 1655 | version "0.2.0" 1656 | resolved "https://registry.yarnpkg.com/homeassistant/-/homeassistant-0.2.0.tgz#a59437c97bc22be5ebab4751a2612612cce24ae7" 1657 | integrity sha512-kOH9PXLNOXgxcB4N3bhiO2wsgFBTVynNn3jLknnmYN4nwMTfAWrh8B4rnUFEm9dlWrnEA5XXlBCxtBiBApYGgg== 1658 | dependencies: 1659 | moment "^2.24.0" 1660 | request "^2.88.0" 1661 | 1662 | hosted-git-info@^4.1.0: 1663 | version "4.1.0" 1664 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" 1665 | integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== 1666 | dependencies: 1667 | lru-cache "^6.0.0" 1668 | 1669 | http-cache-semantics@^4.0.0: 1670 | version "4.1.0" 1671 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 1672 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 1673 | 1674 | http-proxy-agent@^5.0.0: 1675 | version "5.0.0" 1676 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" 1677 | integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== 1678 | dependencies: 1679 | "@tootallnate/once" "2" 1680 | agent-base "6" 1681 | debug "4" 1682 | 1683 | http-signature@~1.2.0: 1684 | version "1.2.0" 1685 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1686 | integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== 1687 | dependencies: 1688 | assert-plus "^1.0.0" 1689 | jsprim "^1.2.2" 1690 | sshpk "^1.7.0" 1691 | 1692 | https-proxy-agent@^5.0.0: 1693 | version "5.0.1" 1694 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1695 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1696 | dependencies: 1697 | agent-base "6" 1698 | debug "4" 1699 | 1700 | iconv-corefoundation@^1.1.7: 1701 | version "1.1.7" 1702 | resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" 1703 | integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== 1704 | dependencies: 1705 | cli-truncate "^2.1.0" 1706 | node-addon-api "^1.6.3" 1707 | 1708 | iconv-lite@^0.6.2: 1709 | version "0.6.3" 1710 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 1711 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 1712 | dependencies: 1713 | safer-buffer ">= 2.1.2 < 3.0.0" 1714 | 1715 | ieee754@^1.1.13: 1716 | version "1.2.1" 1717 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1718 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1719 | 1720 | ignore@^4.0.6: 1721 | version "4.0.6" 1722 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1723 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1724 | 1725 | ignore@^5.1.1: 1726 | version "5.2.0" 1727 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1728 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1729 | 1730 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1731 | version "3.3.0" 1732 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1733 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1734 | dependencies: 1735 | parent-module "^1.0.0" 1736 | resolve-from "^4.0.0" 1737 | 1738 | imurmurhash@^0.1.4: 1739 | version "0.1.4" 1740 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1741 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1742 | 1743 | inflight@^1.0.4: 1744 | version "1.0.6" 1745 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1746 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1747 | dependencies: 1748 | once "^1.3.0" 1749 | wrappy "1" 1750 | 1751 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: 1752 | version "2.0.4" 1753 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1754 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1755 | 1756 | ini@^1.3.4: 1757 | version "1.3.8" 1758 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1759 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1760 | 1761 | internal-slot@^1.0.3: 1762 | version "1.0.3" 1763 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 1764 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 1765 | dependencies: 1766 | get-intrinsic "^1.1.0" 1767 | has "^1.0.3" 1768 | side-channel "^1.0.4" 1769 | 1770 | is-bigint@^1.0.1: 1771 | version "1.0.4" 1772 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 1773 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 1774 | dependencies: 1775 | has-bigints "^1.0.1" 1776 | 1777 | is-boolean-object@^1.1.0: 1778 | version "1.1.2" 1779 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 1780 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 1781 | dependencies: 1782 | call-bind "^1.0.2" 1783 | has-tostringtag "^1.0.0" 1784 | 1785 | is-callable@^1.1.4, is-callable@^1.2.7: 1786 | version "1.2.7" 1787 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 1788 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 1789 | 1790 | is-ci@^3.0.0: 1791 | version "3.0.1" 1792 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" 1793 | integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== 1794 | dependencies: 1795 | ci-info "^3.2.0" 1796 | 1797 | is-core-module@^2.8.1, is-core-module@^2.9.0: 1798 | version "2.10.0" 1799 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" 1800 | integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== 1801 | dependencies: 1802 | has "^1.0.3" 1803 | 1804 | is-date-object@^1.0.1: 1805 | version "1.0.5" 1806 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 1807 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 1808 | dependencies: 1809 | has-tostringtag "^1.0.0" 1810 | 1811 | is-extglob@^2.1.1: 1812 | version "2.1.1" 1813 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1814 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1815 | 1816 | is-fullwidth-code-point@^3.0.0: 1817 | version "3.0.0" 1818 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1819 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1820 | 1821 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1822 | version "4.0.3" 1823 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1824 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1825 | dependencies: 1826 | is-extglob "^2.1.1" 1827 | 1828 | is-negative-zero@^2.0.2: 1829 | version "2.0.2" 1830 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 1831 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 1832 | 1833 | is-number-object@^1.0.4: 1834 | version "1.0.7" 1835 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" 1836 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== 1837 | dependencies: 1838 | has-tostringtag "^1.0.0" 1839 | 1840 | is-regex@^1.1.4: 1841 | version "1.1.4" 1842 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 1843 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 1844 | dependencies: 1845 | call-bind "^1.0.2" 1846 | has-tostringtag "^1.0.0" 1847 | 1848 | is-shared-array-buffer@^1.0.2: 1849 | version "1.0.2" 1850 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" 1851 | integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== 1852 | dependencies: 1853 | call-bind "^1.0.2" 1854 | 1855 | is-string@^1.0.5, is-string@^1.0.7: 1856 | version "1.0.7" 1857 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 1858 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 1859 | dependencies: 1860 | has-tostringtag "^1.0.0" 1861 | 1862 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1863 | version "1.0.4" 1864 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 1865 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 1866 | dependencies: 1867 | has-symbols "^1.0.2" 1868 | 1869 | is-typedarray@~1.0.0: 1870 | version "1.0.0" 1871 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1872 | integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== 1873 | 1874 | is-weakref@^1.0.2: 1875 | version "1.0.2" 1876 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 1877 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 1878 | dependencies: 1879 | call-bind "^1.0.2" 1880 | 1881 | isarray@~1.0.0: 1882 | version "1.0.0" 1883 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1884 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1885 | 1886 | isbinaryfile@^3.0.2: 1887 | version "3.0.3" 1888 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" 1889 | integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== 1890 | dependencies: 1891 | buffer-alloc "^1.2.0" 1892 | 1893 | isbinaryfile@^4.0.10: 1894 | version "4.0.10" 1895 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" 1896 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== 1897 | 1898 | isexe@^2.0.0: 1899 | version "2.0.0" 1900 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1901 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1902 | 1903 | isstream@~0.1.2: 1904 | version "0.1.2" 1905 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1906 | integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== 1907 | 1908 | jake@^10.8.5: 1909 | version "10.8.5" 1910 | resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" 1911 | integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== 1912 | dependencies: 1913 | async "^3.2.3" 1914 | chalk "^4.0.2" 1915 | filelist "^1.0.1" 1916 | minimatch "^3.0.4" 1917 | 1918 | js-tokens@^4.0.0: 1919 | version "4.0.0" 1920 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1921 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1922 | 1923 | js-yaml@^3.13.1: 1924 | version "3.14.1" 1925 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1926 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1927 | dependencies: 1928 | argparse "^1.0.7" 1929 | esprima "^4.0.0" 1930 | 1931 | js-yaml@^4.1.0: 1932 | version "4.1.0" 1933 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1934 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1935 | dependencies: 1936 | argparse "^2.0.1" 1937 | 1938 | jsbn@~0.1.0: 1939 | version "0.1.1" 1940 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1941 | integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== 1942 | 1943 | json-buffer@3.0.0: 1944 | version "3.0.0" 1945 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 1946 | integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== 1947 | 1948 | json-schema-traverse@^0.4.1: 1949 | version "0.4.1" 1950 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1951 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1952 | 1953 | json-schema-traverse@^1.0.0: 1954 | version "1.0.0" 1955 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1956 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1957 | 1958 | json-schema@0.4.0: 1959 | version "0.4.0" 1960 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" 1961 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 1962 | 1963 | json-stable-stringify-without-jsonify@^1.0.1: 1964 | version "1.0.1" 1965 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1966 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1967 | 1968 | json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: 1969 | version "5.0.1" 1970 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1971 | integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 1972 | 1973 | json5@^1.0.1: 1974 | version "1.0.1" 1975 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 1976 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 1977 | dependencies: 1978 | minimist "^1.2.0" 1979 | 1980 | json5@^2.2.0: 1981 | version "2.2.1" 1982 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" 1983 | integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== 1984 | 1985 | jsonfile@^4.0.0: 1986 | version "4.0.0" 1987 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1988 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 1989 | optionalDependencies: 1990 | graceful-fs "^4.1.6" 1991 | 1992 | jsonfile@^6.0.1: 1993 | version "6.1.0" 1994 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 1995 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 1996 | dependencies: 1997 | universalify "^2.0.0" 1998 | optionalDependencies: 1999 | graceful-fs "^4.1.6" 2000 | 2001 | jsprim@^1.2.2: 2002 | version "1.4.2" 2003 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" 2004 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== 2005 | dependencies: 2006 | assert-plus "1.0.0" 2007 | extsprintf "1.3.0" 2008 | json-schema "0.4.0" 2009 | verror "1.10.0" 2010 | 2011 | keyv@^3.0.0: 2012 | version "3.1.0" 2013 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 2014 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 2015 | dependencies: 2016 | json-buffer "3.0.0" 2017 | 2018 | lazy-val@^1.0.4, lazy-val@^1.0.5: 2019 | version "1.0.5" 2020 | resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" 2021 | integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== 2022 | 2023 | lazystream@^1.0.0: 2024 | version "1.0.1" 2025 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" 2026 | integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== 2027 | dependencies: 2028 | readable-stream "^2.0.5" 2029 | 2030 | levn@^0.4.1: 2031 | version "0.4.1" 2032 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 2033 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 2034 | dependencies: 2035 | prelude-ls "^1.2.1" 2036 | type-check "~0.4.0" 2037 | 2038 | listenercount@~1.0.1: 2039 | version "1.0.1" 2040 | resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" 2041 | integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== 2042 | 2043 | lodash.defaults@^4.2.0: 2044 | version "4.2.0" 2045 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" 2046 | integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== 2047 | 2048 | lodash.difference@^4.5.0: 2049 | version "4.5.0" 2050 | resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" 2051 | integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== 2052 | 2053 | lodash.flatten@^4.4.0: 2054 | version "4.4.0" 2055 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 2056 | integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== 2057 | 2058 | lodash.isplainobject@^4.0.6: 2059 | version "4.0.6" 2060 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 2061 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== 2062 | 2063 | lodash.merge@^4.6.2: 2064 | version "4.6.2" 2065 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 2066 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 2067 | 2068 | lodash.truncate@^4.4.2: 2069 | version "4.4.2" 2070 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 2071 | integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== 2072 | 2073 | lodash.union@^4.6.0: 2074 | version "4.6.0" 2075 | resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" 2076 | integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== 2077 | 2078 | lodash@^4.17.10, lodash@^4.17.15: 2079 | version "4.17.21" 2080 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2081 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 2082 | 2083 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 2084 | version "1.0.1" 2085 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 2086 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 2087 | 2088 | lowercase-keys@^2.0.0: 2089 | version "2.0.0" 2090 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 2091 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 2092 | 2093 | lru-cache@^6.0.0: 2094 | version "6.0.0" 2095 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 2096 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 2097 | dependencies: 2098 | yallist "^4.0.0" 2099 | 2100 | matcher@^3.0.0: 2101 | version "3.0.0" 2102 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" 2103 | integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== 2104 | dependencies: 2105 | escape-string-regexp "^4.0.0" 2106 | 2107 | mime-db@1.52.0: 2108 | version "1.52.0" 2109 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 2110 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 2111 | 2112 | mime-types@^2.1.12, mime-types@~2.1.19: 2113 | version "2.1.35" 2114 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 2115 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 2116 | dependencies: 2117 | mime-db "1.52.0" 2118 | 2119 | mime@^2.5.2: 2120 | version "2.6.0" 2121 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 2122 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 2123 | 2124 | mimic-response@^1.0.0, mimic-response@^1.0.1: 2125 | version "1.0.1" 2126 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 2127 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 2128 | 2129 | minimatch@3.0.4: 2130 | version "3.0.4" 2131 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2132 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2133 | dependencies: 2134 | brace-expansion "^1.1.7" 2135 | 2136 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: 2137 | version "3.1.2" 2138 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 2139 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2140 | dependencies: 2141 | brace-expansion "^1.1.7" 2142 | 2143 | minimatch@^5.0.1, minimatch@^5.1.0: 2144 | version "5.1.0" 2145 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" 2146 | integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== 2147 | dependencies: 2148 | brace-expansion "^2.0.1" 2149 | 2150 | minimist@^1.2.0, minimist@^1.2.6: 2151 | version "1.2.7" 2152 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 2153 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 2154 | 2155 | minipass@^3.0.0: 2156 | version "3.3.4" 2157 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" 2158 | integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== 2159 | dependencies: 2160 | yallist "^4.0.0" 2161 | 2162 | minizlib@^2.1.1: 2163 | version "2.1.2" 2164 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" 2165 | integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== 2166 | dependencies: 2167 | minipass "^3.0.0" 2168 | yallist "^4.0.0" 2169 | 2170 | "mkdirp@>=0.5 0", mkdirp@^0.5.4: 2171 | version "0.5.6" 2172 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 2173 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 2174 | dependencies: 2175 | minimist "^1.2.6" 2176 | 2177 | mkdirp@^1.0.3: 2178 | version "1.0.4" 2179 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 2180 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 2181 | 2182 | moment@^2.24.0: 2183 | version "2.29.4" 2184 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" 2185 | integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== 2186 | 2187 | ms@2.0.0: 2188 | version "2.0.0" 2189 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2190 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 2191 | 2192 | ms@2.1.2: 2193 | version "2.1.2" 2194 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2195 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2196 | 2197 | ms@^2.1.1: 2198 | version "2.1.3" 2199 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 2200 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 2201 | 2202 | natural-compare@^1.4.0: 2203 | version "1.4.0" 2204 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2205 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 2206 | 2207 | ncp@^2.0.0: 2208 | version "2.0.0" 2209 | resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" 2210 | integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== 2211 | 2212 | node-addon-api@^1.6.3: 2213 | version "1.7.2" 2214 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" 2215 | integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== 2216 | 2217 | normalize-path@^3.0.0: 2218 | version "3.0.0" 2219 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2220 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2221 | 2222 | normalize-url@^4.1.0: 2223 | version "4.5.1" 2224 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 2225 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 2226 | 2227 | npm-conf@^1.1.3: 2228 | version "1.1.3" 2229 | resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" 2230 | integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== 2231 | dependencies: 2232 | config-chain "^1.1.11" 2233 | pify "^3.0.0" 2234 | 2235 | oauth-sign@~0.9.0: 2236 | version "0.9.0" 2237 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 2238 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 2239 | 2240 | object-inspect@^1.12.2, object-inspect@^1.9.0: 2241 | version "1.12.2" 2242 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 2243 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 2244 | 2245 | object-keys@^1.1.1: 2246 | version "1.1.1" 2247 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 2248 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 2249 | 2250 | object.assign@^4.1.4: 2251 | version "4.1.4" 2252 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" 2253 | integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== 2254 | dependencies: 2255 | call-bind "^1.0.2" 2256 | define-properties "^1.1.4" 2257 | has-symbols "^1.0.3" 2258 | object-keys "^1.1.1" 2259 | 2260 | object.values@^1.1.5: 2261 | version "1.1.5" 2262 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" 2263 | integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== 2264 | dependencies: 2265 | call-bind "^1.0.2" 2266 | define-properties "^1.1.3" 2267 | es-abstract "^1.19.1" 2268 | 2269 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 2270 | version "1.4.0" 2271 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2272 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 2273 | dependencies: 2274 | wrappy "1" 2275 | 2276 | optionator@^0.9.1: 2277 | version "0.9.1" 2278 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 2279 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 2280 | dependencies: 2281 | deep-is "^0.1.3" 2282 | fast-levenshtein "^2.0.6" 2283 | levn "^0.4.1" 2284 | prelude-ls "^1.2.1" 2285 | type-check "^0.4.0" 2286 | word-wrap "^1.2.3" 2287 | 2288 | p-cancelable@^1.0.0: 2289 | version "1.1.0" 2290 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 2291 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 2292 | 2293 | parent-module@^1.0.0: 2294 | version "1.0.1" 2295 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2296 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2297 | dependencies: 2298 | callsites "^3.0.0" 2299 | 2300 | path-is-absolute@^1.0.0: 2301 | version "1.0.1" 2302 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2303 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 2304 | 2305 | path-key@^3.1.0: 2306 | version "3.1.1" 2307 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2308 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2309 | 2310 | path-parse@^1.0.7: 2311 | version "1.0.7" 2312 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2313 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2314 | 2315 | pend@~1.2.0: 2316 | version "1.2.0" 2317 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 2318 | integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== 2319 | 2320 | performance-now@^2.1.0: 2321 | version "2.1.0" 2322 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 2323 | integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== 2324 | 2325 | pify@^3.0.0: 2326 | version "3.0.0" 2327 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2328 | integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== 2329 | 2330 | plist@^3.0.1, plist@^3.0.4: 2331 | version "3.0.6" 2332 | resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" 2333 | integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== 2334 | dependencies: 2335 | base64-js "^1.5.1" 2336 | xmlbuilder "^15.1.1" 2337 | 2338 | prelude-ls@^1.2.1: 2339 | version "1.2.1" 2340 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2341 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2342 | 2343 | prepend-http@^2.0.0: 2344 | version "2.0.0" 2345 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 2346 | integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== 2347 | 2348 | process-nextick-args@~2.0.0: 2349 | version "2.0.1" 2350 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2351 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 2352 | 2353 | progress@^2.0.0, progress@^2.0.3: 2354 | version "2.0.3" 2355 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 2356 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 2357 | 2358 | proto-list@~1.2.1: 2359 | version "1.2.4" 2360 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 2361 | integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== 2362 | 2363 | psl@^1.1.28: 2364 | version "1.9.0" 2365 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" 2366 | integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== 2367 | 2368 | pump@^3.0.0: 2369 | version "3.0.0" 2370 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 2371 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 2372 | dependencies: 2373 | end-of-stream "^1.1.0" 2374 | once "^1.3.1" 2375 | 2376 | punycode@^2.1.0, punycode@^2.1.1: 2377 | version "2.1.1" 2378 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2379 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2380 | 2381 | qs@~6.5.2: 2382 | version "6.5.3" 2383 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" 2384 | integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== 2385 | 2386 | read-config-file@6.2.0: 2387 | version "6.2.0" 2388 | resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" 2389 | integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== 2390 | dependencies: 2391 | dotenv "^9.0.2" 2392 | dotenv-expand "^5.1.0" 2393 | js-yaml "^4.1.0" 2394 | json5 "^2.2.0" 2395 | lazy-val "^1.0.4" 2396 | 2397 | readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@~2.3.6: 2398 | version "2.3.7" 2399 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 2400 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 2401 | dependencies: 2402 | core-util-is "~1.0.0" 2403 | inherits "~2.0.3" 2404 | isarray "~1.0.0" 2405 | process-nextick-args "~2.0.0" 2406 | safe-buffer "~5.1.1" 2407 | string_decoder "~1.1.1" 2408 | util-deprecate "~1.0.1" 2409 | 2410 | readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: 2411 | version "3.6.0" 2412 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2413 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 2414 | dependencies: 2415 | inherits "^2.0.3" 2416 | string_decoder "^1.1.1" 2417 | util-deprecate "^1.0.1" 2418 | 2419 | readdir-glob@^1.0.0: 2420 | version "1.1.2" 2421 | resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" 2422 | integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== 2423 | dependencies: 2424 | minimatch "^5.1.0" 2425 | 2426 | regexp.prototype.flags@^1.4.3: 2427 | version "1.4.3" 2428 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" 2429 | integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== 2430 | dependencies: 2431 | call-bind "^1.0.2" 2432 | define-properties "^1.1.3" 2433 | functions-have-names "^1.2.2" 2434 | 2435 | regexpp@^3.0.0, regexpp@^3.1.0: 2436 | version "3.2.0" 2437 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 2438 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 2439 | 2440 | request@^2.88.0: 2441 | version "2.88.2" 2442 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 2443 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 2444 | dependencies: 2445 | aws-sign2 "~0.7.0" 2446 | aws4 "^1.8.0" 2447 | caseless "~0.12.0" 2448 | combined-stream "~1.0.6" 2449 | extend "~3.0.2" 2450 | forever-agent "~0.6.1" 2451 | form-data "~2.3.2" 2452 | har-validator "~5.1.3" 2453 | http-signature "~1.2.0" 2454 | is-typedarray "~1.0.0" 2455 | isstream "~0.1.2" 2456 | json-stringify-safe "~5.0.1" 2457 | mime-types "~2.1.19" 2458 | oauth-sign "~0.9.0" 2459 | performance-now "^2.1.0" 2460 | qs "~6.5.2" 2461 | safe-buffer "^5.1.2" 2462 | tough-cookie "~2.5.0" 2463 | tunnel-agent "^0.6.0" 2464 | uuid "^3.3.2" 2465 | 2466 | require-directory@^2.1.1: 2467 | version "2.1.1" 2468 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2469 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2470 | 2471 | require-from-string@^2.0.2: 2472 | version "2.0.2" 2473 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 2474 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 2475 | 2476 | resolve-from@^4.0.0: 2477 | version "4.0.0" 2478 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2479 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2480 | 2481 | resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.0: 2482 | version "1.22.1" 2483 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 2484 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 2485 | dependencies: 2486 | is-core-module "^2.9.0" 2487 | path-parse "^1.0.7" 2488 | supports-preserve-symlinks-flag "^1.0.0" 2489 | 2490 | responselike@^1.0.2: 2491 | version "1.0.2" 2492 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 2493 | integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== 2494 | dependencies: 2495 | lowercase-keys "^1.0.0" 2496 | 2497 | rimraf@2: 2498 | version "2.7.1" 2499 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 2500 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 2501 | dependencies: 2502 | glob "^7.1.3" 2503 | 2504 | rimraf@^3.0.0, rimraf@^3.0.2: 2505 | version "3.0.2" 2506 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2507 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2508 | dependencies: 2509 | glob "^7.1.3" 2510 | 2511 | roarr@^2.15.3: 2512 | version "2.15.4" 2513 | resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" 2514 | integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== 2515 | dependencies: 2516 | boolean "^3.0.1" 2517 | detect-node "^2.0.4" 2518 | globalthis "^1.0.1" 2519 | json-stringify-safe "^5.0.1" 2520 | semver-compare "^1.0.0" 2521 | sprintf-js "^1.1.2" 2522 | 2523 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: 2524 | version "5.2.1" 2525 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2526 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2527 | 2528 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2529 | version "5.1.2" 2530 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2531 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2532 | 2533 | safe-regex-test@^1.0.0: 2534 | version "1.0.0" 2535 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" 2536 | integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== 2537 | dependencies: 2538 | call-bind "^1.0.2" 2539 | get-intrinsic "^1.1.3" 2540 | is-regex "^1.1.4" 2541 | 2542 | "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 2543 | version "2.1.2" 2544 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2545 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2546 | 2547 | sanitize-filename@^1.6.3: 2548 | version "1.6.3" 2549 | resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" 2550 | integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== 2551 | dependencies: 2552 | truncate-utf8-bytes "^1.0.0" 2553 | 2554 | sax@^1.2.4: 2555 | version "1.2.4" 2556 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2557 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 2558 | 2559 | semver-compare@^1.0.0: 2560 | version "1.0.0" 2561 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 2562 | integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== 2563 | 2564 | semver@^6.1.0, semver@^6.2.0: 2565 | version "6.3.0" 2566 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2567 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2568 | 2569 | semver@^7.2.1, semver@^7.3.2, semver@^7.3.7: 2570 | version "7.3.8" 2571 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" 2572 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== 2573 | dependencies: 2574 | lru-cache "^6.0.0" 2575 | 2576 | semver@~7.0.0: 2577 | version "7.0.0" 2578 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 2579 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 2580 | 2581 | serialize-error@^7.0.1: 2582 | version "7.0.1" 2583 | resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" 2584 | integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== 2585 | dependencies: 2586 | type-fest "^0.13.1" 2587 | 2588 | setimmediate@~1.0.4: 2589 | version "1.0.5" 2590 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 2591 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 2592 | 2593 | shebang-command@^2.0.0: 2594 | version "2.0.0" 2595 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2596 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2597 | dependencies: 2598 | shebang-regex "^3.0.0" 2599 | 2600 | shebang-regex@^3.0.0: 2601 | version "3.0.0" 2602 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2603 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2604 | 2605 | side-channel@^1.0.4: 2606 | version "1.0.4" 2607 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 2608 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 2609 | dependencies: 2610 | call-bind "^1.0.0" 2611 | get-intrinsic "^1.0.2" 2612 | object-inspect "^1.9.0" 2613 | 2614 | simple-update-notifier@^1.0.7: 2615 | version "1.0.7" 2616 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz#7edf75c5bdd04f88828d632f762b2bc32996a9cc" 2617 | integrity sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew== 2618 | dependencies: 2619 | semver "~7.0.0" 2620 | 2621 | slice-ansi@^3.0.0: 2622 | version "3.0.0" 2623 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 2624 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 2625 | dependencies: 2626 | ansi-styles "^4.0.0" 2627 | astral-regex "^2.0.0" 2628 | is-fullwidth-code-point "^3.0.0" 2629 | 2630 | slice-ansi@^4.0.0: 2631 | version "4.0.0" 2632 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 2633 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 2634 | dependencies: 2635 | ansi-styles "^4.0.0" 2636 | astral-regex "^2.0.0" 2637 | is-fullwidth-code-point "^3.0.0" 2638 | 2639 | smart-buffer@^4.0.2: 2640 | version "4.2.0" 2641 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" 2642 | integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== 2643 | 2644 | source-map-support@^0.5.19: 2645 | version "0.5.21" 2646 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2647 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 2648 | dependencies: 2649 | buffer-from "^1.0.0" 2650 | source-map "^0.6.0" 2651 | 2652 | source-map@^0.6.0: 2653 | version "0.6.1" 2654 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2655 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2656 | 2657 | sprintf-js@^1.1.2: 2658 | version "1.1.2" 2659 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" 2660 | integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== 2661 | 2662 | sprintf-js@~1.0.2: 2663 | version "1.0.3" 2664 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2665 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 2666 | 2667 | sshpk@^1.7.0: 2668 | version "1.17.0" 2669 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" 2670 | integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== 2671 | dependencies: 2672 | asn1 "~0.2.3" 2673 | assert-plus "^1.0.0" 2674 | bcrypt-pbkdf "^1.0.0" 2675 | dashdash "^1.12.0" 2676 | ecc-jsbn "~0.1.1" 2677 | getpass "^0.1.1" 2678 | jsbn "~0.1.0" 2679 | safer-buffer "^2.0.2" 2680 | tweetnacl "~0.14.0" 2681 | 2682 | stat-mode@^1.0.0: 2683 | version "1.0.0" 2684 | resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" 2685 | integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== 2686 | 2687 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 2688 | version "4.2.3" 2689 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2690 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2691 | dependencies: 2692 | emoji-regex "^8.0.0" 2693 | is-fullwidth-code-point "^3.0.0" 2694 | strip-ansi "^6.0.1" 2695 | 2696 | string.prototype.trimend@^1.0.5: 2697 | version "1.0.5" 2698 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" 2699 | integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== 2700 | dependencies: 2701 | call-bind "^1.0.2" 2702 | define-properties "^1.1.4" 2703 | es-abstract "^1.19.5" 2704 | 2705 | string.prototype.trimstart@^1.0.5: 2706 | version "1.0.5" 2707 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" 2708 | integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== 2709 | dependencies: 2710 | call-bind "^1.0.2" 2711 | define-properties "^1.1.4" 2712 | es-abstract "^1.19.5" 2713 | 2714 | string_decoder@^1.1.1: 2715 | version "1.3.0" 2716 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2717 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2718 | dependencies: 2719 | safe-buffer "~5.2.0" 2720 | 2721 | string_decoder@~1.1.1: 2722 | version "1.1.1" 2723 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2724 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2725 | dependencies: 2726 | safe-buffer "~5.1.0" 2727 | 2728 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2729 | version "6.0.1" 2730 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2731 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2732 | dependencies: 2733 | ansi-regex "^5.0.1" 2734 | 2735 | strip-bom@^3.0.0: 2736 | version "3.0.0" 2737 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2738 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 2739 | 2740 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 2741 | version "3.1.1" 2742 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2743 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2744 | 2745 | sumchecker@^3.0.1: 2746 | version "3.0.1" 2747 | resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" 2748 | integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== 2749 | dependencies: 2750 | debug "^4.1.0" 2751 | 2752 | supports-color@^5.3.0: 2753 | version "5.5.0" 2754 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2755 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2756 | dependencies: 2757 | has-flag "^3.0.0" 2758 | 2759 | supports-color@^7.1.0: 2760 | version "7.2.0" 2761 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2762 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2763 | dependencies: 2764 | has-flag "^4.0.0" 2765 | 2766 | supports-preserve-symlinks-flag@^1.0.0: 2767 | version "1.0.0" 2768 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2769 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2770 | 2771 | table@^6.0.9: 2772 | version "6.8.0" 2773 | resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" 2774 | integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== 2775 | dependencies: 2776 | ajv "^8.0.1" 2777 | lodash.truncate "^4.4.2" 2778 | slice-ansi "^4.0.0" 2779 | string-width "^4.2.3" 2780 | strip-ansi "^6.0.1" 2781 | 2782 | tar-stream@^2.2.0: 2783 | version "2.2.0" 2784 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 2785 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 2786 | dependencies: 2787 | bl "^4.0.3" 2788 | end-of-stream "^1.4.1" 2789 | fs-constants "^1.0.0" 2790 | inherits "^2.0.3" 2791 | readable-stream "^3.1.1" 2792 | 2793 | tar@^6.1.11: 2794 | version "6.1.11" 2795 | resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" 2796 | integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== 2797 | dependencies: 2798 | chownr "^2.0.0" 2799 | fs-minipass "^2.0.0" 2800 | minipass "^3.0.0" 2801 | minizlib "^2.1.1" 2802 | mkdirp "^1.0.3" 2803 | yallist "^4.0.0" 2804 | 2805 | temp-file@^3.4.0: 2806 | version "3.4.0" 2807 | resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" 2808 | integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== 2809 | dependencies: 2810 | async-exit-hook "^2.0.1" 2811 | fs-extra "^10.0.0" 2812 | 2813 | text-table@^0.2.0: 2814 | version "0.2.0" 2815 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2816 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 2817 | 2818 | tmp-promise@^3.0.2: 2819 | version "3.0.3" 2820 | resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" 2821 | integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== 2822 | dependencies: 2823 | tmp "^0.2.0" 2824 | 2825 | tmp@^0.2.0: 2826 | version "0.2.1" 2827 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 2828 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 2829 | dependencies: 2830 | rimraf "^3.0.0" 2831 | 2832 | to-readable-stream@^1.0.0: 2833 | version "1.0.0" 2834 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 2835 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 2836 | 2837 | tough-cookie@~2.5.0: 2838 | version "2.5.0" 2839 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 2840 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 2841 | dependencies: 2842 | psl "^1.1.28" 2843 | punycode "^2.1.1" 2844 | 2845 | "traverse@>=0.3.0 <0.4": 2846 | version "0.3.9" 2847 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 2848 | integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== 2849 | 2850 | truncate-utf8-bytes@^1.0.0: 2851 | version "1.0.2" 2852 | resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" 2853 | integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== 2854 | dependencies: 2855 | utf8-byte-length "^1.0.1" 2856 | 2857 | tsconfig-paths@^3.14.1: 2858 | version "3.14.1" 2859 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" 2860 | integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== 2861 | dependencies: 2862 | "@types/json5" "^0.0.29" 2863 | json5 "^1.0.1" 2864 | minimist "^1.2.6" 2865 | strip-bom "^3.0.0" 2866 | 2867 | tunnel-agent@^0.6.0: 2868 | version "0.6.0" 2869 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2870 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 2871 | dependencies: 2872 | safe-buffer "^5.0.1" 2873 | 2874 | tunnel@^0.0.6: 2875 | version "0.0.6" 2876 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 2877 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 2878 | 2879 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2880 | version "0.14.5" 2881 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2882 | integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== 2883 | 2884 | type-check@^0.4.0, type-check@~0.4.0: 2885 | version "0.4.0" 2886 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2887 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2888 | dependencies: 2889 | prelude-ls "^1.2.1" 2890 | 2891 | type-fest@^0.13.1: 2892 | version "0.13.1" 2893 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" 2894 | integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== 2895 | 2896 | type-fest@^0.20.2: 2897 | version "0.20.2" 2898 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2899 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2900 | 2901 | typedarray@^0.0.6: 2902 | version "0.0.6" 2903 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2904 | integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== 2905 | 2906 | unbox-primitive@^1.0.2: 2907 | version "1.0.2" 2908 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" 2909 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== 2910 | dependencies: 2911 | call-bind "^1.0.2" 2912 | has-bigints "^1.0.2" 2913 | has-symbols "^1.0.3" 2914 | which-boxed-primitive "^1.0.2" 2915 | 2916 | universalify@^0.1.0: 2917 | version "0.1.2" 2918 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 2919 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 2920 | 2921 | universalify@^2.0.0: 2922 | version "2.0.0" 2923 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 2924 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 2925 | 2926 | unzipper@^0.10.11: 2927 | version "0.10.11" 2928 | resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" 2929 | integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== 2930 | dependencies: 2931 | big-integer "^1.6.17" 2932 | binary "~0.3.0" 2933 | bluebird "~3.4.1" 2934 | buffer-indexof-polyfill "~1.0.0" 2935 | duplexer2 "~0.1.4" 2936 | fstream "^1.0.12" 2937 | graceful-fs "^4.2.2" 2938 | listenercount "~1.0.1" 2939 | readable-stream "~2.3.6" 2940 | setimmediate "~1.0.4" 2941 | 2942 | uri-js@^4.2.2: 2943 | version "4.4.1" 2944 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2945 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2946 | dependencies: 2947 | punycode "^2.1.0" 2948 | 2949 | url-parse-lax@^3.0.0: 2950 | version "3.0.0" 2951 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 2952 | integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== 2953 | dependencies: 2954 | prepend-http "^2.0.0" 2955 | 2956 | utf8-byte-length@^1.0.1: 2957 | version "1.0.4" 2958 | resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" 2959 | integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== 2960 | 2961 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 2962 | version "1.0.2" 2963 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2964 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 2965 | 2966 | uuid@^3.3.2: 2967 | version "3.4.0" 2968 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2969 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2970 | 2971 | v8-compile-cache@^2.0.3: 2972 | version "2.3.0" 2973 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 2974 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 2975 | 2976 | verror@1.10.0: 2977 | version "1.10.0" 2978 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2979 | integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== 2980 | dependencies: 2981 | assert-plus "^1.0.0" 2982 | core-util-is "1.0.2" 2983 | extsprintf "^1.2.0" 2984 | 2985 | verror@^1.10.0: 2986 | version "1.10.1" 2987 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" 2988 | integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== 2989 | dependencies: 2990 | assert-plus "^1.0.0" 2991 | core-util-is "1.0.2" 2992 | extsprintf "^1.2.0" 2993 | 2994 | which-boxed-primitive@^1.0.2: 2995 | version "1.0.2" 2996 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 2997 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 2998 | dependencies: 2999 | is-bigint "^1.0.1" 3000 | is-boolean-object "^1.1.0" 3001 | is-number-object "^1.0.4" 3002 | is-string "^1.0.5" 3003 | is-symbol "^1.0.3" 3004 | 3005 | which@^2.0.1: 3006 | version "2.0.2" 3007 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3008 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 3009 | dependencies: 3010 | isexe "^2.0.0" 3011 | 3012 | word-wrap@^1.2.3: 3013 | version "1.2.3" 3014 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 3015 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 3016 | 3017 | wrap-ansi@^7.0.0: 3018 | version "7.0.0" 3019 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3020 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3021 | dependencies: 3022 | ansi-styles "^4.0.0" 3023 | string-width "^4.1.0" 3024 | strip-ansi "^6.0.0" 3025 | 3026 | wrappy@1: 3027 | version "1.0.2" 3028 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3029 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 3030 | 3031 | xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: 3032 | version "15.1.1" 3033 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" 3034 | integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== 3035 | 3036 | y18n@^5.0.5: 3037 | version "5.0.8" 3038 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 3039 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 3040 | 3041 | yallist@^4.0.0: 3042 | version "4.0.0" 3043 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 3044 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 3045 | 3046 | yargs-parser@^21.0.0: 3047 | version "21.1.1" 3048 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 3049 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 3050 | 3051 | yargs@^17.5.1: 3052 | version "17.6.0" 3053 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c" 3054 | integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g== 3055 | dependencies: 3056 | cliui "^8.0.1" 3057 | escalade "^3.1.1" 3058 | get-caller-file "^2.0.5" 3059 | require-directory "^2.1.1" 3060 | string-width "^4.2.3" 3061 | y18n "^5.0.5" 3062 | yargs-parser "^21.0.0" 3063 | 3064 | yauzl@^2.10.0: 3065 | version "2.10.0" 3066 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 3067 | integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== 3068 | dependencies: 3069 | buffer-crc32 "~0.2.3" 3070 | fd-slicer "~1.1.0" 3071 | 3072 | zip-stream@^4.1.0: 3073 | version "4.1.0" 3074 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" 3075 | integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== 3076 | dependencies: 3077 | archiver-utils "^2.1.0" 3078 | compress-commons "^4.1.0" 3079 | readable-stream "^3.6.0" 3080 | --------------------------------------------------------------------------------