@nostrbox/cli 1.1.0 → 1.1.1

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.
@@ -1,55 +1,82 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
3
6
  Object.defineProperty(exports, "__esModule", { value: true });
4
7
  const core_1 = require("@nostrbox/core");
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const argParser_js_1 = require("./utils/argParser.js");
10
+ function createParser() {
11
+ return new argParser_js_1.ArgumentParser({
12
+ options: [
13
+ {
14
+ name: 'omit-relay-check',
15
+ alias: 'o',
16
+ type: 'flag',
17
+ description: 'Skip relay validation'
18
+ },
19
+ ],
20
+ positional: {
21
+ name: 'domain',
22
+ description: 'Domain to check (e.g., domain.com)',
23
+ required: true
24
+ }
25
+ });
26
+ }
27
+ function parseArgs(args) {
28
+ const parser = createParser();
29
+ const parsed = parser.parse(args);
30
+ return {
31
+ omitRelayCheck: parsed['omit-relay-check'] || false,
32
+ domain: parsed._positional || ''
33
+ };
34
+ }
5
35
  async function main() {
6
36
  const args = process.argv.slice(2);
7
37
  if (args.length === 0) {
8
- console.error('Usage: nip05check <domain>');
9
- console.error('Example: nip05check nostrdev.com');
38
+ const parser = createParser();
39
+ parser.printHelp('nip05check', 'šŸ” NIP-05 Domain Checker', undefined, 'domain.com');
40
+ process.exit(0);
41
+ }
42
+ let parsedArgs;
43
+ try {
44
+ parsedArgs = parseArgs(args);
45
+ }
46
+ catch (error) {
47
+ console.error(`āŒ Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
10
48
  process.exit(1);
11
49
  }
12
- const domain = args[0];
50
+ const { domain, omitRelayCheck } = parsedArgs;
13
51
  try {
14
- const result = await (0, core_1.validateDomain)(domain);
15
- console.log(`šŸ” NIP-05 Domain Validation: ${result.domain}`);
16
- console.log('='.repeat(50));
17
- // Main validation results
18
- const status = result.nostrJsonValid ? 'āœ…' : 'āŒ';
19
- console.log(`${status} Overall Status: ${result.nostrJsonValid ? 'Valid' : 'Invalid'}`);
20
- console.log(`šŸ“ Well-known directory: ${result.wellKnownExists ? 'āœ… Exists' : 'āŒ Missing'}`);
21
- console.log(`šŸ“„ nostr.json file: ${result.nostrJsonExists ? 'āœ… Found' : 'āŒ Not found'}`);
22
- console.log(`āœ”ļø nostr.json valid: ${result.nostrJsonValid ? 'āœ… Valid' : 'āŒ Invalid'}`);
23
- console.log(`šŸ‘„ Entries count: ${result.entriesCount}`);
24
- if (result.relayValidation) {
25
- console.log(`\n🌐 Relay Validation:`);
26
- console.log(` Total relays: ${result.relayValidation.totalRelays}`);
27
- console.log(` Unique relays: ${result.relayValidation.uniqueRelays}`);
28
- console.log(` Valid relays: ${result.relayValidation.validRelays}`);
29
- console.log(` Invalid relays: ${result.relayValidation.invalidRelays}`);
30
- if (result.relayValidation.relayDetails && result.relayValidation.relayDetails.length > 0) {
31
- console.log(`\nšŸ”— Relay Details:`);
32
- for (const relay of result.relayValidation.relayDetails) {
33
- const status = relay.isValid ? 'āœ…' : 'āŒ';
34
- const timeInfo = relay.responseTime ? `[${relay.responseTime}ms]` : '';
35
- const errorInfo = relay.error ? `(${relay.error})` : '';
36
- console.log(` ${status} ${relay.url} ${errorInfo} ${timeInfo}`);
37
- }
38
- }
52
+ const spinner = (0, ora_1.default)('Checking nostr.json file...').start();
53
+ const nostrBox = new core_1.NostrBoxCore();
54
+ // Add a small delay to show the first message
55
+ await new Promise(resolve => setTimeout(resolve, 500));
56
+ if (!omitRelayCheck) {
57
+ spinner.text = 'Validating domain and relays...';
58
+ }
59
+ else {
60
+ spinner.text = 'Validating domain (skipping relay check)...';
39
61
  }
40
- if (result.errors.length > 0) {
41
- console.log(`\nāŒ Errors:`);
42
- for (const error of result.errors) {
43
- console.log(` • ${error}`);
44
- }
62
+ const result = await nostrBox.nip05Check(domain, omitRelayCheck);
63
+ spinner.text = 'Loading user data...';
64
+ // Display all users and their relays
65
+ let users = [];
66
+ try {
67
+ users = await nostrBox.listUsersWithRelays(domain, omitRelayCheck);
68
+ spinner.text = 'Formatting results...';
69
+ // Small delay to show the formatting message
70
+ await new Promise(resolve => setTimeout(resolve, 300));
45
71
  }
46
- if (result.warnings.length > 0) {
47
- console.log(`\nāš ļø Warnings:`);
48
- for (const warning of result.warnings) {
49
- console.log(` • ${warning}`);
50
- }
72
+ catch (userError) {
73
+ spinner.text = 'Formatting results...';
74
+ await new Promise(resolve => setTimeout(resolve, 300));
51
75
  }
52
- console.log(`\nā° Checked at: ${result.timestamp.toLocaleString()}`);
76
+ spinner.succeed('Validation complete!');
77
+ // Use the NostrBoxCore formatting method
78
+ const formattedOutput = nostrBox.formatDomainValidationResult(result, users, omitRelayCheck);
79
+ formattedOutput.forEach(line => console.log(line));
53
80
  // Exit with error code if validation failed
54
81
  if (!result.nostrJsonValid) {
55
82
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"nip05check.js","sourceRoot":"","sources":["../src/nip05check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nip05check.js","sourceRoot":"","sources":["../src/nip05check.ts"],"names":[],"mappings":"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"}
@@ -2,62 +2,109 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const core_1 = require("@nostrbox/core");
5
+ const argParser_js_1 = require("./utils/argParser.js");
6
+ function createParser() {
7
+ return new argParser_js_1.ArgumentParser({
8
+ options: [
9
+ {
10
+ name: 'type',
11
+ alias: 't',
12
+ type: 'string',
13
+ description: 'Specify output type',
14
+ choices: ['hex', 'bech32', 'relays', 'all']
15
+ },
16
+ {
17
+ name: 'raw',
18
+ alias: 'r',
19
+ type: 'flag',
20
+ description: 'Output raw value without formatting'
21
+ }
22
+ ],
23
+ positional: {
24
+ name: 'identifier',
25
+ description: 'NIP-05 identifier (e.g., dave@jb55.com)',
26
+ required: true
27
+ }
28
+ });
29
+ }
30
+ function parseArgs(args) {
31
+ const parser = createParser();
32
+ const parsed = parser.parse(args);
33
+ return {
34
+ type: parsed.type || 'all',
35
+ raw: parsed.raw || false,
36
+ identifier: parsed._positional || ''
37
+ };
38
+ }
5
39
  async function main() {
6
40
  const args = process.argv.slice(2);
7
41
  if (args.length === 0) {
8
- console.error('šŸ” NIP-05 Lookup Tool');
9
- console.error('Usage: nip05lookup [-t <type>] <identifier>');
10
- console.error('');
11
- console.error('Types: hex, bech32, relays, all (default)');
12
- console.error('');
13
- console.error('Examples:');
14
- console.error(' nip05lookup dave@jb55.com # All information');
15
- console.error(' nip05lookup -t hex dave@jb55.com # Hex pubkey only');
16
- console.error(' nip05lookup -t bech32 dave@jb55.com # Npub format only');
17
- console.error(' nip05lookup -t relays dave@jb55.com # Relays only');
18
- console.error(' nip05lookup jb55.com # Domain-only lookup');
19
- process.exit(1);
42
+ const parser = createParser();
43
+ parser.printHelp('nip05lookup', 'šŸ” NIP-05 Lookup Tool', undefined, 'dave@jb55.com');
44
+ process.exit(0);
20
45
  }
21
- let type = 'all';
22
- let identifier;
23
- if (args[0] === '-t' && args.length >= 3) {
24
- const typeArg = args[1];
25
- if (!['hex', 'bech32', 'relays', 'all'].includes(typeArg)) {
26
- console.error(`āŒ Invalid type: ${typeArg}`);
27
- console.error('Valid types: hex, bech32, relays, all');
28
- process.exit(1);
29
- }
30
- type = typeArg;
31
- identifier = args[2];
46
+ let parsedArgs;
47
+ try {
48
+ parsedArgs = parseArgs(args);
32
49
  }
33
- else {
34
- identifier = args[0];
50
+ catch (error) {
51
+ console.error(`āŒ Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
52
+ process.exit(1);
35
53
  }
54
+ const { type, raw, identifier } = parsedArgs;
36
55
  try {
37
56
  const result = await (0, core_1.lookupNip05)(identifier, type);
38
57
  const outputs = (0, core_1.formatNip05Output)(result, type);
39
- // Show what we're looking up
40
- const displayName = result.name ? `${result.name}@${result.domain}` : `_@${result.domain}`;
41
- console.log(`šŸ” NIP-05 Lookup: ${displayName}`);
42
- console.log('='.repeat(50));
43
- // Show the results based on type
44
- if (type === 'hex' || type === 'all') {
45
- if (outputs.includes(result.pubkey)) {
46
- console.log(`\nšŸ”‘ Hex pubkey:`);
58
+ if (raw) {
59
+ // Raw output - just the values without formatting
60
+ if (type === 'hex') {
47
61
  console.log(result.pubkey);
48
62
  }
49
- }
50
- if (type === 'bech32' || type === 'all') {
51
- if (result.npub && outputs.includes(result.npub)) {
52
- console.log(`\nšŸ“ Npub (bech32):`);
53
- console.log(result.npub);
63
+ else if (type === 'bech32') {
64
+ if (result.npub) {
65
+ console.log(result.npub);
66
+ }
67
+ }
68
+ else if (type === 'relays') {
69
+ if (result.relays && result.relays.length > 0) {
70
+ result.relays.forEach(relay => console.log(relay));
71
+ }
72
+ }
73
+ else if (type === 'all') {
74
+ // For 'all' type with raw, output each value on separate lines
75
+ console.log(result.pubkey);
76
+ if (result.npub) {
77
+ console.log(result.npub);
78
+ }
79
+ if (result.relays && result.relays.length > 0) {
80
+ result.relays.forEach(relay => console.log(relay));
81
+ }
54
82
  }
55
83
  }
56
- if (type === 'relays' || type === 'all') {
57
- if (result.relays && result.relays.length > 0) {
58
- console.log(`\n🌐 Relays:`);
59
- for (const relay of result.relays) {
60
- console.log(relay);
84
+ else {
85
+ // Formatted output
86
+ const displayName = result.name ? `${result.name}@${result.domain}` : `_@${result.domain}`;
87
+ console.log(`šŸ” NIP-05 Lookup: ${displayName}`);
88
+ console.log('='.repeat(50));
89
+ // Show the results based on type
90
+ if (type === 'hex' || type === 'all') {
91
+ if (outputs.includes(result.pubkey)) {
92
+ console.log(`\nšŸ”‘ Hex pubkey:`);
93
+ console.log(result.pubkey);
94
+ }
95
+ }
96
+ if (type === 'bech32' || type === 'all') {
97
+ if (result.npub && outputs.includes(result.npub)) {
98
+ console.log(`\nšŸ“ Npub (bech32):`);
99
+ console.log(result.npub);
100
+ }
101
+ }
102
+ if (type === 'relays' || type === 'all') {
103
+ if (result.relays && result.relays.length > 0) {
104
+ console.log(`\n🌐 Relays:`);
105
+ for (const relay of result.relays) {
106
+ console.log(relay);
107
+ }
61
108
  }
62
109
  }
63
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nip05lookup.js","sourceRoot":"","sources":["../src/nip05lookup.ts"],"names":[],"mappings":";;;AAEA,yCAAqF;AAGrF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAElC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACtC,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAC5D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC1D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC1B,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC3E,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC3E,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAC5E,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACvE,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,IAAI,GAAsB,KAAK,CAAA;IACnC,IAAI,UAAkB,CAAA;IAEtB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAsB,CAAA;QAC5C,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;YAC3C,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,GAAG,OAAO,CAAA;QACd,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAW,EAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,IAAA,wBAAiB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAE/C,6BAA6B;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAE3B,iCAAiC;QACjC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;gBAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAA;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAA;IAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"nip05lookup.js","sourceRoot":"","sources":["../src/nip05lookup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface ArgOption {
2
+ name: string;
3
+ alias?: string;
4
+ type: 'flag' | 'string';
5
+ description?: string;
6
+ choices?: string[];
7
+ }
8
+ export interface ArgDefinition {
9
+ options: ArgOption[];
10
+ positional?: {
11
+ name: string;
12
+ description?: string;
13
+ required?: boolean;
14
+ };
15
+ }
16
+ export interface ParsedArguments {
17
+ [key: string]: any;
18
+ _positional?: string;
19
+ }
20
+ export declare class ArgumentParser {
21
+ private definition;
22
+ constructor(definition: ArgDefinition);
23
+ parse(args: string[]): ParsedArguments;
24
+ private findOption;
25
+ private generateUsage;
26
+ private generateOptions;
27
+ private generateExamples;
28
+ printHelp(command: string, title?: string, description?: string, exampleValue?: string): void;
29
+ private getExampleDescription;
30
+ }
31
+ //# sourceMappingURL=argParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argParser.d.ts","sourceRoot":"","sources":["../../src/utils/argParser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAe;gBAErB,UAAU,EAAE,aAAa;IAIrC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe;IAiDtC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,gBAAgB;IA4BxB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAuB7F,OAAO,CAAC,qBAAqB;CAe9B"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArgumentParser = void 0;
4
+ class ArgumentParser {
5
+ constructor(definition) {
6
+ this.definition = definition;
7
+ }
8
+ parse(args) {
9
+ const result = {};
10
+ let i = 0;
11
+ while (i < args.length) {
12
+ const arg = args[i];
13
+ if (arg.startsWith('-')) {
14
+ const option = this.findOption(arg);
15
+ if (!option) {
16
+ throw new Error(`Unknown option: ${arg}`);
17
+ }
18
+ if (option.type === 'flag') {
19
+ result[option.name] = true;
20
+ i++;
21
+ }
22
+ else {
23
+ if (i + 1 >= args.length) {
24
+ const choices = option.choices ? ` (choices: ${option.choices.join(', ')})` : '';
25
+ throw new Error(`Option ${arg} requires a value${choices}`);
26
+ }
27
+ const value = args[i + 1];
28
+ if (option.choices && !option.choices.includes(value)) {
29
+ throw new Error(`Invalid value for ${arg}: ${value}. Valid choices: ${option.choices.join(', ')}`);
30
+ }
31
+ result[option.name] = value;
32
+ i += 2;
33
+ }
34
+ }
35
+ else {
36
+ // Positional argument
37
+ if (this.definition.positional) {
38
+ result._positional = arg;
39
+ }
40
+ i++;
41
+ break; // Only handle one positional for now
42
+ }
43
+ }
44
+ // Check required positional
45
+ if (this.definition.positional?.required && !result._positional) {
46
+ const desc = this.definition.positional.description || this.definition.positional.name;
47
+ throw new Error(`Required argument missing: ${desc}`);
48
+ }
49
+ return result;
50
+ }
51
+ findOption(arg) {
52
+ const cleanArg = arg.replace(/^-+/, '');
53
+ return this.definition.options.find(opt => opt.name === cleanArg || opt.alias === cleanArg);
54
+ }
55
+ generateUsage(programName) {
56
+ let usage = `Usage: ${programName}`;
57
+ if (this.definition.options.length > 0) {
58
+ usage += ' [options]';
59
+ }
60
+ if (this.definition.positional) {
61
+ const pos = this.definition.positional;
62
+ usage += pos.required ? ` <${pos.name}>` : ` [${pos.name}]`;
63
+ }
64
+ return usage;
65
+ }
66
+ generateOptions() {
67
+ const lines = [];
68
+ if (this.definition.options.length > 0) {
69
+ lines.push('Options:');
70
+ for (const opt of this.definition.options) {
71
+ let optLine = ' ';
72
+ if (opt.alias) {
73
+ optLine += `-${opt.alias}, `;
74
+ }
75
+ optLine += `--${opt.name}`;
76
+ if (opt.type !== 'flag') {
77
+ optLine += ` <${opt.name}>`;
78
+ }
79
+ if (opt.description) {
80
+ optLine = optLine.padEnd(25) + opt.description;
81
+ }
82
+ if (opt.choices) {
83
+ optLine += ` (choices: ${opt.choices.join(', ')})`;
84
+ }
85
+ lines.push(optLine);
86
+ }
87
+ lines.push('');
88
+ }
89
+ return lines;
90
+ }
91
+ generateExamples(programName, exampleValue) {
92
+ const examples = [];
93
+ const sampleValue = exampleValue || 'input';
94
+ // Basic usage
95
+ if (this.definition.positional) {
96
+ examples.push(`${programName} ${sampleValue}`);
97
+ }
98
+ // Generate examples for each option
99
+ for (const opt of this.definition.options) {
100
+ if (opt.type === 'flag') {
101
+ if (opt.alias) {
102
+ examples.push(`${programName} -${opt.alias} ${sampleValue}`);
103
+ }
104
+ examples.push(`${programName} --${opt.name} ${sampleValue}`);
105
+ }
106
+ else {
107
+ const optValue = opt.choices?.[0] || 'value';
108
+ if (opt.alias) {
109
+ examples.push(`${programName} -${opt.alias} ${optValue} ${sampleValue}`);
110
+ }
111
+ examples.push(`${programName} --${opt.name} ${optValue} ${sampleValue}`);
112
+ }
113
+ }
114
+ return examples;
115
+ }
116
+ printHelp(command, title, description, exampleValue) {
117
+ if (title)
118
+ console.log(title);
119
+ if (description)
120
+ console.log(description);
121
+ console.log(this.generateUsage(command));
122
+ console.log('');
123
+ const optionLines = this.generateOptions();
124
+ optionLines.forEach(line => console.log(line));
125
+ const examples = this.generateExamples(command, exampleValue);
126
+ if (examples.length > 0) {
127
+ console.log('Examples:');
128
+ const maxLength = Math.max(...examples.map(ex => ex.length));
129
+ const padding = Math.max(maxLength + 6, 45);
130
+ examples.forEach(example => {
131
+ const paddedExample = ` ${example}`.padEnd(padding);
132
+ console.log(`${paddedExample}# ${this.getExampleDescription(example, command)}`);
133
+ });
134
+ }
135
+ }
136
+ getExampleDescription(example, programName) {
137
+ const parts = example.replace(programName, '').trim().split(' ');
138
+ if (parts.length === 1)
139
+ return 'Basic usage';
140
+ const firstArg = parts[0];
141
+ if (firstArg.startsWith('-')) {
142
+ const option = this.definition.options.find(opt => firstArg === `--${opt.name}` || firstArg === `-${opt.alias}`);
143
+ return option?.description || 'With option';
144
+ }
145
+ return 'Usage example';
146
+ }
147
+ }
148
+ exports.ArgumentParser = ArgumentParser;
149
+ //# sourceMappingURL=argParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argParser.js","sourceRoot":"","sources":["../../src/utils/argParser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nostrbox/cli",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "CLI tool for NIP-05 operations using NostrBox core",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {
@@ -28,7 +28,8 @@
28
28
  "author": "",
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "@nostrbox/core": "1.2.2"
31
+ "@nostrbox/core": "1.3.0",
32
+ "ora": "^8.2.0"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@saithodev/semantic-release-gitea": "^2.1.0",