From 107587e3b142ed8d775d67a220d7926f18a01c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=81=E5=AE=81?= <383514580@qq.com> Date: Sat, 22 Feb 2020 01:08:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 ++- src/extension.ts | 1 - src/inserLog.ts | 23 +++++++++++++++++++++++ src/useCommand.ts | 28 +++++++++++++++++++++------- src/useCompletion.ts | 25 ++++++++++++++++++++++--- yarn.lock | 16 +++++++++++++++- 6 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 src/inserLog.ts diff --git a/package.json b/package.json index f0edb3e..d2baf5e 100644 --- a/package.json +++ b/package.json @@ -369,6 +369,7 @@ } }, "dependencies": { + "axios": "^0.19.2", "transliteration": "^2.1.8" } -} \ No newline at end of file +} diff --git a/src/extension.ts b/src/extension.ts index 9ee8765..eb58e94 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,7 +7,6 @@ const RULES: { title: string, rule: RegExp, examples: string[] }[] = require('.. import useCommand from './useCommand'; import useCompletion from './useCompletion'; - export function activate(context: ExtensionContext) { useCommand(context, RULES); useCompletion(context, RULES); diff --git a/src/inserLog.ts b/src/inserLog.ts new file mode 100644 index 0000000..48ae696 --- /dev/null +++ b/src/inserLog.ts @@ -0,0 +1,23 @@ +import axios from 'axios'; + +const http = axios.create({ + baseURL: 'https://leancloud.cn:443/1.1/classes/', + timeout: 1000, + headers: { + "X-LC-Id": "BKaqtaJScQuqKtkAyl5jeloo-gzGzoHsz", + "X-LC-Key": "y41qiVPTwnzLIgbDcEzcwHit", + "Content-Type": "application/json" + } +}); + +export default function ({ vscodeVersion, extensionVersion, language, rule, title, method }: Record) { + http.post('https://leancloud.cn:443/1.1/classes/Log', { + vscodeVersion, + language, + rule, + title, + extensionVersion, + method + }); +}; + diff --git a/src/useCommand.ts b/src/useCommand.ts index 6106347..3d93a2f 100644 --- a/src/useCommand.ts +++ b/src/useCommand.ts @@ -1,22 +1,36 @@ -import * as vscode from "vscode"; +import {window,version,commands,Range,ExtensionContext,extensions} from "vscode"; import { Rule } from './interface'; -export default function (context: vscode.ExtensionContext, RULES: Rule[]) { +import inserLog from './inserLog'; + +export default function (context: ExtensionContext, RULES: Rule[]) { RULES.forEach(({ title, rule }, index) => { - let disposable = vscode.commands.registerCommand(`extension.rule${index}`, () => { - const editor = vscode.window.activeTextEditor; + let disposable = commands.registerCommand(`extension.rule${index}`, () => { + const editor = window.activeTextEditor; if (editor) { const { selections } = editor; editor.edit(editBuilder => { selections.forEach(selection => { const { start, end } = selection; - const range = new vscode.Range(start, end); + const range = new Range(start, end); editBuilder.replace(range, String(rule)); }); }); - vscode.window.showInformationMessage(`已插入正则: ${title}`); + + // 日志 + const language = window.activeTextEditor ? window.activeTextEditor.document.languageId as string : ''; + const e = extensions.getExtension('russell.any-rule') + inserLog({ + vscodeVersion: version, + language, + rule: String(rule), + title, + extensionVersion: e && e.packageJSON.version, + method: 'Command' + }); + window.showInformationMessage(`已插入正则: ${title}`); } else { - vscode.window.showWarningMessage('any-rule: 只有在编辑文本的时候才可以使用!'); + window.showWarningMessage('any-rule: 只有在编辑文本的时候才可以使用!'); } }); context.subscriptions.push(disposable); diff --git a/src/useCompletion.ts b/src/useCompletion.ts index 6724b51..118784b 100644 --- a/src/useCompletion.ts +++ b/src/useCompletion.ts @@ -1,7 +1,8 @@ -import { ExtensionContext, CompletionItem, CompletionItemKind, languages, Disposable, workspace, window, commands, TextDocument, Position, Range, Selection, MarkdownString } from "vscode"; +import { ExtensionContext, version, CompletionItemKind, languages, Disposable, Extension, window, commands, TextDocument, Position, Range, Selection, MarkdownString, extensions } from "vscode"; import { Rule } from './interface'; import { COMPLETION_TRIGGER_ID } from './constant'; // import { slugify } from 'transliteration'; +import inserLog from './inserLog'; export default function (context: ExtensionContext, RULES: Rule[]) { // commands.registerCommand('functions.insertRegex', insertRule); @@ -27,8 +28,26 @@ export default function (context: ExtensionContext, RULES: Rule[]) { // } }).then(item => { if (!item) return - insertRule(document, position, item.rule) - window.showInformationMessage(item.rule); + insertRule(document, position, item.rule); + + const language = window.activeTextEditor ? window.activeTextEditor.document.languageId as string : ''; + + // 日志 + const e = extensions.getExtension('russell.any-rule') + inserLog({ + vscodeVersion: version, + language, + rule: item.rule, + title: item.label, + extensionVersion: e && e.packageJSON.version, + method: 'QuickPick' + }); + + // https://github.com/any86/any-rule/issues/new?title=%E6%9D%A5%E8%87%AAvscode%E7%9A%84%E5%8F%8D%E9%A6%88(1.4.2%20-%20java) + window.showInformationMessage(`已插入正则: "${item.label}"`, '🦕图解正则', '🚀反馈问题', version, language).then(value => { + + // window.showInformationMessage(); + }); }); return void 0; diff --git a/yarn.lock b/yarn.lock index 5e10019..09bd9ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -116,6 +116,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -221,7 +228,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -debug@3.1.0: +debug@3.1.0, debug@=3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -352,6 +359,13 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"