├── .eslintrc.js ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── esbuild.js ├── package.json ├── src ├── config.ts ├── index.ts └── lightbulb.ts ├── tsconfig.json └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | node: true, 4 | }, 5 | parser: '@typescript-eslint/parser', 6 | extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'], 7 | rules: { 8 | '@typescript-eslint/ban-ts-comment': 'off', 9 | '@typescript-eslint/no-explicit-any': 'off', 10 | '@typescript-eslint/no-non-null-assertion': 'off', 11 | '@typescript-eslint/no-namespace': 'off', 12 | '@typescript-eslint/no-empty-function': 'off', 13 | '@typescript-eslint/explicit-function-return-type': 'off', 14 | '@typescript-eslint/explicit-module-boundary-types': 'off', 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src 2 | node_modules 3 | tsconfig.json 4 | *.map 5 | .tags 6 | .DS_Store 7 | webpack.config.js 8 | esbuild.js 9 | yarn.lock 10 | yarn-error.log 11 | .github 12 | .eslintrc.js 13 | .prettierrc 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 wongxy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # coc-lightbulb 2 | 3 | Code action 💡 for coc.nvim 4 | 5 | Show a lightbulb if there are available codeActions for current cursor position 6 | 7 | ![demo](https://user-images.githubusercontent.com/47070852/132829062-519f5f76-bdc2-4ff4-a5f4-fcaf05673396.gif) 8 | 9 | ## Install 10 | 11 | `:CocInstall coc-lightbulb` 12 | 13 | ## Configuration 14 | 15 | | name | default | description | 16 | | ------------------------------- | ------- | --------------------------------------------------------------- | 17 | | `lightbulb.only` | `[]` | Array of codeActionKind used for filtering | 18 | | `lightbulb.excludeFiletypes` | `[]` | Disable lightbulb in these filetyps | 19 | | `lightbulb.enableVirtualText` | `true` | Whether to show virtual text(neovim only) | 20 | | `lightbulb.virtualTextPosition` | `auto` | Virtual text position | 21 | | `lightbulb.virtualTextPriority` | `50` | Priority of virtual text | 22 | | `lightbulb.enableSign` | `false` | Whether to show sign | 23 | | `lightbulb.signPriority` | `20` | Priority of sign | 24 | | `lightbulb.followDiagnostic` | `true` | Don't show lightbulb when `b:coc_diagnostic_disable equal` to 1 | 25 | 26 | ```jsonc 27 | { 28 | "lightbulb.text": { 29 | // nerd-font: nf-mdi-lightbulb, text used when there're code actions 30 | "default": "", 31 | // nerd-font: nf-mdi-auto_fix, text used when there're code actions and quickfix exists 32 | "quickfix": "" 33 | } 34 | } 35 | ``` 36 | 37 | ## Usage 38 | 39 | 1. The variable `b:coc_lightbulb_status` will always be set and you can use it for the statusline 40 | 41 | 2. How to disable lightbulb for current buffer ? 42 | 43 | ```vim 44 | let b:coc_lightbulb_disable = 1 45 | ``` 46 | 47 | 3. highlights 48 | 49 | by default 50 | 51 | ```vim 52 | " virtual text 53 | hi default LightBulbDefaultVirtualText guifg=#FDD164 54 | hi default link LightBulbQuickFixVirtualText LightBulbDefaultVirtualText 55 | " sign 56 | hi default LightBulbDefaultSign guifg=#FDD164 57 | hi default link LightBulbQuickFixSign LightBulbDefaultSign 58 | " for numhl, you can set LightBulbDefaultSignLine, LightBulbQuickFixSignLine 59 | ``` 60 | 61 | ## License 62 | 63 | MIT 64 | 65 | --- 66 | 67 | > This extension is built with [create-coc-extension](https://github.com/fannheyward/create-coc-extension) 68 | -------------------------------------------------------------------------------- /esbuild.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-var-requires */ 2 | async function start(watch) { 3 | await require('esbuild').build({ 4 | entryPoints: ['src/index.ts'], 5 | bundle: true, 6 | watch, 7 | minify: process.env.NODE_ENV === 'production', 8 | sourcemap: process.env.NODE_ENV === 'development', 9 | mainFields: ['module', 'main'], 10 | external: ['coc.nvim'], 11 | platform: 'node', 12 | target: 'node10.12', 13 | outfile: 'lib/index.js', 14 | }); 15 | } 16 | 17 | let watch = false; 18 | if (process.argv.length > 2 && process.argv[2] === '--watch') { 19 | console.log('watching...'); 20 | watch = { 21 | onRebuild(error) { 22 | if (error) { 23 | console.error('watch build failed:', error); 24 | } else { 25 | console.log('watch build succeeded'); 26 | } 27 | }, 28 | }; 29 | } 30 | 31 | start(watch).catch((e) => { 32 | console.error(e); 33 | }); 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coc-lightbulb", 3 | "version": "0.0.17", 4 | "description": "VSCode 💡 for coc.nvim", 5 | "author": "wongxy ", 6 | "license": "MIT", 7 | "main": "lib/index.js", 8 | "keywords": [ 9 | "coc.nvim" 10 | ], 11 | "engines": { 12 | "coc": "^0.0.80" 13 | }, 14 | "scripts": { 15 | "lint": "eslint src --ext ts", 16 | "clean": "rimraf lib", 17 | "watch": "node esbuild.js --watch", 18 | "build": "node esbuild.js", 19 | "prepare": "node esbuild.js" 20 | }, 21 | "prettier": { 22 | "singleQuote": true, 23 | "printWidth": 120, 24 | "semi": true 25 | }, 26 | "devDependencies": { 27 | "@types/node": "^17.0.13", 28 | "@typescript-eslint/eslint-plugin": "^4.8.2", 29 | "@typescript-eslint/parser": "^4.8.2", 30 | "coc.nvim": "^0.0.81-next.11", 31 | "esbuild": "^0.8.42", 32 | "eslint": "^7.14.0", 33 | "eslint-config-prettier": "^8.1.0", 34 | "eslint-plugin-prettier": "^3.1.4", 35 | "prettier": "^2.2.0", 36 | "rimraf": "^3.0.2", 37 | "typescript": "^4.1.2", 38 | "vscode-languageserver-protocol": "^3.16.0" 39 | }, 40 | "activationEvents": [ 41 | "*" 42 | ], 43 | "contributes": { 44 | "configuration": { 45 | "type": "object", 46 | "title": "coc-lightbulb configuration", 47 | "properties": { 48 | "lightbulb.only": { 49 | "type": "array", 50 | "items": { 51 | "type": "string" 52 | }, 53 | "default": [], 54 | "description": "Array of codeActionKind used for filtering" 55 | }, 56 | "lightbulb.excludeFiletypes": { 57 | "type": "array", 58 | "items": { 59 | "type": "string" 60 | }, 61 | "default": [], 62 | "description": "Disable lightbulb in these filetyps" 63 | }, 64 | "lightbulb.enableVirtualText": { 65 | "type": "boolean", 66 | "default": true, 67 | "description": "Whether to show virtual text" 68 | }, 69 | "lightbulb.text": { 70 | "type": "object", 71 | "description": "Text used to display", 72 | "properties": { 73 | "default": { 74 | "type": "string", 75 | "default": "" 76 | }, 77 | "quickfix": { 78 | "type": "string", 79 | "default": "" 80 | } 81 | } 82 | }, 83 | "lightbulb.virtualTextPosition": { 84 | "type": "string", 85 | "default": "auto", 86 | "enum": [ 87 | "auto", 88 | "eol", 89 | "right_align" 90 | ], 91 | "markdownDescription": "Virtual text position", 92 | "markdownEnumDescriptions": [ 93 | "Automatically select the position closest to the cursor", 94 | "Right after eol character", 95 | "Display right aligned in the window" 96 | ] 97 | }, 98 | "lightbulb.virtualTextPriority": { 99 | "type": "number", 100 | "default": 50, 101 | "description": "Priority of virtual text" 102 | }, 103 | "lightbulb.enableSign": { 104 | "type": "boolean", 105 | "default": false, 106 | "description": "Whether to show sign" 107 | }, 108 | "lightbulb.signPriority": { 109 | "type": "number", 110 | "default": 20, 111 | "description": "Priority of sign" 112 | }, 113 | "lightbulb.followDiagnostic": { 114 | "type": "boolean", 115 | "default": true, 116 | "description": "Don't show lightbulb when b:coc_diagnostic_disable equal to 1" 117 | } 118 | } 119 | } 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | import { workspace } from 'coc.nvim'; 2 | 3 | class Config { 4 | public only!: string[]; 5 | public excludeFiletypes!: string[]; 6 | 7 | public enableVirtualText!: boolean; 8 | public virtualTextPriority!: number; 9 | public virtualTextPosition!: 'auto' | 'eol' | 'right_align'; 10 | public virtualTextPadding!: number; 11 | 12 | public enableSign!: boolean; 13 | public signPriority!: number; 14 | 15 | public followDiagnostic!: boolean; 16 | public nvim6!: boolean; 17 | public text!: { default: string; quickfix: string }; 18 | public names!: { 19 | virtualText: { default: string; quickfix: string }; 20 | sign: { default: string; quickfix: string }; 21 | }; 22 | 23 | constructor() { 24 | this.setConfiguration(); 25 | } 26 | 27 | setConfiguration() { 28 | const cfg = workspace.getConfiguration('lightbulb'); 29 | 30 | this.only = cfg.get('only', [])!; 31 | this.excludeFiletypes = cfg.get('excludeFiletypes', [])!; 32 | this.enableVirtualText = 33 | workspace.isNvim && 34 | workspace.nvim.hasFunction('nvim_buf_set_virtual_text') && 35 | cfg.get('enableVirtualText')!; 36 | 37 | const textCfg = workspace.getConfiguration('lightbulb.text'); 38 | 39 | this.text = { 40 | default: textCfg.get('default', ''), 41 | quickfix: textCfg.get('quickfix', ''), 42 | }; 43 | 44 | this.virtualTextPriority = cfg.get('virtualTextPriority')!; 45 | this.virtualTextPosition = cfg.get<'auto' | 'eol' | 'right_align'>('virtualTextPosition')!; 46 | this.virtualTextPadding = 2 * Math.max(this.text.default.length, this.text.quickfix.length) + 2; 47 | 48 | this.enableSign = cfg.get('enableSign')!; 49 | this.signPriority = cfg.get('signPriority')!; 50 | 51 | this.followDiagnostic = cfg.get('followDiagnostic')!; 52 | 53 | const names = { 54 | virtualText: { default: 'LightBulbDefaultVirtualText', quickfix: 'LightBulbQuickFixVirtualText' }, 55 | sign: { default: 'LightBulbDefaultSign', quickfix: 'LightBulbQuickFixSign' }, 56 | }; 57 | 58 | this.names = names; 59 | 60 | const { nvim } = workspace; 61 | if (this.enableVirtualText) { 62 | nvim.command(`hi default ${names.virtualText.default} guifg=#FDD164`, true); 63 | nvim.command(`hi default link ${names.virtualText.quickfix} ${names.virtualText.default}`, true); 64 | } 65 | if (this.enableSign) { 66 | nvim.command(`hi default ${names.sign.default} guifg=#FDD164`, true); 67 | nvim.command(`hi default link ${names.sign.quickfix} ${this.names.sign.default}`, true); 68 | nvim.command( 69 | `sign define ${names.sign.default} text=${this.text.default.replace(' ', '')} texthl=${ 70 | names.sign.default 71 | } linehl=${names.sign.default}Line`, 72 | true 73 | ); 74 | nvim.command( 75 | `sign define ${names.sign.quickfix} text=${this.text.quickfix.replace(' ', '')} texthl=${ 76 | names.sign.quickfix 77 | } linehl=${names.sign.quickfix}Line`, 78 | true 79 | ); 80 | } 81 | 82 | this.nvim6 = workspace.has('nvim-0.6.0'); 83 | if (this.nvim6) { 84 | nvim.createNamespace('coc-lightbulb').then((ns) => { 85 | // TODO: check window view overflow 86 | const code = ` 87 | local ffi = require("ffi") 88 | local api = vim.api 89 | 90 | function _G.__coc_lightbulb_is_eol_suitable() 91 | local finish = vim.fn.col("$") - 1 92 | local curCol = vim.fn.col(".") - 1 93 | 94 | if finish - curCol > 30 or finish + vim.fn.winsaveview().leftcol + ${this.virtualTextPadding} > api.nvim_win_get_width(0) then 95 | return false 96 | end 97 | 98 | local lnum = vim.fn.line(".") - 1 99 | 100 | for _, ns in pairs(api.nvim_get_namespaces()) do 101 | if ns ~= ${ns} then 102 | local marks = api.nvim_buf_get_extmarks(0, ns, { lnum, 0 }, { lnum, -1 }, { details = true }) 103 | if #marks > 0 then 104 | for _, mark in ipairs(marks) do 105 | local details = mark[4] 106 | if details.virt_text and details.virt_text_pos == "eol" then 107 | return false 108 | end 109 | end 110 | end 111 | end 112 | end 113 | return true 114 | end 115 | `; 116 | nvim.lua(code); 117 | }); 118 | } 119 | } 120 | } 121 | 122 | export const config = new Config(); 123 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { events, ExtensionContext, workspace } from 'coc.nvim'; 2 | import { config } from './config'; 3 | import { lightbulb } from './lightbulb'; 4 | 5 | export async function activate(extCtx: ExtensionContext): Promise { 6 | extCtx.subscriptions.push( 7 | workspace.onDidChangeConfiguration(async (e) => { 8 | if (e.affectsConfiguration('lightbulb')) { 9 | config.setConfiguration(); 10 | await lightbulb.refresh(true); 11 | } 12 | }), 13 | events.on(['CursorHold', 'CursorHoldI'], async () => { 14 | await lightbulb.refresh(); 15 | }) 16 | ); 17 | 18 | setTimeout(async () => { 19 | await lightbulb.refresh(); 20 | }, 3000); 21 | } 22 | -------------------------------------------------------------------------------- /src/lightbulb.ts: -------------------------------------------------------------------------------- 1 | import { 2 | CancellationTokenSource, 3 | CodeActionContext, 4 | diagnosticManager, 5 | Document, 6 | languages, 7 | window, 8 | workspace, 9 | Neovim, 10 | ExtmarkOptions, 11 | } from 'coc.nvim'; 12 | 13 | import { config as cfg } from './config'; 14 | import { CodeAction, CodeActionKind } from 'vscode-languageserver-protocol'; 15 | 16 | class Lightbulb { 17 | private NS!: number; 18 | private nvim: Neovim; 19 | private tokenSource: CancellationTokenSource | undefined; 20 | 21 | constructor() { 22 | this.nvim = workspace.nvim; 23 | this.nvim.createNamespace('coc-lightbulb').then((ns) => (this.NS = ns)); 24 | } 25 | 26 | private async hasCodeActions( 27 | doc: Document, 28 | only?: CodeActionKind[] 29 | ): Promise<{ hasCodeActions: boolean; hasQuickFix: boolean }> { 30 | const none: { hasCodeActions: boolean; hasQuickFix: boolean } = { hasCodeActions: false, hasQuickFix: false }; 31 | 32 | this.tokenSource?.cancel(); 33 | this.tokenSource = new CancellationTokenSource(); 34 | const token = this.tokenSource.token; 35 | 36 | const range = await window.getSelectedRange('cursor'); 37 | 38 | if (!range) return none; 39 | 40 | const diagnostics = diagnosticManager.getDiagnosticsInRange(doc.textDocument, range); 41 | // @ts-ignore 42 | const context: CodeActionContext = { diagnostics }; 43 | 44 | if (only && only.length > 0) { 45 | context.only = only; 46 | } 47 | 48 | // @ts-ignore 49 | let codeActions: CodeAction[] = await languages.getCodeActions(doc.textDocument, range, context, token); 50 | 51 | if (!codeActions || codeActions.length == 0) return none; 52 | codeActions = codeActions.filter((o) => !o.disabled); 53 | 54 | if (codeActions.length) { 55 | return { 56 | hasCodeActions: true, 57 | hasQuickFix: codeActions.findIndex((action) => action.kind == CodeActionKind.QuickFix) >= 0, 58 | }; 59 | } 60 | return none; 61 | } 62 | 63 | private async show(doc: Document, hasQuickFix: boolean) { 64 | const { buffer } = doc; 65 | 66 | buffer.setVar('coc_lightbulb_status', hasQuickFix ? cfg.text.quickfix : cfg.text.default); 67 | 68 | if (cfg.enableVirtualText) this.showVirtualText(doc, hasQuickFix); 69 | 70 | if (cfg.enableSign) 71 | buffer.placeSign({ 72 | lnum: (await workspace.getCurrentState()).position.line + 1, 73 | name: hasQuickFix ? cfg.names.sign.quickfix : cfg.names.sign.default, 74 | group: 'CocLightbulb', 75 | priority: cfg.signPriority, 76 | }); 77 | } 78 | 79 | /* 80 | try to find the best position 81 | */ 82 | private async showVirtualText(doc: Document, hasQuickFix: boolean) { 83 | const chunks: [string, string][] = [ 84 | hasQuickFix 85 | ? [cfg.text.quickfix, cfg.names.virtualText.quickfix] 86 | : [cfg.text.default, cfg.names.virtualText.default], 87 | ]; 88 | const state = await workspace.getCurrentState(); 89 | let lnum = state.position.line; 90 | // NOTE: Sometimes switching buffer too fast will lead to wrong data 91 | // Should be coc's bug 92 | if (lnum > state.document.lineCount - 1) return; 93 | 94 | if (!cfg.nvim6) { 95 | // no more updated this api 96 | this.nvim.call('nvim_buf_set_virtual_text', [doc.bufnr, this.NS, lnum, chunks, {}], true); 97 | return; 98 | } 99 | 100 | const buffer = doc.buffer; 101 | 102 | if (cfg.virtualTextPosition !== 'auto') { 103 | buffer.setExtMark(this.NS, lnum, 0, { 104 | hl_mode: 'combine', 105 | virt_text: chunks, 106 | virt_text_pos: cfg.virtualTextPosition, 107 | priority: cfg.virtualTextPriority, 108 | }); 109 | return; 110 | } 111 | 112 | ////////////////////////////////////////////////////////////////////////// 113 | // left > right(very close and no other virtual text) > top > bottom 114 | ////////////////////////////////////////////////////////////////////////// 115 | 116 | const padding = cfg.virtualTextPadding; 117 | 118 | // place eol by default, because it's safe 119 | let col = 0; 120 | let opts: ExtmarkOptions = { virt_text_pos: 'eol' }; 121 | 122 | const line = state.document.lineAt(lnum); 123 | const curCol = state.position.character; 124 | let offset = line.firstNonWhitespaceCharacterIndex; 125 | 126 | // make sure offset <= curCol <= length 127 | if (curCol < offset) { 128 | offset = curCol; 129 | } 130 | const end = line.range.end.character; 131 | 132 | const right_top_bottom = (() => { 133 | let ret: boolean | undefined; 134 | return async () => { 135 | // cached 136 | if (ret !== undefined) return ret; 137 | // right, check by lua 138 | if (await this.nvim.call('luaeval', [`__coc_lightbulb_is_eol_suitable()`])) { 139 | col = 0; 140 | opts = { virt_text_pos: 'eol' }; 141 | ret = true; 142 | return ret; 143 | } 144 | // top 145 | if (lnum) { 146 | const previousLineEnd = doc.textDocument.lineAt(lnum - 1).range.end.character; 147 | if (previousLineEnd + padding < curCol || previousLineEnd == 0) { 148 | lnum = lnum - 1; 149 | opts = { 150 | virt_text_win_col: previousLineEnd + padding, 151 | }; 152 | ret = true; 153 | return ret; 154 | } 155 | } 156 | // bottom 157 | if (lnum < doc.lineCount - 1) { 158 | const lastLineEnd = doc.textDocument.lineAt(lnum + 1).range.end.character; 159 | if (lastLineEnd + padding < curCol || lastLineEnd == 0) { 160 | lnum = lnum + 1; 161 | opts = { 162 | virt_text_win_col: lastLineEnd + padding, 163 | }; 164 | ret = true; 165 | return ret; 166 | } 167 | } 168 | ret = false; 169 | return ret; 170 | }; 171 | })(); 172 | 173 | if (offset < padding) { 174 | // The left is not possible, there are only 3 cases 175 | await right_top_bottom(); 176 | } else { 177 | // can be left 178 | 179 | // The left side may not be the best 180 | if (curCol - offset + padding <= Math.min(30, end - curCol)) { 181 | // left is the best 182 | opts = { virt_text_pos: 'overlay' }; 183 | col = offset - padding; 184 | } else { 185 | if (!(await right_top_bottom())) { 186 | // left is not the expected, but no one is better 187 | opts = { virt_text_pos: 'overlay' }; 188 | col = offset - padding; 189 | } 190 | } 191 | } 192 | 193 | buffer.setExtMark(this.NS, lnum, col, { 194 | hl_mode: 'combine', 195 | virt_text: chunks, 196 | priority: cfg.virtualTextPriority, 197 | ...opts, 198 | }); 199 | } 200 | 201 | private async clear(doc: Document, force?: boolean) { 202 | const { buffer } = doc; 203 | buffer.setVar('coc_lightbulb_status', ''); 204 | if (force || cfg.enableVirtualText) buffer.clearNamespace(this.NS); 205 | // @ts-ignore 206 | if (force || cfg.enableSign) buffer.unplaceSign({ group: 'CocLightbulb' }); 207 | } 208 | 209 | public async refresh(forceClear?: boolean) { 210 | const doc = await workspace.document; 211 | if (!doc || !doc.attached) return; 212 | if (cfg.excludeFiletypes.includes(doc.filetype)) return; 213 | const buffer = doc.buffer; 214 | 215 | const disabled = 216 | (await buffer.getVar('coc_lightbulb_disable')) == 1 || 217 | (cfg.followDiagnostic && (await buffer.getVar('coc_diagnostic_disable')) == 1); 218 | 219 | if (disabled) { 220 | await this.clear(doc, forceClear); 221 | return; 222 | } 223 | const { hasCodeActions, hasQuickFix } = await this.hasCodeActions(doc, cfg.only); 224 | await this.clear(doc, forceClear); 225 | if (hasCodeActions) await this.show(doc, hasQuickFix); 226 | } 227 | } 228 | 229 | export const lightbulb = new Lightbulb(); 230 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "lib": ["es2017", "es2018"], 5 | "module": "commonjs", 6 | "declaration": false, 7 | "sourceMap": true, 8 | "outDir": "lib", 9 | "strict": true, 10 | "moduleResolution": "node", 11 | "noImplicitAny": false, 12 | "esModuleInterop": true 13 | }, 14 | "include": ["src"] 15 | } 16 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.16.10" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" 20 | integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.16.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.3": 27 | version "0.4.3" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 29 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^13.9.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@humanwhocodes/config-array@^0.5.0": 42 | version "0.5.0" 43 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 44 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 45 | dependencies: 46 | "@humanwhocodes/object-schema" "^1.2.0" 47 | debug "^4.1.1" 48 | minimatch "^3.0.4" 49 | 50 | "@humanwhocodes/object-schema@^1.2.0": 51 | version "1.2.1" 52 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 53 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 54 | 55 | "@nodelib/fs.scandir@2.1.5": 56 | version "2.1.5" 57 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 58 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 59 | dependencies: 60 | "@nodelib/fs.stat" "2.0.5" 61 | run-parallel "^1.1.9" 62 | 63 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 64 | version "2.0.5" 65 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 66 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 67 | 68 | "@nodelib/fs.walk@^1.2.3": 69 | version "1.2.8" 70 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 71 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 72 | dependencies: 73 | "@nodelib/fs.scandir" "2.1.5" 74 | fastq "^1.6.0" 75 | 76 | "@types/json-schema@^7.0.7": 77 | version "7.0.10" 78 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" 79 | integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== 80 | 81 | "@types/node@^17.0.13": 82 | version "17.0.21" 83 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" 84 | integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== 85 | 86 | "@typescript-eslint/eslint-plugin@^4.8.2": 87 | version "4.33.0" 88 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" 89 | integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== 90 | dependencies: 91 | "@typescript-eslint/experimental-utils" "4.33.0" 92 | "@typescript-eslint/scope-manager" "4.33.0" 93 | debug "^4.3.1" 94 | functional-red-black-tree "^1.0.1" 95 | ignore "^5.1.8" 96 | regexpp "^3.1.0" 97 | semver "^7.3.5" 98 | tsutils "^3.21.0" 99 | 100 | "@typescript-eslint/experimental-utils@4.33.0": 101 | version "4.33.0" 102 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" 103 | integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== 104 | dependencies: 105 | "@types/json-schema" "^7.0.7" 106 | "@typescript-eslint/scope-manager" "4.33.0" 107 | "@typescript-eslint/types" "4.33.0" 108 | "@typescript-eslint/typescript-estree" "4.33.0" 109 | eslint-scope "^5.1.1" 110 | eslint-utils "^3.0.0" 111 | 112 | "@typescript-eslint/parser@^4.8.2": 113 | version "4.33.0" 114 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" 115 | integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== 116 | dependencies: 117 | "@typescript-eslint/scope-manager" "4.33.0" 118 | "@typescript-eslint/types" "4.33.0" 119 | "@typescript-eslint/typescript-estree" "4.33.0" 120 | debug "^4.3.1" 121 | 122 | "@typescript-eslint/scope-manager@4.33.0": 123 | version "4.33.0" 124 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" 125 | integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== 126 | dependencies: 127 | "@typescript-eslint/types" "4.33.0" 128 | "@typescript-eslint/visitor-keys" "4.33.0" 129 | 130 | "@typescript-eslint/types@4.33.0": 131 | version "4.33.0" 132 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" 133 | integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== 134 | 135 | "@typescript-eslint/typescript-estree@4.33.0": 136 | version "4.33.0" 137 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" 138 | integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== 139 | dependencies: 140 | "@typescript-eslint/types" "4.33.0" 141 | "@typescript-eslint/visitor-keys" "4.33.0" 142 | debug "^4.3.1" 143 | globby "^11.0.3" 144 | is-glob "^4.0.1" 145 | semver "^7.3.5" 146 | tsutils "^3.21.0" 147 | 148 | "@typescript-eslint/visitor-keys@4.33.0": 149 | version "4.33.0" 150 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" 151 | integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== 152 | dependencies: 153 | "@typescript-eslint/types" "4.33.0" 154 | eslint-visitor-keys "^2.0.0" 155 | 156 | acorn-jsx@^5.3.1: 157 | version "5.3.2" 158 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 159 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 160 | 161 | acorn@^7.4.0: 162 | version "7.4.1" 163 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 164 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 165 | 166 | ajv@^6.10.0, ajv@^6.12.4: 167 | version "6.12.6" 168 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 169 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 170 | dependencies: 171 | fast-deep-equal "^3.1.1" 172 | fast-json-stable-stringify "^2.0.0" 173 | json-schema-traverse "^0.4.1" 174 | uri-js "^4.2.2" 175 | 176 | ajv@^8.0.1: 177 | version "8.10.0" 178 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" 179 | integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== 180 | dependencies: 181 | fast-deep-equal "^3.1.1" 182 | json-schema-traverse "^1.0.0" 183 | require-from-string "^2.0.2" 184 | uri-js "^4.2.2" 185 | 186 | ansi-colors@^4.1.1: 187 | version "4.1.1" 188 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 189 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 190 | 191 | ansi-regex@^5.0.1: 192 | version "5.0.1" 193 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 194 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 195 | 196 | ansi-styles@^3.2.1: 197 | version "3.2.1" 198 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 199 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 200 | dependencies: 201 | color-convert "^1.9.0" 202 | 203 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 204 | version "4.3.0" 205 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 206 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 207 | dependencies: 208 | color-convert "^2.0.1" 209 | 210 | argparse@^1.0.7: 211 | version "1.0.10" 212 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 213 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 214 | dependencies: 215 | sprintf-js "~1.0.2" 216 | 217 | array-union@^2.1.0: 218 | version "2.1.0" 219 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 220 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 221 | 222 | astral-regex@^2.0.0: 223 | version "2.0.0" 224 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 225 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 226 | 227 | balanced-match@^1.0.0: 228 | version "1.0.2" 229 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 230 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 231 | 232 | brace-expansion@^1.1.7: 233 | version "1.1.11" 234 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 235 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 236 | dependencies: 237 | balanced-match "^1.0.0" 238 | concat-map "0.0.1" 239 | 240 | braces@^3.0.1: 241 | version "3.0.2" 242 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 243 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 244 | dependencies: 245 | fill-range "^7.0.1" 246 | 247 | callsites@^3.0.0: 248 | version "3.1.0" 249 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 250 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 251 | 252 | chalk@^2.0.0: 253 | version "2.4.2" 254 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 255 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 256 | dependencies: 257 | ansi-styles "^3.2.1" 258 | escape-string-regexp "^1.0.5" 259 | supports-color "^5.3.0" 260 | 261 | chalk@^4.0.0: 262 | version "4.1.2" 263 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 264 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 265 | dependencies: 266 | ansi-styles "^4.1.0" 267 | supports-color "^7.1.0" 268 | 269 | coc.nvim@^0.0.81-next.11: 270 | version "0.0.81-next.22" 271 | resolved "https://registry.yarnpkg.com/coc.nvim/-/coc.nvim-0.0.81-next.22.tgz#f1a29aace24f64a6d5514bab52d888fce9c016cf" 272 | integrity sha512-vsIGQaqplpN0GUvvqqXKcfgrF5qn5p3S9LlYd+wGKqjfAolJFGxW6ii3HDnlKcIZasBaXvAErtYwd3VKRCK6Cg== 273 | 274 | color-convert@^1.9.0: 275 | version "1.9.3" 276 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 277 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 278 | dependencies: 279 | color-name "1.1.3" 280 | 281 | color-convert@^2.0.1: 282 | version "2.0.1" 283 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 284 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 285 | dependencies: 286 | color-name "~1.1.4" 287 | 288 | color-name@1.1.3: 289 | version "1.1.3" 290 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 291 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 292 | 293 | color-name@~1.1.4: 294 | version "1.1.4" 295 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 296 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 297 | 298 | concat-map@0.0.1: 299 | version "0.0.1" 300 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 301 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 302 | 303 | cross-spawn@^7.0.2: 304 | version "7.0.3" 305 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 306 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 307 | dependencies: 308 | path-key "^3.1.0" 309 | shebang-command "^2.0.0" 310 | which "^2.0.1" 311 | 312 | debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: 313 | version "4.3.4" 314 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 315 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 316 | dependencies: 317 | ms "2.1.2" 318 | 319 | deep-is@^0.1.3: 320 | version "0.1.4" 321 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 322 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 323 | 324 | dir-glob@^3.0.1: 325 | version "3.0.1" 326 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 327 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 328 | dependencies: 329 | path-type "^4.0.0" 330 | 331 | doctrine@^3.0.0: 332 | version "3.0.0" 333 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 334 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 335 | dependencies: 336 | esutils "^2.0.2" 337 | 338 | emoji-regex@^8.0.0: 339 | version "8.0.0" 340 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 341 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 342 | 343 | enquirer@^2.3.5: 344 | version "2.3.6" 345 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 346 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 347 | dependencies: 348 | ansi-colors "^4.1.1" 349 | 350 | esbuild@^0.8.42: 351 | version "0.8.57" 352 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926" 353 | integrity sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA== 354 | 355 | escape-string-regexp@^1.0.5: 356 | version "1.0.5" 357 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 358 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 359 | 360 | escape-string-regexp@^4.0.0: 361 | version "4.0.0" 362 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 363 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 364 | 365 | eslint-config-prettier@^8.1.0: 366 | version "8.5.0" 367 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" 368 | integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== 369 | 370 | eslint-plugin-prettier@^3.1.4: 371 | version "3.4.1" 372 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" 373 | integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== 374 | dependencies: 375 | prettier-linter-helpers "^1.0.0" 376 | 377 | eslint-scope@^5.1.1: 378 | version "5.1.1" 379 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 380 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 381 | dependencies: 382 | esrecurse "^4.3.0" 383 | estraverse "^4.1.1" 384 | 385 | eslint-utils@^2.1.0: 386 | version "2.1.0" 387 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 388 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 389 | dependencies: 390 | eslint-visitor-keys "^1.1.0" 391 | 392 | eslint-utils@^3.0.0: 393 | version "3.0.0" 394 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 395 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 396 | dependencies: 397 | eslint-visitor-keys "^2.0.0" 398 | 399 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 400 | version "1.3.0" 401 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 402 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 403 | 404 | eslint-visitor-keys@^2.0.0: 405 | version "2.1.0" 406 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 407 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 408 | 409 | eslint@^7.14.0: 410 | version "7.32.0" 411 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 412 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 413 | dependencies: 414 | "@babel/code-frame" "7.12.11" 415 | "@eslint/eslintrc" "^0.4.3" 416 | "@humanwhocodes/config-array" "^0.5.0" 417 | ajv "^6.10.0" 418 | chalk "^4.0.0" 419 | cross-spawn "^7.0.2" 420 | debug "^4.0.1" 421 | doctrine "^3.0.0" 422 | enquirer "^2.3.5" 423 | escape-string-regexp "^4.0.0" 424 | eslint-scope "^5.1.1" 425 | eslint-utils "^2.1.0" 426 | eslint-visitor-keys "^2.0.0" 427 | espree "^7.3.1" 428 | esquery "^1.4.0" 429 | esutils "^2.0.2" 430 | fast-deep-equal "^3.1.3" 431 | file-entry-cache "^6.0.1" 432 | functional-red-black-tree "^1.0.1" 433 | glob-parent "^5.1.2" 434 | globals "^13.6.0" 435 | ignore "^4.0.6" 436 | import-fresh "^3.0.0" 437 | imurmurhash "^0.1.4" 438 | is-glob "^4.0.0" 439 | js-yaml "^3.13.1" 440 | json-stable-stringify-without-jsonify "^1.0.1" 441 | levn "^0.4.1" 442 | lodash.merge "^4.6.2" 443 | minimatch "^3.0.4" 444 | natural-compare "^1.4.0" 445 | optionator "^0.9.1" 446 | progress "^2.0.0" 447 | regexpp "^3.1.0" 448 | semver "^7.2.1" 449 | strip-ansi "^6.0.0" 450 | strip-json-comments "^3.1.0" 451 | table "^6.0.9" 452 | text-table "^0.2.0" 453 | v8-compile-cache "^2.0.3" 454 | 455 | espree@^7.3.0, espree@^7.3.1: 456 | version "7.3.1" 457 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 458 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 459 | dependencies: 460 | acorn "^7.4.0" 461 | acorn-jsx "^5.3.1" 462 | eslint-visitor-keys "^1.3.0" 463 | 464 | esprima@^4.0.0: 465 | version "4.0.1" 466 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 467 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 468 | 469 | esquery@^1.4.0: 470 | version "1.4.0" 471 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 472 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 473 | dependencies: 474 | estraverse "^5.1.0" 475 | 476 | esrecurse@^4.3.0: 477 | version "4.3.0" 478 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 479 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 480 | dependencies: 481 | estraverse "^5.2.0" 482 | 483 | estraverse@^4.1.1: 484 | version "4.3.0" 485 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 486 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 487 | 488 | estraverse@^5.1.0, estraverse@^5.2.0: 489 | version "5.3.0" 490 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 491 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 492 | 493 | esutils@^2.0.2: 494 | version "2.0.3" 495 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 496 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 497 | 498 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 499 | version "3.1.3" 500 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 501 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 502 | 503 | fast-diff@^1.1.2: 504 | version "1.2.0" 505 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 506 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 507 | 508 | fast-glob@^3.2.9: 509 | version "3.2.11" 510 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 511 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 512 | dependencies: 513 | "@nodelib/fs.stat" "^2.0.2" 514 | "@nodelib/fs.walk" "^1.2.3" 515 | glob-parent "^5.1.2" 516 | merge2 "^1.3.0" 517 | micromatch "^4.0.4" 518 | 519 | fast-json-stable-stringify@^2.0.0: 520 | version "2.1.0" 521 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 522 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 523 | 524 | fast-levenshtein@^2.0.6: 525 | version "2.0.6" 526 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 527 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 528 | 529 | fastq@^1.6.0: 530 | version "1.13.0" 531 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 532 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 533 | dependencies: 534 | reusify "^1.0.4" 535 | 536 | file-entry-cache@^6.0.1: 537 | version "6.0.1" 538 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 539 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 540 | dependencies: 541 | flat-cache "^3.0.4" 542 | 543 | fill-range@^7.0.1: 544 | version "7.0.1" 545 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 546 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 547 | dependencies: 548 | to-regex-range "^5.0.1" 549 | 550 | flat-cache@^3.0.4: 551 | version "3.0.4" 552 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 553 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 554 | dependencies: 555 | flatted "^3.1.0" 556 | rimraf "^3.0.2" 557 | 558 | flatted@^3.1.0: 559 | version "3.2.5" 560 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" 561 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== 562 | 563 | fs.realpath@^1.0.0: 564 | version "1.0.0" 565 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 566 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 567 | 568 | functional-red-black-tree@^1.0.1: 569 | version "1.0.1" 570 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 571 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 572 | 573 | glob-parent@^5.1.2: 574 | version "5.1.2" 575 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 576 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 577 | dependencies: 578 | is-glob "^4.0.1" 579 | 580 | glob@^7.1.3: 581 | version "7.2.0" 582 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 583 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 584 | dependencies: 585 | fs.realpath "^1.0.0" 586 | inflight "^1.0.4" 587 | inherits "2" 588 | minimatch "^3.0.4" 589 | once "^1.3.0" 590 | path-is-absolute "^1.0.0" 591 | 592 | globals@^13.6.0, globals@^13.9.0: 593 | version "13.13.0" 594 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" 595 | integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== 596 | dependencies: 597 | type-fest "^0.20.2" 598 | 599 | globby@^11.0.3: 600 | version "11.1.0" 601 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 602 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 603 | dependencies: 604 | array-union "^2.1.0" 605 | dir-glob "^3.0.1" 606 | fast-glob "^3.2.9" 607 | ignore "^5.2.0" 608 | merge2 "^1.4.1" 609 | slash "^3.0.0" 610 | 611 | has-flag@^3.0.0: 612 | version "3.0.0" 613 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 614 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 615 | 616 | has-flag@^4.0.0: 617 | version "4.0.0" 618 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 619 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 620 | 621 | ignore@^4.0.6: 622 | version "4.0.6" 623 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 624 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 625 | 626 | ignore@^5.1.8, ignore@^5.2.0: 627 | version "5.2.0" 628 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 629 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 630 | 631 | import-fresh@^3.0.0, import-fresh@^3.2.1: 632 | version "3.3.0" 633 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 634 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 635 | dependencies: 636 | parent-module "^1.0.0" 637 | resolve-from "^4.0.0" 638 | 639 | imurmurhash@^0.1.4: 640 | version "0.1.4" 641 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 642 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 643 | 644 | inflight@^1.0.4: 645 | version "1.0.6" 646 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 647 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 648 | dependencies: 649 | once "^1.3.0" 650 | wrappy "1" 651 | 652 | inherits@2: 653 | version "2.0.4" 654 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 655 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 656 | 657 | is-extglob@^2.1.1: 658 | version "2.1.1" 659 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 660 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 661 | 662 | is-fullwidth-code-point@^3.0.0: 663 | version "3.0.0" 664 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 665 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 666 | 667 | is-glob@^4.0.0, is-glob@^4.0.1: 668 | version "4.0.3" 669 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 670 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 671 | dependencies: 672 | is-extglob "^2.1.1" 673 | 674 | is-number@^7.0.0: 675 | version "7.0.0" 676 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 677 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 678 | 679 | isexe@^2.0.0: 680 | version "2.0.0" 681 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 682 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 683 | 684 | js-tokens@^4.0.0: 685 | version "4.0.0" 686 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 687 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 688 | 689 | js-yaml@^3.13.1: 690 | version "3.14.1" 691 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 692 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 693 | dependencies: 694 | argparse "^1.0.7" 695 | esprima "^4.0.0" 696 | 697 | json-schema-traverse@^0.4.1: 698 | version "0.4.1" 699 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 700 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 701 | 702 | json-schema-traverse@^1.0.0: 703 | version "1.0.0" 704 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 705 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 706 | 707 | json-stable-stringify-without-jsonify@^1.0.1: 708 | version "1.0.1" 709 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 710 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 711 | 712 | levn@^0.4.1: 713 | version "0.4.1" 714 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 715 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 716 | dependencies: 717 | prelude-ls "^1.2.1" 718 | type-check "~0.4.0" 719 | 720 | lodash.merge@^4.6.2: 721 | version "4.6.2" 722 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 723 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 724 | 725 | lodash.truncate@^4.4.2: 726 | version "4.4.2" 727 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 728 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 729 | 730 | lru-cache@^6.0.0: 731 | version "6.0.0" 732 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 733 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 734 | dependencies: 735 | yallist "^4.0.0" 736 | 737 | merge2@^1.3.0, merge2@^1.4.1: 738 | version "1.4.1" 739 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 740 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 741 | 742 | micromatch@^4.0.4: 743 | version "4.0.4" 744 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 745 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 746 | dependencies: 747 | braces "^3.0.1" 748 | picomatch "^2.2.3" 749 | 750 | minimatch@^3.0.4: 751 | version "3.1.2" 752 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 753 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 754 | dependencies: 755 | brace-expansion "^1.1.7" 756 | 757 | ms@2.1.2: 758 | version "2.1.2" 759 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 760 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 761 | 762 | natural-compare@^1.4.0: 763 | version "1.4.0" 764 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 765 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 766 | 767 | once@^1.3.0: 768 | version "1.4.0" 769 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 770 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 771 | dependencies: 772 | wrappy "1" 773 | 774 | optionator@^0.9.1: 775 | version "0.9.1" 776 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 777 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 778 | dependencies: 779 | deep-is "^0.1.3" 780 | fast-levenshtein "^2.0.6" 781 | levn "^0.4.1" 782 | prelude-ls "^1.2.1" 783 | type-check "^0.4.0" 784 | word-wrap "^1.2.3" 785 | 786 | parent-module@^1.0.0: 787 | version "1.0.1" 788 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 789 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 790 | dependencies: 791 | callsites "^3.0.0" 792 | 793 | path-is-absolute@^1.0.0: 794 | version "1.0.1" 795 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 796 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 797 | 798 | path-key@^3.1.0: 799 | version "3.1.1" 800 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 801 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 802 | 803 | path-type@^4.0.0: 804 | version "4.0.0" 805 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 806 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 807 | 808 | picomatch@^2.2.3: 809 | version "2.3.1" 810 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 811 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 812 | 813 | prelude-ls@^1.2.1: 814 | version "1.2.1" 815 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 816 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 817 | 818 | prettier-linter-helpers@^1.0.0: 819 | version "1.0.0" 820 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 821 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 822 | dependencies: 823 | fast-diff "^1.1.2" 824 | 825 | prettier@^2.2.0: 826 | version "2.6.0" 827 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4" 828 | integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A== 829 | 830 | progress@^2.0.0: 831 | version "2.0.3" 832 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 833 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 834 | 835 | punycode@^2.1.0: 836 | version "2.1.1" 837 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 838 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 839 | 840 | queue-microtask@^1.2.2: 841 | version "1.2.3" 842 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 843 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 844 | 845 | regexpp@^3.1.0: 846 | version "3.2.0" 847 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 848 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 849 | 850 | require-from-string@^2.0.2: 851 | version "2.0.2" 852 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 853 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 854 | 855 | resolve-from@^4.0.0: 856 | version "4.0.0" 857 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 858 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 859 | 860 | reusify@^1.0.4: 861 | version "1.0.4" 862 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 863 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 864 | 865 | rimraf@^3.0.2: 866 | version "3.0.2" 867 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 868 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 869 | dependencies: 870 | glob "^7.1.3" 871 | 872 | run-parallel@^1.1.9: 873 | version "1.2.0" 874 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 875 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 876 | dependencies: 877 | queue-microtask "^1.2.2" 878 | 879 | semver@^7.2.1, semver@^7.3.5: 880 | version "7.3.5" 881 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 882 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 883 | dependencies: 884 | lru-cache "^6.0.0" 885 | 886 | shebang-command@^2.0.0: 887 | version "2.0.0" 888 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 889 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 890 | dependencies: 891 | shebang-regex "^3.0.0" 892 | 893 | shebang-regex@^3.0.0: 894 | version "3.0.0" 895 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 896 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 897 | 898 | slash@^3.0.0: 899 | version "3.0.0" 900 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 901 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 902 | 903 | slice-ansi@^4.0.0: 904 | version "4.0.0" 905 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 906 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 907 | dependencies: 908 | ansi-styles "^4.0.0" 909 | astral-regex "^2.0.0" 910 | is-fullwidth-code-point "^3.0.0" 911 | 912 | sprintf-js@~1.0.2: 913 | version "1.0.3" 914 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 915 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 916 | 917 | string-width@^4.2.3: 918 | version "4.2.3" 919 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 920 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 921 | dependencies: 922 | emoji-regex "^8.0.0" 923 | is-fullwidth-code-point "^3.0.0" 924 | strip-ansi "^6.0.1" 925 | 926 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 927 | version "6.0.1" 928 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 929 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 930 | dependencies: 931 | ansi-regex "^5.0.1" 932 | 933 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 934 | version "3.1.1" 935 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 936 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 937 | 938 | supports-color@^5.3.0: 939 | version "5.5.0" 940 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 941 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 942 | dependencies: 943 | has-flag "^3.0.0" 944 | 945 | supports-color@^7.1.0: 946 | version "7.2.0" 947 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 948 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 949 | dependencies: 950 | has-flag "^4.0.0" 951 | 952 | table@^6.0.9: 953 | version "6.8.0" 954 | resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" 955 | integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== 956 | dependencies: 957 | ajv "^8.0.1" 958 | lodash.truncate "^4.4.2" 959 | slice-ansi "^4.0.0" 960 | string-width "^4.2.3" 961 | strip-ansi "^6.0.1" 962 | 963 | text-table@^0.2.0: 964 | version "0.2.0" 965 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 966 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 967 | 968 | to-regex-range@^5.0.1: 969 | version "5.0.1" 970 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 971 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 972 | dependencies: 973 | is-number "^7.0.0" 974 | 975 | tslib@^1.8.1: 976 | version "1.14.1" 977 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 978 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 979 | 980 | tsutils@^3.21.0: 981 | version "3.21.0" 982 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 983 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 984 | dependencies: 985 | tslib "^1.8.1" 986 | 987 | type-check@^0.4.0, type-check@~0.4.0: 988 | version "0.4.0" 989 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 990 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 991 | dependencies: 992 | prelude-ls "^1.2.1" 993 | 994 | type-fest@^0.20.2: 995 | version "0.20.2" 996 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 997 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 998 | 999 | typescript@^4.1.2: 1000 | version "4.6.2" 1001 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" 1002 | integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== 1003 | 1004 | uri-js@^4.2.2: 1005 | version "4.4.1" 1006 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1007 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1008 | dependencies: 1009 | punycode "^2.1.0" 1010 | 1011 | v8-compile-cache@^2.0.3: 1012 | version "2.3.0" 1013 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1014 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1015 | 1016 | vscode-jsonrpc@6.0.0: 1017 | version "6.0.0" 1018 | resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e" 1019 | integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg== 1020 | 1021 | vscode-languageserver-protocol@^3.16.0: 1022 | version "3.16.0" 1023 | resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821" 1024 | integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A== 1025 | dependencies: 1026 | vscode-jsonrpc "6.0.0" 1027 | vscode-languageserver-types "3.16.0" 1028 | 1029 | vscode-languageserver-types@3.16.0: 1030 | version "3.16.0" 1031 | resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" 1032 | integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== 1033 | 1034 | which@^2.0.1: 1035 | version "2.0.2" 1036 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1037 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1038 | dependencies: 1039 | isexe "^2.0.0" 1040 | 1041 | word-wrap@^1.2.3: 1042 | version "1.2.3" 1043 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1044 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1045 | 1046 | wrappy@1: 1047 | version "1.0.2" 1048 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1049 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1050 | 1051 | yallist@^4.0.0: 1052 | version "4.0.0" 1053 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1054 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1055 | --------------------------------------------------------------------------------