@nockdev/cli 1.0.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +85 -0
  3. package/bin/nock.js +17 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +149 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/core/plugins.d.ts +3 -0
  9. package/dist/core/plugins.d.ts.map +1 -0
  10. package/dist/core/plugins.js +90 -0
  11. package/dist/core/plugins.js.map +1 -0
  12. package/dist/core/telemetry.d.ts +2 -0
  13. package/dist/core/telemetry.d.ts.map +1 -0
  14. package/dist/core/telemetry.js +63 -0
  15. package/dist/core/telemetry.js.map +1 -0
  16. package/dist/core/version.d.ts +4 -0
  17. package/dist/core/version.d.ts.map +1 -0
  18. package/dist/core/version.js +23 -0
  19. package/dist/core/version.js.map +1 -0
  20. package/dist/index.d.ts +7 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +8 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/plugins/manager.d.ts +77 -0
  25. package/dist/plugins/manager.d.ts.map +1 -0
  26. package/dist/plugins/manager.js +474 -0
  27. package/dist/plugins/manager.js.map +1 -0
  28. package/dist/plugins/types.d.ts +131 -0
  29. package/dist/plugins/types.d.ts.map +1 -0
  30. package/dist/plugins/types.js +4 -0
  31. package/dist/plugins/types.js.map +1 -0
  32. package/dist/utils/constants.d.ts +11 -0
  33. package/dist/utils/constants.d.ts.map +1 -0
  34. package/dist/utils/constants.js +13 -0
  35. package/dist/utils/constants.js.map +1 -0
  36. package/dist/utils/errors.d.ts +17 -0
  37. package/dist/utils/errors.d.ts.map +1 -0
  38. package/dist/utils/errors.js +32 -0
  39. package/dist/utils/errors.js.map +1 -0
  40. package/dist/utils/exit-codes.d.ts +22 -0
  41. package/dist/utils/exit-codes.d.ts.map +1 -0
  42. package/dist/utils/exit-codes.js +23 -0
  43. package/dist/utils/exit-codes.js.map +1 -0
  44. package/dist/utils/manifest-cache.d.ts +71 -0
  45. package/dist/utils/manifest-cache.d.ts.map +1 -0
  46. package/dist/utils/manifest-cache.js +154 -0
  47. package/dist/utils/manifest-cache.js.map +1 -0
  48. package/dist/utils/official-plugins.d.ts +13 -0
  49. package/dist/utils/official-plugins.d.ts.map +1 -0
  50. package/dist/utils/official-plugins.js +25 -0
  51. package/dist/utils/official-plugins.js.map +1 -0
  52. package/dist/utils/telemetry.d.ts +58 -0
  53. package/dist/utils/telemetry.d.ts.map +1 -0
  54. package/dist/utils/telemetry.js +191 -0
  55. package/dist/utils/telemetry.js.map +1 -0
  56. package/package.json +74 -0
@@ -0,0 +1,474 @@
1
+ // packages/cli/src/plugins/manager.ts
2
+ // Plugin Manager v1.0.0
3
+ import * as fs from "node:fs";
4
+ import * as path from "node:path";
5
+ import { pathToFileURL } from "node:url";
6
+ import { homedir, platform } from "node:os";
7
+ import { execSync } from "node:child_process";
8
+ import pc from "picocolors";
9
+ import { CLI_VERSION, NOCK_DIR_NAME, PLUGINS_DIR_NAME, MANIFEST_FILE } from "../utils/constants.js";
10
+ export class PluginManager {
11
+ plugins = new Map();
12
+ linkedPlugins = new Map(); // topic -> path
13
+ nockDir;
14
+ pluginsDir;
15
+ manifestPath;
16
+ options;
17
+ constructor(options = {}) {
18
+ this.nockDir = path.join(homedir(), NOCK_DIR_NAME);
19
+ this.pluginsDir = options.pluginsDir || path.join(this.nockDir, PLUGINS_DIR_NAME);
20
+ this.manifestPath = path.join(this.nockDir, MANIFEST_FILE);
21
+ this.options = {
22
+ verbose: options.verbose || false,
23
+ quiet: options.quiet || false,
24
+ pluginsDir: this.pluginsDir,
25
+ };
26
+ this.ensureDirectories();
27
+ }
28
+ ensureDirectories() {
29
+ if (!fs.existsSync(this.nockDir)) {
30
+ fs.mkdirSync(this.nockDir, { recursive: true });
31
+ }
32
+ if (!fs.existsSync(this.pluginsDir)) {
33
+ fs.mkdirSync(this.pluginsDir, { recursive: true });
34
+ }
35
+ }
36
+ /**
37
+ * Load all installed plugins
38
+ */
39
+ async loadAll() {
40
+ const manifest = this.readManifest();
41
+ // Load installed plugins
42
+ for (const packageName of manifest.installed) {
43
+ try {
44
+ await this.load(packageName);
45
+ }
46
+ catch (error) {
47
+ if (!this.options.quiet) {
48
+ console.warn(pc.yellow(`⚠ Failed to load ${packageName}: ${error.message}`));
49
+ }
50
+ }
51
+ }
52
+ // Load linked plugins (local dev)
53
+ for (const linkedPath of manifest.linked || []) {
54
+ try {
55
+ await this.loadFromPath(linkedPath);
56
+ }
57
+ catch (error) {
58
+ if (!this.options.quiet) {
59
+ console.warn(pc.yellow(`⚠ Failed to load linked ${linkedPath}: ${error.message}`));
60
+ }
61
+ }
62
+ }
63
+ if (this.options.verbose && this.plugins.size > 0) {
64
+ console.log(pc.dim(`Loaded ${this.plugins.size} plugin(s)`));
65
+ }
66
+ }
67
+ /**
68
+ * Load a single plugin by package name
69
+ */
70
+ async load(packageName) {
71
+ // Check node_modules in plugins directory
72
+ const pluginPath = path.join(this.pluginsDir, "node_modules", packageName);
73
+ if (!fs.existsSync(pluginPath)) {
74
+ throw new Error(`Plugin not installed: ${packageName}`);
75
+ }
76
+ // Get package.json to find main entry
77
+ const pkgJsonPath = path.join(pluginPath, "package.json");
78
+ if (!fs.existsSync(pkgJsonPath)) {
79
+ throw new Error(`Invalid plugin: missing package.json`);
80
+ }
81
+ const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
82
+ const mainEntry = pkgJson.main || "dist/index.js";
83
+ const entryPath = path.join(pluginPath, mainEntry);
84
+ if (!fs.existsSync(entryPath)) {
85
+ throw new Error(`Plugin entry not found: ${mainEntry}`);
86
+ }
87
+ // Dynamic import (ESM)
88
+ const fileUrl = pathToFileURL(entryPath).href;
89
+ const module = await import(fileUrl);
90
+ const plugin = module.default;
91
+ // Validate plugin structure
92
+ this.validate(plugin);
93
+ // Register by topic
94
+ this.plugins.set(plugin.topic, plugin);
95
+ // Initialize if hook exists
96
+ if (plugin.init) {
97
+ await plugin.init(this.createContext());
98
+ }
99
+ }
100
+ /**
101
+ * Load plugin from absolute path (for linked plugins)
102
+ */
103
+ async loadFromPath(pluginPath) {
104
+ if (!fs.existsSync(pluginPath)) {
105
+ throw new Error(`Plugin path not found: ${pluginPath}`);
106
+ }
107
+ const pkgJsonPath = path.join(pluginPath, "package.json");
108
+ if (!fs.existsSync(pkgJsonPath)) {
109
+ throw new Error(`Invalid plugin: missing package.json at ${pluginPath}`);
110
+ }
111
+ const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
112
+ const mainEntry = pkgJson.main || "dist/index.js";
113
+ const entryPath = path.join(pluginPath, mainEntry);
114
+ if (!fs.existsSync(entryPath)) {
115
+ throw new Error(`Plugin entry not found: ${mainEntry}`);
116
+ }
117
+ const fileUrl = pathToFileURL(entryPath).href;
118
+ const module = await import(fileUrl);
119
+ const plugin = module.default;
120
+ this.validate(plugin);
121
+ this.plugins.set(plugin.topic, plugin);
122
+ this.linkedPlugins.set(plugin.topic, pluginPath);
123
+ if (plugin.init) {
124
+ await plugin.init(this.createContext());
125
+ }
126
+ }
127
+ /**
128
+ * Link a local plugin for development
129
+ */
130
+ async link(pluginPath) {
131
+ const absolutePath = path.resolve(pluginPath);
132
+ if (!fs.existsSync(absolutePath)) {
133
+ throw new Error(`Path not found: ${absolutePath}`);
134
+ }
135
+ if (!this.options.quiet) {
136
+ console.log(pc.cyan(`🔗 Linking ${absolutePath}...`));
137
+ }
138
+ try {
139
+ await this.loadFromPath(absolutePath);
140
+ // Update manifest
141
+ const manifest = this.readManifest();
142
+ if (!manifest.linked.includes(absolutePath)) {
143
+ manifest.linked.push(absolutePath);
144
+ manifest.lastUpdated = new Date().toISOString();
145
+ this.writeManifest(manifest);
146
+ }
147
+ const plugin = [...this.plugins.values()].find(p => this.linkedPlugins.get(p.topic) === absolutePath);
148
+ if (!this.options.quiet) {
149
+ console.log(pc.green(`✔ Linked ${plugin?.name || absolutePath}`));
150
+ if (plugin) {
151
+ console.log(pc.dim(` Topic: ${plugin.topic} | ${plugin.commands.length} commands`));
152
+ console.log(pc.dim(` Usage: nock ${plugin.topic} <command>`));
153
+ }
154
+ }
155
+ }
156
+ catch (error) {
157
+ throw new Error(`Failed to link plugin: ${error.message}`);
158
+ }
159
+ }
160
+ /**
161
+ * Unlink a local plugin
162
+ */
163
+ async unlink(pluginPath) {
164
+ const absolutePath = path.resolve(pluginPath);
165
+ if (!this.options.quiet) {
166
+ console.log(pc.cyan(`🔗 Unlinking ${absolutePath}...`));
167
+ }
168
+ // Find plugin by linked path
169
+ const topic = [...this.linkedPlugins.entries()].find(([, p]) => p === absolutePath)?.[0];
170
+ if (topic) {
171
+ const plugin = this.plugins.get(topic);
172
+ if (plugin?.destroy) {
173
+ await plugin.destroy();
174
+ }
175
+ this.plugins.delete(topic);
176
+ this.linkedPlugins.delete(topic);
177
+ }
178
+ // Update manifest
179
+ const manifest = this.readManifest();
180
+ manifest.linked = manifest.linked.filter(p => p !== absolutePath);
181
+ manifest.lastUpdated = new Date().toISOString();
182
+ this.writeManifest(manifest);
183
+ if (!this.options.quiet) {
184
+ console.log(pc.green(`✔ Unlinked ${absolutePath}`));
185
+ }
186
+ }
187
+ /**
188
+ * Install plugin from npm
189
+ */
190
+ async install(packageName) {
191
+ if (!this.options.quiet) {
192
+ console.log(pc.cyan(`📦 Installing ${packageName}...`));
193
+ }
194
+ try {
195
+ // Ensure package.json exists in plugins dir
196
+ const pkgJsonPath = path.join(this.pluginsDir, "package.json");
197
+ if (!fs.existsSync(pkgJsonPath)) {
198
+ fs.writeFileSync(pkgJsonPath, JSON.stringify({ private: true, type: "module" }, null, 2));
199
+ }
200
+ // Install via npm
201
+ execSync(`npm install ${packageName}`, {
202
+ cwd: this.pluginsDir,
203
+ stdio: this.options.verbose ? "inherit" : "pipe",
204
+ });
205
+ // Update manifest
206
+ const manifest = this.readManifest();
207
+ if (!manifest.installed.includes(packageName)) {
208
+ manifest.installed.push(packageName);
209
+ manifest.lastUpdated = new Date().toISOString();
210
+ this.writeManifest(manifest);
211
+ }
212
+ // Load the plugin
213
+ await this.load(packageName);
214
+ if (!this.options.quiet) {
215
+ const plugin = [...this.plugins.values()].find((p) => p.name === packageName);
216
+ console.log(pc.green(`✔ Installed ${packageName}`));
217
+ if (plugin) {
218
+ console.log(pc.dim(` Topic: ${plugin.topic} | ${plugin.commands.length} commands`));
219
+ console.log(pc.dim(` Usage: nock ${plugin.topic} <command>`));
220
+ }
221
+ }
222
+ }
223
+ catch (error) {
224
+ throw new Error(`Failed to install ${packageName}: ${error.message}`);
225
+ }
226
+ }
227
+ /**
228
+ * Remove plugin
229
+ */
230
+ async remove(packageName) {
231
+ if (!this.options.quiet) {
232
+ console.log(pc.cyan(`🗑 Removing ${packageName}...`));
233
+ }
234
+ try {
235
+ // Find plugin by name to get topic
236
+ const plugin = [...this.plugins.values()].find((p) => p.name === packageName);
237
+ // Call destroy hook if exists
238
+ if (plugin?.destroy) {
239
+ await plugin.destroy();
240
+ }
241
+ // Uninstall via npm
242
+ execSync(`npm uninstall ${packageName}`, {
243
+ cwd: this.pluginsDir,
244
+ stdio: this.options.verbose ? "inherit" : "pipe",
245
+ });
246
+ // Update manifest
247
+ const manifest = this.readManifest();
248
+ manifest.installed = manifest.installed.filter((p) => p !== packageName);
249
+ manifest.lastUpdated = new Date().toISOString();
250
+ this.writeManifest(manifest);
251
+ // Remove from memory
252
+ if (plugin) {
253
+ this.plugins.delete(plugin.topic);
254
+ }
255
+ if (!this.options.quiet) {
256
+ console.log(pc.green(`✔ Removed ${packageName}`));
257
+ }
258
+ }
259
+ catch (error) {
260
+ throw new Error(`Failed to remove ${packageName}: ${error.message}`);
261
+ }
262
+ }
263
+ /**
264
+ * Update plugin(s)
265
+ */
266
+ async update(packageName) {
267
+ const toUpdate = packageName
268
+ ? [packageName]
269
+ : this.readManifest().installed;
270
+ for (const pkg of toUpdate) {
271
+ if (!this.options.quiet) {
272
+ console.log(pc.cyan(`⬆ Updating ${pkg}...`));
273
+ }
274
+ try {
275
+ execSync(`npm update ${pkg}`, {
276
+ cwd: this.pluginsDir,
277
+ stdio: this.options.verbose ? "inherit" : "pipe",
278
+ });
279
+ // Reload
280
+ await this.load(pkg);
281
+ if (!this.options.quiet) {
282
+ const plugin = [...this.plugins.values()].find((p) => p.name === pkg);
283
+ console.log(pc.green(`✔ Updated ${pkg} to ${plugin?.version || "latest"}`));
284
+ }
285
+ }
286
+ catch (error) {
287
+ if (!this.options.quiet) {
288
+ console.warn(pc.yellow(`⚠ Failed to update ${pkg}: ${error.message}`));
289
+ }
290
+ }
291
+ }
292
+ }
293
+ /**
294
+ * Route command to plugin
295
+ */
296
+ async route(topic, args, flags) {
297
+ const plugin = this.plugins.get(topic);
298
+ if (!plugin)
299
+ return false;
300
+ const [commandName, ...restArgs] = args;
301
+ // If no command, show plugin help
302
+ if (!commandName) {
303
+ this.showPluginHelp(plugin);
304
+ return true;
305
+ }
306
+ // Find command by name or alias
307
+ const command = plugin.commands.find((c) => c.name === commandName || c.aliases?.includes(commandName));
308
+ if (!command) {
309
+ // Enhanced error with suggestions
310
+ const available = plugin.commands.map(c => c.name);
311
+ const suggestion = this.findSimilar(commandName, available);
312
+ console.log(pc.red(`✖ Unknown command: ${topic} ${commandName}`));
313
+ if (suggestion) {
314
+ console.log(pc.yellow(` Did you mean: ${pc.cyan(`nock ${topic} ${suggestion}`)}?`));
315
+ }
316
+ console.log(pc.dim(`\n Run ${pc.cyan(`nock ${topic} --help`)} for available commands.`));
317
+ return true;
318
+ }
319
+ // Run prerun hooks
320
+ await this.runHook("prerun", { command, args: restArgs, flags });
321
+ // Execute
322
+ await command.run(restArgs, flags);
323
+ // Run postrun hooks
324
+ await this.runHook("postrun", { command, args: restArgs, flags });
325
+ return true;
326
+ }
327
+ /**
328
+ * List installed plugins
329
+ */
330
+ list() {
331
+ return Array.from(this.plugins.values()).map((p) => ({
332
+ name: p.name,
333
+ version: p.version,
334
+ topic: p.topic,
335
+ description: p.description,
336
+ commandCount: p.commands.length,
337
+ path: path.join(this.pluginsDir, "node_modules", p.name),
338
+ }));
339
+ }
340
+ /**
341
+ * Get all commands from all plugins
342
+ */
343
+ getAllCommands() {
344
+ return Array.from(this.plugins.values()).flatMap((p) => p.commands);
345
+ }
346
+ /**
347
+ * Show help for all plugins
348
+ */
349
+ showAllPluginsHelp() {
350
+ if (this.plugins.size === 0)
351
+ return;
352
+ console.log(pc.bold("\nInstalled Plugins:"));
353
+ for (const plugin of this.plugins.values()) {
354
+ console.log(` ${pc.green(plugin.topic)} (${plugin.name}@${plugin.version})`);
355
+ console.log(` ${plugin.description}`);
356
+ }
357
+ }
358
+ showPluginHelp(plugin) {
359
+ console.log(`
360
+ ${pc.cyan(plugin.name)} ${pc.dim(`v${plugin.version}`)}
361
+ ${plugin.description}
362
+
363
+ ${pc.bold("Commands:")}
364
+ ${plugin.commands
365
+ .map((c) => ` ${pc.green(c.name)}${c.aliases?.length ? pc.dim(` (${c.aliases.join(", ")})`) : ""}
366
+ ${c.description}`)
367
+ .join("\n")}
368
+
369
+ ${pc.bold("Usage:")}
370
+ nock ${plugin.topic} <command> [options]
371
+ `);
372
+ }
373
+ validate(plugin) {
374
+ if (!plugin.name)
375
+ throw new Error("Invalid plugin: missing name");
376
+ if (!plugin.version)
377
+ throw new Error("Invalid plugin: missing version");
378
+ if (!plugin.topic)
379
+ throw new Error("Invalid plugin: missing topic");
380
+ if (!plugin.description)
381
+ throw new Error("Invalid plugin: missing description");
382
+ if (!plugin.commands || !Array.isArray(plugin.commands) || plugin.commands.length === 0) {
383
+ throw new Error("Invalid plugin: commands must be non-empty array");
384
+ }
385
+ }
386
+ createContext() {
387
+ return {
388
+ cliVersion: CLI_VERSION,
389
+ pluginsDir: this.pluginsDir,
390
+ projectRoot: process.cwd(),
391
+ verbose: this.options.verbose,
392
+ quiet: this.options.quiet,
393
+ homeDir: homedir(),
394
+ platform: platform(),
395
+ };
396
+ }
397
+ readManifest() {
398
+ if (!fs.existsSync(this.manifestPath)) {
399
+ return { installed: [], linked: [], lastUpdated: "" };
400
+ }
401
+ try {
402
+ const manifest = JSON.parse(fs.readFileSync(this.manifestPath, "utf-8"));
403
+ return { ...manifest, linked: manifest.linked || [] };
404
+ }
405
+ catch {
406
+ return { installed: [], linked: [], lastUpdated: "" };
407
+ }
408
+ }
409
+ writeManifest(manifest) {
410
+ fs.writeFileSync(this.manifestPath, JSON.stringify(manifest, null, 2));
411
+ }
412
+ /**
413
+ * Run hooks of a specific type across all plugins
414
+ */
415
+ async runHook(event, payload) {
416
+ for (const plugin of this.plugins.values()) {
417
+ if (!plugin.hooks)
418
+ continue;
419
+ const hooks = plugin.hooks
420
+ .filter(h => h.event === event)
421
+ .sort((a, b) => (a.priority || 100) - (b.priority || 100));
422
+ for (const hook of hooks) {
423
+ try {
424
+ await hook.handler(payload);
425
+ }
426
+ catch (error) {
427
+ if (!this.options.quiet) {
428
+ console.warn(pc.yellow(`⚠ Hook ${event} failed: ${error.message}`));
429
+ }
430
+ }
431
+ }
432
+ }
433
+ }
434
+ /**
435
+ * Find similar command name for suggestions (Levenshtein distance)
436
+ */
437
+ findSimilar(input, candidates) {
438
+ const threshold = 3; // Max edit distance
439
+ let best = null;
440
+ let bestDistance = Infinity;
441
+ for (const candidate of candidates) {
442
+ const distance = this.levenshtein(input.toLowerCase(), candidate.toLowerCase());
443
+ if (distance < bestDistance && distance <= threshold) {
444
+ bestDistance = distance;
445
+ best = candidate;
446
+ }
447
+ }
448
+ return best;
449
+ }
450
+ /**
451
+ * Simple Levenshtein distance implementation
452
+ */
453
+ levenshtein(a, b) {
454
+ const matrix = [];
455
+ for (let i = 0; i <= b.length; i++) {
456
+ matrix[i] = [i];
457
+ }
458
+ for (let j = 0; j <= a.length; j++) {
459
+ matrix[0][j] = j;
460
+ }
461
+ for (let i = 1; i <= b.length; i++) {
462
+ for (let j = 1; j <= a.length; j++) {
463
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
464
+ matrix[i][j] = matrix[i - 1][j - 1];
465
+ }
466
+ else {
467
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
468
+ }
469
+ }
470
+ }
471
+ return matrix[b.length][a.length];
472
+ }
473
+ }
474
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Main plugin interface - all plugins must implement this
3
+ */
4
+ export interface NockPlugin {
5
+ /** Package name (e.g., "@nockdev/awf") */
6
+ name: string;
7
+ /** Semantic version */
8
+ version: string;
9
+ /** Topic/namespace for commands (e.g., "awf") */
10
+ topic: string;
11
+ /** Short description */
12
+ description: string;
13
+ /** Commands provided by this plugin */
14
+ commands: PluginCommand[];
15
+ /** Lifecycle hooks (optional) */
16
+ hooks?: PluginHook[];
17
+ /** Plugin initialization (optional) */
18
+ init?(context: PluginContext): Promise<void>;
19
+ /** Plugin shutdown (optional) */
20
+ destroy?(): Promise<void>;
21
+ }
22
+ /**
23
+ * Command definition
24
+ */
25
+ export interface PluginCommand {
26
+ /** Command name (e.g., "init") */
27
+ name: string;
28
+ /** Full command ID (e.g., "awf:init") */
29
+ id: string;
30
+ /** Description shown in help */
31
+ description: string;
32
+ /** Aliases (e.g., ["i"] for init) */
33
+ aliases?: string[];
34
+ /** Flag definitions */
35
+ flags?: Record<string, FlagDefinition>;
36
+ /** Arguments definition */
37
+ args?: ArgumentDefinition[];
38
+ /** Usage examples */
39
+ examples?: string[];
40
+ /** Execute the command */
41
+ run(args: string[], flags: Record<string, unknown>): Promise<void>;
42
+ }
43
+ /**
44
+ * Flag definition for command options
45
+ */
46
+ export interface FlagDefinition {
47
+ /** Value type */
48
+ type: "string" | "boolean" | "number";
49
+ /** Description for help text */
50
+ description: string;
51
+ /** Short alias (e.g., "v" for --verbose) */
52
+ alias?: string;
53
+ /** Default value */
54
+ default?: unknown;
55
+ /** Whether flag is required */
56
+ required?: boolean;
57
+ /** Valid choices for string type */
58
+ choices?: string[];
59
+ }
60
+ /**
61
+ * Argument definition for positional args
62
+ */
63
+ export interface ArgumentDefinition {
64
+ /** Argument name */
65
+ name: string;
66
+ /** Description for help text */
67
+ description: string;
68
+ /** Whether argument is required */
69
+ required?: boolean;
70
+ /** Whether multiple values are allowed */
71
+ multiple?: boolean;
72
+ }
73
+ /**
74
+ * Hook definition for plugin lifecycle events
75
+ */
76
+ export interface PluginHook {
77
+ /** Event name (e.g., "cli:beforeRun") */
78
+ event: string;
79
+ /** Handler function */
80
+ handler: (payload: unknown) => Promise<void>;
81
+ /** Priority (lower = earlier) */
82
+ priority?: number;
83
+ }
84
+ /**
85
+ * Context passed to plugins during initialization
86
+ */
87
+ export interface PluginContext {
88
+ /** CLI version */
89
+ cliVersion: string;
90
+ /** Plugins directory path */
91
+ pluginsDir: string;
92
+ /** Current working directory */
93
+ projectRoot: string;
94
+ /** Verbose mode enabled */
95
+ verbose: boolean;
96
+ /** Quiet mode enabled */
97
+ quiet: boolean;
98
+ /** User home directory */
99
+ homeDir: string;
100
+ /** OS platform */
101
+ platform: NodeJS.Platform;
102
+ }
103
+ /**
104
+ * Installed plugin metadata
105
+ */
106
+ export interface InstalledPlugin {
107
+ /** Package name */
108
+ name: string;
109
+ /** Version */
110
+ version: string;
111
+ /** Topic/namespace */
112
+ topic: string;
113
+ /** Description */
114
+ description: string;
115
+ /** Number of commands */
116
+ commandCount: number;
117
+ /** Installation path */
118
+ path: string;
119
+ }
120
+ /**
121
+ * Plugin Manager options
122
+ */
123
+ export interface PluginManagerOptions {
124
+ /** Enable verbose logging */
125
+ verbose?: boolean;
126
+ /** Suppress all output */
127
+ quiet?: boolean;
128
+ /** Custom plugins directory */
129
+ pluginsDir?: string;
130
+ }
131
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // packages/cli/src/plugins/types.ts
2
+ // Plugin Interface Definitions v1.0.0
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,sCAAsC"}
@@ -0,0 +1,11 @@
1
+ /** CLI version - SSoT */
2
+ export declare const CLI_VERSION = "1.0.0";
3
+ /** CLI name */
4
+ export declare const CLI_NAME = "@nockdev/cli";
5
+ /** Default plugins directory name */
6
+ export declare const PLUGINS_DIR_NAME = "plugins";
7
+ /** Manifest file name */
8
+ export declare const MANIFEST_FILE = "plugins.json";
9
+ /** NOCK home directory name */
10
+ export declare const NOCK_DIR_NAME = ".nock";
11
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAe;AACf,eAAO,MAAM,QAAQ,iBAAiB,CAAC;AAEvC,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,yBAAyB;AACzB,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,+BAA+B;AAC/B,eAAO,MAAM,aAAa,UAAU,CAAC"}