statusbar-quick-actions 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DynamicLabelManager = void 0;
37
+ const vscode = __importStar(require("vscode"));
38
+ const https = __importStar(require("https"));
39
+ const http = __importStar(require("http"));
40
+ class DynamicLabelManager {
41
+ labelStates = new Map();
42
+ gitExtension = null;
43
+ async initialize() {
44
+ try {
45
+ const gitExt = vscode.extensions.getExtension("vscode.git");
46
+ if (gitExt) {
47
+ this.gitExtension = gitExt.isActive
48
+ ? gitExt.exports
49
+ : await gitExt.activate();
50
+ }
51
+ }
52
+ catch (error) {
53
+ console.warn("Git extension not available:", error);
54
+ }
55
+ }
56
+ async evaluateLabel(buttonId, field) {
57
+ try {
58
+ let value;
59
+ switch (field.type) {
60
+ case "time":
61
+ value = this.evaluateTimeLabel(field);
62
+ break;
63
+ case "url":
64
+ value = await this.evaluateUrlLabel(field);
65
+ break;
66
+ case "env":
67
+ value = this.evaluateEnvLabel(field);
68
+ break;
69
+ case "git":
70
+ value = await this.evaluateGitLabel(field);
71
+ break;
72
+ case "custom":
73
+ value = this.evaluateCustomLabel(field);
74
+ break;
75
+ default:
76
+ value = field.fallback || "N/A";
77
+ }
78
+ if (field.template) {
79
+ value = this.applyTemplate(field.template, value);
80
+ }
81
+ const state = {
82
+ fieldConfig: field,
83
+ lastValue: value,
84
+ lastUpdated: new Date(),
85
+ };
86
+ if (field.refreshInterval && field.refreshInterval > 0) {
87
+ this.setupRefreshTimer(buttonId, field);
88
+ }
89
+ this.labelStates.set(buttonId, state);
90
+ return value;
91
+ }
92
+ catch (error) {
93
+ const errorMessage = error instanceof Error ? error.message : String(error);
94
+ console.error(`Failed to evaluate dynamic label for ${buttonId}:`, error);
95
+ const state = {
96
+ fieldConfig: field,
97
+ lastValue: field.fallback || "Error",
98
+ lastUpdated: new Date(),
99
+ error: errorMessage,
100
+ };
101
+ this.labelStates.set(buttonId, state);
102
+ return field.fallback || "Error";
103
+ }
104
+ }
105
+ evaluateTimeLabel(field) {
106
+ const now = new Date();
107
+ const format = field.format || "HH:mm:ss";
108
+ try {
109
+ return this.formatDate(now, format);
110
+ }
111
+ catch (error) {
112
+ console.error("Failed to format time:", error);
113
+ return now.toLocaleTimeString();
114
+ }
115
+ }
116
+ formatDate(date, format) {
117
+ const pad = (n) => String(n).padStart(2, "0");
118
+ const replacements = {
119
+ YYYY: String(date.getFullYear()),
120
+ YY: String(date.getFullYear()).slice(-2),
121
+ MM: pad(date.getMonth() + 1),
122
+ DD: pad(date.getDate()),
123
+ HH: pad(date.getHours()),
124
+ hh: pad(date.getHours() % 12 || 12),
125
+ mm: pad(date.getMinutes()),
126
+ ss: pad(date.getSeconds()),
127
+ A: date.getHours() >= 12 ? "PM" : "AM",
128
+ a: date.getHours() >= 12 ? "pm" : "am",
129
+ };
130
+ let result = format;
131
+ for (const [pattern, value] of Object.entries(replacements)) {
132
+ result = result.replace(new RegExp(pattern, "g"), value);
133
+ }
134
+ return result;
135
+ }
136
+ async evaluateUrlLabel(field) {
137
+ if (!field.url) {
138
+ throw new Error("URL is required for url-type dynamic label");
139
+ }
140
+ return new Promise((resolve, reject) => {
141
+ const url = new URL(field.url);
142
+ const client = url.protocol === "https:" ? https : http;
143
+ const request = client.get(field.url, (response) => {
144
+ let data = "";
145
+ response.on("data", (chunk) => {
146
+ data += chunk;
147
+ });
148
+ response.on("end", () => {
149
+ try {
150
+ const json = JSON.parse(data);
151
+ resolve(JSON.stringify(json));
152
+ }
153
+ catch {
154
+ resolve(data.trim().substring(0, 100));
155
+ }
156
+ });
157
+ });
158
+ request.on("error", (error) => {
159
+ reject(error);
160
+ });
161
+ request.setTimeout(5000, () => {
162
+ request.destroy();
163
+ reject(new Error("Request timeout"));
164
+ });
165
+ });
166
+ }
167
+ evaluateEnvLabel(field) {
168
+ if (!field.envVar) {
169
+ throw new Error("Environment variable name is required");
170
+ }
171
+ const value = process.env[field.envVar];
172
+ if (value === undefined) {
173
+ throw new Error(`Environment variable '${field.envVar}' not found`);
174
+ }
175
+ return value;
176
+ }
177
+ async evaluateGitLabel(field) {
178
+ if (!this.gitExtension) {
179
+ throw new Error("Git extension not available");
180
+ }
181
+ if (!field.gitInfo) {
182
+ throw new Error("Git info type is required");
183
+ }
184
+ try {
185
+ const git = this.gitExtension.getAPI(1);
186
+ if (git.repositories.length === 0) {
187
+ throw new Error("No Git repository found");
188
+ }
189
+ const repo = git.repositories[0];
190
+ switch (field.gitInfo) {
191
+ case "branch":
192
+ return repo.state.HEAD?.name || "Unknown";
193
+ case "status": {
194
+ const changes = repo.state.workingTreeChanges.length +
195
+ repo.state.indexChanges.length;
196
+ return changes > 0 ? `${changes} changes` : "Clean";
197
+ }
198
+ case "remote":
199
+ return repo.state.HEAD?.upstream?.remote || "No remote";
200
+ default:
201
+ throw new Error(`Unknown git info type: ${field.gitInfo}`);
202
+ }
203
+ }
204
+ catch (error) {
205
+ const errorMessage = error instanceof Error ? error.message : String(error);
206
+ throw new Error(`Failed to get git info: ${errorMessage}`);
207
+ }
208
+ }
209
+ evaluateCustomLabel(field) {
210
+ if (!field.customFunction) {
211
+ throw new Error("Custom function name is required");
212
+ }
213
+ throw new Error(`Custom functions not yet implemented: ${field.customFunction}`);
214
+ }
215
+ applyTemplate(template, value) {
216
+ return template.replace(/\$\{value\}/g, value);
217
+ }
218
+ setupRefreshTimer(buttonId, field) {
219
+ const existingState = this.labelStates.get(buttonId);
220
+ if (existingState?.refreshTimer) {
221
+ clearInterval(existingState.refreshTimer);
222
+ }
223
+ if (!field.refreshInterval || field.refreshInterval <= 0) {
224
+ return;
225
+ }
226
+ const timer = setInterval(async () => {
227
+ try {
228
+ await this.evaluateLabel(buttonId, field);
229
+ this.onLabelRefresh?.(buttonId);
230
+ }
231
+ catch (error) {
232
+ console.error(`Failed to refresh label for ${buttonId}:`, error);
233
+ }
234
+ }, field.refreshInterval);
235
+ const state = this.labelStates.get(buttonId);
236
+ if (state) {
237
+ state.refreshTimer = timer;
238
+ }
239
+ }
240
+ onLabelRefresh;
241
+ getLabelState(buttonId) {
242
+ return this.labelStates.get(buttonId);
243
+ }
244
+ stopRefreshTimer(buttonId) {
245
+ const state = this.labelStates.get(buttonId);
246
+ if (state?.refreshTimer) {
247
+ clearInterval(state.refreshTimer);
248
+ state.refreshTimer = undefined;
249
+ }
250
+ }
251
+ stopAllRefreshTimers() {
252
+ for (const [buttonId] of this.labelStates) {
253
+ this.stopRefreshTimer(buttonId);
254
+ }
255
+ }
256
+ async refreshLabel(buttonId) {
257
+ const state = this.labelStates.get(buttonId);
258
+ if (!state) {
259
+ return null;
260
+ }
261
+ return await this.evaluateLabel(buttonId, state.fieldConfig);
262
+ }
263
+ clearLabelState(buttonId) {
264
+ this.stopRefreshTimer(buttonId);
265
+ this.labelStates.delete(buttonId);
266
+ }
267
+ dispose() {
268
+ this.stopAllRefreshTimers();
269
+ this.labelStates.clear();
270
+ }
271
+ }
272
+ exports.DynamicLabelManager = DynamicLabelManager;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-label.js","sourceRoot":"","sources":["../src/dynamic-label.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CommandExecutor = void 0;
37
+ const vscode = __importStar(require("vscode"));
38
+ const child_process_1 = require("child_process");
39
+ const util_1 = require("util");
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs"));
42
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
43
+ class CommandExecutor {
44
+ async execute(command, options) {
45
+ if (options.streaming?.enabled) {
46
+ return this.executeWithStreaming(command, options);
47
+ }
48
+ const startTime = Date.now();
49
+ const timeout = options.timeout || 30000;
50
+ try {
51
+ let cmd;
52
+ let args = [];
53
+ let fullCommand;
54
+ switch (command.type) {
55
+ case "npm":
56
+ cmd = "npm";
57
+ args = ["run", command.script || ""];
58
+ fullCommand = `${cmd} ${args.join(" ")}`;
59
+ break;
60
+ case "yarn":
61
+ cmd = "yarn";
62
+ args = [command.script || ""];
63
+ fullCommand = `${cmd} ${args.join(" ")}`;
64
+ break;
65
+ case "pnpm":
66
+ cmd = "pnpm";
67
+ args = ["run", command.script || ""];
68
+ fullCommand = `${cmd} ${args.join(" ")}`;
69
+ break;
70
+ case "bun":
71
+ cmd = "bun";
72
+ args = ["run", command.script || ""];
73
+ fullCommand = `${cmd} ${args.join(" ")}`;
74
+ break;
75
+ case "bunx":
76
+ cmd = "bunx";
77
+ args = [command.script || ""].concat(command.args || []);
78
+ fullCommand = `${cmd} ${args.join(" ")}`;
79
+ break;
80
+ case "npx":
81
+ cmd = "npx";
82
+ args = [command.script || ""].concat(command.args || []);
83
+ fullCommand = `${cmd} ${args.join(" ")}`;
84
+ break;
85
+ case "pnpx":
86
+ cmd = "pnpx";
87
+ args = [command.script || ""].concat(command.args || []);
88
+ fullCommand = `${cmd} ${args.join(" ")}`;
89
+ break;
90
+ case "github":
91
+ cmd = "gh";
92
+ args = [command.command || ""].concat(command.args || []);
93
+ fullCommand = `${cmd} ${args.join(" ")}`;
94
+ break;
95
+ case "vscode":
96
+ await vscode.commands.executeCommand(command.command || "", ...(command.args || []));
97
+ return {
98
+ code: 0,
99
+ stdout: "VSCode command executed successfully",
100
+ stderr: "",
101
+ duration: Date.now() - startTime,
102
+ timestamp: new Date(),
103
+ command: command.command || "",
104
+ };
105
+ case "task": {
106
+ const tasks = await vscode.tasks.fetchTasks();
107
+ const task = tasks.find((t) => t.name === command.command);
108
+ if (task) {
109
+ await vscode.tasks.executeTask(task);
110
+ return {
111
+ code: 0,
112
+ stdout: `Task '${command.command}' started successfully`,
113
+ stderr: "",
114
+ duration: Date.now() - startTime,
115
+ timestamp: new Date(),
116
+ command: command.command || "",
117
+ };
118
+ }
119
+ else {
120
+ throw new Error(`Task '${command.command}' not found`);
121
+ }
122
+ }
123
+ case "detect": {
124
+ const workspacePath = options.workingDirectory ||
125
+ vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ||
126
+ "";
127
+ const detectedPm = await this.detectPackageManager(workspacePath);
128
+ if (!detectedPm) {
129
+ throw new Error("Could not detect package manager");
130
+ }
131
+ cmd = detectedPm;
132
+ args =
133
+ detectedPm === "yarn"
134
+ ? [command.script || ""]
135
+ : ["run", command.script || ""];
136
+ fullCommand = `${cmd} ${args.join(" ")}`;
137
+ break;
138
+ }
139
+ case "shell":
140
+ default:
141
+ cmd = command.command || "";
142
+ args = command.args || [];
143
+ fullCommand = args.length > 0 ? `${cmd} ${args.join(" ")}` : cmd;
144
+ break;
145
+ }
146
+ const cwd = options.workingDirectory ||
147
+ vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ||
148
+ process.cwd();
149
+ const env = { ...process.env, ...options.environment };
150
+ try {
151
+ const { stdout, stderr } = await execAsync(fullCommand, {
152
+ cwd,
153
+ env,
154
+ timeout,
155
+ maxBuffer: 10 * 1024 * 1024,
156
+ windowsHide: true,
157
+ });
158
+ return {
159
+ code: 0,
160
+ stdout: stdout.toString().trim(),
161
+ stderr: stderr.toString().trim(),
162
+ duration: Date.now() - startTime,
163
+ timestamp: new Date(),
164
+ command: fullCommand,
165
+ };
166
+ }
167
+ catch (execError) {
168
+ const error = execError;
169
+ return {
170
+ code: error.code || -1,
171
+ stdout: error.stdout?.toString().trim() || "",
172
+ stderr: error.stderr?.toString().trim() || error.message || "",
173
+ duration: Date.now() - startTime,
174
+ timestamp: new Date(),
175
+ command: fullCommand,
176
+ };
177
+ }
178
+ }
179
+ catch (error) {
180
+ return {
181
+ code: -1,
182
+ stdout: "",
183
+ stderr: error instanceof Error ? error.message : String(error),
184
+ duration: Date.now() - startTime,
185
+ timestamp: new Date(),
186
+ command: command.command || "",
187
+ };
188
+ }
189
+ }
190
+ buildCommand(command) {
191
+ let cmd;
192
+ let args = [];
193
+ let fullCommand;
194
+ switch (command.type) {
195
+ case "npm":
196
+ cmd = "npm";
197
+ args = ["run", command.script || ""];
198
+ fullCommand = `${cmd} ${args.join(" ")}`;
199
+ break;
200
+ case "yarn":
201
+ cmd = "yarn";
202
+ args = [command.script || ""];
203
+ fullCommand = `${cmd} ${args.join(" ")}`;
204
+ break;
205
+ case "pnpm":
206
+ cmd = "pnpm";
207
+ args = ["run", command.script || ""];
208
+ fullCommand = `${cmd} ${args.join(" ")}`;
209
+ break;
210
+ case "bun":
211
+ cmd = "bun";
212
+ args = ["run", command.script || ""];
213
+ fullCommand = `${cmd} ${args.join(" ")}`;
214
+ break;
215
+ case "bunx":
216
+ cmd = "bunx";
217
+ args = [command.script || ""].concat(command.args || []);
218
+ fullCommand = `${cmd} ${args.join(" ")}`;
219
+ break;
220
+ case "npx":
221
+ cmd = "npx";
222
+ args = [command.script || ""].concat(command.args || []);
223
+ fullCommand = `${cmd} ${args.join(" ")}`;
224
+ break;
225
+ case "pnpx":
226
+ cmd = "pnpx";
227
+ args = [command.script || ""].concat(command.args || []);
228
+ fullCommand = `${cmd} ${args.join(" ")}`;
229
+ break;
230
+ case "github":
231
+ cmd = "gh";
232
+ args = [command.command || ""].concat(command.args || []);
233
+ fullCommand = `${cmd} ${args.join(" ")}`;
234
+ break;
235
+ case "shell":
236
+ default:
237
+ cmd = command.command || "";
238
+ args = command.args || [];
239
+ fullCommand = args.length > 0 ? `${cmd} ${args.join(" ")}` : cmd;
240
+ break;
241
+ }
242
+ return { cmd, args, fullCommand };
243
+ }
244
+ async executeWithStreaming(command, options) {
245
+ const startTime = Date.now();
246
+ const { cmd, args, fullCommand } = this.buildCommand(command);
247
+ const cwd = options.workingDirectory ||
248
+ vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ||
249
+ process.cwd();
250
+ const env = { ...process.env, ...options.environment };
251
+ return new Promise((resolve, reject) => {
252
+ const child = (0, child_process_1.spawn)(cmd, args, {
253
+ cwd,
254
+ env,
255
+ shell: true,
256
+ windowsHide: true,
257
+ });
258
+ let stdout = "";
259
+ let stderr = "";
260
+ child.stdout?.on("data", (data) => {
261
+ const text = data.toString();
262
+ stdout += text;
263
+ if (options.streaming?.onStdout) {
264
+ options.streaming.onStdout(text);
265
+ }
266
+ });
267
+ child.stderr?.on("data", (data) => {
268
+ const text = data.toString();
269
+ stderr += text;
270
+ if (options.streaming?.onStderr) {
271
+ options.streaming.onStderr(text);
272
+ }
273
+ });
274
+ child.on("close", (code) => {
275
+ resolve({
276
+ code: code || 0,
277
+ stdout: stdout.trim(),
278
+ stderr: stderr.trim(),
279
+ duration: Date.now() - startTime,
280
+ timestamp: new Date(),
281
+ command: fullCommand,
282
+ });
283
+ });
284
+ child.on("error", (error) => {
285
+ reject(error);
286
+ });
287
+ if (options.timeout) {
288
+ setTimeout(() => {
289
+ child.kill();
290
+ reject(new Error(`Command execution timeout after ${options.timeout}ms`));
291
+ }, options.timeout);
292
+ }
293
+ });
294
+ }
295
+ async isCommandAvailable(commandType) {
296
+ try {
297
+ const checkCmd = process.platform === "win32" ? "where" : "which";
298
+ await execAsync(`${checkCmd} ${commandType}`, {
299
+ windowsHide: true,
300
+ });
301
+ return true;
302
+ }
303
+ catch {
304
+ return false;
305
+ }
306
+ }
307
+ async getAvailablePackageManagers() {
308
+ const managers = [];
309
+ const commands = ["npm", "yarn", "pnpm", "bun"];
310
+ for (const manager of commands) {
311
+ if (await this.isCommandAvailable(manager)) {
312
+ managers.push(manager);
313
+ }
314
+ }
315
+ return managers;
316
+ }
317
+ async detectPackageManager(workspacePath) {
318
+ if (!workspacePath) {
319
+ workspacePath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || "";
320
+ }
321
+ if (!workspacePath) {
322
+ return null;
323
+ }
324
+ try {
325
+ const lockFiles = [
326
+ { file: "bun.lockb", manager: "bun" },
327
+ { file: "pnpm-lock.yaml", manager: "pnpm" },
328
+ { file: "yarn.lock", manager: "yarn" },
329
+ { file: "package-lock.json", manager: "npm" },
330
+ ];
331
+ for (const { file, manager } of lockFiles) {
332
+ const lockPath = path.join(workspacePath, file);
333
+ if (fs.existsSync(lockPath)) {
334
+ if (await this.isCommandAvailable(manager)) {
335
+ return manager;
336
+ }
337
+ }
338
+ }
339
+ const packageJsonPath = path.join(workspacePath, "package.json");
340
+ if (fs.existsSync(packageJsonPath)) {
341
+ const availableManagers = await this.getAvailablePackageManagers();
342
+ return availableManagers[0] || null;
343
+ }
344
+ return null;
345
+ }
346
+ catch (error) {
347
+ console.error("Error detecting package manager:", error);
348
+ return null;
349
+ }
350
+ }
351
+ }
352
+ exports.CommandExecutor = CommandExecutor;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}