├── .DS_Store ├── .eslintrc.json ├── .gitignore ├── .gitmodules ├── .vscode ├── extensions.json ├── launch.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── expose-github-copilot-http-api-0.2.0.vsix ├── hack-extension.js ├── icon.png ├── package.json ├── src ├── extension.ts └── test │ ├── runTest.ts │ └── suite │ ├── extension.test.ts │ └── index.ts ├── tsconfig.json ├── yarn.lock └── yn-github-copilot.js /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purocean/expose-github-copilot-http-api/2df2a5c0000bdfa9af5b0c34a920623683693e11/.DS_Store -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 6, 6 | "sourceType": "module" 7 | }, 8 | "plugins": [ 9 | "@typescript-eslint" 10 | ], 11 | "rules": { 12 | "@typescript-eslint/class-name-casing": "warn", 13 | "@typescript-eslint/semi": "warn", 14 | "curly": "warn", 15 | "eqeqeq": "warn", 16 | "no-throw-literal": "warn", 17 | "semi": "off" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | .vscode/settings.json 4 | out 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "drawio"] 2 | path = drawio 3 | url = https://github.com/jgraph/drawio.git 4 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "${defaultBuildTask}" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "${defaultBuildTask}" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/.eslintrc.json 9 | **/*.map 10 | **/*.ts 11 | yn-github-copilot.js 12 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purocean/expose-github-copilot-http-api/2df2a5c0000bdfa9af5b0c34a920623683693e11/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 洋子 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 | # expose-github-copilot-http-api 2 | 3 | 将 VSCode 中的 Github Copilot 转化成 HTTP 接口,方便在其他场景使用。 4 | 5 | 参考文章:https://blog-purocean.vercel.app/hack-github-copilot/ 6 | 7 | > [!NOTE] 8 | > 现在而今眼目下,Gthub Copilot 开放了很多,比如可以通过 https://www.npmjs.com/package/@github/copilot-language-server 来接入,本方法虽然可用(2025-02-12),但不建议再使用了 9 | 10 | image 11 | 12 | ## Yank Note 13 | 14 | Yank Note 的 AI Copilot 扩展已自带这个适配器,破解后,直接填上地址即可工作 15 | 16 | image 17 | -------------------------------------------------------------------------------- /expose-github-copilot-http-api-0.2.0.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purocean/expose-github-copilot-http-api/2df2a5c0000bdfa9af5b0c34a920623683693e11/expose-github-copilot-http-api-0.2.0.vsix -------------------------------------------------------------------------------- /hack-extension.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = process.argv[2]; 3 | 4 | const js = fs.readFileSync(path, 'utf8'); 5 | 6 | const matches = js.match(/\(([a-zA-Z]+),"VSCodeCopilotExtensionApi"\)/); 7 | if (!matches) { 8 | throw new Error('Could not find extension api constructor [calculateInlineCompletions]'); 9 | } 10 | 11 | const apiName = matches[1]; 12 | const apiReg = new RegExp(`var ${apiName}=class ${apiName}\\{constructor\\([a-zA-Z]\\)\\{this.ctx=`); 13 | 14 | if (!fs.existsSync(path + '.bak')) { 15 | fs.copyFileSync(path, path + '.bak'); 16 | } 17 | 18 | if (!apiReg.test(js)) { 19 | throw new Error('Could not find extension api constructor [apiReg]'); 20 | } 21 | 22 | const replaced = js.replace(apiReg, (match) => { 23 | if (!match.includes('this.ctx=')) { 24 | throw new Error('Could not find extension api constructor [this.ctx=]'); 25 | } 26 | 27 | const matches = js.match(/\(([a-zA-Z0-9]+),"calculateInlineCompletions"\)/); 28 | if (!matches) { 29 | throw new Error('Could not find extension api constructor [calculateInlineCompletions]'); 30 | } 31 | 32 | const name = matches[1]; 33 | 34 | return match.replace('this.ctx=', `this.calculateInlineCompletions=${name};this.ctx=`); 35 | }); 36 | 37 | 38 | fs.writeFileSync(path, replaced, 'utf8'); 39 | 40 | console.log(`replace ${path}`, js.length, replaced.length); 41 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purocean/expose-github-copilot-http-api/2df2a5c0000bdfa9af5b0c34a920623683693e11/icon.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "expose-github-copilot-http-api", 3 | "displayName": "expose-github-copilot-http-api", 4 | "description": "expose-github-copilot-http-api", 5 | "version": "0.2.0", 6 | "license": "MIT", 7 | "publisher": "purocean", 8 | "bugs": { 9 | "url": "https://github.com/purocean/vscode-expose-github-copilot-http-api/issues" 10 | }, 11 | "homepage": "https://github.com/purocean/vscode-expose-github-copilot-http-api", 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/purocean/vscode-expose-github-copilot-http-api.git" 15 | }, 16 | "engines": { 17 | "vscode": "^1.84.1" 18 | }, 19 | "icon": "icon.png", 20 | "categories": [ 21 | "Other" 22 | ], 23 | "activationEvents": [ 24 | "onStartupFinished" 25 | ], 26 | "main": "./out/extension.js", 27 | "extensionDependencies": ["github.copilot"], 28 | "contributes": {}, 29 | "scripts": { 30 | "vscode:prepublish": "yarn run compile", 31 | "compile": "tsc -p ./", 32 | "lint": "eslint src --ext ts", 33 | "watch": "tsc -watch -p ./", 34 | "pretest": "yarn run compile && yarn run lint", 35 | "test": "node ./out/test/runTest.js" 36 | }, 37 | "devDependencies": { 38 | "@types/glob": "^7.1.1", 39 | "@types/mocha": "^7.0.1", 40 | "@types/node": "^12.11.7", 41 | "@types/vscode": "^1.84.1", 42 | "@typescript-eslint/eslint-plugin": "^2.18.0", 43 | "@typescript-eslint/parser": "^2.18.0", 44 | "eslint": "^6.8.0", 45 | "glob": "^7.1.6", 46 | "mocha": "^7.0.1", 47 | "typescript": "^5.2.2", 48 | "vscode-test": "^1.3.0" 49 | }, 50 | "dependencies": { 51 | "express": "^4.18.2" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | export function activate(context: vscode.ExtensionContext) { 4 | const express = require('express'); 5 | const app = express(); 6 | app.use(express.json()); 7 | const port = 3223; 8 | 9 | const copilot = vscode.extensions.getExtension('github.copilot'); 10 | 11 | let inputContent = ''; 12 | 13 | app.post('/calculateInlineCompletions', async (req: any, res: any) => { 14 | if (!copilot?.isActive || !copilot.exports || !copilot.exports.calculateInlineCompletions) { 15 | res.status(500); 16 | res.send({message: 'Copilot is not active or not be hacked'}); 17 | return; 18 | } 19 | 20 | const { content, language, line, column, triggerKind } = req.body || {}; 21 | 22 | if (!content || !language || typeof line !== 'number' || typeof column !== 'number') { 23 | res.status(400); 24 | res.send({message: 'Missing required parameters: content, language, line, column'}); 25 | return; 26 | } 27 | 28 | inputContent = content; 29 | 30 | const api = copilot.exports; 31 | 32 | const uri = vscode.Uri.parse('expose-github-copilot-http-api:tmp-file-' + Date.now()); 33 | const document = await vscode.workspace.openTextDocument(uri); 34 | await vscode.languages.setTextDocumentLanguage(document, language); 35 | const position = new vscode.Position(line, column); 36 | const cancellation = new vscode.CancellationTokenSource(); 37 | const completionContext = { 38 | triggerKind: triggerKind ?? vscode.InlineCompletionTriggerKind.Automatic, 39 | }; 40 | 41 | const completions = await api.calculateInlineCompletions( 42 | api.ctx, 43 | document, 44 | position, 45 | completionContext, 46 | cancellation.token 47 | ); 48 | 49 | if (completions && completions.type === 'success') { 50 | const items = completions.value.map(({ telemetry, command, ...rest }: any) => rest); 51 | res.send({ type: 'success', items }); 52 | } else { 53 | res.send(completions); 54 | } 55 | }); 56 | 57 | app.listen(port, () => { 58 | console.log(`App listening on port ${port}`); 59 | }); 60 | 61 | const myProvider = new (class implements vscode.TextDocumentContentProvider { 62 | provideTextDocumentContent(uri: vscode.Uri): string { 63 | return inputContent; 64 | } 65 | })(); 66 | 67 | vscode.workspace.onDidCloseTextDocument((e) => { 68 | console.log("onDidCloseTextDocument", e.uri.toString()); 69 | }); 70 | 71 | 72 | vscode.workspace.registerTextDocumentContentProvider('expose-github-copilot-http-api', myProvider); 73 | } 74 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | import { runTests } from 'vscode-test'; 4 | 5 | async function main() { 6 | try { 7 | // The folder containing the Extension Manifest package.json 8 | // Passed to `--extensionDevelopmentPath` 9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 10 | 11 | // The path to test runner 12 | // Passed to --extensionTestsPath 13 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 14 | 15 | // Download VS Code, unzip it and run the integration test 16 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 17 | } catch (err) { 18 | console.error('Failed to run tests'); 19 | process.exit(1); 20 | } 21 | } 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /src/test/suite/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | 3 | // You can import and use all API from the 'vscode' module 4 | // as well as import your extension to test it 5 | import * as vscode from 'vscode'; 6 | // import * as myExtension from '../extension'; 7 | 8 | suite('Extension Test Suite', () => { 9 | vscode.window.showInformationMessage('Start all tests.'); 10 | 11 | test('Sample test', () => { 12 | assert.equal(-1, [1, 2, 3].indexOf(5)); 13 | assert.equal(-1, [1, 2, 3].indexOf(0)); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | 5 | export function run(): Promise { 6 | // Create the mocha test 7 | const mocha = new Mocha({ 8 | ui: 'tdd', 9 | }); 10 | mocha.useColors(true); 11 | 12 | const testsRoot = path.resolve(__dirname, '..'); 13 | 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | 20 | // Add files to the test suite 21 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 22 | 23 | try { 24 | // Run the mocha test 25 | mocha.run(failures => { 26 | if (failures > 0) { 27 | e(new Error(`${failures} tests failed.`)); 28 | } else { 29 | c(); 30 | } 31 | }); 32 | } catch (err) { 33 | console.error(err); 34 | e(err); 35 | } 36 | }); 37 | }); 38 | } 39 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "strict": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | }, 17 | "exclude": [ 18 | "node_modules", 19 | ".vscode-test" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.8.3" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | dependencies: 9 | "@babel/highlight" "^7.8.3" 10 | 11 | "@babel/highlight@^7.8.3": 12 | version "7.8.3" 13 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 14 | dependencies: 15 | chalk "^2.0.0" 16 | esutils "^2.0.2" 17 | js-tokens "^4.0.0" 18 | 19 | "@types/color-name@^1.1.1": 20 | version "1.1.1" 21 | resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 22 | 23 | "@types/eslint-visitor-keys@^1.0.0": 24 | version "1.0.0" 25 | resolved "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 26 | 27 | "@types/events@*": 28 | version "3.0.0" 29 | resolved "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" 30 | 31 | "@types/glob@^7.1.1": 32 | version "7.1.1" 33 | resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" 34 | dependencies: 35 | "@types/events" "*" 36 | "@types/minimatch" "*" 37 | "@types/node" "*" 38 | 39 | "@types/json-schema@^7.0.3": 40 | version "7.0.4" 41 | resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" 42 | 43 | "@types/minimatch@*": 44 | version "3.0.3" 45 | resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" 46 | 47 | "@types/mocha@^7.0.1": 48 | version "7.0.2" 49 | resolved "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce" 50 | 51 | "@types/node@*": 52 | version "13.9.0" 53 | resolved "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz#5b6ee7a77faacddd7de719017d0bc12f52f81589" 54 | 55 | "@types/node@^12.11.7": 56 | version "12.12.29" 57 | resolved "https://registry.npmjs.org/@types/node/-/node-12.12.29.tgz#46275f028b4e463b9ac5fefc1d08bc66cc193f25" 58 | 59 | "@types/vscode@^1.84.1": 60 | version "1.84.1" 61 | resolved "https://registry.npmmirror.com/@types/vscode/-/vscode-1.84.1.tgz#2e89dc074743737209f1769f7e7762499edaca71" 62 | integrity sha512-DB10vBRLEPA/us7p3gQilU2Tq5HDu6JWTyCpD9qtb7MKWIvJS5In9HU3YgVGCXf/miwHJiY62aXwjtUSMpT8HA== 63 | 64 | "@typescript-eslint/eslint-plugin@^2.18.0": 65 | version "2.22.0" 66 | resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz#218ce6d4aa0244c6a40baba39ca1e021b26bb017" 67 | dependencies: 68 | "@typescript-eslint/experimental-utils" "2.22.0" 69 | eslint-utils "^1.4.3" 70 | functional-red-black-tree "^1.0.1" 71 | regexpp "^3.0.0" 72 | tsutils "^3.17.1" 73 | 74 | "@typescript-eslint/experimental-utils@2.22.0": 75 | version "2.22.0" 76 | resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz#4d00c91fbaaa68e56e7869be284999a265707f85" 77 | dependencies: 78 | "@types/json-schema" "^7.0.3" 79 | "@typescript-eslint/typescript-estree" "2.22.0" 80 | eslint-scope "^5.0.0" 81 | 82 | "@typescript-eslint/parser@^2.18.0": 83 | version "2.22.0" 84 | resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.22.0.tgz#8eeb6cb6de873f655e64153397d4790898e149d0" 85 | dependencies: 86 | "@types/eslint-visitor-keys" "^1.0.0" 87 | "@typescript-eslint/experimental-utils" "2.22.0" 88 | "@typescript-eslint/typescript-estree" "2.22.0" 89 | eslint-visitor-keys "^1.1.0" 90 | 91 | "@typescript-eslint/typescript-estree@2.22.0": 92 | version "2.22.0" 93 | resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz#a16ed45876abf743e1f5857e2f4a1c3199fd219e" 94 | dependencies: 95 | debug "^4.1.1" 96 | eslint-visitor-keys "^1.1.0" 97 | glob "^7.1.6" 98 | is-glob "^4.0.1" 99 | lodash "^4.17.15" 100 | semver "^6.3.0" 101 | tsutils "^3.17.1" 102 | 103 | accepts@~1.3.8: 104 | version "1.3.8" 105 | resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 106 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 107 | dependencies: 108 | mime-types "~2.1.34" 109 | negotiator "0.6.3" 110 | 111 | acorn-jsx@^5.2.0: 112 | version "5.2.0" 113 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 114 | 115 | acorn@^7.1.0: 116 | version "7.1.1" 117 | resolved "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" 118 | 119 | agent-base@4, agent-base@^4.3.0: 120 | version "4.3.0" 121 | resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 122 | dependencies: 123 | es6-promisify "^5.0.0" 124 | 125 | ajv@^6.10.0, ajv@^6.10.2: 126 | version "6.12.6" 127 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 128 | dependencies: 129 | fast-deep-equal "^3.1.1" 130 | fast-json-stable-stringify "^2.0.0" 131 | json-schema-traverse "^0.4.1" 132 | uri-js "^4.2.2" 133 | 134 | ansi-colors@3.2.3: 135 | version "3.2.3" 136 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 137 | 138 | ansi-escapes@^4.2.1: 139 | version "4.3.1" 140 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 141 | dependencies: 142 | type-fest "^0.11.0" 143 | 144 | ansi-regex@^3.0.0: 145 | version "3.0.1" 146 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 147 | 148 | ansi-regex@^4.1.0: 149 | version "4.1.0" 150 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 151 | 152 | ansi-regex@^5.0.0: 153 | version "5.0.0" 154 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 155 | 156 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 157 | version "3.2.1" 158 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 159 | dependencies: 160 | color-convert "^1.9.0" 161 | 162 | ansi-styles@^4.1.0: 163 | version "4.2.1" 164 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 165 | dependencies: 166 | "@types/color-name" "^1.1.1" 167 | color-convert "^2.0.1" 168 | 169 | anymatch@~3.1.1: 170 | version "3.1.1" 171 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 172 | dependencies: 173 | normalize-path "^3.0.0" 174 | picomatch "^2.0.4" 175 | 176 | argparse@^1.0.7: 177 | version "1.0.10" 178 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 179 | dependencies: 180 | sprintf-js "~1.0.2" 181 | 182 | array-flatten@1.1.1: 183 | version "1.1.1" 184 | resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 185 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 186 | 187 | astral-regex@^1.0.0: 188 | version "1.0.0" 189 | resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 190 | 191 | balanced-match@^1.0.0: 192 | version "1.0.0" 193 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 194 | 195 | binary-extensions@^2.0.0: 196 | version "2.0.0" 197 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" 198 | 199 | body-parser@1.20.1: 200 | version "1.20.1" 201 | resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 202 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 203 | dependencies: 204 | bytes "3.1.2" 205 | content-type "~1.0.4" 206 | debug "2.6.9" 207 | depd "2.0.0" 208 | destroy "1.2.0" 209 | http-errors "2.0.0" 210 | iconv-lite "0.4.24" 211 | on-finished "2.4.1" 212 | qs "6.11.0" 213 | raw-body "2.5.1" 214 | type-is "~1.6.18" 215 | unpipe "1.0.0" 216 | 217 | brace-expansion@^1.1.7: 218 | version "1.1.11" 219 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 220 | dependencies: 221 | balanced-match "^1.0.0" 222 | concat-map "0.0.1" 223 | 224 | braces@~3.0.2: 225 | version "3.0.2" 226 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 227 | dependencies: 228 | fill-range "^7.0.1" 229 | 230 | browser-stdout@1.3.1: 231 | version "1.3.1" 232 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 233 | 234 | bytes@3.1.2: 235 | version "3.1.2" 236 | resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 237 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 238 | 239 | call-bind@^1.0.0: 240 | version "1.0.5" 241 | resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" 242 | integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== 243 | dependencies: 244 | function-bind "^1.1.2" 245 | get-intrinsic "^1.2.1" 246 | set-function-length "^1.1.1" 247 | 248 | callsites@^3.0.0: 249 | version "3.1.0" 250 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 251 | 252 | camelcase@^5.0.0: 253 | version "5.3.1" 254 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 255 | 256 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: 257 | version "2.4.2" 258 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 259 | dependencies: 260 | ansi-styles "^3.2.1" 261 | escape-string-regexp "^1.0.5" 262 | supports-color "^5.3.0" 263 | 264 | chalk@^3.0.0: 265 | version "3.0.0" 266 | resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 267 | dependencies: 268 | ansi-styles "^4.1.0" 269 | supports-color "^7.1.0" 270 | 271 | chardet@^0.7.0: 272 | version "0.7.0" 273 | resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 274 | 275 | chokidar@3.3.0: 276 | version "3.3.0" 277 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" 278 | dependencies: 279 | anymatch "~3.1.1" 280 | braces "~3.0.2" 281 | glob-parent "~5.1.0" 282 | is-binary-path "~2.1.0" 283 | is-glob "~4.0.1" 284 | normalize-path "~3.0.0" 285 | readdirp "~3.2.0" 286 | optionalDependencies: 287 | fsevents "~2.1.1" 288 | 289 | cli-cursor@^3.1.0: 290 | version "3.1.0" 291 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 292 | dependencies: 293 | restore-cursor "^3.1.0" 294 | 295 | cli-width@^2.0.0: 296 | version "2.2.0" 297 | resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 298 | 299 | cliui@^5.0.0: 300 | version "5.0.0" 301 | resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 302 | dependencies: 303 | string-width "^3.1.0" 304 | strip-ansi "^5.2.0" 305 | wrap-ansi "^5.1.0" 306 | 307 | color-convert@^1.9.0: 308 | version "1.9.3" 309 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 310 | dependencies: 311 | color-name "1.1.3" 312 | 313 | color-convert@^2.0.1: 314 | version "2.0.1" 315 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 316 | dependencies: 317 | color-name "~1.1.4" 318 | 319 | color-name@1.1.3: 320 | version "1.1.3" 321 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 322 | 323 | color-name@~1.1.4: 324 | version "1.1.4" 325 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 326 | 327 | concat-map@0.0.1: 328 | version "0.0.1" 329 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 330 | 331 | content-disposition@0.5.4: 332 | version "0.5.4" 333 | resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 334 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 335 | dependencies: 336 | safe-buffer "5.2.1" 337 | 338 | content-type@~1.0.4: 339 | version "1.0.5" 340 | resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 341 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 342 | 343 | cookie-signature@1.0.6: 344 | version "1.0.6" 345 | resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 346 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 347 | 348 | cookie@0.5.0: 349 | version "0.5.0" 350 | resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 351 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 352 | 353 | cross-spawn@^6.0.5: 354 | version "6.0.5" 355 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 356 | dependencies: 357 | nice-try "^1.0.4" 358 | path-key "^2.0.1" 359 | semver "^5.5.0" 360 | shebang-command "^1.2.0" 361 | which "^1.2.9" 362 | 363 | debug@2.6.9: 364 | version "2.6.9" 365 | resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 366 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 367 | dependencies: 368 | ms "2.0.0" 369 | 370 | debug@3.1.0: 371 | version "3.1.0" 372 | resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 373 | dependencies: 374 | ms "2.0.0" 375 | 376 | debug@3.2.6, debug@^3.1.0: 377 | version "3.2.6" 378 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 379 | dependencies: 380 | ms "^2.1.1" 381 | 382 | debug@^4.0.1, debug@^4.1.1: 383 | version "4.1.1" 384 | resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 385 | dependencies: 386 | ms "^2.1.1" 387 | 388 | decamelize@^1.2.0: 389 | version "1.2.0" 390 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 391 | 392 | deep-is@~0.1.3: 393 | version "0.1.3" 394 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 395 | 396 | define-data-property@^1.1.1: 397 | version "1.1.1" 398 | resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" 399 | integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== 400 | dependencies: 401 | get-intrinsic "^1.2.1" 402 | gopd "^1.0.1" 403 | has-property-descriptors "^1.0.0" 404 | 405 | define-properties@^1.1.2, define-properties@^1.1.3: 406 | version "1.1.3" 407 | resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 408 | dependencies: 409 | object-keys "^1.0.12" 410 | 411 | depd@2.0.0: 412 | version "2.0.0" 413 | resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 414 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 415 | 416 | destroy@1.2.0: 417 | version "1.2.0" 418 | resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 419 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 420 | 421 | diff@3.5.0: 422 | version "3.5.0" 423 | resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 424 | 425 | doctrine@^3.0.0: 426 | version "3.0.0" 427 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 428 | dependencies: 429 | esutils "^2.0.2" 430 | 431 | ee-first@1.1.1: 432 | version "1.1.1" 433 | resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 434 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 435 | 436 | emoji-regex@^7.0.1: 437 | version "7.0.3" 438 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 439 | 440 | emoji-regex@^8.0.0: 441 | version "8.0.0" 442 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 443 | 444 | encodeurl@~1.0.2: 445 | version "1.0.2" 446 | resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 447 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 448 | 449 | es-abstract@^1.17.0-next.1: 450 | version "1.17.4" 451 | resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" 452 | dependencies: 453 | es-to-primitive "^1.2.1" 454 | function-bind "^1.1.1" 455 | has "^1.0.3" 456 | has-symbols "^1.0.1" 457 | is-callable "^1.1.5" 458 | is-regex "^1.0.5" 459 | object-inspect "^1.7.0" 460 | object-keys "^1.1.1" 461 | object.assign "^4.1.0" 462 | string.prototype.trimleft "^2.1.1" 463 | string.prototype.trimright "^2.1.1" 464 | 465 | es-to-primitive@^1.2.1: 466 | version "1.2.1" 467 | resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 468 | dependencies: 469 | is-callable "^1.1.4" 470 | is-date-object "^1.0.1" 471 | is-symbol "^1.0.2" 472 | 473 | es6-promise@^4.0.3: 474 | version "4.2.8" 475 | resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 476 | 477 | es6-promisify@^5.0.0: 478 | version "5.0.0" 479 | resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 480 | dependencies: 481 | es6-promise "^4.0.3" 482 | 483 | escape-html@~1.0.3: 484 | version "1.0.3" 485 | resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 486 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 487 | 488 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 489 | version "1.0.5" 490 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 491 | 492 | eslint-scope@^5.0.0: 493 | version "5.0.0" 494 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 495 | dependencies: 496 | esrecurse "^4.1.0" 497 | estraverse "^4.1.1" 498 | 499 | eslint-utils@^1.4.3: 500 | version "1.4.3" 501 | resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 502 | dependencies: 503 | eslint-visitor-keys "^1.1.0" 504 | 505 | eslint-visitor-keys@^1.1.0: 506 | version "1.1.0" 507 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 508 | 509 | eslint@^6.8.0: 510 | version "6.8.0" 511 | resolved "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" 512 | dependencies: 513 | "@babel/code-frame" "^7.0.0" 514 | ajv "^6.10.0" 515 | chalk "^2.1.0" 516 | cross-spawn "^6.0.5" 517 | debug "^4.0.1" 518 | doctrine "^3.0.0" 519 | eslint-scope "^5.0.0" 520 | eslint-utils "^1.4.3" 521 | eslint-visitor-keys "^1.1.0" 522 | espree "^6.1.2" 523 | esquery "^1.0.1" 524 | esutils "^2.0.2" 525 | file-entry-cache "^5.0.1" 526 | functional-red-black-tree "^1.0.1" 527 | glob-parent "^5.0.0" 528 | globals "^12.1.0" 529 | ignore "^4.0.6" 530 | import-fresh "^3.0.0" 531 | imurmurhash "^0.1.4" 532 | inquirer "^7.0.0" 533 | is-glob "^4.0.0" 534 | js-yaml "^3.13.1" 535 | json-stable-stringify-without-jsonify "^1.0.1" 536 | levn "^0.3.0" 537 | lodash "^4.17.14" 538 | minimatch "^3.0.4" 539 | mkdirp "^0.5.1" 540 | natural-compare "^1.4.0" 541 | optionator "^0.8.3" 542 | progress "^2.0.0" 543 | regexpp "^2.0.1" 544 | semver "^6.1.2" 545 | strip-ansi "^5.2.0" 546 | strip-json-comments "^3.0.1" 547 | table "^5.2.3" 548 | text-table "^0.2.0" 549 | v8-compile-cache "^2.0.3" 550 | 551 | espree@^6.1.2: 552 | version "6.2.0" 553 | resolved "https://registry.npmjs.org/espree/-/espree-6.2.0.tgz#349fef01a202bbab047748300deb37fa44da79d7" 554 | dependencies: 555 | acorn "^7.1.0" 556 | acorn-jsx "^5.2.0" 557 | eslint-visitor-keys "^1.1.0" 558 | 559 | esprima@^4.0.0: 560 | version "4.0.1" 561 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 562 | 563 | esquery@^1.0.1: 564 | version "1.1.0" 565 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" 566 | dependencies: 567 | estraverse "^4.0.0" 568 | 569 | esrecurse@^4.1.0: 570 | version "4.2.1" 571 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 572 | dependencies: 573 | estraverse "^4.1.0" 574 | 575 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 576 | version "4.3.0" 577 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 578 | 579 | esutils@^2.0.2: 580 | version "2.0.3" 581 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 582 | 583 | etag@~1.8.1: 584 | version "1.8.1" 585 | resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 586 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 587 | 588 | express@^4.18.2: 589 | version "4.18.2" 590 | resolved "https://registry.npmmirror.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 591 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 592 | dependencies: 593 | accepts "~1.3.8" 594 | array-flatten "1.1.1" 595 | body-parser "1.20.1" 596 | content-disposition "0.5.4" 597 | content-type "~1.0.4" 598 | cookie "0.5.0" 599 | cookie-signature "1.0.6" 600 | debug "2.6.9" 601 | depd "2.0.0" 602 | encodeurl "~1.0.2" 603 | escape-html "~1.0.3" 604 | etag "~1.8.1" 605 | finalhandler "1.2.0" 606 | fresh "0.5.2" 607 | http-errors "2.0.0" 608 | merge-descriptors "1.0.1" 609 | methods "~1.1.2" 610 | on-finished "2.4.1" 611 | parseurl "~1.3.3" 612 | path-to-regexp "0.1.7" 613 | proxy-addr "~2.0.7" 614 | qs "6.11.0" 615 | range-parser "~1.2.1" 616 | safe-buffer "5.2.1" 617 | send "0.18.0" 618 | serve-static "1.15.0" 619 | setprototypeof "1.2.0" 620 | statuses "2.0.1" 621 | type-is "~1.6.18" 622 | utils-merge "1.0.1" 623 | vary "~1.1.2" 624 | 625 | external-editor@^3.0.3: 626 | version "3.1.0" 627 | resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 628 | dependencies: 629 | chardet "^0.7.0" 630 | iconv-lite "^0.4.24" 631 | tmp "^0.0.33" 632 | 633 | fast-deep-equal@^3.1.1: 634 | version "3.1.3" 635 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 636 | 637 | fast-json-stable-stringify@^2.0.0: 638 | version "2.1.0" 639 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 640 | 641 | fast-levenshtein@~2.0.6: 642 | version "2.0.6" 643 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 644 | 645 | figures@^3.0.0: 646 | version "3.2.0" 647 | resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 648 | dependencies: 649 | escape-string-regexp "^1.0.5" 650 | 651 | file-entry-cache@^5.0.1: 652 | version "5.0.1" 653 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 654 | dependencies: 655 | flat-cache "^2.0.1" 656 | 657 | fill-range@^7.0.1: 658 | version "7.0.1" 659 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 660 | dependencies: 661 | to-regex-range "^5.0.1" 662 | 663 | finalhandler@1.2.0: 664 | version "1.2.0" 665 | resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 666 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 667 | dependencies: 668 | debug "2.6.9" 669 | encodeurl "~1.0.2" 670 | escape-html "~1.0.3" 671 | on-finished "2.4.1" 672 | parseurl "~1.3.3" 673 | statuses "2.0.1" 674 | unpipe "~1.0.0" 675 | 676 | find-up@3.0.0, find-up@^3.0.0: 677 | version "3.0.0" 678 | resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 679 | dependencies: 680 | locate-path "^3.0.0" 681 | 682 | flat-cache@^2.0.1: 683 | version "2.0.1" 684 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 685 | dependencies: 686 | flatted "^2.0.0" 687 | rimraf "2.6.3" 688 | write "1.0.3" 689 | 690 | flat@^4.1.0: 691 | version "4.1.0" 692 | resolved "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 693 | dependencies: 694 | is-buffer "~2.0.3" 695 | 696 | flatted@^2.0.0: 697 | version "2.0.1" 698 | resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" 699 | 700 | forwarded@0.2.0: 701 | version "0.2.0" 702 | resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 703 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 704 | 705 | fresh@0.5.2: 706 | version "0.5.2" 707 | resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 708 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 709 | 710 | fs.realpath@^1.0.0: 711 | version "1.0.0" 712 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 713 | 714 | fsevents@~2.1.1: 715 | version "2.1.2" 716 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" 717 | 718 | function-bind@^1.1.1: 719 | version "1.1.1" 720 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 721 | 722 | function-bind@^1.1.2: 723 | version "1.1.2" 724 | resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 725 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 726 | 727 | functional-red-black-tree@^1.0.1: 728 | version "1.0.1" 729 | resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 730 | 731 | get-caller-file@^2.0.1: 732 | version "2.0.5" 733 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 734 | 735 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: 736 | version "1.2.2" 737 | resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" 738 | integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== 739 | dependencies: 740 | function-bind "^1.1.2" 741 | has-proto "^1.0.1" 742 | has-symbols "^1.0.3" 743 | hasown "^2.0.0" 744 | 745 | glob-parent@^5.0.0, glob-parent@~5.1.0: 746 | version "5.1.2" 747 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 748 | dependencies: 749 | is-glob "^4.0.1" 750 | 751 | glob@7.1.3: 752 | version "7.1.3" 753 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 754 | dependencies: 755 | fs.realpath "^1.0.0" 756 | inflight "^1.0.4" 757 | inherits "2" 758 | minimatch "^3.0.4" 759 | once "^1.3.0" 760 | path-is-absolute "^1.0.0" 761 | 762 | glob@^7.1.3, glob@^7.1.6: 763 | version "7.1.6" 764 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 765 | dependencies: 766 | fs.realpath "^1.0.0" 767 | inflight "^1.0.4" 768 | inherits "2" 769 | minimatch "^3.0.4" 770 | once "^1.3.0" 771 | path-is-absolute "^1.0.0" 772 | 773 | globals@^12.1.0: 774 | version "12.3.0" 775 | resolved "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" 776 | dependencies: 777 | type-fest "^0.8.1" 778 | 779 | gopd@^1.0.1: 780 | version "1.0.1" 781 | resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 782 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 783 | dependencies: 784 | get-intrinsic "^1.1.3" 785 | 786 | growl@1.10.5: 787 | version "1.10.5" 788 | resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 789 | 790 | has-flag@^3.0.0: 791 | version "3.0.0" 792 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 793 | 794 | has-flag@^4.0.0: 795 | version "4.0.0" 796 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 797 | 798 | has-property-descriptors@^1.0.0: 799 | version "1.0.1" 800 | resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" 801 | integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== 802 | dependencies: 803 | get-intrinsic "^1.2.2" 804 | 805 | has-proto@^1.0.1: 806 | version "1.0.1" 807 | resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" 808 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 809 | 810 | has-symbols@^1.0.0, has-symbols@^1.0.1: 811 | version "1.0.1" 812 | resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 813 | 814 | has-symbols@^1.0.3: 815 | version "1.0.3" 816 | resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 817 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 818 | 819 | has@^1.0.3: 820 | version "1.0.3" 821 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 822 | dependencies: 823 | function-bind "^1.1.1" 824 | 825 | hasown@^2.0.0: 826 | version "2.0.0" 827 | resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" 828 | integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== 829 | dependencies: 830 | function-bind "^1.1.2" 831 | 832 | he@1.2.0: 833 | version "1.2.0" 834 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 835 | 836 | http-errors@2.0.0: 837 | version "2.0.0" 838 | resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 839 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 840 | dependencies: 841 | depd "2.0.0" 842 | inherits "2.0.4" 843 | setprototypeof "1.2.0" 844 | statuses "2.0.1" 845 | toidentifier "1.0.1" 846 | 847 | http-proxy-agent@^2.1.0: 848 | version "2.1.0" 849 | resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" 850 | dependencies: 851 | agent-base "4" 852 | debug "3.1.0" 853 | 854 | https-proxy-agent@^2.2.4: 855 | version "2.2.4" 856 | resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" 857 | dependencies: 858 | agent-base "^4.3.0" 859 | debug "^3.1.0" 860 | 861 | iconv-lite@0.4.24, iconv-lite@^0.4.24: 862 | version "0.4.24" 863 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 864 | dependencies: 865 | safer-buffer ">= 2.1.2 < 3" 866 | 867 | ignore@^4.0.6: 868 | version "4.0.6" 869 | resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 870 | 871 | import-fresh@^3.0.0: 872 | version "3.2.1" 873 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 874 | dependencies: 875 | parent-module "^1.0.0" 876 | resolve-from "^4.0.0" 877 | 878 | imurmurhash@^0.1.4: 879 | version "0.1.4" 880 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 881 | 882 | inflight@^1.0.4: 883 | version "1.0.6" 884 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 885 | dependencies: 886 | once "^1.3.0" 887 | wrappy "1" 888 | 889 | inherits@2, inherits@2.0.4: 890 | version "2.0.4" 891 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 892 | 893 | inquirer@^7.0.0: 894 | version "7.0.6" 895 | resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.0.6.tgz#ee4ff0ea7ecda5324656fe665878790f66df7d0c" 896 | dependencies: 897 | ansi-escapes "^4.2.1" 898 | chalk "^3.0.0" 899 | cli-cursor "^3.1.0" 900 | cli-width "^2.0.0" 901 | external-editor "^3.0.3" 902 | figures "^3.0.0" 903 | lodash "^4.17.15" 904 | mute-stream "0.0.8" 905 | run-async "^2.4.0" 906 | rxjs "^6.5.3" 907 | string-width "^4.1.0" 908 | strip-ansi "^6.0.0" 909 | through "^2.3.6" 910 | 911 | ipaddr.js@1.9.1: 912 | version "1.9.1" 913 | resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 914 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 915 | 916 | is-binary-path@~2.1.0: 917 | version "2.1.0" 918 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 919 | dependencies: 920 | binary-extensions "^2.0.0" 921 | 922 | is-buffer@~2.0.3: 923 | version "2.0.4" 924 | resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 925 | 926 | is-callable@^1.1.4, is-callable@^1.1.5: 927 | version "1.1.5" 928 | resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 929 | 930 | is-date-object@^1.0.1: 931 | version "1.0.2" 932 | resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 933 | 934 | is-extglob@^2.1.1: 935 | version "2.1.1" 936 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 937 | 938 | is-fullwidth-code-point@^2.0.0: 939 | version "2.0.0" 940 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 941 | 942 | is-fullwidth-code-point@^3.0.0: 943 | version "3.0.0" 944 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 945 | 946 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 947 | version "4.0.1" 948 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 949 | dependencies: 950 | is-extglob "^2.1.1" 951 | 952 | is-number@^7.0.0: 953 | version "7.0.0" 954 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 955 | 956 | is-promise@^2.1.0: 957 | version "2.1.0" 958 | resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 959 | 960 | is-regex@^1.0.5: 961 | version "1.0.5" 962 | resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 963 | dependencies: 964 | has "^1.0.3" 965 | 966 | is-symbol@^1.0.2: 967 | version "1.0.3" 968 | resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 969 | dependencies: 970 | has-symbols "^1.0.1" 971 | 972 | isexe@^2.0.0: 973 | version "2.0.0" 974 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 975 | 976 | js-tokens@^4.0.0: 977 | version "4.0.0" 978 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 979 | 980 | js-yaml@3.13.1, js-yaml@^3.13.1: 981 | version "3.13.1" 982 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 983 | dependencies: 984 | argparse "^1.0.7" 985 | esprima "^4.0.0" 986 | 987 | json-schema-traverse@^0.4.1: 988 | version "0.4.1" 989 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 990 | 991 | json-stable-stringify-without-jsonify@^1.0.1: 992 | version "1.0.1" 993 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 994 | 995 | levn@^0.3.0, levn@~0.3.0: 996 | version "0.3.0" 997 | resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 998 | dependencies: 999 | prelude-ls "~1.1.2" 1000 | type-check "~0.3.2" 1001 | 1002 | locate-path@^3.0.0: 1003 | version "3.0.0" 1004 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1005 | dependencies: 1006 | p-locate "^3.0.0" 1007 | path-exists "^3.0.0" 1008 | 1009 | lodash@^4.17.14, lodash@^4.17.15: 1010 | version "4.17.21" 1011 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1012 | 1013 | log-symbols@3.0.0: 1014 | version "3.0.0" 1015 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 1016 | dependencies: 1017 | chalk "^2.4.2" 1018 | 1019 | media-typer@0.3.0: 1020 | version "0.3.0" 1021 | resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1022 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1023 | 1024 | merge-descriptors@1.0.1: 1025 | version "1.0.1" 1026 | resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1027 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 1028 | 1029 | methods@~1.1.2: 1030 | version "1.1.2" 1031 | resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1032 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 1033 | 1034 | mime-db@1.52.0: 1035 | version "1.52.0" 1036 | resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1037 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1038 | 1039 | mime-types@~2.1.24, mime-types@~2.1.34: 1040 | version "2.1.35" 1041 | resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1042 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1043 | dependencies: 1044 | mime-db "1.52.0" 1045 | 1046 | mime@1.6.0: 1047 | version "1.6.0" 1048 | resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1049 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1050 | 1051 | mimic-fn@^2.1.0: 1052 | version "2.1.0" 1053 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1054 | 1055 | minimatch@3.0.4, minimatch@^3.0.4: 1056 | version "3.0.4" 1057 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1058 | dependencies: 1059 | brace-expansion "^1.1.7" 1060 | 1061 | minimist@0.0.8: 1062 | version "0.0.8" 1063 | resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1064 | 1065 | mkdirp@0.5.1, mkdirp@^0.5.1: 1066 | version "0.5.1" 1067 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1068 | dependencies: 1069 | minimist "0.0.8" 1070 | 1071 | mocha@^7.0.1: 1072 | version "7.1.0" 1073 | resolved "https://registry.npmjs.org/mocha/-/mocha-7.1.0.tgz#c784f579ad0904d29229ad6cb1e2514e4db7d249" 1074 | dependencies: 1075 | ansi-colors "3.2.3" 1076 | browser-stdout "1.3.1" 1077 | chokidar "3.3.0" 1078 | debug "3.2.6" 1079 | diff "3.5.0" 1080 | escape-string-regexp "1.0.5" 1081 | find-up "3.0.0" 1082 | glob "7.1.3" 1083 | growl "1.10.5" 1084 | he "1.2.0" 1085 | js-yaml "3.13.1" 1086 | log-symbols "3.0.0" 1087 | minimatch "3.0.4" 1088 | mkdirp "0.5.1" 1089 | ms "2.1.1" 1090 | node-environment-flags "1.0.6" 1091 | object.assign "4.1.0" 1092 | strip-json-comments "2.0.1" 1093 | supports-color "6.0.0" 1094 | which "1.3.1" 1095 | wide-align "1.1.3" 1096 | yargs "13.3.0" 1097 | yargs-parser "13.1.1" 1098 | yargs-unparser "1.6.0" 1099 | 1100 | ms@2.0.0: 1101 | version "2.0.0" 1102 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1103 | 1104 | ms@2.1.1: 1105 | version "2.1.1" 1106 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1107 | 1108 | ms@2.1.3: 1109 | version "2.1.3" 1110 | resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1111 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1112 | 1113 | ms@^2.1.1: 1114 | version "2.1.2" 1115 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1116 | 1117 | mute-stream@0.0.8: 1118 | version "0.0.8" 1119 | resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1120 | 1121 | natural-compare@^1.4.0: 1122 | version "1.4.0" 1123 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1124 | 1125 | negotiator@0.6.3: 1126 | version "0.6.3" 1127 | resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1128 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1129 | 1130 | nice-try@^1.0.4: 1131 | version "1.0.5" 1132 | resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1133 | 1134 | node-environment-flags@1.0.6: 1135 | version "1.0.6" 1136 | resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" 1137 | dependencies: 1138 | object.getownpropertydescriptors "^2.0.3" 1139 | semver "^5.7.0" 1140 | 1141 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1142 | version "3.0.0" 1143 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1144 | 1145 | object-inspect@^1.7.0: 1146 | version "1.7.0" 1147 | resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 1148 | 1149 | object-inspect@^1.9.0: 1150 | version "1.13.1" 1151 | resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" 1152 | integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== 1153 | 1154 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1155 | version "1.1.1" 1156 | resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1157 | 1158 | object.assign@4.1.0, object.assign@^4.1.0: 1159 | version "4.1.0" 1160 | resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1161 | dependencies: 1162 | define-properties "^1.1.2" 1163 | function-bind "^1.1.1" 1164 | has-symbols "^1.0.0" 1165 | object-keys "^1.0.11" 1166 | 1167 | object.getownpropertydescriptors@^2.0.3: 1168 | version "2.1.0" 1169 | resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" 1170 | dependencies: 1171 | define-properties "^1.1.3" 1172 | es-abstract "^1.17.0-next.1" 1173 | 1174 | on-finished@2.4.1: 1175 | version "2.4.1" 1176 | resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1177 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1178 | dependencies: 1179 | ee-first "1.1.1" 1180 | 1181 | once@^1.3.0: 1182 | version "1.4.0" 1183 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1184 | dependencies: 1185 | wrappy "1" 1186 | 1187 | onetime@^5.1.0: 1188 | version "5.1.0" 1189 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 1190 | dependencies: 1191 | mimic-fn "^2.1.0" 1192 | 1193 | optionator@^0.8.3: 1194 | version "0.8.3" 1195 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 1196 | dependencies: 1197 | deep-is "~0.1.3" 1198 | fast-levenshtein "~2.0.6" 1199 | levn "~0.3.0" 1200 | prelude-ls "~1.1.2" 1201 | type-check "~0.3.2" 1202 | word-wrap "~1.2.3" 1203 | 1204 | os-tmpdir@~1.0.2: 1205 | version "1.0.2" 1206 | resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1207 | 1208 | p-limit@^2.0.0: 1209 | version "2.2.2" 1210 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" 1211 | dependencies: 1212 | p-try "^2.0.0" 1213 | 1214 | p-locate@^3.0.0: 1215 | version "3.0.0" 1216 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1217 | dependencies: 1218 | p-limit "^2.0.0" 1219 | 1220 | p-try@^2.0.0: 1221 | version "2.2.0" 1222 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1223 | 1224 | parent-module@^1.0.0: 1225 | version "1.0.1" 1226 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1227 | dependencies: 1228 | callsites "^3.0.0" 1229 | 1230 | parseurl@~1.3.3: 1231 | version "1.3.3" 1232 | resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1233 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1234 | 1235 | path-exists@^3.0.0: 1236 | version "3.0.0" 1237 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1238 | 1239 | path-is-absolute@^1.0.0: 1240 | version "1.0.1" 1241 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1242 | 1243 | path-key@^2.0.1: 1244 | version "2.0.1" 1245 | resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1246 | 1247 | path-to-regexp@0.1.7: 1248 | version "0.1.7" 1249 | resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1250 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 1251 | 1252 | picomatch@^2.0.4: 1253 | version "2.2.1" 1254 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" 1255 | 1256 | prelude-ls@~1.1.2: 1257 | version "1.1.2" 1258 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1259 | 1260 | progress@^2.0.0: 1261 | version "2.0.3" 1262 | resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1263 | 1264 | proxy-addr@~2.0.7: 1265 | version "2.0.7" 1266 | resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1267 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1268 | dependencies: 1269 | forwarded "0.2.0" 1270 | ipaddr.js "1.9.1" 1271 | 1272 | punycode@^2.1.0: 1273 | version "2.1.1" 1274 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1275 | 1276 | qs@6.11.0: 1277 | version "6.11.0" 1278 | resolved "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1279 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1280 | dependencies: 1281 | side-channel "^1.0.4" 1282 | 1283 | range-parser@~1.2.1: 1284 | version "1.2.1" 1285 | resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1286 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1287 | 1288 | raw-body@2.5.1: 1289 | version "2.5.1" 1290 | resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1291 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1292 | dependencies: 1293 | bytes "3.1.2" 1294 | http-errors "2.0.0" 1295 | iconv-lite "0.4.24" 1296 | unpipe "1.0.0" 1297 | 1298 | readdirp@~3.2.0: 1299 | version "3.2.0" 1300 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" 1301 | dependencies: 1302 | picomatch "^2.0.4" 1303 | 1304 | regexpp@^2.0.1: 1305 | version "2.0.1" 1306 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1307 | 1308 | regexpp@^3.0.0: 1309 | version "3.0.0" 1310 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" 1311 | 1312 | require-directory@^2.1.1: 1313 | version "2.1.1" 1314 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1315 | 1316 | require-main-filename@^2.0.0: 1317 | version "2.0.0" 1318 | resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1319 | 1320 | resolve-from@^4.0.0: 1321 | version "4.0.0" 1322 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1323 | 1324 | restore-cursor@^3.1.0: 1325 | version "3.1.0" 1326 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1327 | dependencies: 1328 | onetime "^5.1.0" 1329 | signal-exit "^3.0.2" 1330 | 1331 | rimraf@2.6.3: 1332 | version "2.6.3" 1333 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1334 | dependencies: 1335 | glob "^7.1.3" 1336 | 1337 | rimraf@^2.6.3: 1338 | version "2.7.1" 1339 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1340 | dependencies: 1341 | glob "^7.1.3" 1342 | 1343 | run-async@^2.4.0: 1344 | version "2.4.0" 1345 | resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" 1346 | dependencies: 1347 | is-promise "^2.1.0" 1348 | 1349 | rxjs@^6.5.3: 1350 | version "6.5.4" 1351 | resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" 1352 | dependencies: 1353 | tslib "^1.9.0" 1354 | 1355 | safe-buffer@5.2.1: 1356 | version "5.2.1" 1357 | resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1358 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1359 | 1360 | "safer-buffer@>= 2.1.2 < 3": 1361 | version "2.1.2" 1362 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1363 | 1364 | semver@^5.5.0, semver@^5.7.0: 1365 | version "5.7.1" 1366 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1367 | 1368 | semver@^6.1.2, semver@^6.3.0: 1369 | version "6.3.0" 1370 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1371 | 1372 | send@0.18.0: 1373 | version "0.18.0" 1374 | resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1375 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1376 | dependencies: 1377 | debug "2.6.9" 1378 | depd "2.0.0" 1379 | destroy "1.2.0" 1380 | encodeurl "~1.0.2" 1381 | escape-html "~1.0.3" 1382 | etag "~1.8.1" 1383 | fresh "0.5.2" 1384 | http-errors "2.0.0" 1385 | mime "1.6.0" 1386 | ms "2.1.3" 1387 | on-finished "2.4.1" 1388 | range-parser "~1.2.1" 1389 | statuses "2.0.1" 1390 | 1391 | serve-static@1.15.0: 1392 | version "1.15.0" 1393 | resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1394 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1395 | dependencies: 1396 | encodeurl "~1.0.2" 1397 | escape-html "~1.0.3" 1398 | parseurl "~1.3.3" 1399 | send "0.18.0" 1400 | 1401 | set-blocking@^2.0.0: 1402 | version "2.0.0" 1403 | resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1404 | 1405 | set-function-length@^1.1.1: 1406 | version "1.1.1" 1407 | resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" 1408 | integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== 1409 | dependencies: 1410 | define-data-property "^1.1.1" 1411 | get-intrinsic "^1.2.1" 1412 | gopd "^1.0.1" 1413 | has-property-descriptors "^1.0.0" 1414 | 1415 | setprototypeof@1.2.0: 1416 | version "1.2.0" 1417 | resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1418 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1419 | 1420 | shebang-command@^1.2.0: 1421 | version "1.2.0" 1422 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1423 | dependencies: 1424 | shebang-regex "^1.0.0" 1425 | 1426 | shebang-regex@^1.0.0: 1427 | version "1.0.0" 1428 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1429 | 1430 | side-channel@^1.0.4: 1431 | version "1.0.4" 1432 | resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1433 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1434 | dependencies: 1435 | call-bind "^1.0.0" 1436 | get-intrinsic "^1.0.2" 1437 | object-inspect "^1.9.0" 1438 | 1439 | signal-exit@^3.0.2: 1440 | version "3.0.2" 1441 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1442 | 1443 | slice-ansi@^2.1.0: 1444 | version "2.1.0" 1445 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1446 | dependencies: 1447 | ansi-styles "^3.2.0" 1448 | astral-regex "^1.0.0" 1449 | is-fullwidth-code-point "^2.0.0" 1450 | 1451 | sprintf-js@~1.0.2: 1452 | version "1.0.3" 1453 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1454 | 1455 | statuses@2.0.1: 1456 | version "2.0.1" 1457 | resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1458 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1459 | 1460 | "string-width@^1.0.2 || 2": 1461 | version "2.1.1" 1462 | resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1463 | dependencies: 1464 | is-fullwidth-code-point "^2.0.0" 1465 | strip-ansi "^4.0.0" 1466 | 1467 | string-width@^3.0.0, string-width@^3.1.0: 1468 | version "3.1.0" 1469 | resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1470 | dependencies: 1471 | emoji-regex "^7.0.1" 1472 | is-fullwidth-code-point "^2.0.0" 1473 | strip-ansi "^5.1.0" 1474 | 1475 | string-width@^4.1.0: 1476 | version "4.2.0" 1477 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1478 | dependencies: 1479 | emoji-regex "^8.0.0" 1480 | is-fullwidth-code-point "^3.0.0" 1481 | strip-ansi "^6.0.0" 1482 | 1483 | string.prototype.trimleft@^2.1.1: 1484 | version "2.1.1" 1485 | resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" 1486 | dependencies: 1487 | define-properties "^1.1.3" 1488 | function-bind "^1.1.1" 1489 | 1490 | string.prototype.trimright@^2.1.1: 1491 | version "2.1.1" 1492 | resolved "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" 1493 | dependencies: 1494 | define-properties "^1.1.3" 1495 | function-bind "^1.1.1" 1496 | 1497 | strip-ansi@^4.0.0: 1498 | version "4.0.0" 1499 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1500 | dependencies: 1501 | ansi-regex "^3.0.0" 1502 | 1503 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1504 | version "5.2.0" 1505 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1506 | dependencies: 1507 | ansi-regex "^4.1.0" 1508 | 1509 | strip-ansi@^6.0.0: 1510 | version "6.0.0" 1511 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1512 | dependencies: 1513 | ansi-regex "^5.0.0" 1514 | 1515 | strip-json-comments@2.0.1: 1516 | version "2.0.1" 1517 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1518 | 1519 | strip-json-comments@^3.0.1: 1520 | version "3.0.1" 1521 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 1522 | 1523 | supports-color@6.0.0: 1524 | version "6.0.0" 1525 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 1526 | dependencies: 1527 | has-flag "^3.0.0" 1528 | 1529 | supports-color@^5.3.0: 1530 | version "5.5.0" 1531 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1532 | dependencies: 1533 | has-flag "^3.0.0" 1534 | 1535 | supports-color@^7.1.0: 1536 | version "7.1.0" 1537 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1538 | dependencies: 1539 | has-flag "^4.0.0" 1540 | 1541 | table@^5.2.3: 1542 | version "5.4.6" 1543 | resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1544 | dependencies: 1545 | ajv "^6.10.2" 1546 | lodash "^4.17.14" 1547 | slice-ansi "^2.1.0" 1548 | string-width "^3.0.0" 1549 | 1550 | text-table@^0.2.0: 1551 | version "0.2.0" 1552 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1553 | 1554 | through@^2.3.6: 1555 | version "2.3.8" 1556 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1557 | 1558 | tmp@^0.0.33: 1559 | version "0.0.33" 1560 | resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1561 | dependencies: 1562 | os-tmpdir "~1.0.2" 1563 | 1564 | to-regex-range@^5.0.1: 1565 | version "5.0.1" 1566 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1567 | dependencies: 1568 | is-number "^7.0.0" 1569 | 1570 | toidentifier@1.0.1: 1571 | version "1.0.1" 1572 | resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1573 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1574 | 1575 | tslib@^1.8.1, tslib@^1.9.0: 1576 | version "1.11.1" 1577 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 1578 | 1579 | tsutils@^3.17.1: 1580 | version "3.17.1" 1581 | resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1582 | dependencies: 1583 | tslib "^1.8.1" 1584 | 1585 | type-check@~0.3.2: 1586 | version "0.3.2" 1587 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1588 | dependencies: 1589 | prelude-ls "~1.1.2" 1590 | 1591 | type-fest@^0.11.0: 1592 | version "0.11.0" 1593 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 1594 | 1595 | type-fest@^0.8.1: 1596 | version "0.8.1" 1597 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1598 | 1599 | type-is@~1.6.18: 1600 | version "1.6.18" 1601 | resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1602 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1603 | dependencies: 1604 | media-typer "0.3.0" 1605 | mime-types "~2.1.24" 1606 | 1607 | typescript@^5.2.2: 1608 | version "5.2.2" 1609 | resolved "https://registry.npmmirror.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" 1610 | integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== 1611 | 1612 | unpipe@1.0.0, unpipe@~1.0.0: 1613 | version "1.0.0" 1614 | resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1615 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1616 | 1617 | uri-js@^4.2.2: 1618 | version "4.4.1" 1619 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1620 | dependencies: 1621 | punycode "^2.1.0" 1622 | 1623 | utils-merge@1.0.1: 1624 | version "1.0.1" 1625 | resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1626 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1627 | 1628 | v8-compile-cache@^2.0.3: 1629 | version "2.1.0" 1630 | resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1631 | 1632 | vary@~1.1.2: 1633 | version "1.1.2" 1634 | resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1635 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1636 | 1637 | vscode-test@^1.3.0: 1638 | version "1.3.0" 1639 | resolved "https://registry.npmjs.org/vscode-test/-/vscode-test-1.3.0.tgz#3310ab385d9b887b4c82e8f52be1030e7cf9493d" 1640 | dependencies: 1641 | http-proxy-agent "^2.1.0" 1642 | https-proxy-agent "^2.2.4" 1643 | rimraf "^2.6.3" 1644 | 1645 | which-module@^2.0.0: 1646 | version "2.0.0" 1647 | resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1648 | 1649 | which@1.3.1, which@^1.2.9: 1650 | version "1.3.1" 1651 | resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1652 | dependencies: 1653 | isexe "^2.0.0" 1654 | 1655 | wide-align@1.1.3: 1656 | version "1.1.3" 1657 | resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1658 | dependencies: 1659 | string-width "^1.0.2 || 2" 1660 | 1661 | word-wrap@~1.2.3: 1662 | version "1.2.3" 1663 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1664 | 1665 | wrap-ansi@^5.1.0: 1666 | version "5.1.0" 1667 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1668 | dependencies: 1669 | ansi-styles "^3.2.0" 1670 | string-width "^3.0.0" 1671 | strip-ansi "^5.0.0" 1672 | 1673 | wrappy@1: 1674 | version "1.0.2" 1675 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1676 | 1677 | write@1.0.3: 1678 | version "1.0.3" 1679 | resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1680 | dependencies: 1681 | mkdirp "^0.5.1" 1682 | 1683 | y18n@^4.0.0: 1684 | version "4.0.1" 1685 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" 1686 | 1687 | yargs-parser@13.1.1, yargs-parser@^13.1.1: 1688 | version "13.1.1" 1689 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" 1690 | dependencies: 1691 | camelcase "^5.0.0" 1692 | decamelize "^1.2.0" 1693 | 1694 | yargs-unparser@1.6.0: 1695 | version "1.6.0" 1696 | resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 1697 | dependencies: 1698 | flat "^4.1.0" 1699 | lodash "^4.17.15" 1700 | yargs "^13.3.0" 1701 | 1702 | yargs@13.3.0, yargs@^13.3.0: 1703 | version "13.3.0" 1704 | resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" 1705 | dependencies: 1706 | cliui "^5.0.0" 1707 | find-up "^3.0.0" 1708 | get-caller-file "^2.0.1" 1709 | require-directory "^2.1.1" 1710 | require-main-filename "^2.0.0" 1711 | set-blocking "^2.0.0" 1712 | string-width "^3.0.0" 1713 | which-module "^2.0.0" 1714 | y18n "^4.0.0" 1715 | yargs-parser "^13.1.1" 1716 | -------------------------------------------------------------------------------- /yn-github-copilot.js: -------------------------------------------------------------------------------- 1 | // 这个文件不建议使用,现在 Yank Note 的 AI copilot 扩展已经自带这个适配器了,写上接口地址即可工作 2 | // https://github.com/purocean/yank-note-extension/tree/main/packages/extension-ai-copilot 3 | 4 | window.registerPlugin({ 5 | name: 'yank-note-github-copilot', 6 | register: ctx => { 7 | const extensionId = 'yank-note-github-copilot' 8 | const enabled = ctx.lib.vue.ref(ctx.storage.get(`${extensionId}.enabled`) || true) 9 | const loading = ctx.lib.vue.ref(false) 10 | 11 | class CompletionProvider { 12 | monaco = undefined 13 | logger = ctx.utils.getLogger(extensionId) 14 | 15 | constructor (monaco) { 16 | this.monaco = monaco 17 | } 18 | 19 | freeInlineCompletions () { 20 | loading.value = false 21 | } 22 | 23 | handleItemDidShow () { 24 | loading.value = false 25 | } 26 | 27 | async provideInlineCompletions ( 28 | _model, 29 | position, 30 | context, 31 | token, 32 | ) { 33 | if (!enabled.value) { 34 | return { items: [] } 35 | } 36 | 37 | const content = ctx.editor.getValue() 38 | if (content.length > 1024 * 512 || content.length < 4) { 39 | return [] 40 | } 41 | 42 | await ctx.utils.sleep(1500) 43 | 44 | return { 45 | items: await this.provideSuggestions(content, position, context, token) 46 | } 47 | } 48 | 49 | async provideSuggestions (content, position, context, token) { 50 | if (token.isCancellationRequested) { 51 | return [] 52 | } 53 | 54 | token.onCancellationRequested(() => { 55 | loading.value = false 56 | }) 57 | 58 | try { 59 | const headers = { 'Content-Type': 'application/json' } 60 | const body = JSON.stringify({ 61 | language: 'markdown', 62 | content, 63 | triggerKind: context.triggerKind, 64 | line: position.lineNumber - 1, 65 | column: position.column - 1, 66 | }) 67 | 68 | loading.value = true 69 | const x = await ctx.api.proxyRequest( 70 | 'http://127.0.0.1:3223/calculateInlineCompletions', 71 | { headers, body: body, method: 'post' }, 72 | true 73 | ) 74 | 75 | const res = await x.json() 76 | 77 | if (token.isCancellationRequested) { 78 | return [] 79 | } 80 | 81 | if (!res || res.type !== 'success' || !res.items) { 82 | return [] 83 | } 84 | 85 | loading.value = false 86 | return res.items.map(x => { 87 | const range = new this.monaco.Range( 88 | x.range[0].line + 1, 89 | x.range[0].character + 1, 90 | x.range[1].line + 1, 91 | x.range[1].character + 1, 92 | ) 93 | 94 | return { 95 | text: x.displayText, 96 | insertText: { snippet: x.insertText }, 97 | range, 98 | } 99 | }) 100 | } catch (error) { 101 | loading.value = false 102 | ctx.ui.useToast().show('warning', 'Github Copilot:' + (error.message || `${error}`), 5000) 103 | throw error 104 | } 105 | } 106 | } 107 | 108 | ctx.editor.whenEditorReady().then(({ monaco }) => { 109 | monaco.languages.registerInlineCompletionsProvider( 110 | 'markdown', 111 | new CompletionProvider(monaco) 112 | ) 113 | }) 114 | 115 | 116 | ctx.lib.vue.watchEffect(() => { 117 | ctx.storage.set(`${extensionId}.enabled`, enabled.value) 118 | }) 119 | 120 | ctx.lib.vue.watch(() => [enabled.value, loading.value], () => { 121 | ctx.statusBar.refreshMenu() 122 | }, { immediate: true }) 123 | 124 | ctx.statusBar.tapMenus(menus => { 125 | menus[extensionId] = { 126 | id: extensionId, 127 | position: 'right', 128 | order: -2048, 129 | title: loading.value ? 'AI-Loading' : enabled.value ? 'AI-On' : 'AI-Off', 130 | onClick: () => { 131 | enabled.value = !enabled.value 132 | }, 133 | list: [] 134 | } 135 | }) 136 | } 137 | }); 138 | --------------------------------------------------------------------------------