ninedeploy 0.2.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.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/dist/client.d.ts +5 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +11 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/commands/configCenter.d.ts +14 -0
  7. package/dist/commands/configCenter.d.ts.map +1 -0
  8. package/dist/commands/configCenter.js +56 -0
  9. package/dist/commands/configCenter.js.map +1 -0
  10. package/dist/commands/demo.d.ts +3 -0
  11. package/dist/commands/demo.d.ts.map +1 -0
  12. package/dist/commands/demo.js +18 -0
  13. package/dist/commands/demo.js.map +1 -0
  14. package/dist/commands/housekeeping.d.ts +3 -0
  15. package/dist/commands/housekeeping.d.ts.map +1 -0
  16. package/dist/commands/housekeeping.js +11 -0
  17. package/dist/commands/housekeeping.js.map +1 -0
  18. package/dist/commands/login.d.ts +3 -0
  19. package/dist/commands/login.d.ts.map +1 -0
  20. package/dist/commands/login.js +36 -0
  21. package/dist/commands/login.js.map +1 -0
  22. package/dist/commands/manage.d.ts +60 -0
  23. package/dist/commands/manage.d.ts.map +1 -0
  24. package/dist/commands/manage.js +440 -0
  25. package/dist/commands/manage.js.map +1 -0
  26. package/dist/commands/misc.d.ts +24 -0
  27. package/dist/commands/misc.d.ts.map +1 -0
  28. package/dist/commands/misc.js +183 -0
  29. package/dist/commands/misc.js.map +1 -0
  30. package/dist/commands/plugins.d.ts +15 -0
  31. package/dist/commands/plugins.d.ts.map +1 -0
  32. package/dist/commands/plugins.js +77 -0
  33. package/dist/commands/plugins.js.map +1 -0
  34. package/dist/commands/services.d.ts +22 -0
  35. package/dist/commands/services.d.ts.map +1 -0
  36. package/dist/commands/services.js +236 -0
  37. package/dist/commands/services.js.map +1 -0
  38. package/dist/commands/setup.d.ts +3 -0
  39. package/dist/commands/setup.d.ts.map +1 -0
  40. package/dist/commands/setup.js +40 -0
  41. package/dist/commands/setup.js.map +1 -0
  42. package/dist/commands/token.d.ts +5 -0
  43. package/dist/commands/token.d.ts.map +1 -0
  44. package/dist/commands/token.js +33 -0
  45. package/dist/commands/token.js.map +1 -0
  46. package/dist/commands/workspaces.d.ts +8 -0
  47. package/dist/commands/workspaces.d.ts.map +1 -0
  48. package/dist/commands/workspaces.js +52 -0
  49. package/dist/commands/workspaces.js.map +1 -0
  50. package/dist/config.d.ts +7 -0
  51. package/dist/config.d.ts.map +1 -0
  52. package/dist/config.js +31 -0
  53. package/dist/config.js.map +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +225 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/lib/format.d.ts +34 -0
  59. package/dist/lib/format.d.ts.map +1 -0
  60. package/dist/lib/format.js +145 -0
  61. package/dist/lib/format.js.map +1 -0
  62. package/dist/prompts.d.ts +5 -0
  63. package/dist/prompts.d.ts.map +1 -0
  64. package/dist/prompts.js +59 -0
  65. package/dist/prompts.js.map +1 -0
  66. package/package.json +41 -0
@@ -0,0 +1,440 @@
1
+ import { c, error, fmtTime, header, info, spinner, success, table } from '../lib/format.js';
2
+ import { prompt } from '../prompts.js';
3
+ const num = (v, usage) => {
4
+ const n = Number(v);
5
+ if (!n) {
6
+ error(usage);
7
+ // error() calls process.exit; throw as a backstop so execution never
8
+ // continues with NaN (and tests can observe the failure).
9
+ throw new Error(usage);
10
+ }
11
+ return n;
12
+ };
13
+ const fail = (err) => {
14
+ error(err instanceof Error ? err.message : String(err));
15
+ };
16
+ // ── env ────────────────────────────────────────────────────────────────────
17
+ /** `ninedeploy env list <serviceId>` */
18
+ export async function envList(client, idStr) {
19
+ const id = num(idStr, 'Usage: ninedeploy env list <serviceId>');
20
+ header('Environment Variables');
21
+ await spinner('Fetching', async () => {
22
+ const vars = await client.env.list(id);
23
+ if (vars.length === 0) {
24
+ info('No env vars.');
25
+ return;
26
+ }
27
+ table(vars.map((v) => ({ id: v.id, key: v.key, secret: v.isSecret ? '•••' : 'plain', value: v.isSecret ? '—' : v.value })), ['id', 'key', 'secret', 'value']);
28
+ });
29
+ }
30
+ /** `ninedeploy env set <serviceId> <key> <value> [--public]` */
31
+ export async function envSet(client, idStr, key, value, opts) {
32
+ const id = num(idStr, 'Usage: ninedeploy env set <serviceId> <key> <value>');
33
+ if (!key || value === undefined)
34
+ return error('Usage: ninedeploy env set <serviceId> <key> <value>');
35
+ const input = { key, value, isSecret: !opts.public };
36
+ try {
37
+ const vars = await client.env.list(id);
38
+ const existing = vars.find((v) => v.key === key);
39
+ if (existing) {
40
+ await client.env.update(id, existing.id, input);
41
+ }
42
+ else {
43
+ await client.env.create(id, input);
44
+ }
45
+ success(`Set ${c.cyan(key)}${input.isSecret ? ' (secret)' : ''}.`);
46
+ }
47
+ catch (err) {
48
+ fail(err);
49
+ }
50
+ }
51
+ /** `ninedeploy env rm <serviceId> <key>` */
52
+ export async function envRemove(client, idStr, key) {
53
+ const id = num(idStr, 'Usage: ninedeploy env rm <serviceId> <key>');
54
+ if (!key)
55
+ return error('Usage: ninedeploy env rm <serviceId> <key>');
56
+ try {
57
+ const vars = await client.env.list(id);
58
+ const existing = vars.find((v) => v.key === key);
59
+ if (!existing)
60
+ return info(`No env var named "${key}".`);
61
+ await client.env.remove(id, existing.id);
62
+ success(`Removed ${c.cyan(key)}.`);
63
+ }
64
+ catch (err) {
65
+ fail(err);
66
+ }
67
+ }
68
+ // ── domains ────────────────────────────────────────────────────────────────
69
+ /** `ninedeploy domains list` */
70
+ export async function domainsList(client) {
71
+ header('Domains');
72
+ await spinner('Fetching', async () => {
73
+ const rows = await client.domains.all();
74
+ if (rows.length === 0) {
75
+ info('No domains yet.');
76
+ return;
77
+ }
78
+ table(rows.map((d) => ({
79
+ id: d.id,
80
+ host: d.hostname,
81
+ path: d.path,
82
+ ssl: d.ssl ? '🔒' : '',
83
+ cert: d.certExpiresAt ? `${Math.ceil((new Date(d.certExpiresAt).getTime() - Date.now()) / 86_400_000)}d` : '—',
84
+ service: d.serviceName ?? '—',
85
+ })), ['id', 'host', 'path', 'ssl', 'cert', 'service']);
86
+ });
87
+ }
88
+ /** `ninedeploy domains add <serviceId> <host> [--path p] [--no-ssl]` */
89
+ export async function domainsAdd(client, idStr, host, opts) {
90
+ const id = num(idStr, 'Usage: ninedeploy domains add <serviceId> <host>');
91
+ if (!host)
92
+ return error('Usage: ninedeploy domains add <serviceId> <host>');
93
+ try {
94
+ const d = await client.domains.create(id, { hostname: host, path: opts.path ?? '/', ssl: opts.ssl !== false });
95
+ success(`Domain ${c.cyan(d.hostname)} added (id: ${d.id}).`);
96
+ }
97
+ catch (err) {
98
+ fail(err);
99
+ }
100
+ }
101
+ /** `ninedeploy domains rm <domainId>` */
102
+ export async function domainsRemove(client, idStr, domainIdStr) {
103
+ const serviceId = num(idStr, 'Usage: ninedeploy domains rm <serviceId> <domainId>');
104
+ const domainId = num(domainIdStr, 'Usage: ninedeploy domains rm <serviceId> <domainId>');
105
+ try {
106
+ await client.domains.remove(serviceId, domainId);
107
+ success('Domain removed.');
108
+ }
109
+ catch (err) {
110
+ fail(err);
111
+ }
112
+ }
113
+ // ── volumes ────────────────────────────────────────────────────────────────
114
+ /** `ninedeploy volumes list` */
115
+ export async function volumesList(client) {
116
+ header('Volumes');
117
+ await spinner('Fetching', async () => {
118
+ const rows = await client.volumes.list();
119
+ if (rows.length === 0) {
120
+ info('No volumes.');
121
+ return;
122
+ }
123
+ table(rows.map((v) => ({ name: v.name, owner: v.owner ? `${v.owner.kind}: ${v.owner.name}` : '—', size: v.sizeBytes })), ['name', 'owner', 'size']);
124
+ });
125
+ }
126
+ /** `ninedeploy volumes rm <name>` */
127
+ export async function volumesRemove(client, name) {
128
+ if (!name)
129
+ return error('Usage: ninedeploy volumes rm <name>');
130
+ const confirm = await prompt(`Type the volume name (${name}) to confirm deletion`);
131
+ if (confirm !== name)
132
+ return error('Cancelled.');
133
+ try {
134
+ await spinner('Removing volume', () => client.volumes.remove(name));
135
+ success(`Volume ${c.cyan(name)} removed.`);
136
+ }
137
+ catch (err) {
138
+ fail(err);
139
+ }
140
+ }
141
+ // ── networks ───────────────────────────────────────────────────────────────
142
+ /** `ninedeploy networks list` */
143
+ export async function networksList(client) {
144
+ header('Docker Networks');
145
+ await spinner('Fetching', async () => {
146
+ const { networks } = await client.networks.list();
147
+ if (networks.length === 0) {
148
+ info('No user-defined networks.');
149
+ return;
150
+ }
151
+ table(networks.map((n) => ({ name: n.name, driver: n.driver, members: n.members.join(', ') || '—' })), ['name', 'driver', 'members']);
152
+ });
153
+ }
154
+ /** `ninedeploy networks create <name> [driver]` */
155
+ export async function networksCreate(client, name, driver) {
156
+ try {
157
+ await spinner('Creating network', () => client.networks.create({ name, driver }));
158
+ success(`Network ${c.cyan(name)} created.`);
159
+ }
160
+ catch (err) {
161
+ fail(err);
162
+ }
163
+ }
164
+ /** `ninedeploy networks rm <name>` */
165
+ export async function networksRemove(client, name) {
166
+ if (!name)
167
+ return error('Usage: ninedeploy networks rm <name>');
168
+ const confirm = await prompt(`Type the network name (${name}) to confirm deletion`);
169
+ if (confirm !== name)
170
+ return error('Cancelled.');
171
+ try {
172
+ await spinner('Removing network', () => client.networks.remove(name));
173
+ success(`Network ${c.cyan(name)} removed.`);
174
+ }
175
+ catch (err) {
176
+ fail(err);
177
+ }
178
+ }
179
+ // ── sessions ───────────────────────────────────────────────────────────────
180
+ /** `ninedeploy sessions list` */
181
+ export async function sessionsList(client) {
182
+ header('Active Sessions');
183
+ await spinner('Fetching', async () => {
184
+ const rows = await client.auth.sessions.list();
185
+ if (rows.length === 0) {
186
+ info('No active sessions.');
187
+ return;
188
+ }
189
+ table(rows.map((s) => ({
190
+ id: s.id,
191
+ current: s.current ? 'yes' : '',
192
+ ip: s.ip ?? '—',
193
+ lastUsed: s.lastUsedAt ?? s.createdAt,
194
+ userAgent: (s.userAgent ?? '—').slice(0, 60),
195
+ })), ['id', 'current', 'ip', 'lastUsed', 'userAgent']);
196
+ });
197
+ }
198
+ /** `ninedeploy sessions revoke <id>` */
199
+ export async function sessionsRevoke(client, idStr) {
200
+ const id = Number(idStr);
201
+ if (!Number.isInteger(id) || id <= 0)
202
+ return error('Usage: ninedeploy sessions revoke <id>');
203
+ try {
204
+ await spinner('Revoking session', () => client.auth.sessions.revoke(id));
205
+ success(`Session #${id} revoked.`);
206
+ }
207
+ catch (err) {
208
+ fail(err);
209
+ }
210
+ }
211
+ // ── backups ────────────────────────────────────────────────────────────────
212
+ /** Human label for a backup row: prefer the database name, fall back to its id. */
213
+ function backupDbLabel(b) {
214
+ if (b.databaseName)
215
+ return b.databaseName;
216
+ if (b.databaseId != null)
217
+ return String(b.databaseId);
218
+ return '—';
219
+ }
220
+ /** `ninedeploy backups list [databaseId]` */
221
+ export async function backupsList(client, idStr) {
222
+ header('Backups');
223
+ const fetchRows = () => (idStr ? client.backups.listForDb(Number(idStr)) : client.backups.list());
224
+ await spinner('Fetching', async () => {
225
+ const rows = await fetchRows();
226
+ if (rows.length === 0) {
227
+ info('No backups.');
228
+ return;
229
+ }
230
+ table(rows.map((b) => ({ id: b.id, db: backupDbLabel(b), status: b.status, size: b.sizeBytes, created: fmtTime(b.createdAt) })), ['id', 'db', 'status', 'size', 'created']);
231
+ });
232
+ }
233
+ /** `ninedeploy backups create <databaseId>` */
234
+ export async function backupsCreate(client, idStr) {
235
+ const id = num(idStr, 'Usage: ninedeploy backups create <databaseId>');
236
+ try {
237
+ const b = await spinner('Backing up', () => client.backups.backupNow(id));
238
+ success(`Backup #${b.id} ${b.status}.`);
239
+ }
240
+ catch (err) {
241
+ fail(err);
242
+ }
243
+ }
244
+ /** `ninedeploy backups restore <databaseId> <backupId>` */
245
+ export async function backupsRestore(client, idStr, backupIdStr) {
246
+ const id = num(idStr, 'Usage: ninedeploy backups restore <databaseId> <backupId>');
247
+ const backupId = num(backupIdStr, 'Usage: ninedeploy backups restore <databaseId> <backupId>');
248
+ const confirm = await prompt('Restore OVERWRITES the database. Type "yes" to continue');
249
+ if (confirm.toLowerCase() !== 'yes')
250
+ return error('Cancelled.');
251
+ try {
252
+ await spinner('Restoring', () => client.backups.restore(id, backupId));
253
+ success(`Backup #${backupId} restored.`);
254
+ }
255
+ catch (err) {
256
+ fail(err);
257
+ }
258
+ }
259
+ // ── alerts ─────────────────────────────────────────────────────────────────
260
+ /** `ninedeploy alerts list` */
261
+ export async function alertsList(client) {
262
+ header('Alert Rules');
263
+ await spinner('Fetching', async () => {
264
+ const rules = await client.alerts.list();
265
+ if (rules.length === 0) {
266
+ info('No alert rules.');
267
+ return;
268
+ }
269
+ table(rules.map((r) => ({
270
+ id: r.id,
271
+ name: r.name,
272
+ rule: `${r.metric} ${r.operator} ${r.threshold}`,
273
+ status: r.status,
274
+ current: r.lastValue ?? '—',
275
+ enabled: r.enabled ? '✓' : '',
276
+ })), ['id', 'name', 'rule', 'status', 'current', 'enabled']);
277
+ });
278
+ }
279
+ /** `ninedeploy alerts create <name> <metric> <operator> <threshold> [--windows n] [--service id]` */
280
+ export async function alertsCreate(client, name, metric, operator, thresholdStr, opts) {
281
+ if (!name || !metric || !operator || !thresholdStr) {
282
+ return error('Usage: ninedeploy alerts create <name> <cpu|memory|cert-expiry> <|<> <threshold>');
283
+ }
284
+ const threshold = Number(thresholdStr);
285
+ if (!threshold)
286
+ return error('Threshold must be a number.');
287
+ try {
288
+ const rule = await client.alerts.create({
289
+ name,
290
+ metric: metric,
291
+ operator: operator,
292
+ threshold,
293
+ serviceId: opts.service ? Number(opts.service) : null,
294
+ durationWindows: opts.windows ? Number(opts.windows) : undefined,
295
+ });
296
+ success(`Alert "${rule.name}" created (id: ${rule.id}).`);
297
+ }
298
+ catch (err) {
299
+ fail(err);
300
+ }
301
+ }
302
+ /** `ninedeploy alerts rm <id>` */
303
+ export async function alertsRemove(client, idStr) {
304
+ const id = num(idStr, 'Usage: ninedeploy alerts rm <id>');
305
+ try {
306
+ await client.alerts.remove(id);
307
+ success(`Alert #${id} removed.`);
308
+ }
309
+ catch (err) {
310
+ fail(err);
311
+ }
312
+ }
313
+ // ── users & activity ───────────────────────────────────────────────────────
314
+ /** `ninedeploy users list` */
315
+ export async function usersList(client) {
316
+ header('Users');
317
+ await spinner('Fetching', async () => {
318
+ const users = await client.users.list();
319
+ if (users.length === 0) {
320
+ info('No users.');
321
+ return;
322
+ }
323
+ table(users.map((u) => ({ id: u.id, email: u.email, name: u.name ?? '—', role: u.role })), ['id', 'email', 'name', 'role']);
324
+ });
325
+ }
326
+ /** `ninedeploy users reset-link <id|email>` — mint a one-time reset link. */
327
+ export async function usersResetLink(client, who) {
328
+ header('Password reset link');
329
+ try {
330
+ const link = await spinner('Resolving user', async () => {
331
+ const users = await client.users.list();
332
+ const target = users.find((u) => String(u.id) === who || u.email === who);
333
+ if (!target)
334
+ throw new Error(`No user matches "${who}"`);
335
+ return client.users.resetLink(target.id);
336
+ });
337
+ success('One-time reset link (copy it now — shown once):');
338
+ console.log(` ${c.cyan(link.url)}`);
339
+ info(`Expires ${new Date(link.expiresAt).toLocaleString()}`);
340
+ }
341
+ catch (err) {
342
+ fail(err);
343
+ }
344
+ }
345
+ /** `ninedeploy activity list` */
346
+ export async function activityList(client) {
347
+ header('Activity');
348
+ await spinner('Fetching', async () => {
349
+ const { entries } = await client.activity.list();
350
+ if (entries.length === 0) {
351
+ info('No activity yet.');
352
+ return;
353
+ }
354
+ table(entries.slice(0, 30).map((a) => ({ id: a.id, action: a.action, entity: a.entity ?? '—', time: fmtTime(a.ts) })), ['id', 'action', 'entity', 'time']);
355
+ });
356
+ }
357
+ // ── system export / import ─────────────────────────────────────────────────
358
+ /** `ninedeploy system export [file]` — downloads the full system bundle. */
359
+ export async function systemExport(file) {
360
+ const { writeFileSync } = await import('node:fs');
361
+ const { loadConfig } = await import('../config.js');
362
+ const cfg = loadConfig();
363
+ const filename = file ?? `ninedeploy-export-${new Date().toISOString().slice(0, 10)}.json`;
364
+ try {
365
+ const data = await spinner('Exporting system', async () => {
366
+ const res = await fetch(`${cfg.baseUrl}/v1/system/export`, {
367
+ headers: { Authorization: `Bearer ${cfg.token ?? ''}` },
368
+ });
369
+ if (!res.ok)
370
+ throw new Error(`Export failed (${res.status})`);
371
+ return res.text();
372
+ });
373
+ writeFileSync(filename, data);
374
+ success(`Exported to ${filename}`);
375
+ }
376
+ catch (err) {
377
+ fail(err);
378
+ }
379
+ }
380
+ /** `ninedeploy deploys watch <serviceId> <deployId>` — stream deploy logs over WebSocket. */
381
+ export async function deploysWatch(serviceIdStr, deployIdStr, timeoutMs = 30 * 60_000) {
382
+ const serviceId = Number(serviceIdStr);
383
+ const deployId = Number(deployIdStr);
384
+ if (!serviceId || !deployId)
385
+ return error('Usage: ninedeploy deploys watch <serviceId> <deployId>');
386
+ const { loadConfig } = await import('../config.js');
387
+ const cfg = loadConfig();
388
+ const { WebSocket } = await import('ws');
389
+ const url = new URL(`/v1/services/${serviceId}/deploys/${deployId}/logs`, cfg.baseUrl.replace(/^http/, 'ws'));
390
+ url.searchParams.set('token', cfg.token ?? '');
391
+ const ws = new WebSocket(url);
392
+ let closed = false;
393
+ ws.on('message', (data) => process.stdout.write(String(data)));
394
+ ws.on('close', () => {
395
+ closed = true;
396
+ info('Log stream closed.');
397
+ });
398
+ ws.on('error', (err) => error(`Stream error: ${err.message}`));
399
+ ws.on('unexpected-response', (_req, res) => error(`Stream rejected (${res.statusCode}).`));
400
+ // Exit when the server closes the stream (deploy finished) or on Ctrl-C.
401
+ process.on('SIGINT', () => {
402
+ closed = true;
403
+ ws.close();
404
+ process.exit(0);
405
+ });
406
+ // Hard cap so a stuck stream can never hang the CLI forever.
407
+ const deadline = Date.now() + timeoutMs;
408
+ while (!closed && Date.now() < deadline) {
409
+ await new Promise((resolve) => setTimeout(resolve, 250));
410
+ }
411
+ if (!closed)
412
+ ws.close();
413
+ }
414
+ /** `ninedeploy system import <file>` — restores a system bundle (destructive). */
415
+ export async function systemImport(file) {
416
+ if (!file)
417
+ return error('Usage: ninedeploy system import <file>');
418
+ const { readFileSync } = await import('node:fs');
419
+ const { loadConfig } = await import('../config.js');
420
+ const cfg = loadConfig();
421
+ const confirm = await prompt('Import OVERWRITES the current system state. Type "yes" to continue');
422
+ if (confirm.toLowerCase() !== 'yes')
423
+ return error('Cancelled.');
424
+ try {
425
+ const form = new FormData();
426
+ form.append('file', new Blob([readFileSync(file)]), file);
427
+ const res = await spinner('Importing system', () => fetch(`${cfg.baseUrl}/v1/system/import`, {
428
+ method: 'POST',
429
+ headers: { Authorization: `Bearer ${cfg.token ?? ''}` },
430
+ body: form,
431
+ }));
432
+ if (!res.ok)
433
+ throw new Error(`Import failed (${res.status})`);
434
+ success('System imported.');
435
+ }
436
+ catch (err) {
437
+ fail(err);
438
+ }
439
+ }
440
+ //# sourceMappingURL=manage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/commands/manage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { NineDeployClient } from '../client.js';
2
+ /** `ninedeploy databases list` */
3
+ export declare function dbList(client: NineDeployClient): Promise<void>;
4
+ /** `ninedeploy databases create` */
5
+ export declare function dbCreate(client: NineDeployClient): Promise<void>;
6
+ /** `ninedeploy templates list` */
7
+ export declare function tplList(client: NineDeployClient): Promise<void>;
8
+ /** `ninedeploy templates deploy <id>` */
9
+ export declare function tplDeploy(client: NineDeployClient, id: string): Promise<void>;
10
+ /** `ninedeploy deploys list <serviceId>` */
11
+ export declare function deploysList(client: NineDeployClient, svcIdStr: string): Promise<void>;
12
+ /** `ninedeploy deploys rollback <serviceId> <deployId>` */
13
+ export declare function deploysRollback(client: NineDeployClient, svcIdStr: string, depIdStr: string): Promise<void>;
14
+ /** `ninedeploy token create` */
15
+ export declare function tokenCreate(client: NineDeployClient): Promise<void>;
16
+ /** `ninedeploy token list` */
17
+ export declare function tokenList(client: NineDeployClient): Promise<void>;
18
+ /** `ninedeploy system info` */
19
+ export declare function systemInfo(client: NineDeployClient): Promise<void>;
20
+ /** `ninedeploy system update-check` */
21
+ export declare function systemUpdateCheck(client: NineDeployClient, force: boolean): Promise<void>;
22
+ /** `ninedeploy system dashboard` */
23
+ export declare function systemDashboard(client: NineDeployClient): Promise<void>;
24
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/commands/misc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD,kCAAkC;AAClC,wBAAsB,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpE;AAED,oCAAoC;AACpC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAatE;AAED,kCAAkC;AAClC,wBAAsB,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrE;AAED,yCAAyC;AACzC,wBAAsB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnF;AAED,4CAA4C;AAC5C,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F;AAED,2DAA2D;AAC3D,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjH;AAED,gCAAgC;AAChC,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzE;AAED,8BAA8B;AAC9B,wBAAsB,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED,+BAA+B;AAC/B,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxE;AAED,uCAAuC;AACvC,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/F;AAED,oCAAoC;AACpC,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7E"}