@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.
- package/CHANGELOG.md +31 -0
- package/README.md +85 -0
- package/bin/nock.js +17 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +149 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/plugins.d.ts +3 -0
- package/dist/core/plugins.d.ts.map +1 -0
- package/dist/core/plugins.js +90 -0
- package/dist/core/plugins.js.map +1 -0
- package/dist/core/telemetry.d.ts +2 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +63 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/version.d.ts +4 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +23 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/manager.d.ts +77 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +474 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/types.d.ts +131 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +4 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/utils/constants.d.ts +11 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +13 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.d.ts +17 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +32 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/exit-codes.d.ts +22 -0
- package/dist/utils/exit-codes.d.ts.map +1 -0
- package/dist/utils/exit-codes.js +23 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/manifest-cache.d.ts +71 -0
- package/dist/utils/manifest-cache.d.ts.map +1 -0
- package/dist/utils/manifest-cache.js +154 -0
- package/dist/utils/manifest-cache.js.map +1 -0
- package/dist/utils/official-plugins.d.ts +13 -0
- package/dist/utils/official-plugins.d.ts.map +1 -0
- package/dist/utils/official-plugins.js +25 -0
- package/dist/utils/official-plugins.js.map +1 -0
- package/dist/utils/telemetry.d.ts +58 -0
- package/dist/utils/telemetry.d.ts.map +1 -0
- package/dist/utils/telemetry.js +191 -0
- package/dist/utils/telemetry.js.map +1 -0
- package/package.json +74 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@nockdev/cli` will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2026-02-06
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Initial release of NOCK CLI
|
|
13
|
+
- Microkernel plugin architecture
|
|
14
|
+
- Plugin Manager with install/remove/update
|
|
15
|
+
- Core commands: help, version, plugins
|
|
16
|
+
- TypeScript type exports for plugin authors
|
|
17
|
+
- ESM module support
|
|
18
|
+
- Node.js 18+ requirement
|
|
19
|
+
|
|
20
|
+
### Plugin System
|
|
21
|
+
|
|
22
|
+
- Dynamic ESM plugin loading
|
|
23
|
+
- Plugin lifecycle hooks (init/destroy)
|
|
24
|
+
- Command routing by topic
|
|
25
|
+
- Flag definitions support
|
|
26
|
+
|
|
27
|
+
### Developer Experience
|
|
28
|
+
|
|
29
|
+
- Colored terminal output
|
|
30
|
+
- Verbose/quiet modes
|
|
31
|
+
- Standard POSIX exit codes
|
package/README.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# @nockdev/cli
|
|
2
|
+
|
|
3
|
+
> 🚀 Extensible Development Platform by NockDev
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@nockdev/cli)
|
|
6
|
+
[](https://nodejs.org)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @nockdev/cli
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
nock --help # Show help
|
|
19
|
+
nock plugins install @nockdev/awf # Install a plugin
|
|
20
|
+
nock awf init # Use plugin commands
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Commands
|
|
24
|
+
|
|
25
|
+
| Command | Description |
|
|
26
|
+
| ---------------------------- | ---------------------- |
|
|
27
|
+
| `nock --help` | Show help |
|
|
28
|
+
| `nock version` | Show version info |
|
|
29
|
+
| `nock plugins list` | List installed plugins |
|
|
30
|
+
| `nock plugins install <pkg>` | Install plugin |
|
|
31
|
+
| `nock plugins remove <pkg>` | Remove plugin |
|
|
32
|
+
| `nock plugins update [pkg]` | Update plugin(s) |
|
|
33
|
+
| `nock telemetry status` | Telemetry status |
|
|
34
|
+
| `nock cache clear` | Clear command cache |
|
|
35
|
+
|
|
36
|
+
## Auto-Install
|
|
37
|
+
|
|
38
|
+
Official plugins are auto-installed on first use:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
$ nock awf init
|
|
42
|
+
âš¡ Plugin 'awf' is not installed.
|
|
43
|
+
â—† Would you like to install @nockdev/awf?
|
|
44
|
+
📦 Installing @nockdev/awf...
|
|
45
|
+
✔ Installed @nockdev/awf@6.2.0
|
|
46
|
+
🚀 Running: nock awf init
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Plugin Development
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
import type { NockPlugin } from "@nockdev/cli";
|
|
53
|
+
|
|
54
|
+
const myPlugin: NockPlugin = {
|
|
55
|
+
name: "@my/plugin",
|
|
56
|
+
version: "1.0.0",
|
|
57
|
+
topic: "my",
|
|
58
|
+
description: "My awesome plugin",
|
|
59
|
+
commands: [
|
|
60
|
+
{
|
|
61
|
+
name: "hello",
|
|
62
|
+
id: "my:hello",
|
|
63
|
+
description: "Say hello",
|
|
64
|
+
run: async () => console.log("Hello!"),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default myPlugin;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Official Plugins
|
|
73
|
+
|
|
74
|
+
| Plugin | Description |
|
|
75
|
+
| ------------------------------------------------------------ | ---------------------------------------- |
|
|
76
|
+
| [`@nockdev/awf`](https://www.npmjs.com/package/@nockdev/awf) | AI dev assistant — 57 skills, 21 IDEs |
|
|
77
|
+
| [`@nockdev/hsa`](https://www.npmjs.com/package/@nockdev/hsa) | HSA MCP Server — semantic context engine |
|
|
78
|
+
|
|
79
|
+
## Requirements
|
|
80
|
+
|
|
81
|
+
- Node.js ≥ 18.0.0
|
|
82
|
+
|
|
83
|
+
## License
|
|
84
|
+
|
|
85
|
+
MIT © NockDev
|
package/bin/nock.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* NOCK CLI - Extensible Development Platform
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
* @author NockDev
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* nock --help Show help
|
|
9
|
+
* nock plugins list List installed plugins
|
|
10
|
+
* nock plugins install <pkg> Install a plugin
|
|
11
|
+
* nock <plugin> <command> Run plugin command
|
|
12
|
+
*/
|
|
13
|
+
import('../dist/cli.js').catch((err) => {
|
|
14
|
+
console.error('Failed to load CLI:', err.message);
|
|
15
|
+
console.error('\nPlease run: npm run build');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
});
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// packages/cli/src/cli.ts
|
|
2
|
+
// NOCK CLI - Core Entry Point v1.0.0
|
|
3
|
+
import mri from "mri";
|
|
4
|
+
import pc from "picocolors";
|
|
5
|
+
import * as prompts from "@clack/prompts";
|
|
6
|
+
import { PluginManager } from "./plugins/manager.js";
|
|
7
|
+
import { pluginsCommand } from "./core/plugins.js";
|
|
8
|
+
import { telemetryCommand } from "./core/telemetry.js";
|
|
9
|
+
import { versionCommand, getVersion } from "./core/version.js";
|
|
10
|
+
import { EXIT_CODES } from "./utils/exit-codes.js";
|
|
11
|
+
import { manifestCache } from "./utils/manifest-cache.js";
|
|
12
|
+
import { getOfficialPlugin } from "./utils/official-plugins.js";
|
|
13
|
+
const VERSION = getVersion();
|
|
14
|
+
const HELP = `
|
|
15
|
+
${pc.cyan("NOCK CLI")} ${pc.dim(`v${VERSION}`)}
|
|
16
|
+
Extensible Development Platform by NockDev
|
|
17
|
+
|
|
18
|
+
${pc.bold("Usage:")}
|
|
19
|
+
nock [command] [options]
|
|
20
|
+
nock <plugin> <command> [options]
|
|
21
|
+
|
|
22
|
+
${pc.bold("Core Commands:")}
|
|
23
|
+
${pc.green("help")} Show this help
|
|
24
|
+
${pc.green("version")} Show version info
|
|
25
|
+
${pc.green("plugins")} Manage plugins
|
|
26
|
+
${pc.dim("list")} List installed plugins
|
|
27
|
+
${pc.dim("install <pkg>")} Install plugin from npm
|
|
28
|
+
${pc.dim("remove <pkg>")} Remove plugin
|
|
29
|
+
${pc.dim("update [pkg]")} Update plugin(s)
|
|
30
|
+
${pc.dim("link <path>")} Link local plugin (dev)
|
|
31
|
+
${pc.dim("unlink <path>")} Unlink local plugin
|
|
32
|
+
${pc.green("telemetry")} Manage anonymous usage data
|
|
33
|
+
${pc.dim("status")} Show telemetry status
|
|
34
|
+
${pc.dim("enable")} Enable telemetry
|
|
35
|
+
${pc.dim("disable")} Disable telemetry
|
|
36
|
+
${pc.green("cache")} Manage manifest cache
|
|
37
|
+
${pc.dim("clear")} Clear command cache
|
|
38
|
+
|
|
39
|
+
${pc.bold("Examples:")}
|
|
40
|
+
${pc.dim("$")} nock plugins install @nockdev/awf
|
|
41
|
+
${pc.dim("$")} nock awf init
|
|
42
|
+
${pc.dim("$")} nock awf add react typescript
|
|
43
|
+
${pc.dim("$")} nock plugins link ./my-plugin
|
|
44
|
+
|
|
45
|
+
${pc.bold("Documentation:")}
|
|
46
|
+
${pc.dim("https://github.com/nockasdd/domyh-awf-code")}
|
|
47
|
+
`;
|
|
48
|
+
async function main() {
|
|
49
|
+
const argv = mri(process.argv.slice(2), {
|
|
50
|
+
boolean: ["help", "version", "verbose", "quiet"],
|
|
51
|
+
string: ["config"],
|
|
52
|
+
alias: {
|
|
53
|
+
h: "help",
|
|
54
|
+
v: "version",
|
|
55
|
+
V: "verbose",
|
|
56
|
+
q: "quiet",
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
const [command, ...args] = argv._;
|
|
60
|
+
// --version (no command)
|
|
61
|
+
if (argv.version && !command) {
|
|
62
|
+
console.log(VERSION);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// --help or no command
|
|
66
|
+
if (argv.help || !command) {
|
|
67
|
+
console.log(HELP);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Initialize Plugin Manager
|
|
71
|
+
const plugins = new PluginManager({
|
|
72
|
+
verbose: argv.verbose,
|
|
73
|
+
quiet: argv.quiet,
|
|
74
|
+
});
|
|
75
|
+
try {
|
|
76
|
+
// Load installed plugins
|
|
77
|
+
await plugins.loadAll();
|
|
78
|
+
// Core commands
|
|
79
|
+
switch (command) {
|
|
80
|
+
case "help":
|
|
81
|
+
console.log(HELP);
|
|
82
|
+
plugins.showAllPluginsHelp();
|
|
83
|
+
return;
|
|
84
|
+
case "version":
|
|
85
|
+
versionCommand(plugins);
|
|
86
|
+
return;
|
|
87
|
+
case "plugins":
|
|
88
|
+
case "plugin":
|
|
89
|
+
await pluginsCommand(args, argv, plugins);
|
|
90
|
+
return;
|
|
91
|
+
case "telemetry":
|
|
92
|
+
await telemetryCommand(args, argv);
|
|
93
|
+
return;
|
|
94
|
+
case "cache":
|
|
95
|
+
if (args[0] === "clear") {
|
|
96
|
+
manifestCache.invalidate();
|
|
97
|
+
console.log(pc.green("✔ Cache cleared"));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const stats = manifestCache.stats();
|
|
101
|
+
console.log(`\n${pc.bold("Cache Status:")}`);
|
|
102
|
+
console.log(` Valid: ${stats.valid ? pc.green("Yes") : pc.yellow("No")}`);
|
|
103
|
+
console.log(` Plugins: ${stats.pluginCount}`);
|
|
104
|
+
console.log(` Commands: ${stats.commandCount}`);
|
|
105
|
+
console.log(` Age: ${stats.age}\n`);
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
// Route to plugin
|
|
110
|
+
const handled = await plugins.route(command, args, argv);
|
|
111
|
+
if (handled)
|
|
112
|
+
return;
|
|
113
|
+
// Check if command matches an official plugin (auto-install)
|
|
114
|
+
const officialPackage = getOfficialPlugin(command);
|
|
115
|
+
if (officialPackage) {
|
|
116
|
+
console.log(pc.yellow(`\nâš¡ Plugin '${command}' is not installed.\n`));
|
|
117
|
+
const shouldInstall = await prompts.confirm({
|
|
118
|
+
message: `Would you like to install ${pc.cyan(officialPackage)}?`,
|
|
119
|
+
});
|
|
120
|
+
if (prompts.isCancel(shouldInstall) || !shouldInstall) {
|
|
121
|
+
console.log(pc.dim("Installation cancelled."));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
// Install the plugin
|
|
125
|
+
console.log("");
|
|
126
|
+
await plugins.install(officialPackage);
|
|
127
|
+
// Reload and retry
|
|
128
|
+
await plugins.loadAll();
|
|
129
|
+
const retryHandled = await plugins.route(command, args, argv);
|
|
130
|
+
if (retryHandled)
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// Unknown command
|
|
134
|
+
console.log(pc.yellow(`Unknown command: ${command}`));
|
|
135
|
+
console.log(pc.dim("Run 'nock --help' for usage"));
|
|
136
|
+
process.exit(EXIT_CODES.INVALID_COMMAND);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (!argv.quiet) {
|
|
140
|
+
console.error(pc.red("Error:"), error instanceof Error ? error.message : String(error));
|
|
141
|
+
}
|
|
142
|
+
if (argv.verbose && error instanceof Error && error.stack) {
|
|
143
|
+
console.error(pc.dim(error.stack));
|
|
144
|
+
}
|
|
145
|
+
process.exit(EXIT_CODES.GENERAL_ERROR);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
main();
|
|
149
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAmEf"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// packages/cli/src/core/plugins.ts
|
|
2
|
+
// Core 'plugins' command handler
|
|
3
|
+
import pc from "picocolors";
|
|
4
|
+
import { showUsageError } from "../utils/errors.js";
|
|
5
|
+
export async function pluginsCommand(args, flags, plugins) {
|
|
6
|
+
const [subcommand, ...rest] = args;
|
|
7
|
+
switch (subcommand) {
|
|
8
|
+
case "list":
|
|
9
|
+
case "ls":
|
|
10
|
+
case undefined:
|
|
11
|
+
listPlugins(plugins);
|
|
12
|
+
break;
|
|
13
|
+
case "install":
|
|
14
|
+
case "add":
|
|
15
|
+
case "i":
|
|
16
|
+
if (!rest[0]) {
|
|
17
|
+
showUsageError("Package name required", "nock plugins install <package>", "nock plugins install @nockdev/awf");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
await plugins.install(rest[0]);
|
|
21
|
+
break;
|
|
22
|
+
case "remove":
|
|
23
|
+
case "uninstall":
|
|
24
|
+
case "rm":
|
|
25
|
+
if (!rest[0]) {
|
|
26
|
+
showUsageError("Package name required", "nock plugins remove <package>");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
await plugins.remove(rest[0]);
|
|
30
|
+
break;
|
|
31
|
+
case "update":
|
|
32
|
+
case "upgrade":
|
|
33
|
+
await plugins.update(rest[0]); // Optional: specific package
|
|
34
|
+
break;
|
|
35
|
+
case "link":
|
|
36
|
+
if (!rest[0]) {
|
|
37
|
+
showUsageError("Path required", "nock plugins link <path>", "nock plugins link ./my-plugin");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
await plugins.link(rest[0]);
|
|
41
|
+
break;
|
|
42
|
+
case "unlink":
|
|
43
|
+
if (!rest[0]) {
|
|
44
|
+
showUsageError("Path required", "nock plugins unlink <path>", "nock plugins unlink ./my-plugin");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
await plugins.unlink(rest[0]);
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
console.log(pc.yellow(`Unknown subcommand: ${subcommand}`));
|
|
51
|
+
showPluginsHelp();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function listPlugins(plugins) {
|
|
55
|
+
const installed = plugins.list();
|
|
56
|
+
if (installed.length === 0) {
|
|
57
|
+
console.log(pc.yellow("No plugins installed."));
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(pc.dim("Get started:"));
|
|
60
|
+
console.log(pc.cyan(" nock plugins install @nockdev/awf"));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
console.log(pc.bold("Installed Plugins:"));
|
|
64
|
+
console.log();
|
|
65
|
+
for (const p of installed) {
|
|
66
|
+
console.log(` ${pc.green(p.topic)} ${pc.dim(`(${p.name}@${p.version})`)}`);
|
|
67
|
+
console.log(` ${p.description}`);
|
|
68
|
+
console.log(` ${pc.dim(`${p.commandCount} commands`)}`);
|
|
69
|
+
console.log();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function showPluginsHelp() {
|
|
73
|
+
console.log(`
|
|
74
|
+
${pc.bold("Plugin Management:")}
|
|
75
|
+
${pc.green("list")} List installed plugins
|
|
76
|
+
${pc.green("install")} <package> Install a plugin
|
|
77
|
+
${pc.green("remove")} <package> Remove a plugin
|
|
78
|
+
${pc.green("update")} [package] Update plugin(s)
|
|
79
|
+
${pc.green("link")} <path> Link local plugin (dev)
|
|
80
|
+
${pc.green("unlink")} <path> Unlink local plugin
|
|
81
|
+
|
|
82
|
+
${pc.bold("Examples:")}
|
|
83
|
+
nock plugins list
|
|
84
|
+
nock plugins install @nockdev/awf
|
|
85
|
+
nock plugins remove @nockdev/awf
|
|
86
|
+
nock plugins update
|
|
87
|
+
nock plugins link ./my-plugin
|
|
88
|
+
`);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/core/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// packages/cli/src/core/telemetry.ts
|
|
2
|
+
// Core 'telemetry' command handler
|
|
3
|
+
import pc from "picocolors";
|
|
4
|
+
import { telemetry } from "../utils/telemetry.js";
|
|
5
|
+
export async function telemetryCommand(args, _flags) {
|
|
6
|
+
const [subcommand] = args;
|
|
7
|
+
switch (subcommand) {
|
|
8
|
+
case "enable":
|
|
9
|
+
telemetry.enable();
|
|
10
|
+
console.log(pc.green("✔ Telemetry enabled"));
|
|
11
|
+
console.log(pc.dim(" Thank you for helping improve NOCK CLI!"));
|
|
12
|
+
console.log(pc.dim(" We collect anonymous usage data only."));
|
|
13
|
+
break;
|
|
14
|
+
case "disable":
|
|
15
|
+
telemetry.disable();
|
|
16
|
+
console.log(pc.green("✔ Telemetry disabled"));
|
|
17
|
+
console.log(pc.dim(" No data will be collected."));
|
|
18
|
+
break;
|
|
19
|
+
case "status":
|
|
20
|
+
case undefined:
|
|
21
|
+
showStatus();
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
console.log(pc.yellow(`Unknown subcommand: ${subcommand}`));
|
|
25
|
+
showTelemetryHelp();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function showStatus() {
|
|
29
|
+
const status = telemetry.status();
|
|
30
|
+
console.log(`
|
|
31
|
+
${pc.bold("Telemetry Status:")}
|
|
32
|
+
|
|
33
|
+
Status: ${status.enabled ? pc.green("Enabled ✔") : pc.yellow("Disabled")}
|
|
34
|
+
Buffered: ${status.eventCount} events
|
|
35
|
+
|
|
36
|
+
${pc.bold("What we collect:")}
|
|
37
|
+
${pc.dim("• Command names (not arguments)")}
|
|
38
|
+
${pc.dim("• CLI version")}
|
|
39
|
+
${pc.dim("• OS type and Node version")}
|
|
40
|
+
${pc.dim("• Execution duration")}
|
|
41
|
+
${pc.dim("• CI environment detection")}
|
|
42
|
+
|
|
43
|
+
${pc.bold("What we DON'T collect:")}
|
|
44
|
+
${pc.dim("• Personal information")}
|
|
45
|
+
${pc.dim("• File paths or content")}
|
|
46
|
+
${pc.dim("• API keys or secrets")}
|
|
47
|
+
${pc.dim("• Any identifiable data")}
|
|
48
|
+
`);
|
|
49
|
+
}
|
|
50
|
+
function showTelemetryHelp() {
|
|
51
|
+
console.log(`
|
|
52
|
+
${pc.bold("Telemetry Commands:")}
|
|
53
|
+
${pc.green("status")} Show telemetry status
|
|
54
|
+
${pc.green("enable")} Enable anonymous usage data
|
|
55
|
+
${pc.green("disable")} Disable telemetry
|
|
56
|
+
|
|
57
|
+
${pc.bold("Examples:")}
|
|
58
|
+
nock telemetry status
|
|
59
|
+
nock telemetry enable
|
|
60
|
+
nock telemetry disable
|
|
61
|
+
`);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/core/telemetry.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,mCAAmC;AAEnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAc,EACd,MAA+B;IAE/B,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAE1B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAC/D,MAAM;QAER,KAAK,SAAS;YACZ,SAAS,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACpD,MAAM;QAER,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,UAAU,EAAE,CAAC;YACb,MAAM;QAER;YACE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5D,iBAAiB,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC;EACZ,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;;kBAEZ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;kBAC9D,MAAM,CAAC,UAAU;;EAEjC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACzB,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC;IACzC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC;IACvB,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACpC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC9B,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC;;EAEtC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAC/B,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAChC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACjC,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC/B,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC;CACpC,CAAC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CAAC,GAAG,CAAC;EACZ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC5B,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;;EAErB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;;;CAIrB,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAe3D;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// packages/cli/src/core/version.ts
|
|
2
|
+
// Version command handler
|
|
3
|
+
import pc from "picocolors";
|
|
4
|
+
import { CLI_VERSION } from "../utils/constants.js";
|
|
5
|
+
export function versionCommand(plugins) {
|
|
6
|
+
console.log(pc.bold("NOCK CLI"));
|
|
7
|
+
console.log(` CLI: ${pc.cyan(`v${CLI_VERSION}`)}`);
|
|
8
|
+
console.log(` Node: ${pc.dim(process.version)}`);
|
|
9
|
+
console.log(` Platform: ${pc.dim(process.platform)}`);
|
|
10
|
+
console.log(` Arch: ${pc.dim(process.arch)}`);
|
|
11
|
+
const installed = plugins.list();
|
|
12
|
+
if (installed.length > 0) {
|
|
13
|
+
console.log();
|
|
14
|
+
console.log(pc.bold("Plugins:"));
|
|
15
|
+
for (const p of installed) {
|
|
16
|
+
console.log(` ${pc.green(p.topic)}: ${pc.cyan(`v${p.version}`)}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function getVersion() {
|
|
21
|
+
return CLI_VERSION;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,0BAA0B;AAE1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { NockPlugin, PluginCommand, PluginHook, PluginContext, FlagDefinition, ArgumentDefinition, InstalledPlugin, PluginManagerOptions, } from "./plugins/types.js";
|
|
2
|
+
export { PluginManager } from "./plugins/manager.js";
|
|
3
|
+
export { EXIT_CODES, type ExitCode } from "./utils/exit-codes.js";
|
|
4
|
+
export { CLI_VERSION, CLI_NAME } from "./utils/constants.js";
|
|
5
|
+
export { getVersion } from "./core/version.js";
|
|
6
|
+
export { showUsageError, showWarning, showInfo, showSuccess } from "./utils/errors.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// packages/cli/src/index.ts
|
|
2
|
+
// Public exports for @nockdev/cli
|
|
3
|
+
export { PluginManager } from "./plugins/manager.js";
|
|
4
|
+
export { EXIT_CODES } from "./utils/exit-codes.js";
|
|
5
|
+
export { CLI_VERSION, CLI_NAME } from "./utils/constants.js";
|
|
6
|
+
export { getVersion } from "./core/version.js";
|
|
7
|
+
export { showUsageError, showWarning, showInfo, showSuccess } from "./utils/errors.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,kCAAkC;AAalC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAiB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { PluginCommand, InstalledPlugin, PluginManagerOptions } from "./types.js";
|
|
2
|
+
export declare class PluginManager {
|
|
3
|
+
private plugins;
|
|
4
|
+
private linkedPlugins;
|
|
5
|
+
private nockDir;
|
|
6
|
+
private pluginsDir;
|
|
7
|
+
private manifestPath;
|
|
8
|
+
private options;
|
|
9
|
+
constructor(options?: PluginManagerOptions);
|
|
10
|
+
private ensureDirectories;
|
|
11
|
+
/**
|
|
12
|
+
* Load all installed plugins
|
|
13
|
+
*/
|
|
14
|
+
loadAll(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Load a single plugin by package name
|
|
17
|
+
*/
|
|
18
|
+
load(packageName: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Load plugin from absolute path (for linked plugins)
|
|
21
|
+
*/
|
|
22
|
+
loadFromPath(pluginPath: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Link a local plugin for development
|
|
25
|
+
*/
|
|
26
|
+
link(pluginPath: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Unlink a local plugin
|
|
29
|
+
*/
|
|
30
|
+
unlink(pluginPath: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Install plugin from npm
|
|
33
|
+
*/
|
|
34
|
+
install(packageName: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Remove plugin
|
|
37
|
+
*/
|
|
38
|
+
remove(packageName: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Update plugin(s)
|
|
41
|
+
*/
|
|
42
|
+
update(packageName?: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Route command to plugin
|
|
45
|
+
*/
|
|
46
|
+
route(topic: string, args: string[], flags: Record<string, unknown>): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* List installed plugins
|
|
49
|
+
*/
|
|
50
|
+
list(): InstalledPlugin[];
|
|
51
|
+
/**
|
|
52
|
+
* Get all commands from all plugins
|
|
53
|
+
*/
|
|
54
|
+
getAllCommands(): PluginCommand[];
|
|
55
|
+
/**
|
|
56
|
+
* Show help for all plugins
|
|
57
|
+
*/
|
|
58
|
+
showAllPluginsHelp(): void;
|
|
59
|
+
private showPluginHelp;
|
|
60
|
+
private validate;
|
|
61
|
+
private createContext;
|
|
62
|
+
private readManifest;
|
|
63
|
+
private writeManifest;
|
|
64
|
+
/**
|
|
65
|
+
* Run hooks of a specific type across all plugins
|
|
66
|
+
*/
|
|
67
|
+
private runHook;
|
|
68
|
+
/**
|
|
69
|
+
* Find similar command name for suggestions (Levenshtein distance)
|
|
70
|
+
*/
|
|
71
|
+
private findSimilar;
|
|
72
|
+
/**
|
|
73
|
+
* Simple Levenshtein distance implementation
|
|
74
|
+
*/
|
|
75
|
+
private levenshtein;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,aAAa,EACb,eAAe,EAEf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAUpB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAiC;gBAEpC,OAAO,GAAE,oBAAyB;IAc9C,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC9B;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC9C;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BrD;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC7C;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDjD;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ChD;;OAEG;IACG,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCjD;;OAEG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC;IAwCnB;;OAEG;IACH,IAAI,IAAI,eAAe,EAAE;IAWzB;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAU1B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAIrB;;OAEG;YACW,OAAO;IAsBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,WAAW;CA0BpB"}
|