From 05cf7e7256418f51dbe59f771bfa781b8f23b8ae Mon Sep 17 00:00:00 2001 From: root Date: Fri, 17 Jul 2026 02:20:43 +0200 Subject: [PATCH] =?UTF-8?q?feature:=20sweep=20flotte=20=E2=80=94=20converg?= =?UTF-8?q?ence=20canons=20(validation=20zod/OpenAPI,=20buildCsv,=20no-ale?= =?UTF-8?q?rt=E2=86=92toast/sonner,=20publicUser=20anti-leak,=20dates=20da?= =?UTF-8?q?yjs,=20appshell/profil,=20lastSeenAt,=20scrollRestoration)=20+?= =?UTF-8?q?=20fixes=20divers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++--- eslint.config.js | 8 ++++---- package-lock.json | 4 ++-- package.json | 2 +- src/extension.ts | 34 +++++++++++++++++----------------- src/test/extension.test.ts | 20 ++++---------------- tsconfig.json | 26 ++++++++++---------------- 7 files changed, 42 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index f9e9230..b40874d 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,15 @@ collect stats about a user's activity in vscode ## Features it can track : + - file opening - file saving - window focus ## Extension Settings -* `vscodestat.setUrl`: function to set the remote server's url -this will set the variable vscodestat.url -* `vscodestat.callUrl`: funciton to test if it works +- `vscodestat.setUrl`: function to set the remote server's url + this will set the variable vscodestat.url +- `vscodestat.callUrl`: funciton to test if it works Sample url : https://xxxxxx/vscodestat?userName=raf diff --git a/eslint.config.js b/eslint.config.js index 705cc79..4d1b19a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -32,10 +32,10 @@ export default [ format: ['camelCase', 'PascalCase'], }, ], - 'curly': 'warn', - 'eqeqeq': 'warn', + curly: 'warn', + eqeqeq: 'warn', 'no-throw-literal': 'warn', - 'semi': 'off', + semi: 'off', // Règles générales réutilisées de flatbay 'prefer-const': ['error', { destructuring: 'all' }], 'no-var': 'error', @@ -47,7 +47,7 @@ export default [ 'one-var-declaration-per-line': ['error', 'always'], 'one-var': ['error', 'never'], 'vars-on-top': 'error', - 'yoda': 'error', + yoda: 'error', 'prefer-arrow-callback': 'error', 'no-implicit-globals': 'error', 'no-labels': 'error', diff --git a/package-lock.json b/package-lock.json index 2dec62e..0acdd5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscodestat", - "version": "1.7.1", + "version": "1.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscodestat", - "version": "1.7.1", + "version": "1.8.0", "license": "ISC", "devDependencies": { "@eslint/js": "^10.0.1", diff --git a/package.json b/package.json index 9788d4d..b61b535 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "vscodestat", "displayName": "vscodestat", - "version": "1.7.1", + "version": "1.8.0", "description": "", "categories": [ "Other" diff --git a/src/extension.ts b/src/extension.ts index 4d77fb8..d34a1eb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,7 +7,7 @@ export function activate(context: vscode.ExtensionContext) { const disposable2 = vscode.commands.registerCommand('vscodestat.setUrl', async () => { const url = await vscode.window.showInputBox({ prompt: 'Enter the URL:', - placeHolder: '' + placeHolder: '', }); if (url) { @@ -24,13 +24,13 @@ export function activate(context: vscode.ExtensionContext) { vscode.window.showWarningMessage('URL is not set. Please set the URL first.'); return; } - await makeHttpRequest({ event: 'ping'}); + await makeHttpRequest({ event: 'ping' }); vscode.window.showInformationMessage('callUrl done'); }); context.subscriptions.push(disposable3); // detecte une ouverture de fichier / nouvel onglet - vscode.window.onDidChangeActiveTextEditor(async editor => { + vscode.window.onDidChangeActiveTextEditor(async (editor) => { if (editor) { const filePath = editor.document.fileName; console.log('Opened file:', filePath); @@ -41,7 +41,7 @@ export function activate(context: vscode.ExtensionContext) { }); // detecte une sauvegarde de fichier - vscode.workspace.onDidSaveTextDocument(async document => { + vscode.workspace.onDidSaveTextDocument(async (document) => { const filePath = document.fileName; console.log('Saved file:', filePath); @@ -50,25 +50,25 @@ export function activate(context: vscode.ExtensionContext) { }); // detecte un focus / blur de la fenetre vscode - vscode.window.onDidChangeWindowState(async event => { + vscode.window.onDidChangeWindowState(async (event) => { console.log('Window state changed:', event.focused); await makeHttpRequest({ event: 'focus', focused: event.focused }); }); } -export function deactivate() { } +export function deactivate() {} /* -* extractProjectName will extract a project name from a path -* /root/docker/monitoringserver/controller/homeController.js -* => monitoringserver -*/ + * extractProjectName will extract a project name from a path + * /root/docker/monitoringserver/controller/homeController.js + * => monitoringserver + */ export function extractProjectName(path: string) { // des c'est l'un des fois l'autre ? // /root/docker/vscodestat/src/extension.ts // \root\docker\vscodestat\src\extension.ts path = path.replace(/\\/g, '/'); - + const match = path.match(/\/docker\/([^/]+)/); if (match) { return match[1]; @@ -78,8 +78,8 @@ export function extractProjectName(path: string) { } /* -* fonction qui envoie un event au serveur -*/ + * fonction qui envoie un event au serveur + */ async function makeHttpRequest(json: Object) { try { const url = vscode.workspace.getConfiguration().get('vscodestat.url') as string; @@ -91,16 +91,16 @@ async function makeHttpRequest(json: Object) { const rawResponse = await fetch(url, { method: 'POST', headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json' + Accept: 'application/json', + 'Content-Type': 'application/json', }, - body: JSON.stringify(json) + body: JSON.stringify(json), }); const content = await rawResponse.json(); console.log(content); // vscode.window.showInformationMessage('HTTP request successful.'); - } catch (error:any) { + } catch (error: any) { console.error('Error making HTTP request:', error); // vscode.window.showErrorMessage('Error making HTTP request: ' + error.message); } diff --git a/src/test/extension.test.ts b/src/test/extension.test.ts index 463cf9b..ba2ae51 100644 --- a/src/test/extension.test.ts +++ b/src/test/extension.test.ts @@ -3,17 +3,11 @@ import { extractProjectName } from '../extension.js'; suite('extractProjectName', () => { test('extrait le nom de projet depuis un path Linux /root/docker/X', () => { - assert.strictEqual( - extractProjectName('/root/docker/vscodestat/src/extension.ts'), - 'vscodestat' - ); + assert.strictEqual(extractProjectName('/root/docker/vscodestat/src/extension.ts'), 'vscodestat'); }); test('extrait le nom de projet depuis un path Windows \\root\\docker\\X', () => { - assert.strictEqual( - extractProjectName('C:\\root\\docker\\monitoringserver\\controller\\homeController.js'), - 'monitoringserver' - ); + assert.strictEqual(extractProjectName('C:\\root\\docker\\monitoringserver\\controller\\homeController.js'), 'monitoringserver'); }); test('retourne null pour un path hors /docker/', () => { @@ -25,16 +19,10 @@ suite('extractProjectName', () => { }); test('extrait correctement quand le chemin contient docker plusieurs fois', () => { - assert.strictEqual( - extractProjectName('/root/docker/flatbay/lib/docker/foo.js'), - 'flatbay' - ); + assert.strictEqual(extractProjectName('/root/docker/flatbay/lib/docker/foo.js'), 'flatbay'); }); test('gere les paths avec tirets et chiffres', () => { - assert.strictEqual( - extractProjectName('/root/docker/gextra6/bin/console'), - 'gextra6' - ); + assert.strictEqual(extractProjectName('/root/docker/gextra6/bin/console'), 'gextra6'); }); }); diff --git a/tsconfig.json b/tsconfig.json index c357a56..d09382f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,12 @@ { - "compilerOptions": { - "module": "Node16", - "target": "ES2022", - "outDir": "out", - "lib": [ - "ES2022" - ], - "types": [ - "node", - "mocha", - "vscode" - ], - "sourceMap": true, - "rootDir": "src", - "strict": true - } + "compilerOptions": { + "module": "Node16", + "target": "ES2022", + "outDir": "out", + "lib": ["ES2022"], + "types": ["node", "mocha", "vscode"], + "sourceMap": true, + "rootDir": "src", + "strict": true + } }