@unstoppabledomains/ud-cli 0.1.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/README.md +344 -0
- package/dist/commands/api-commands.d.ts +9 -0
- package/dist/commands/api-commands.d.ts.map +1 -0
- package/dist/commands/api-commands.js +303 -0
- package/dist/commands/api-commands.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +97 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/cart.d.ts +10 -0
- package/dist/commands/cart.d.ts.map +1 -0
- package/dist/commands/cart.js +125 -0
- package/dist/commands/cart.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +90 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/env.d.ts +3 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +29 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/generated/openapi-spec.json +5903 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +7 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +162 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/command-hooks.d.ts +49 -0
- package/dist/lib/command-hooks.d.ts.map +1 -0
- package/dist/lib/command-hooks.js +150 -0
- package/dist/lib/command-hooks.js.map +1 -0
- package/dist/lib/command-registry.d.ts +30 -0
- package/dist/lib/command-registry.d.ts.map +1 -0
- package/dist/lib/command-registry.js +322 -0
- package/dist/lib/command-registry.js.map +1 -0
- package/dist/lib/config.d.ts +19 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +95 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/credentials.d.ts +16 -0
- package/dist/lib/credentials.d.ts.map +1 -0
- package/dist/lib/credentials.js +126 -0
- package/dist/lib/credentials.js.map +1 -0
- package/dist/lib/formatter.d.ts +34 -0
- package/dist/lib/formatter.d.ts.map +1 -0
- package/dist/lib/formatter.js +691 -0
- package/dist/lib/formatter.js.map +1 -0
- package/dist/lib/oauth.d.ts +8 -0
- package/dist/lib/oauth.d.ts.map +1 -0
- package/dist/lib/oauth.js +212 -0
- package/dist/lib/oauth.js.map +1 -0
- package/dist/lib/param-builder.d.ts +28 -0
- package/dist/lib/param-builder.d.ts.map +1 -0
- package/dist/lib/param-builder.js +178 -0
- package/dist/lib/param-builder.js.map +1 -0
- package/dist/lib/prompt.d.ts +17 -0
- package/dist/lib/prompt.d.ts.map +1 -0
- package/dist/lib/prompt.js +53 -0
- package/dist/lib/prompt.js.map +1 -0
- package/dist/lib/spec-parser.d.ts +76 -0
- package/dist/lib/spec-parser.d.ts.map +1 -0
- package/dist/lib/spec-parser.js +201 -0
- package/dist/lib/spec-parser.js.map +1 -0
- package/dist/lib/spinner.d.ts +16 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +23 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/types.d.ts +63 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +11 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/program.d.ts +3 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +47 -0
- package/dist/program.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static command routing table that maps API tool names to CLI command hierarchy.
|
|
3
|
+
*
|
|
4
|
+
* Each route defines:
|
|
5
|
+
* - The tool name (matches the OpenAPI spec endpoint)
|
|
6
|
+
* - The CLI path as [group, subgroup?, command]
|
|
7
|
+
* - Optional positional arguments
|
|
8
|
+
*/
|
|
9
|
+
export const COMMAND_ROUTES = [
|
|
10
|
+
// --- Domain Search ---
|
|
11
|
+
{
|
|
12
|
+
toolName: 'ud_domains_search',
|
|
13
|
+
path: ['domains', 'search'],
|
|
14
|
+
positionalArgs: [
|
|
15
|
+
{ name: 'query', description: 'Domain name or search term', required: true, variadic: false },
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
toolName: 'ud_tld_list',
|
|
20
|
+
path: ['domains', 'tlds'],
|
|
21
|
+
positionalArgs: [],
|
|
22
|
+
},
|
|
23
|
+
// --- Portfolio ---
|
|
24
|
+
{
|
|
25
|
+
toolName: 'ud_portfolio_list',
|
|
26
|
+
path: ['domains', 'list'],
|
|
27
|
+
positionalArgs: [],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
toolName: 'ud_domain_get',
|
|
31
|
+
path: ['domains', 'get'],
|
|
32
|
+
positionalArgs: [
|
|
33
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
// --- Domain Management ---
|
|
37
|
+
{
|
|
38
|
+
toolName: 'ud_domain_push',
|
|
39
|
+
path: ['domains', 'push'],
|
|
40
|
+
positionalArgs: [
|
|
41
|
+
{ name: 'domains', description: 'Domain name(s) to push', required: true, variadic: true },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
toolName: 'ud_domain_pending_operations',
|
|
46
|
+
path: ['domains', 'operations'],
|
|
47
|
+
positionalArgs: [
|
|
48
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
toolName: 'ud_domain_tags_add',
|
|
53
|
+
path: ['domains', 'tags', 'add'],
|
|
54
|
+
positionalArgs: [
|
|
55
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
toolName: 'ud_domain_tags_remove',
|
|
60
|
+
path: ['domains', 'tags', 'remove'],
|
|
61
|
+
positionalArgs: [
|
|
62
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
toolName: 'ud_domain_flags_update',
|
|
67
|
+
path: ['domains', 'flags', 'update'],
|
|
68
|
+
positionalArgs: [
|
|
69
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
toolName: 'ud_domain_auto_renewal_update',
|
|
74
|
+
path: ['domains', 'auto-renewal', 'update'],
|
|
75
|
+
positionalArgs: [
|
|
76
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
// --- DNS Records ---
|
|
80
|
+
{
|
|
81
|
+
toolName: 'ud_dns_records_list',
|
|
82
|
+
path: ['dns', 'records', 'list'],
|
|
83
|
+
positionalArgs: [
|
|
84
|
+
{ name: 'domain', description: 'Domain name', required: true, variadic: false },
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
toolName: 'ud_dns_record_add',
|
|
89
|
+
path: ['dns', 'records', 'add'],
|
|
90
|
+
positionalArgs: [
|
|
91
|
+
{ name: 'domain', description: 'Domain name', required: true, variadic: false },
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
toolName: 'ud_dns_record_update',
|
|
96
|
+
path: ['dns', 'records', 'update'],
|
|
97
|
+
positionalArgs: [],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
toolName: 'ud_dns_record_remove',
|
|
101
|
+
path: ['dns', 'records', 'remove'],
|
|
102
|
+
positionalArgs: [],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
toolName: 'ud_dns_records_remove_all',
|
|
106
|
+
path: ['dns', 'records', 'remove-all'],
|
|
107
|
+
positionalArgs: [
|
|
108
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
// --- DNS Nameservers ---
|
|
112
|
+
{
|
|
113
|
+
toolName: 'ud_dns_nameservers_list',
|
|
114
|
+
path: ['dns', 'nameservers', 'list'],
|
|
115
|
+
positionalArgs: [
|
|
116
|
+
{ name: 'domain', description: 'Domain name', required: true, variadic: false },
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
toolName: 'ud_dns_nameservers_set_custom',
|
|
121
|
+
path: ['dns', 'nameservers', 'set-custom'],
|
|
122
|
+
positionalArgs: [],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
toolName: 'ud_dns_nameservers_set_default',
|
|
126
|
+
path: ['dns', 'nameservers', 'set-default'],
|
|
127
|
+
positionalArgs: [],
|
|
128
|
+
},
|
|
129
|
+
// --- DNS Hosting ---
|
|
130
|
+
{
|
|
131
|
+
toolName: 'ud_dns_hosting_list',
|
|
132
|
+
path: ['dns', 'hosting', 'list'],
|
|
133
|
+
positionalArgs: [
|
|
134
|
+
{ name: 'domain', description: 'Domain name', required: true, variadic: false },
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
toolName: 'ud_dns_hosting_add',
|
|
139
|
+
path: ['dns', 'hosting', 'add'],
|
|
140
|
+
positionalArgs: [],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
toolName: 'ud_dns_hosting_remove',
|
|
144
|
+
path: ['dns', 'hosting', 'remove'],
|
|
145
|
+
positionalArgs: [],
|
|
146
|
+
},
|
|
147
|
+
// --- AI Lander (under dns hosting) ---
|
|
148
|
+
{
|
|
149
|
+
toolName: 'ud_domain_generate_lander',
|
|
150
|
+
path: ['dns', 'hosting', 'lander', 'generate'],
|
|
151
|
+
positionalArgs: [
|
|
152
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
153
|
+
],
|
|
154
|
+
description: 'Generate AI landing page for domains',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
toolName: 'ud_domain_lander_status',
|
|
158
|
+
path: ['dns', 'hosting', 'lander', 'status'],
|
|
159
|
+
positionalArgs: [
|
|
160
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
161
|
+
],
|
|
162
|
+
description: 'Check AI lander generation status',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
toolName: 'ud_domain_remove_lander',
|
|
166
|
+
path: ['dns', 'hosting', 'lander', 'remove'],
|
|
167
|
+
positionalArgs: [
|
|
168
|
+
{ name: 'domains', description: 'Domain name(s)', required: true, variadic: true },
|
|
169
|
+
],
|
|
170
|
+
description: 'Remove AI landing page from domains',
|
|
171
|
+
},
|
|
172
|
+
// --- Cart ---
|
|
173
|
+
{
|
|
174
|
+
toolName: 'ud_cart_get',
|
|
175
|
+
path: ['cart', 'get'],
|
|
176
|
+
positionalArgs: [],
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
toolName: 'ud_cart_remove',
|
|
180
|
+
path: ['cart', 'remove'],
|
|
181
|
+
positionalArgs: [],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
toolName: 'ud_cart_checkout',
|
|
185
|
+
path: ['cart', 'checkout'],
|
|
186
|
+
positionalArgs: [],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
toolName: 'ud_cart_get_url',
|
|
190
|
+
path: ['cart', 'url'],
|
|
191
|
+
positionalArgs: [],
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
toolName: 'ud_cart_get_payment_methods',
|
|
195
|
+
path: ['cart', 'payment-methods'],
|
|
196
|
+
positionalArgs: [],
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
toolName: 'ud_cart_add_payment_method_url',
|
|
200
|
+
path: ['cart', 'add-payment-method'],
|
|
201
|
+
positionalArgs: [],
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
toolName: 'ud_cart_add_domain_registration',
|
|
205
|
+
path: ['cart', 'add', 'registration'],
|
|
206
|
+
positionalArgs: [
|
|
207
|
+
{ name: 'domains', description: 'Domain name(s) to register', required: true, variadic: true },
|
|
208
|
+
],
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
toolName: 'ud_cart_add_domain_listed',
|
|
212
|
+
path: ['cart', 'add', 'listed'],
|
|
213
|
+
positionalArgs: [
|
|
214
|
+
{ name: 'domains', description: 'Listed domain name(s)', required: true, variadic: true },
|
|
215
|
+
],
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
toolName: 'ud_cart_add_domain_afternic',
|
|
219
|
+
path: ['cart', 'add', 'afternic'],
|
|
220
|
+
positionalArgs: [
|
|
221
|
+
{ name: 'domains', description: 'Afternic domain name(s)', required: true, variadic: true },
|
|
222
|
+
],
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
toolName: 'ud_cart_add_domain_sedo',
|
|
226
|
+
path: ['cart', 'add', 'sedo'],
|
|
227
|
+
positionalArgs: [
|
|
228
|
+
{ name: 'domains', description: 'Sedo domain name(s)', required: true, variadic: true },
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
toolName: 'ud_cart_add_domain_renewal',
|
|
233
|
+
path: ['cart', 'add', 'renewal'],
|
|
234
|
+
positionalArgs: [
|
|
235
|
+
{ name: 'domains', description: 'Domain name(s) to renew', required: true, variadic: true },
|
|
236
|
+
],
|
|
237
|
+
},
|
|
238
|
+
// --- Contacts ---
|
|
239
|
+
{
|
|
240
|
+
toolName: 'ud_contacts_list',
|
|
241
|
+
path: ['contacts', 'list'],
|
|
242
|
+
positionalArgs: [],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
toolName: 'ud_contact_create',
|
|
246
|
+
path: ['contacts', 'create'],
|
|
247
|
+
positionalArgs: [],
|
|
248
|
+
},
|
|
249
|
+
// --- Listings / Marketplace ---
|
|
250
|
+
{
|
|
251
|
+
toolName: 'ud_listing_create',
|
|
252
|
+
path: ['listings', 'create'],
|
|
253
|
+
positionalArgs: [
|
|
254
|
+
{ name: 'domains', description: 'Domain name(s) to list', required: true, variadic: true },
|
|
255
|
+
],
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
toolName: 'ud_listing_update',
|
|
259
|
+
path: ['listings', 'update'],
|
|
260
|
+
positionalArgs: [],
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
toolName: 'ud_listing_cancel',
|
|
264
|
+
path: ['listings', 'cancel'],
|
|
265
|
+
positionalArgs: [],
|
|
266
|
+
},
|
|
267
|
+
// --- Offers ---
|
|
268
|
+
{
|
|
269
|
+
toolName: 'ud_offers_list',
|
|
270
|
+
path: ['offers', 'list'],
|
|
271
|
+
positionalArgs: [],
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
toolName: 'ud_offer_respond',
|
|
275
|
+
path: ['offers', 'respond'],
|
|
276
|
+
positionalArgs: [],
|
|
277
|
+
},
|
|
278
|
+
// --- Leads ---
|
|
279
|
+
{
|
|
280
|
+
toolName: 'ud_leads_list',
|
|
281
|
+
path: ['leads', 'list'],
|
|
282
|
+
positionalArgs: [],
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
toolName: 'ud_lead_get',
|
|
286
|
+
path: ['leads', 'get'],
|
|
287
|
+
positionalArgs: [
|
|
288
|
+
{ name: 'domain', description: 'Domain name', required: true, variadic: false },
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
toolName: 'ud_lead_messages_list',
|
|
293
|
+
path: ['leads', 'messages'],
|
|
294
|
+
positionalArgs: [],
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
toolName: 'ud_lead_message_send',
|
|
298
|
+
path: ['leads', 'send'],
|
|
299
|
+
positionalArgs: [],
|
|
300
|
+
},
|
|
301
|
+
];
|
|
302
|
+
/**
|
|
303
|
+
* Returns the set of unique top-level group names.
|
|
304
|
+
*/
|
|
305
|
+
export function getGroups() {
|
|
306
|
+
const groups = new Set();
|
|
307
|
+
for (const route of COMMAND_ROUTES) {
|
|
308
|
+
groups.add(route.path[0]);
|
|
309
|
+
}
|
|
310
|
+
return [...groups];
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Builds a lookup map from toolName → CommandRoute.
|
|
314
|
+
*/
|
|
315
|
+
export function buildRouteMap() {
|
|
316
|
+
const map = new Map();
|
|
317
|
+
for (const route of COMMAND_ROUTES) {
|
|
318
|
+
map.set(route.toolName, route);
|
|
319
|
+
}
|
|
320
|
+
return map;
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
import type { AppConfig, CommandDefaults, Environment, EnvironmentConfig } from './types.js';
|
|
3
|
+
declare const config: Conf<AppConfig>;
|
|
4
|
+
export declare function setEnvOverride(env: Environment): void;
|
|
5
|
+
export declare function clearEnvOverride(): void;
|
|
6
|
+
export declare function getActiveEnv(): Environment;
|
|
7
|
+
export declare function getDefaultEnv(): Environment;
|
|
8
|
+
export declare function setDefaultEnv(env: Environment): void;
|
|
9
|
+
export declare function apiBaseUrl(env?: Environment): string;
|
|
10
|
+
export declare function mcpBaseUrl(env?: Environment): string;
|
|
11
|
+
export declare function getEnvConfig(env?: Environment): EnvironmentConfig;
|
|
12
|
+
export declare function setEnvConfig(envConfig: Partial<EnvironmentConfig>, env?: Environment): void;
|
|
13
|
+
export declare function clearEnvConfig(env?: Environment): void;
|
|
14
|
+
export declare function getAllDefaults(): Record<string, CommandDefaults>;
|
|
15
|
+
export declare function getCommandDefaults(commandPath: string): CommandDefaults;
|
|
16
|
+
export declare function setCommandDefault(commandPath: string, key: keyof CommandDefaults, value: string | boolean): void;
|
|
17
|
+
export declare function clearCommandDefault(commandPath: string, key?: keyof CommandDefaults): void;
|
|
18
|
+
export { config };
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA0B7F,QAAA,MAAM,MAAM,iBAGV,CAAC;AAKH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAErD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,YAAY,IAAI,WAAW,CAE1C;AAED,wBAAgB,aAAa,IAAI,WAAW,CAE3C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAEpD;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,CAEpD;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAGjE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAI3F;AAED,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAGtD;AAMD,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAIhH;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,CAc1F;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
const BASE_URLS = {
|
|
3
|
+
production: 'https://api.unstoppabledomains.com',
|
|
4
|
+
staging: 'https://api.ud-staging.com',
|
|
5
|
+
};
|
|
6
|
+
const schema = {
|
|
7
|
+
environment: {
|
|
8
|
+
type: 'string',
|
|
9
|
+
default: 'production',
|
|
10
|
+
enum: ['production', 'staging'],
|
|
11
|
+
},
|
|
12
|
+
environments: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
default: {
|
|
15
|
+
production: {},
|
|
16
|
+
staging: {},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaults: {
|
|
20
|
+
type: 'object',
|
|
21
|
+
default: {},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const config = new Conf({
|
|
25
|
+
projectName: process.env.NODE_ENV === 'test' ? 'ud-cli-test' : 'ud-cli',
|
|
26
|
+
schema,
|
|
27
|
+
});
|
|
28
|
+
// Stash for the --env override so library code can read it
|
|
29
|
+
let envOverride;
|
|
30
|
+
export function setEnvOverride(env) {
|
|
31
|
+
envOverride = env;
|
|
32
|
+
}
|
|
33
|
+
export function clearEnvOverride() {
|
|
34
|
+
envOverride = undefined;
|
|
35
|
+
}
|
|
36
|
+
export function getActiveEnv() {
|
|
37
|
+
return envOverride ?? config.get('environment');
|
|
38
|
+
}
|
|
39
|
+
export function getDefaultEnv() {
|
|
40
|
+
return config.get('environment');
|
|
41
|
+
}
|
|
42
|
+
export function setDefaultEnv(env) {
|
|
43
|
+
config.set('environment', env);
|
|
44
|
+
}
|
|
45
|
+
export function apiBaseUrl(env) {
|
|
46
|
+
return BASE_URLS[env ?? getActiveEnv()];
|
|
47
|
+
}
|
|
48
|
+
export function mcpBaseUrl(env) {
|
|
49
|
+
return `${apiBaseUrl(env)}/mcp/v1`;
|
|
50
|
+
}
|
|
51
|
+
export function getEnvConfig(env) {
|
|
52
|
+
const e = env ?? getActiveEnv();
|
|
53
|
+
return config.get(`environments.${e}`) ?? {};
|
|
54
|
+
}
|
|
55
|
+
export function setEnvConfig(envConfig, env) {
|
|
56
|
+
const e = env ?? getActiveEnv();
|
|
57
|
+
const current = getEnvConfig(e);
|
|
58
|
+
config.set(`environments.${e}`, { ...current, ...envConfig });
|
|
59
|
+
}
|
|
60
|
+
export function clearEnvConfig(env) {
|
|
61
|
+
const e = env ?? getActiveEnv();
|
|
62
|
+
config.set(`environments.${e}`, {});
|
|
63
|
+
}
|
|
64
|
+
// --- Per-command defaults ---
|
|
65
|
+
// Note: Always read/write the entire `defaults` object to avoid conf's
|
|
66
|
+
// dot-prop interpretation turning "domains.list" into nested { domains: { list: ... } }.
|
|
67
|
+
export function getAllDefaults() {
|
|
68
|
+
return config.get('defaults') ?? {};
|
|
69
|
+
}
|
|
70
|
+
export function getCommandDefaults(commandPath) {
|
|
71
|
+
return getAllDefaults()[commandPath] ?? {};
|
|
72
|
+
}
|
|
73
|
+
export function setCommandDefault(commandPath, key, value) {
|
|
74
|
+
const all = getAllDefaults();
|
|
75
|
+
all[commandPath] = { ...all[commandPath], [key]: value };
|
|
76
|
+
config.set('defaults', all);
|
|
77
|
+
}
|
|
78
|
+
export function clearCommandDefault(commandPath, key) {
|
|
79
|
+
const all = getAllDefaults();
|
|
80
|
+
if (key) {
|
|
81
|
+
const current = all[commandPath];
|
|
82
|
+
if (current) {
|
|
83
|
+
delete current[key];
|
|
84
|
+
if (Object.keys(current).length === 0) {
|
|
85
|
+
delete all[commandPath];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
delete all[commandPath];
|
|
91
|
+
}
|
|
92
|
+
config.set('defaults', all);
|
|
93
|
+
}
|
|
94
|
+
export { config };
|
|
95
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Environment, TokenData } from './types.js';
|
|
2
|
+
interface CredentialStore {
|
|
3
|
+
saveApiKey(key: string, env: Environment): Promise<void>;
|
|
4
|
+
getApiKey(env: Environment): Promise<string | null>;
|
|
5
|
+
saveTokens(tokens: TokenData, env: Environment): Promise<void>;
|
|
6
|
+
getTokens(env: Environment): Promise<TokenData | null>;
|
|
7
|
+
clear(env: Environment): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare function saveApiKey(key: string, env?: Environment): Promise<void>;
|
|
10
|
+
export declare function getApiKey(env?: Environment): Promise<string | null>;
|
|
11
|
+
export declare function saveTokens(tokens: TokenData, env?: Environment): Promise<void>;
|
|
12
|
+
export declare function getTokens(env?: Environment): Promise<TokenData | null>;
|
|
13
|
+
export declare function clearCredentials(env?: Environment): Promise<void>;
|
|
14
|
+
export declare function _setStore(s: CredentialStore): void;
|
|
15
|
+
export type { CredentialStore };
|
|
16
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGzD,UAAU,eAAe;IACvB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpD,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACvD,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAyHD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;AAED,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGzE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAG5E;AAED,wBAAsB,gBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAElD;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import * as os from 'node:os';
|
|
4
|
+
import { getActiveEnv } from './config.js';
|
|
5
|
+
// --- Keytar-backed store (primary) ---
|
|
6
|
+
class KeytarStore {
|
|
7
|
+
keytar;
|
|
8
|
+
constructor(keytar) {
|
|
9
|
+
this.keytar = keytar;
|
|
10
|
+
}
|
|
11
|
+
service(env) {
|
|
12
|
+
return `ud-cli:${env}`;
|
|
13
|
+
}
|
|
14
|
+
async saveApiKey(key, env) {
|
|
15
|
+
await this.keytar.setPassword(this.service(env), 'api-key', key);
|
|
16
|
+
}
|
|
17
|
+
async getApiKey(env) {
|
|
18
|
+
return this.keytar.getPassword(this.service(env), 'api-key');
|
|
19
|
+
}
|
|
20
|
+
async saveTokens(tokens, env) {
|
|
21
|
+
await this.keytar.setPassword(this.service(env), 'oauth-tokens', JSON.stringify(tokens));
|
|
22
|
+
}
|
|
23
|
+
async getTokens(env) {
|
|
24
|
+
const raw = await this.keytar.getPassword(this.service(env), 'oauth-tokens');
|
|
25
|
+
if (!raw)
|
|
26
|
+
return null;
|
|
27
|
+
return JSON.parse(raw);
|
|
28
|
+
}
|
|
29
|
+
async clear(env) {
|
|
30
|
+
await this.keytar.deletePassword(this.service(env), 'api-key').catch(() => { });
|
|
31
|
+
await this.keytar.deletePassword(this.service(env), 'oauth-tokens').catch(() => { });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// --- File-backed store (fallback) ---
|
|
35
|
+
class FileStore {
|
|
36
|
+
dir;
|
|
37
|
+
constructor() {
|
|
38
|
+
this.dir = path.join(os.homedir(), '.ud-cli');
|
|
39
|
+
}
|
|
40
|
+
filePath(env) {
|
|
41
|
+
return path.join(this.dir, `credentials-${env}.json`);
|
|
42
|
+
}
|
|
43
|
+
ensureDir() {
|
|
44
|
+
if (!fs.existsSync(this.dir)) {
|
|
45
|
+
fs.mkdirSync(this.dir, { recursive: true, mode: 0o700 });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
read(env) {
|
|
49
|
+
const fp = this.filePath(env);
|
|
50
|
+
if (!fs.existsSync(fp))
|
|
51
|
+
return {};
|
|
52
|
+
const raw = fs.readFileSync(fp, 'utf-8');
|
|
53
|
+
return JSON.parse(raw);
|
|
54
|
+
}
|
|
55
|
+
write(env, data) {
|
|
56
|
+
this.ensureDir();
|
|
57
|
+
const fp = this.filePath(env);
|
|
58
|
+
fs.writeFileSync(fp, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
59
|
+
}
|
|
60
|
+
async saveApiKey(key, env) {
|
|
61
|
+
const data = this.read(env);
|
|
62
|
+
data['api-key'] = key;
|
|
63
|
+
this.write(env, data);
|
|
64
|
+
}
|
|
65
|
+
async getApiKey(env) {
|
|
66
|
+
const data = this.read(env);
|
|
67
|
+
return data['api-key'] ?? null;
|
|
68
|
+
}
|
|
69
|
+
async saveTokens(tokens, env) {
|
|
70
|
+
const data = this.read(env);
|
|
71
|
+
data['oauth-tokens'] = tokens;
|
|
72
|
+
this.write(env, data);
|
|
73
|
+
}
|
|
74
|
+
async getTokens(env) {
|
|
75
|
+
const data = this.read(env);
|
|
76
|
+
return data['oauth-tokens'] ?? null;
|
|
77
|
+
}
|
|
78
|
+
async clear(env) {
|
|
79
|
+
const fp = this.filePath(env);
|
|
80
|
+
if (fs.existsSync(fp)) {
|
|
81
|
+
fs.unlinkSync(fp);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// --- Store singleton ---
|
|
86
|
+
let store;
|
|
87
|
+
async function getStore() {
|
|
88
|
+
if (store)
|
|
89
|
+
return store;
|
|
90
|
+
try {
|
|
91
|
+
const keytar = await import('keytar');
|
|
92
|
+
// Quick smoke-test to see if the native module actually works
|
|
93
|
+
await keytar.findCredentials('ud-cli:__test__');
|
|
94
|
+
store = new KeytarStore(keytar);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
store = new FileStore();
|
|
98
|
+
}
|
|
99
|
+
return store;
|
|
100
|
+
}
|
|
101
|
+
// Public convenience functions scoped to the active environment
|
|
102
|
+
export async function saveApiKey(key, env) {
|
|
103
|
+
const s = await getStore();
|
|
104
|
+
await s.saveApiKey(key, env ?? getActiveEnv());
|
|
105
|
+
}
|
|
106
|
+
export async function getApiKey(env) {
|
|
107
|
+
const s = await getStore();
|
|
108
|
+
return s.getApiKey(env ?? getActiveEnv());
|
|
109
|
+
}
|
|
110
|
+
export async function saveTokens(tokens, env) {
|
|
111
|
+
const s = await getStore();
|
|
112
|
+
await s.saveTokens(tokens, env ?? getActiveEnv());
|
|
113
|
+
}
|
|
114
|
+
export async function getTokens(env) {
|
|
115
|
+
const s = await getStore();
|
|
116
|
+
return s.getTokens(env ?? getActiveEnv());
|
|
117
|
+
}
|
|
118
|
+
export async function clearCredentials(env) {
|
|
119
|
+
const s = await getStore();
|
|
120
|
+
await s.clear(env ?? getActiveEnv());
|
|
121
|
+
}
|
|
122
|
+
// For testing: allow injecting a custom store
|
|
123
|
+
export function _setStore(s) {
|
|
124
|
+
store = s;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatting engine for CLI results.
|
|
3
|
+
* Supports JSON, table, and CSV output formats.
|
|
4
|
+
*/
|
|
5
|
+
import type { OutputFormat } from './types.js';
|
|
6
|
+
import type { ResponsePattern } from './spec-parser.js';
|
|
7
|
+
interface FormatOptions {
|
|
8
|
+
format: OutputFormat;
|
|
9
|
+
responsePattern?: ResponsePattern;
|
|
10
|
+
toolName?: string;
|
|
11
|
+
/** User-specified columns via --fields flag. Overrides TABLE_CONFIGS. */
|
|
12
|
+
fields?: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Format and print API response data.
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatOutput(data: unknown, options: FormatOptions): string;
|
|
18
|
+
/**
|
|
19
|
+
* Return known field paths for a given tool.
|
|
20
|
+
* `defaults` are the TABLE_CONFIGS columns; `all` merges DETAIL_CONFIGS and spec response fields.
|
|
21
|
+
* Pass `responseFields` from the parsed OpenAPI spec for complete discovery.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getKnownFields(toolName: string, responseFields?: string[]): {
|
|
24
|
+
defaults: string[];
|
|
25
|
+
all: string[];
|
|
26
|
+
} | null;
|
|
27
|
+
/**
|
|
28
|
+
* Format the --fields list output for a command.
|
|
29
|
+
* Pass `responseFields` from the parsed OpenAPI spec for complete discovery.
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatFieldsList(toolName: string, commandName: string, responseFields?: string[]): string;
|
|
32
|
+
export declare function formatError(error: unknown): string;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/lib/formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,UAAU,aAAa;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAyB1E;AA4qBD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAyB9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,MAAM,CA4BR;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlD"}
|