├── .eslintrc.js ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── esbuild.js ├── package.json ├── src ├── action.ts ├── index.ts └── lehreEngine.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 | 3 | ### https://raw.github.com/github/gitignore/218a941be92679ce67d0484547e3e142b2f5f6f0/Node.gitignore 4 | 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # Diagnostic reports (https://nodejs.org/api/report.html) 14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | *.lcov 28 | 29 | # nyc test coverage 30 | .nyc_output 31 | 32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 33 | .grunt 34 | 35 | # Bower dependency directory (https://bower.io/) 36 | bower_components 37 | 38 | # node-waf configuration 39 | .lock-wscript 40 | 41 | # Compiled binary addons (https://nodejs.org/api/addons.html) 42 | build/Release 43 | 44 | # Dependency directories 45 | node_modules/ 46 | jspm_packages/ 47 | 48 | # Snowpack dependency directory (https://snowpack.dev/) 49 | web_modules/ 50 | 51 | # TypeScript cache 52 | *.tsbuildinfo 53 | 54 | # Optional npm cache directory 55 | .npm 56 | 57 | # Optional eslint cache 58 | .eslintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variables file 76 | .env 77 | .env.test 78 | 79 | # parcel-bundler cache (https://parceljs.org/) 80 | .cache 81 | .parcel-cache 82 | 83 | # Next.js build output 84 | .next 85 | out 86 | 87 | # Nuxt.js build / generate output 88 | .nuxt 89 | dist 90 | 91 | # Gatsby files 92 | .cache/ 93 | # Comment in the public line in if your project uses Gatsby and not Next.js 94 | # https://nextjs.org/blog/next-9-1#public-directory-support 95 | # public 96 | 97 | # vuepress build output 98 | .vuepress/dist 99 | 100 | # Serverless directories 101 | .serverless/ 102 | 103 | # FuseBox cache 104 | .fusebox/ 105 | 106 | # DynamoDB Local files 107 | .dynamodb/ 108 | 109 | # TernJS port file 110 | .tern-port 111 | 112 | # Stores VSCode versions used for testing VSCode extensions 113 | .vscode-test 114 | 115 | # yarn v2 116 | .yarn/cache 117 | .yarn/unplugged 118 | .yarn/build-state.yml 119 | .yarn/install-state.gz 120 | .pnp.* 121 | 122 | 123 | -------------------------------------------------------------------------------- /.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 yaegassy 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 | # [Experimental] coc-jsdoc 2 | 3 | [lehre](https://www.npmjs.com/package/lehre) (jsdoc/esdoc/tsdoc document block generator) extension for [coc.nvim](https://github.com/neoclide/coc.nvim) 4 | 5 | coc-jsdoc-demo 6 | 7 | ## [WIP]TODO? 8 | 9 | - For "line" and "range" of "Code Actions", automatically detect and process the range of the corresponding symbol block 10 | - There is a pattern of broken indentation in lehre 11 | 12 | ## Install 13 | 14 | **CocInstall**: 15 | 16 | > TODO 17 | 18 | **vim-plug**: 19 | 20 | ```vim 21 | Plug 'yaegassy/coc-jsdoc', {'do': 'yarn install --frozen-lockfile'} 22 | ``` 23 | 24 | ## Note 25 | 26 | Quickly generate document block for typescript/javascript. 27 | 28 | ## Configuration options 29 | 30 | - `jsdoc.enable`: Enable coc-jsdoc extension, default: `true` 31 | - `jsdoc.lehrePath`: (OPTIONAL) The path to the lehre tool (Absolute path), default: `""` 32 | - `jsdoc.formatter`: Document block formatter (--formatter), valid options `["jsdoc", "esdoc", "tsdoc"]`, default: `"jsdoc"` 33 | - `jsdoc.enableFileAction`: Enable file-level code action, default: `false` 34 | 35 | ## Code Actions 36 | 37 | - `Add document block for "Line" by jsdoc` 38 | - `Add document block for "Range" by jsdoc` 39 | - `Add document block for "File" by jsdoc` 40 | - File-level code actions are disabled (false) by default. 41 | 42 | ## Commands 43 | 44 | - `jsdoc.run`: Run lehre for file 45 | 46 | ## Similar plugins 47 | 48 | - [heavenshell/vim-jsdoc](https://github.com/heavenshell/vim-jsdoc) 49 | - This is a vim plugin by the author of lehre. 50 | 51 | ## Thanks 52 | 53 | - [heavenshell/ts-lehre](https://github.com/heavenshell/ts-lehre) | [lehre](https://www.npmjs.com/package/lehre) 54 | 55 | ## License 56 | 57 | MIT 58 | 59 | --- 60 | 61 | > This extension is built with [create-coc-extension](https://github.com/fannheyward/create-coc-extension) 62 | -------------------------------------------------------------------------------- /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-jsdoc", 3 | "version": "0.1.0", 4 | "description": "lehre (jsdoc/esdoc/tsdoc document block generator) extension for coc.nvim", 5 | "author": "yaegassy ", 6 | "license": "MIT", 7 | "main": "lib/index.js", 8 | "keywords": [ 9 | "coc.nvim", 10 | "typescript", 11 | "javascript", 12 | "jsdoc", 13 | "esdoc", 14 | "tsdoc", 15 | "vim", 16 | "neovim" 17 | ], 18 | "engines": { 19 | "coc": "^0.0.80" 20 | }, 21 | "scripts": { 22 | "lint": "eslint src --ext ts", 23 | "clean": "rimraf lib", 24 | "watch": "node esbuild.js --watch", 25 | "build": "node esbuild.js", 26 | "prepare": "node esbuild.js" 27 | }, 28 | "prettier": { 29 | "singleQuote": true, 30 | "printWidth": 120, 31 | "semi": true 32 | }, 33 | "devDependencies": { 34 | "@types/node": "^14.14.22", 35 | "@types/tmp": "^0.2.0", 36 | "@typescript-eslint/eslint-plugin": "^4.8.2", 37 | "@typescript-eslint/parser": "^4.8.2", 38 | "coc.nvim": "^0.0.80", 39 | "esbuild": "^0.8.42", 40 | "eslint": "^7.14.0", 41 | "eslint-config-prettier": "^8.1.0", 42 | "eslint-plugin-prettier": "^3.1.4", 43 | "prettier": "^2.2.0", 44 | "rimraf": "^3.0.2", 45 | "typescript": "^4.1.2", 46 | "tmp": "^0.1.0" 47 | }, 48 | "activationEvents": [ 49 | "onLanguage:javascript", 50 | "onLanguage:javascriptreact", 51 | "onLanguage:javascript.jsx", 52 | "onLanguage:typescript", 53 | "onLanguage:typescript.tsx", 54 | "onLanguage:typescript.jsx", 55 | "onLanguage:typescriptreact" 56 | ], 57 | "contributes": { 58 | "configuration": { 59 | "type": "object", 60 | "title": "coc-jsdoc configuration", 61 | "properties": { 62 | "jsdoc.enable": { 63 | "type": "boolean", 64 | "default": true, 65 | "description": "Enable coc-jsdoc extension" 66 | }, 67 | "jsdoc.lehrePath": { 68 | "type": "string", 69 | "default": "", 70 | "description": "The path to the lehre tool (Absolute path)" 71 | }, 72 | "jsdoc.formatter": { 73 | "type": "string", 74 | "default": "jsdoc", 75 | "enum": [ 76 | "jsdoc", 77 | "esdoc", 78 | "tsdoc" 79 | ], 80 | "description": "Document block formatter. jsdoc, esdoc or tsdoc" 81 | }, 82 | "jsdoc.enableFileAction": { 83 | "type": "boolean", 84 | "default": false, 85 | "description": "Enable file-level code action" 86 | } 87 | } 88 | }, 89 | "commands": [ 90 | { 91 | "command": "jsdoc.run", 92 | "title": "Run lehre for file" 93 | } 94 | ] 95 | }, 96 | "dependencies": { 97 | "lehre": "^1.3.5" 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /src/action.ts: -------------------------------------------------------------------------------- 1 | import { TextDocument, CodeAction, CodeActionContext, CodeActionProvider, Range, workspace, Document } from 'coc.nvim'; 2 | 3 | export class JsdocCodeActionProvider implements CodeActionProvider { 4 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 5 | public async provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext) { 6 | const extensionConfig = workspace.getConfiguration('jsdoc'); 7 | const isEnableFileAction = extensionConfig.get('enableFileAction', false); 8 | 9 | let isMethod: boolean; 10 | 11 | const doc = workspace.getDocument(document.uri); 12 | 13 | const codeActions: CodeAction[] = []; 14 | 15 | /** Line */ 16 | // TODO: Only add actions if the "range.start.line" can be handled by "lehre" 17 | if (range.start.line === range.end.line && range.start.character === 0) { 18 | const fullTextLine = doc.getLines().length; 19 | let endBlockLine = range.end.line; 20 | 21 | isMethod = this.checkMethodStatement(doc, range); 22 | 23 | for (let i = range.start.line; i < fullTextLine; i++) { 24 | if (doc.getline(i).match(/\).*{$/) || doc.getline(i).match(/.*{.*}$/)) { 25 | endBlockLine = i + 1; 26 | break; 27 | } 28 | } 29 | 30 | const resolveRange = Range.create( 31 | { character: range.start.character, line: range.start.line }, 32 | { character: range.end.character, line: endBlockLine } 33 | ); 34 | 35 | const title = `Add document block for "Line" by jsdoc`; 36 | const command = { 37 | title: '', 38 | command: 'jsdoc.runAction', 39 | arguments: [document, resolveRange, isMethod], 40 | }; 41 | 42 | const action: CodeAction = { 43 | title, 44 | command, 45 | }; 46 | 47 | codeActions.push(action); 48 | } 49 | 50 | /** Range */ 51 | // TODO: Only add actions if the "range.start.line" can be handled by "lehre" 52 | if (range.start.line < range.end.line && !this.wholeRange(doc, range)) { 53 | const fullTextLine = doc.getLines().length; 54 | let endBlockLine = range.end.line; 55 | 56 | isMethod = this.checkMethodStatement(doc, range); 57 | 58 | for (let i = range.start.line; i < fullTextLine; i++) { 59 | if (doc.getline(i).match(/\).*{$/) || doc.getline(i).match(/.*{.*}$/)) { 60 | endBlockLine = i + 1; 61 | break; 62 | } 63 | } 64 | 65 | const resolveRange = Range.create( 66 | { character: range.start.character, line: range.start.line }, 67 | { character: range.end.character, line: endBlockLine } 68 | ); 69 | 70 | const title = `Add document block for "Range" by jsdoc`; 71 | const command = { 72 | title: '', 73 | command: 'jsdoc.runAction', 74 | arguments: [document, resolveRange, isMethod], 75 | }; 76 | 77 | const action: CodeAction = { 78 | title, 79 | command, 80 | }; 81 | 82 | codeActions.push(action); 83 | } 84 | 85 | /** Whole (File) */ 86 | if (this.wholeRange(doc, range) && isEnableFileAction) { 87 | const title = `Add document block for "File" by jsdoc`; 88 | const command = { 89 | title: '', 90 | command: 'jsdoc.runAction', 91 | arguments: [document, range], 92 | }; 93 | 94 | const action: CodeAction = { 95 | title, 96 | command, 97 | }; 98 | 99 | codeActions.push(action); 100 | } 101 | 102 | return codeActions; 103 | } 104 | 105 | private wholeRange(doc: Document, range: Range): boolean { 106 | const whole = Range.create(0, 0, doc.lineCount, 0); 107 | return ( 108 | whole.start.line === range.start.line && 109 | whole.start.character === range.start.character && 110 | whole.end.line === range.end.line && 111 | whole.end.character === whole.end.character 112 | ); 113 | } 114 | 115 | // TODO: This is currently a temporary decision process. Will be enhanced in the future. 116 | private checkMethodStatement(doc: Document, range: Range): boolean { 117 | // main symbol 118 | if (doc.getline(range.start.line).match(/^.*\s*(function|class|type|interface)\s*.*$/)) { 119 | return false; 120 | } 121 | 122 | // es6 function 123 | if (doc.getline(range.start.line).match(/^.*\s*=\s*\(.*\).*{$/)) { 124 | return false; 125 | } 126 | 127 | // methods 128 | if (doc.getline(range.start.line).match(/^.*\s*[a-zA-Z0-9_$]+\(.*\).*$/)) { 129 | return true; 130 | } 131 | 132 | return false; 133 | } 134 | } 135 | 136 | export default JsdocCodeActionProvider; 137 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { commands, ExtensionContext, window, workspace, languages, TextEdit, Range, TextDocument } from 'coc.nvim'; 2 | 3 | import { doFormat, fullDocumentRange } from './lehreEngine'; 4 | import JsdocCodeActionProvider from './action'; 5 | 6 | export async function activate(context: ExtensionContext): Promise { 7 | const extensionConfig = workspace.getConfiguration('jsdoc'); 8 | const isEnable = extensionConfig.get('enable', true); 9 | if (!isEnable) return; 10 | 11 | const outputChannel = window.createOutputChannel('jsdoc'); 12 | 13 | let binPath = extensionConfig.get('lehrePath', ''); 14 | if (!binPath) { 15 | binPath = context.asAbsolutePath('node_modules/lehre/bin/lehre'); 16 | } 17 | 18 | context.subscriptions.push( 19 | commands.registerCommand('jsdoc.runFile', async () => { 20 | const doc = await workspace.document; 21 | 22 | const code = await doFormat(context, outputChannel, doc.textDocument, undefined); 23 | const edits = [TextEdit.replace(fullDocumentRange(doc.textDocument), code)]; 24 | if (edits) { 25 | await doc.applyEdits(edits); 26 | } 27 | }) 28 | ); 29 | 30 | context.subscriptions.push( 31 | commands.registerCommand( 32 | 'jsdoc.runAction', 33 | async (document: TextDocument, range?: Range, isMethod?: boolean) => { 34 | const doc = workspace.getDocument(document.uri); 35 | 36 | let edits: TextEdit[]; 37 | 38 | const code = await doFormat(context, outputChannel, document, range, isMethod); 39 | if (!range) { 40 | range = fullDocumentRange(document); 41 | edits = [TextEdit.replace(range, code)]; 42 | if (edits) { 43 | return await doc.applyEdits(edits); 44 | } 45 | } 46 | 47 | // If there are no changes to the text, early return 48 | if (document.getText() === code) { 49 | return; 50 | } 51 | 52 | edits = [TextEdit.replace(range, code)]; 53 | if (edits) { 54 | return await doc.applyEdits(edits); 55 | } 56 | }, 57 | null, 58 | true 59 | ) 60 | ); 61 | 62 | const languageSelector = [ 63 | { language: 'javascript', scheme: 'file' }, 64 | { language: 'javascriptreact', scheme: 'file' }, 65 | { language: 'javascript.jsx', scheme: 'file' }, 66 | { language: 'typescript', scheme: 'file' }, 67 | { language: 'typescript.tsx', scheme: 'file' }, 68 | { language: 'typescript.jsx', scheme: 'file' }, 69 | { language: 'typescriptreact', scheme: 'file' }, 70 | ]; 71 | 72 | const actionProvider = new JsdocCodeActionProvider(); 73 | context.subscriptions.push(languages.registerCodeActionProvider(languageSelector, actionProvider, 'jsdoc')); 74 | } 75 | -------------------------------------------------------------------------------- /src/lehreEngine.ts: -------------------------------------------------------------------------------- 1 | import { Range, TextDocument, Uri, window, workspace, ExtensionContext, OutputChannel } from 'coc.nvim'; 2 | 3 | import cp from 'child_process'; 4 | import fs from 'fs'; 5 | import path from 'path'; 6 | import tmp from 'tmp'; 7 | 8 | export async function doFormat( 9 | context: ExtensionContext, 10 | outputChannel: OutputChannel, 11 | document: TextDocument, 12 | range?: Range, 13 | isMethod?: boolean 14 | ): Promise { 15 | if ( 16 | document.languageId !== 'javascript' && 17 | document.languageId !== 'javascriptreact' && 18 | document.languageId !== 'javascript.jsx' && 19 | document.languageId !== 'typescript' && 20 | document.languageId !== 'typescript.tsx' && 21 | document.languageId !== 'typescript.jsx' && 22 | document.languageId !== 'typescriptreact' 23 | ) { 24 | throw 'lehre cannot run, not a support filetype'; 25 | } 26 | 27 | const fileName = Uri.parse(document.uri).fsPath; 28 | let text = document.getText(range); 29 | 30 | let indentSpaceString: string; 31 | if (isMethod) { 32 | const curDocLength = text.split('\n')[0].length; 33 | const trimStartCurDocLength = text.split('\n')[0].trimStart().length; 34 | const indentLength = curDocLength - trimStartCurDocLength; 35 | indentSpaceString = ' '.repeat(indentLength); 36 | text = indentSpaceString + 'class ForJsDocDummyClass { ' + text; 37 | } 38 | 39 | const extensionConfig = workspace.getConfiguration('jsdoc'); 40 | const formatterOption = extensionConfig.get('formatter', 'jsdoc'); 41 | 42 | let binPath = extensionConfig.get('lehrePath', ''); 43 | if (!binPath) { 44 | if (fs.existsSync(context.asAbsolutePath('node_modules/lehre/bin/lehre'))) { 45 | binPath = context.asAbsolutePath('node_modules/lehre/bin/lehre'); 46 | } else { 47 | window.showErrorMessage('Unable to find the lehre.'); 48 | return text; 49 | } 50 | } else { 51 | if (!fs.existsSync(binPath)) { 52 | window.showErrorMessage('Unable to find the lehre (user setting).'); 53 | return text; 54 | } 55 | } 56 | 57 | const args: string[] = []; 58 | const opts = { cwd: path.dirname(fileName) }; 59 | 60 | args.push('--write'); 61 | args.push('--formatter', formatterOption); 62 | 63 | const tmpFile = tmp.fileSync(); 64 | // MEMO: file extension is required 65 | tmpFile.name = tmpFile.name + path.basename(fileName); 66 | fs.writeFileSync(tmpFile.name, text); 67 | 68 | // ---- Output the command to be executed to channel log. ---- 69 | outputChannel.appendLine(`${'#'.repeat(10)} jsdoc exec\n`); 70 | outputChannel.appendLine(`Run: ${binPath} ${args.join(' ')} -t ${tmpFile.name}`); 71 | outputChannel.appendLine(`binPath: ${binPath}`); 72 | outputChannel.appendLine(`args: ${args.join(' ')}`); 73 | outputChannel.appendLine(`tmpFile: ${tmpFile.name}`); 74 | 75 | return new Promise(function (resolve) { 76 | cp.execFile(binPath, [...args, '-t', tmpFile.name], opts, function (err) { 77 | if (err) { 78 | tmpFile.removeCallback(); 79 | 80 | if (err.code === 'ENOENT') { 81 | window.showErrorMessage('Unable to find the lehre tool.'); 82 | throw err; 83 | } 84 | 85 | window.showErrorMessage('There was an error while running lehre.'); 86 | throw err; 87 | } 88 | 89 | const text = fs.readFileSync(tmpFile.name, 'utf-8'); 90 | 91 | tmpFile.removeCallback(); 92 | 93 | if (isMethod) { 94 | const wellFormedText = removeDummyClassRelatedText(text, indentSpaceString); 95 | resolve(wellFormedText); 96 | } 97 | 98 | resolve(text); 99 | }); 100 | }); 101 | } 102 | 103 | export function fullDocumentRange(document: TextDocument): Range { 104 | const lastLineId = document.lineCount - 1; 105 | const doc = workspace.getDocument(document.uri); 106 | 107 | return Range.create({ character: 0, line: 0 }, { character: doc.getline(lastLineId).length, line: lastLineId }); 108 | } 109 | 110 | function removeDummyClassRelatedText(text: string, indentSpaceString: string): string { 111 | text = text.replace(/\s*\/\*\*\n\s*\*\s*ForJsDocDummyClass.\n\s*\*\/\n/, ''); 112 | text = text.replace(indentSpaceString + 'class ForJsDocDummyClass { ', ''); 113 | return text; 114 | } 115 | -------------------------------------------------------------------------------- /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.10.4", "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.13.10" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" 20 | integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@babel/parser@7.11.5": 27 | version "7.11.5" 28 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" 29 | integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== 30 | 31 | "@babel/types@7.11.5": 32 | version "7.11.5" 33 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" 34 | integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== 35 | dependencies: 36 | "@babel/helper-validator-identifier" "^7.10.4" 37 | lodash "^4.17.19" 38 | to-fast-properties "^2.0.0" 39 | 40 | "@eslint/eslintrc@^0.4.0": 41 | version "0.4.0" 42 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" 43 | integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== 44 | dependencies: 45 | ajv "^6.12.4" 46 | debug "^4.1.1" 47 | espree "^7.3.0" 48 | globals "^12.1.0" 49 | ignore "^4.0.6" 50 | import-fresh "^3.2.1" 51 | js-yaml "^3.13.1" 52 | minimatch "^3.0.4" 53 | strip-json-comments "^3.1.1" 54 | 55 | "@nodelib/fs.scandir@2.1.4": 56 | version "2.1.4" 57 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" 58 | integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== 59 | dependencies: 60 | "@nodelib/fs.stat" "2.0.4" 61 | run-parallel "^1.1.9" 62 | 63 | "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": 64 | version "2.0.4" 65 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" 66 | integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== 67 | 68 | "@nodelib/fs.walk@^1.2.3": 69 | version "1.2.6" 70 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" 71 | integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== 72 | dependencies: 73 | "@nodelib/fs.scandir" "2.1.4" 74 | fastq "^1.6.0" 75 | 76 | "@types/json-schema@^7.0.3": 77 | version "7.0.7" 78 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" 79 | integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== 80 | 81 | "@types/node@^14.14.22": 82 | version "14.14.37" 83 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" 84 | integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== 85 | 86 | "@types/tmp@^0.2.0": 87 | version "0.2.0" 88 | resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.0.tgz#e3f52b4d7397eaa9193592ef3fdd44dc0af4298c" 89 | integrity sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ== 90 | 91 | "@typescript-eslint/eslint-plugin@^4.8.2": 92 | version "4.21.0" 93 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.21.0.tgz#3fce2bfa76d95c00ac4f33dff369cb593aab8878" 94 | integrity sha512-FPUyCPKZbVGexmbCFI3EQHzCZdy2/5f+jv6k2EDljGdXSRc0cKvbndd2nHZkSLqCNOPk0jB6lGzwIkglXcYVsQ== 95 | dependencies: 96 | "@typescript-eslint/experimental-utils" "4.21.0" 97 | "@typescript-eslint/scope-manager" "4.21.0" 98 | debug "^4.1.1" 99 | functional-red-black-tree "^1.0.1" 100 | lodash "^4.17.15" 101 | regexpp "^3.0.0" 102 | semver "^7.3.2" 103 | tsutils "^3.17.1" 104 | 105 | "@typescript-eslint/experimental-utils@4.21.0": 106 | version "4.21.0" 107 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.21.0.tgz#0b0bb7c15d379140a660c003bdbafa71ae9134b6" 108 | integrity sha512-cEbgosW/tUFvKmkg3cU7LBoZhvUs+ZPVM9alb25XvR0dal4qHL3SiUqHNrzoWSxaXA9gsifrYrS1xdDV6w/gIA== 109 | dependencies: 110 | "@types/json-schema" "^7.0.3" 111 | "@typescript-eslint/scope-manager" "4.21.0" 112 | "@typescript-eslint/types" "4.21.0" 113 | "@typescript-eslint/typescript-estree" "4.21.0" 114 | eslint-scope "^5.0.0" 115 | eslint-utils "^2.0.0" 116 | 117 | "@typescript-eslint/parser@^4.8.2": 118 | version "4.21.0" 119 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.21.0.tgz#a227fc2af4001668c3e3f7415d4feee5093894c1" 120 | integrity sha512-eyNf7QmE5O/l1smaQgN0Lj2M/1jOuNg2NrBm1dqqQN0sVngTLyw8tdCbih96ixlhbF1oINoN8fDCyEH9SjLeIA== 121 | dependencies: 122 | "@typescript-eslint/scope-manager" "4.21.0" 123 | "@typescript-eslint/types" "4.21.0" 124 | "@typescript-eslint/typescript-estree" "4.21.0" 125 | debug "^4.1.1" 126 | 127 | "@typescript-eslint/scope-manager@4.21.0": 128 | version "4.21.0" 129 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.21.0.tgz#c81b661c4b8af1ec0c010d847a8f9ab76ab95b4d" 130 | integrity sha512-kfOjF0w1Ix7+a5T1knOw00f7uAP9Gx44+OEsNQi0PvvTPLYeXJlsCJ4tYnDj5PQEYfpcgOH5yBlw7K+UEI9Agw== 131 | dependencies: 132 | "@typescript-eslint/types" "4.21.0" 133 | "@typescript-eslint/visitor-keys" "4.21.0" 134 | 135 | "@typescript-eslint/types@4.21.0": 136 | version "4.21.0" 137 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.21.0.tgz#abdc3463bda5d31156984fa5bc316789c960edef" 138 | integrity sha512-+OQaupjGVVc8iXbt6M1oZMwyKQNehAfLYJJ3SdvnofK2qcjfor9pEM62rVjBknhowTkh+2HF+/KdRAc/wGBN2w== 139 | 140 | "@typescript-eslint/typescript-estree@4.21.0": 141 | version "4.21.0" 142 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.21.0.tgz#3817bd91857beeaeff90f69f1f112ea58d350b0a" 143 | integrity sha512-ZD3M7yLaVGVYLw4nkkoGKumb7Rog7QID9YOWobFDMQKNl+vPxqVIW/uDk+MDeGc+OHcoG2nJ2HphwiPNajKw3w== 144 | dependencies: 145 | "@typescript-eslint/types" "4.21.0" 146 | "@typescript-eslint/visitor-keys" "4.21.0" 147 | debug "^4.1.1" 148 | globby "^11.0.1" 149 | is-glob "^4.0.1" 150 | semver "^7.3.2" 151 | tsutils "^3.17.1" 152 | 153 | "@typescript-eslint/visitor-keys@4.21.0": 154 | version "4.21.0" 155 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.21.0.tgz#990a9acdc124331f5863c2cf21c88ba65233cd8d" 156 | integrity sha512-dH22dROWGi5Z6p+Igc8bLVLmwy7vEe8r+8c+raPQU0LxgogPUrRAtRGtvBWmlr9waTu3n+QLt/qrS/hWzk1x5w== 157 | dependencies: 158 | "@typescript-eslint/types" "4.21.0" 159 | eslint-visitor-keys "^2.0.0" 160 | 161 | acorn-jsx@^5.3.1: 162 | version "5.3.1" 163 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 164 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 165 | 166 | acorn@^7.4.0: 167 | version "7.4.1" 168 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 169 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 170 | 171 | ajv@^6.10.0, ajv@^6.12.4: 172 | version "6.12.6" 173 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 174 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 175 | dependencies: 176 | fast-deep-equal "^3.1.1" 177 | fast-json-stable-stringify "^2.0.0" 178 | json-schema-traverse "^0.4.1" 179 | uri-js "^4.2.2" 180 | 181 | ajv@^8.0.1: 182 | version "8.0.5" 183 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.0.5.tgz#f07d6fdeffcdbb80485570ce3f1bc845fcc812b9" 184 | integrity sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg== 185 | dependencies: 186 | fast-deep-equal "^3.1.1" 187 | json-schema-traverse "^1.0.0" 188 | require-from-string "^2.0.2" 189 | uri-js "^4.2.2" 190 | 191 | ansi-colors@^4.1.1: 192 | version "4.1.1" 193 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 194 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 195 | 196 | ansi-regex@^5.0.0: 197 | version "5.0.0" 198 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 199 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 200 | 201 | ansi-styles@^3.2.1: 202 | version "3.2.1" 203 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 204 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 205 | dependencies: 206 | color-convert "^1.9.0" 207 | 208 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 209 | version "4.3.0" 210 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 211 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 212 | dependencies: 213 | color-convert "^2.0.1" 214 | 215 | argparse@^1.0.7: 216 | version "1.0.10" 217 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 218 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 219 | dependencies: 220 | sprintf-js "~1.0.2" 221 | 222 | array-union@^2.1.0: 223 | version "2.1.0" 224 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 225 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 226 | 227 | astral-regex@^2.0.0: 228 | version "2.0.0" 229 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 230 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 231 | 232 | balanced-match@^1.0.0: 233 | version "1.0.2" 234 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 235 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 236 | 237 | brace-expansion@^1.1.7: 238 | version "1.1.11" 239 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 240 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 241 | dependencies: 242 | balanced-match "^1.0.0" 243 | concat-map "0.0.1" 244 | 245 | braces@^3.0.1: 246 | version "3.0.2" 247 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 248 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 249 | dependencies: 250 | fill-range "^7.0.1" 251 | 252 | call-bind@^1.0.0: 253 | version "1.0.2" 254 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 255 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 256 | dependencies: 257 | function-bind "^1.1.1" 258 | get-intrinsic "^1.0.2" 259 | 260 | callsites@^3.0.0: 261 | version "3.1.0" 262 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 263 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 264 | 265 | chalk@^2.0.0: 266 | version "2.4.2" 267 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 268 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 269 | dependencies: 270 | ansi-styles "^3.2.1" 271 | escape-string-regexp "^1.0.5" 272 | supports-color "^5.3.0" 273 | 274 | chalk@^4.0.0: 275 | version "4.1.0" 276 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 277 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 278 | dependencies: 279 | ansi-styles "^4.1.0" 280 | supports-color "^7.1.0" 281 | 282 | coc.nvim@^0.0.80: 283 | version "0.0.80" 284 | resolved "https://registry.yarnpkg.com/coc.nvim/-/coc.nvim-0.0.80.tgz#785145c382660db03f517f9b497900d95cbd0e4f" 285 | integrity sha512-/3vTcnofoAYMrdENrlQmADTzfXX4+PZ0fiM10a39UA37dTR2dpIGi9O469kcIksuunLjToqWG8S45AGx/9wV7g== 286 | 287 | color-convert@^1.9.0: 288 | version "1.9.3" 289 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 290 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 291 | 292 | color-convert@^2.0.1: 293 | version "2.0.1" 294 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 295 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 296 | dependencies: 297 | color-name "~1.1.4" 298 | 299 | color-name@~1.1.4: 300 | version "1.1.4" 301 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 302 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 303 | 304 | commander@6.1.0: 305 | version "6.1.0" 306 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" 307 | integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== 308 | 309 | concat-map@0.0.1: 310 | version "0.0.1" 311 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 312 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 313 | 314 | cross-spawn@^7.0.2: 315 | version "7.0.3" 316 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 317 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 318 | dependencies: 319 | path-key "^3.1.0" 320 | shebang-command "^2.0.0" 321 | which "^2.0.1" 322 | 323 | debug@^4.0.1, debug@^4.1.1: 324 | version "4.3.1" 325 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 326 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 327 | dependencies: 328 | ms "2.1.2" 329 | 330 | deep-is@^0.1.3: 331 | version "0.1.3" 332 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 333 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 334 | 335 | dir-glob@^3.0.1: 336 | version "3.0.1" 337 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 338 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 339 | dependencies: 340 | path-type "^4.0.0" 341 | 342 | doctrine@^3.0.0: 343 | version "3.0.0" 344 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 345 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 346 | dependencies: 347 | esutils "^2.0.2" 348 | 349 | emoji-regex@^8.0.0: 350 | version "8.0.0" 351 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 352 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 353 | 354 | enquirer@^2.3.5: 355 | version "2.3.6" 356 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 357 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 358 | dependencies: 359 | ansi-colors "^4.1.1" 360 | 361 | esbuild@^0.8.42: 362 | version "0.8.57" 363 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926" 364 | integrity sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA== 365 | 366 | escape-string-regexp@^1.0.5: 367 | version "1.0.5" 368 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 369 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 370 | 371 | eslint-config-prettier@^8.1.0: 372 | version "8.1.0" 373 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz#4ef1eaf97afe5176e6a75ddfb57c335121abc5a6" 374 | integrity sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw== 375 | 376 | eslint-plugin-prettier@^3.1.4: 377 | version "3.3.1" 378 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" 379 | integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== 380 | dependencies: 381 | prettier-linter-helpers "^1.0.0" 382 | 383 | eslint-scope@^5.0.0, eslint-scope@^5.1.1: 384 | version "5.1.1" 385 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 386 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 387 | dependencies: 388 | esrecurse "^4.3.0" 389 | estraverse "^4.1.1" 390 | 391 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 392 | version "2.1.0" 393 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 394 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 395 | dependencies: 396 | eslint-visitor-keys "^1.1.0" 397 | 398 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 399 | version "1.3.0" 400 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 401 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 402 | 403 | eslint-visitor-keys@^2.0.0: 404 | version "2.0.0" 405 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 406 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 407 | 408 | eslint@^7.14.0: 409 | version "7.23.0" 410 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.23.0.tgz#8d029d252f6e8cf45894b4bee08f5493f8e94325" 411 | integrity sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q== 412 | dependencies: 413 | "@babel/code-frame" "7.12.11" 414 | "@eslint/eslintrc" "^0.4.0" 415 | ajv "^6.10.0" 416 | chalk "^4.0.0" 417 | cross-spawn "^7.0.2" 418 | debug "^4.0.1" 419 | doctrine "^3.0.0" 420 | enquirer "^2.3.5" 421 | eslint-scope "^5.1.1" 422 | eslint-utils "^2.1.0" 423 | eslint-visitor-keys "^2.0.0" 424 | espree "^7.3.1" 425 | esquery "^1.4.0" 426 | esutils "^2.0.2" 427 | file-entry-cache "^6.0.1" 428 | functional-red-black-tree "^1.0.1" 429 | glob-parent "^5.0.0" 430 | globals "^13.6.0" 431 | ignore "^4.0.6" 432 | import-fresh "^3.0.0" 433 | imurmurhash "^0.1.4" 434 | is-glob "^4.0.0" 435 | js-yaml "^3.13.1" 436 | json-stable-stringify-without-jsonify "^1.0.1" 437 | levn "^0.4.1" 438 | lodash "^4.17.21" 439 | minimatch "^3.0.4" 440 | natural-compare "^1.4.0" 441 | optionator "^0.9.1" 442 | progress "^2.0.0" 443 | regexpp "^3.1.0" 444 | semver "^7.2.1" 445 | strip-ansi "^6.0.0" 446 | strip-json-comments "^3.1.0" 447 | table "^6.0.4" 448 | text-table "^0.2.0" 449 | v8-compile-cache "^2.0.3" 450 | 451 | espree@^7.3.0, espree@^7.3.1: 452 | version "7.3.1" 453 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 454 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 455 | dependencies: 456 | acorn "^7.4.0" 457 | acorn-jsx "^5.3.1" 458 | eslint-visitor-keys "^1.3.0" 459 | 460 | esprima@^4.0.0: 461 | version "4.0.1" 462 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 463 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 464 | 465 | esquery@^1.4.0: 466 | version "1.4.0" 467 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 468 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 469 | dependencies: 470 | estraverse "^5.1.0" 471 | 472 | esrecurse@^4.3.0: 473 | version "4.3.0" 474 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 475 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 476 | dependencies: 477 | estraverse "^5.2.0" 478 | 479 | estraverse@^4.1.1: 480 | version "4.3.0" 481 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 482 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 483 | 484 | estraverse@^5.1.0, estraverse@^5.2.0: 485 | version "5.2.0" 486 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 487 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 488 | 489 | esutils@^2.0.2: 490 | version "2.0.3" 491 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 492 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 493 | 494 | fast-deep-equal@^3.1.1: 495 | version "3.1.3" 496 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 497 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 498 | 499 | fast-diff@^1.1.2: 500 | version "1.2.0" 501 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 502 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 503 | 504 | fast-glob@^3.1.1: 505 | version "3.2.5" 506 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" 507 | integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== 508 | dependencies: 509 | "@nodelib/fs.stat" "^2.0.2" 510 | "@nodelib/fs.walk" "^1.2.3" 511 | glob-parent "^5.1.0" 512 | merge2 "^1.3.0" 513 | micromatch "^4.0.2" 514 | picomatch "^2.2.1" 515 | 516 | fast-json-stable-stringify@^2.0.0: 517 | version "2.1.0" 518 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 519 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 520 | 521 | fast-levenshtein@^2.0.6: 522 | version "2.0.6" 523 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 524 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 525 | 526 | fastq@^1.6.0: 527 | version "1.11.0" 528 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" 529 | integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== 530 | dependencies: 531 | reusify "^1.0.4" 532 | 533 | file-entry-cache@^6.0.1: 534 | version "6.0.1" 535 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 536 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 537 | dependencies: 538 | flat-cache "^3.0.4" 539 | 540 | fill-range@^7.0.1: 541 | version "7.0.1" 542 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 543 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 544 | dependencies: 545 | to-regex-range "^5.0.1" 546 | 547 | flat-cache@^3.0.4: 548 | version "3.0.4" 549 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 550 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 551 | dependencies: 552 | flatted "^3.1.0" 553 | rimraf "^3.0.2" 554 | 555 | flatted@^3.1.0: 556 | version "3.1.1" 557 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 558 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== 559 | 560 | fs.realpath@^1.0.0: 561 | version "1.0.0" 562 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 563 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 564 | 565 | function-bind@^1.1.1: 566 | version "1.1.1" 567 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 568 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 569 | 570 | functional-red-black-tree@^1.0.1: 571 | version "1.0.1" 572 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 573 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 574 | 575 | get-intrinsic@^1.0.2: 576 | version "1.1.1" 577 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 578 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 579 | dependencies: 580 | function-bind "^1.1.1" 581 | has "^1.0.3" 582 | has-symbols "^1.0.1" 583 | 584 | glob-parent@^5.0.0, glob-parent@^5.1.0: 585 | version "5.1.2" 586 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 587 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 588 | dependencies: 589 | is-glob "^4.0.1" 590 | 591 | glob@^7.1.3: 592 | version "7.1.6" 593 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 594 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 595 | dependencies: 596 | fs.realpath "^1.0.0" 597 | inflight "^1.0.4" 598 | inherits "2" 599 | minimatch "^3.0.4" 600 | once "^1.3.0" 601 | path-is-absolute "^1.0.0" 602 | 603 | globals@^12.1.0: 604 | version "12.4.0" 605 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 606 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 607 | dependencies: 608 | type-fest "^0.8.1" 609 | 610 | globals@^13.6.0: 611 | version "13.7.0" 612 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" 613 | integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== 614 | dependencies: 615 | type-fest "^0.20.2" 616 | 617 | globby@^11.0.1: 618 | version "11.0.3" 619 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" 620 | integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== 621 | dependencies: 622 | array-union "^2.1.0" 623 | dir-glob "^3.0.1" 624 | fast-glob "^3.1.1" 625 | ignore "^5.1.4" 626 | merge2 "^1.3.0" 627 | slash "^3.0.0" 628 | 629 | has-flag@^3.0.0: 630 | version "3.0.0" 631 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 632 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 633 | 634 | has-flag@^4.0.0: 635 | version "4.0.0" 636 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 637 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 638 | 639 | has-symbols@^1.0.1: 640 | version "1.0.2" 641 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 642 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 643 | 644 | has@^1.0.3: 645 | version "1.0.3" 646 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 647 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 648 | dependencies: 649 | function-bind "^1.1.1" 650 | 651 | ignore@^4.0.6: 652 | version "4.0.6" 653 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 654 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 655 | 656 | ignore@^5.1.4: 657 | version "5.1.8" 658 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 659 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 660 | 661 | import-fresh@^3.0.0, import-fresh@^3.2.1: 662 | version "3.3.0" 663 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 664 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 665 | dependencies: 666 | parent-module "^1.0.0" 667 | resolve-from "^4.0.0" 668 | 669 | imurmurhash@^0.1.4: 670 | version "0.1.4" 671 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 672 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 673 | 674 | inflight@^1.0.4: 675 | version "1.0.6" 676 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 677 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 678 | dependencies: 679 | once "^1.3.0" 680 | wrappy "1" 681 | 682 | inherits@2: 683 | version "2.0.4" 684 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 685 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 686 | 687 | is-boolean-object@^1.1.0: 688 | version "1.1.0" 689 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" 690 | integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== 691 | dependencies: 692 | call-bind "^1.0.0" 693 | 694 | is-extglob@^2.1.1: 695 | version "2.1.1" 696 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 697 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 698 | 699 | is-fullwidth-code-point@^3.0.0: 700 | version "3.0.0" 701 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 702 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 703 | 704 | is-glob@^4.0.0, is-glob@^4.0.1: 705 | version "4.0.1" 706 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 707 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 708 | dependencies: 709 | is-extglob "^2.1.1" 710 | 711 | is-number-object@^1.0.4: 712 | version "1.0.4" 713 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" 714 | integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== 715 | 716 | is-number@^7.0.0: 717 | version "7.0.0" 718 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 719 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 720 | 721 | is-string@^1.0.5: 722 | version "1.0.5" 723 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 724 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 725 | 726 | isexe@^2.0.0: 727 | version "2.0.0" 728 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 729 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 730 | 731 | js-tokens@^4.0.0: 732 | version "4.0.0" 733 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 734 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 735 | 736 | js-yaml@^3.13.1: 737 | version "3.14.1" 738 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 739 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 740 | dependencies: 741 | argparse "^1.0.7" 742 | esprima "^4.0.0" 743 | 744 | json-schema-traverse@^0.4.1: 745 | version "0.4.1" 746 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 747 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 748 | 749 | json-schema-traverse@^1.0.0: 750 | version "1.0.0" 751 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 752 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 753 | 754 | json-stable-stringify-without-jsonify@^1.0.1: 755 | version "1.0.1" 756 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 757 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 758 | 759 | lehre@^1.3.5: 760 | version "1.3.5" 761 | resolved "https://registry.yarnpkg.com/lehre/-/lehre-1.3.5.tgz#be0d183a5477863db2aba9e3112cafbb04475dba" 762 | integrity sha512-tzJF//x4+rRVQTNRzWekBI3dnZ8Ylof1c4+bfDEAlWvq4sqq8GKO22iSAhJjGlcs0UXoyLz5a47ISZp8/FMp0g== 763 | dependencies: 764 | "@babel/parser" "7.11.5" 765 | "@babel/types" "7.11.5" 766 | commander "6.1.0" 767 | typescript "4.0.2" 768 | 769 | levn@^0.4.1: 770 | version "0.4.1" 771 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 772 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 773 | dependencies: 774 | prelude-ls "^1.2.1" 775 | type-check "~0.4.0" 776 | 777 | lodash.clonedeep@^4.5.0: 778 | version "4.5.0" 779 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 780 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 781 | 782 | lodash.flatten@^4.4.0: 783 | version "4.4.0" 784 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 785 | integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= 786 | 787 | lodash.truncate@^4.4.2: 788 | version "4.4.2" 789 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 790 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 791 | 792 | lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: 793 | version "4.17.21" 794 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 795 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 796 | 797 | lru-cache@^6.0.0: 798 | version "6.0.0" 799 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 800 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 801 | dependencies: 802 | yallist "^4.0.0" 803 | 804 | merge2@^1.3.0: 805 | version "1.4.1" 806 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 807 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 808 | 809 | micromatch@^4.0.2: 810 | version "4.0.2" 811 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 812 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 813 | dependencies: 814 | braces "^3.0.1" 815 | picomatch "^2.0.5" 816 | 817 | minimatch@^3.0.4: 818 | version "3.0.4" 819 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 820 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 821 | dependencies: 822 | brace-expansion "^1.1.7" 823 | 824 | ms@2.1.2: 825 | version "2.1.2" 826 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 827 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 828 | 829 | natural-compare@^1.4.0: 830 | version "1.4.0" 831 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 832 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 833 | 834 | once@^1.3.0: 835 | version "1.4.0" 836 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 837 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 838 | dependencies: 839 | wrappy "1" 840 | 841 | optionator@^0.9.1: 842 | version "0.9.1" 843 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 844 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 845 | dependencies: 846 | deep-is "^0.1.3" 847 | fast-levenshtein "^2.0.6" 848 | levn "^0.4.1" 849 | prelude-ls "^1.2.1" 850 | type-check "^0.4.0" 851 | word-wrap "^1.2.3" 852 | 853 | parent-module@^1.0.0: 854 | version "1.0.1" 855 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 856 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 857 | dependencies: 858 | callsites "^3.0.0" 859 | 860 | path-is-absolute@^1.0.0: 861 | version "1.0.1" 862 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 863 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 864 | 865 | path-key@^3.1.0: 866 | version "3.1.1" 867 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 868 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 869 | 870 | path-type@^4.0.0: 871 | version "4.0.0" 872 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 873 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 874 | 875 | picomatch@^2.0.5, picomatch@^2.2.1: 876 | version "2.2.2" 877 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 878 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 879 | 880 | prelude-ls@^1.2.1: 881 | version "1.2.1" 882 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 883 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 884 | 885 | prettier-linter-helpers@^1.0.0: 886 | version "1.0.0" 887 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 888 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 889 | dependencies: 890 | fast-diff "^1.1.2" 891 | 892 | prettier@^2.2.0: 893 | version "2.2.1" 894 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" 895 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== 896 | 897 | progress@^2.0.0: 898 | version "2.0.3" 899 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 900 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 901 | 902 | punycode@^2.1.0: 903 | version "2.1.1" 904 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 905 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 906 | 907 | queue-microtask@^1.2.2: 908 | version "1.2.3" 909 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 910 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 911 | 912 | regexpp@^3.0.0, regexpp@^3.1.0: 913 | version "3.1.0" 914 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 915 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 916 | 917 | require-from-string@^2.0.2: 918 | version "2.0.2" 919 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 920 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 921 | 922 | resolve-from@^4.0.0: 923 | version "4.0.0" 924 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 925 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 926 | 927 | reusify@^1.0.4: 928 | version "1.0.4" 929 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 930 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 931 | 932 | rimraf@^2.6.3: 933 | version "2.7.1" 934 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 935 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 936 | dependencies: 937 | glob "^7.1.3" 938 | 939 | rimraf@^3.0.2: 940 | version "3.0.2" 941 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 942 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 943 | dependencies: 944 | glob "^7.1.3" 945 | 946 | run-parallel@^1.1.9: 947 | version "1.2.0" 948 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 949 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 950 | dependencies: 951 | queue-microtask "^1.2.2" 952 | 953 | semver@^7.2.1, semver@^7.3.2: 954 | version "7.3.5" 955 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 956 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 957 | dependencies: 958 | lru-cache "^6.0.0" 959 | 960 | shebang-command@^2.0.0: 961 | version "2.0.0" 962 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 963 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 964 | dependencies: 965 | shebang-regex "^3.0.0" 966 | 967 | shebang-regex@^3.0.0: 968 | version "3.0.0" 969 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 970 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 971 | 972 | slash@^3.0.0: 973 | version "3.0.0" 974 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 975 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 976 | 977 | slice-ansi@^4.0.0: 978 | version "4.0.0" 979 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 980 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 981 | dependencies: 982 | ansi-styles "^4.0.0" 983 | astral-regex "^2.0.0" 984 | is-fullwidth-code-point "^3.0.0" 985 | 986 | sprintf-js@~1.0.2: 987 | version "1.0.3" 988 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 989 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 990 | 991 | string-width@^4.2.0: 992 | version "4.2.2" 993 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 994 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 995 | dependencies: 996 | emoji-regex "^8.0.0" 997 | is-fullwidth-code-point "^3.0.0" 998 | strip-ansi "^6.0.0" 999 | 1000 | strip-ansi@^6.0.0: 1001 | version "6.0.0" 1002 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1003 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1004 | dependencies: 1005 | ansi-regex "^5.0.0" 1006 | 1007 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1008 | version "3.1.1" 1009 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1010 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1011 | 1012 | supports-color@^5.3.0: 1013 | version "5.5.0" 1014 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1015 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1016 | dependencies: 1017 | has-flag "^3.0.0" 1018 | 1019 | supports-color@^7.1.0: 1020 | version "7.2.0" 1021 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1022 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1023 | dependencies: 1024 | has-flag "^4.0.0" 1025 | 1026 | table@^6.0.4: 1027 | version "6.0.9" 1028 | resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb" 1029 | integrity sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ== 1030 | dependencies: 1031 | ajv "^8.0.1" 1032 | is-boolean-object "^1.1.0" 1033 | is-number-object "^1.0.4" 1034 | is-string "^1.0.5" 1035 | lodash.clonedeep "^4.5.0" 1036 | lodash.flatten "^4.4.0" 1037 | lodash.truncate "^4.4.2" 1038 | slice-ansi "^4.0.0" 1039 | string-width "^4.2.0" 1040 | 1041 | text-table@^0.2.0: 1042 | version "0.2.0" 1043 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1044 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1045 | 1046 | tmp@^0.1.0: 1047 | version "0.1.0" 1048 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" 1049 | integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== 1050 | dependencies: 1051 | rimraf "^2.6.3" 1052 | 1053 | to-fast-properties@^2.0.0: 1054 | version "2.0.0" 1055 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1056 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1057 | 1058 | to-regex-range@^5.0.1: 1059 | version "5.0.1" 1060 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1061 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1062 | dependencies: 1063 | is-number "^7.0.0" 1064 | 1065 | tslib@^1.8.1: 1066 | version "1.14.1" 1067 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1068 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1069 | 1070 | tsutils@^3.17.1: 1071 | version "3.21.0" 1072 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1073 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1074 | dependencies: 1075 | tslib "^1.8.1" 1076 | 1077 | type-check@^0.4.0, type-check@~0.4.0: 1078 | version "0.4.0" 1079 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1080 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1081 | dependencies: 1082 | prelude-ls "^1.2.1" 1083 | 1084 | type-fest@^0.20.2: 1085 | version "0.20.2" 1086 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1087 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1088 | 1089 | type-fest@^0.8.1: 1090 | version "0.8.1" 1091 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1092 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1093 | 1094 | typescript@4.0.2: 1095 | version "4.0.2" 1096 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" 1097 | integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== 1098 | 1099 | typescript@^4.1.2: 1100 | version "4.2.3" 1101 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" 1102 | integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== 1103 | 1104 | uri-js@^4.2.2: 1105 | version "4.4.1" 1106 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1107 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1108 | dependencies: 1109 | punycode "^2.1.0" 1110 | 1111 | v8-compile-cache@^2.0.3: 1112 | version "2.3.0" 1113 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1114 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1115 | 1116 | which@^2.0.1: 1117 | version "2.0.2" 1118 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1119 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1120 | dependencies: 1121 | isexe "^2.0.0" 1122 | 1123 | word-wrap@^1.2.3: 1124 | version "1.2.3" 1125 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1126 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1127 | 1128 | wrappy@1: 1129 | version "1.0.2" 1130 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1131 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1132 | 1133 | yallist@^4.0.0: 1134 | version "4.0.0" 1135 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1136 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1137 | --------------------------------------------------------------------------------