@zincapp/znvault-cli 2.16.5 → 2.18.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/dist/commands/apikey/conditions.d.ts +6 -0
- package/dist/commands/apikey/conditions.d.ts.map +1 -0
- package/dist/commands/apikey/conditions.js +57 -0
- package/dist/commands/apikey/conditions.js.map +1 -0
- package/dist/commands/apikey/create.d.ts +6 -0
- package/dist/commands/apikey/create.d.ts.map +1 -0
- package/dist/commands/apikey/create.js +106 -0
- package/dist/commands/apikey/create.js.map +1 -0
- package/dist/commands/apikey/delete.d.ts +6 -0
- package/dist/commands/apikey/delete.d.ts.map +1 -0
- package/dist/commands/apikey/delete.js +29 -0
- package/dist/commands/apikey/delete.js.map +1 -0
- package/dist/commands/apikey/enable-disable.d.ts +6 -0
- package/dist/commands/apikey/enable-disable.d.ts.map +1 -0
- package/dist/commands/apikey/enable-disable.js +44 -0
- package/dist/commands/apikey/enable-disable.js.map +1 -0
- package/dist/commands/apikey/helpers.d.ts +23 -0
- package/dist/commands/apikey/helpers.d.ts.map +1 -0
- package/dist/commands/apikey/helpers.js +135 -0
- package/dist/commands/apikey/helpers.js.map +1 -0
- package/dist/commands/apikey/index.d.ts +10 -0
- package/dist/commands/apikey/index.d.ts.map +1 -0
- package/dist/commands/apikey/index.js +33 -0
- package/dist/commands/apikey/index.js.map +1 -0
- package/dist/commands/apikey/list.d.ts +6 -0
- package/dist/commands/apikey/list.d.ts.map +1 -0
- package/dist/commands/apikey/list.js +74 -0
- package/dist/commands/apikey/list.js.map +1 -0
- package/dist/commands/apikey/managed/bind.d.ts +6 -0
- package/dist/commands/apikey/managed/bind.d.ts.map +1 -0
- package/dist/commands/apikey/managed/bind.js +52 -0
- package/dist/commands/apikey/managed/bind.js.map +1 -0
- package/dist/commands/apikey/managed/conditions.d.ts +6 -0
- package/dist/commands/apikey/managed/conditions.d.ts.map +1 -0
- package/dist/commands/apikey/managed/conditions.js +62 -0
- package/dist/commands/apikey/managed/conditions.js.map +1 -0
- package/dist/commands/apikey/managed/config.d.ts +6 -0
- package/dist/commands/apikey/managed/config.d.ts.map +1 -0
- package/dist/commands/apikey/managed/config.js +52 -0
- package/dist/commands/apikey/managed/config.js.map +1 -0
- package/dist/commands/apikey/managed/create.d.ts +6 -0
- package/dist/commands/apikey/managed/create.d.ts.map +1 -0
- package/dist/commands/apikey/managed/create.js +82 -0
- package/dist/commands/apikey/managed/create.js.map +1 -0
- package/dist/commands/apikey/managed/delete.d.ts +6 -0
- package/dist/commands/apikey/managed/delete.d.ts.map +1 -0
- package/dist/commands/apikey/managed/delete.js +29 -0
- package/dist/commands/apikey/managed/delete.js.map +1 -0
- package/dist/commands/apikey/managed/get.d.ts +6 -0
- package/dist/commands/apikey/managed/get.d.ts.map +1 -0
- package/dist/commands/apikey/managed/get.js +31 -0
- package/dist/commands/apikey/managed/get.js.map +1 -0
- package/dist/commands/apikey/managed/helpers.d.ts +5 -0
- package/dist/commands/apikey/managed/helpers.d.ts.map +1 -0
- package/dist/commands/apikey/managed/helpers.js +70 -0
- package/dist/commands/apikey/managed/helpers.js.map +1 -0
- package/dist/commands/apikey/managed/index.d.ts +7 -0
- package/dist/commands/apikey/managed/index.d.ts.map +1 -0
- package/dist/commands/apikey/managed/index.js +27 -0
- package/dist/commands/apikey/managed/index.js.map +1 -0
- package/dist/commands/apikey/managed/list.d.ts +6 -0
- package/dist/commands/apikey/managed/list.d.ts.map +1 -0
- package/dist/commands/apikey/managed/list.js +58 -0
- package/dist/commands/apikey/managed/list.js.map +1 -0
- package/dist/commands/apikey/managed/permissions.d.ts +6 -0
- package/dist/commands/apikey/managed/permissions.d.ts.map +1 -0
- package/dist/commands/apikey/managed/permissions.js +73 -0
- package/dist/commands/apikey/managed/permissions.js.map +1 -0
- package/dist/commands/apikey/managed/rotate.d.ts +6 -0
- package/dist/commands/apikey/managed/rotate.d.ts.map +1 -0
- package/dist/commands/apikey/managed/rotate.js +29 -0
- package/dist/commands/apikey/managed/rotate.js.map +1 -0
- package/dist/commands/apikey/managed/types.d.ts +62 -0
- package/dist/commands/apikey/managed/types.d.ts.map +1 -0
- package/dist/commands/apikey/managed/types.js +3 -0
- package/dist/commands/apikey/managed/types.js.map +1 -0
- package/dist/commands/apikey/permissions.d.ts +6 -0
- package/dist/commands/apikey/permissions.d.ts.map +1 -0
- package/dist/commands/apikey/permissions.js +70 -0
- package/dist/commands/apikey/permissions.js.map +1 -0
- package/dist/commands/apikey/policies.d.ts +6 -0
- package/dist/commands/apikey/policies.d.ts.map +1 -0
- package/dist/commands/apikey/policies.js +82 -0
- package/dist/commands/apikey/policies.js.map +1 -0
- package/dist/commands/apikey/rotate.d.ts +6 -0
- package/dist/commands/apikey/rotate.d.ts.map +1 -0
- package/dist/commands/apikey/rotate.js +42 -0
- package/dist/commands/apikey/rotate.js.map +1 -0
- package/dist/commands/apikey/self.d.ts +6 -0
- package/dist/commands/apikey/self.d.ts.map +1 -0
- package/dist/commands/apikey/self.js +96 -0
- package/dist/commands/apikey/self.js.map +1 -0
- package/dist/commands/apikey/show.d.ts +6 -0
- package/dist/commands/apikey/show.d.ts.map +1 -0
- package/dist/commands/apikey/show.js +79 -0
- package/dist/commands/apikey/show.js.map +1 -0
- package/dist/commands/apikey/types.d.ts +83 -0
- package/dist/commands/apikey/types.d.ts.map +1 -0
- package/dist/commands/apikey/types.js +3 -0
- package/dist/commands/apikey/types.js.map +1 -0
- package/dist/commands/apikey.d.ts +8 -2
- package/dist/commands/apikey.d.ts.map +1 -1
- package/dist/commands/apikey.js +9 -1296
- package/dist/commands/apikey.js.map +1 -1
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +7 -1
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +31 -10
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/cert.d.ts.map +1 -1
- package/dist/commands/cert.js +25 -1
- package/dist/commands/cert.js.map +1 -1
- package/dist/commands/cluster.d.ts.map +1 -1
- package/dist/commands/cluster.js +46 -17
- package/dist/commands/cluster.js.map +1 -1
- package/dist/commands/device.d.ts.map +1 -1
- package/dist/commands/device.js +8 -5
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/dynamic-secrets.d.ts.map +1 -1
- package/dist/commands/dynamic-secrets.js +12 -0
- package/dist/commands/dynamic-secrets.js.map +1 -1
- package/dist/commands/emergency.d.ts.map +1 -1
- package/dist/commands/emergency.js +37 -1
- package/dist/commands/emergency.js.map +1 -1
- package/dist/commands/kms.d.ts.map +1 -1
- package/dist/commands/kms.js +19 -4
- package/dist/commands/kms.js.map +1 -1
- package/dist/commands/lockdown.d.ts.map +1 -1
- package/dist/commands/lockdown.js +10 -0
- package/dist/commands/lockdown.js.map +1 -1
- package/dist/commands/notification.d.ts.map +1 -1
- package/dist/commands/notification.js +51 -15
- package/dist/commands/notification.js.map +1 -1
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +97 -12
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +148 -35
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +11 -1
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/secret/copy.d.ts +6 -0
- package/dist/commands/secret/copy.d.ts.map +1 -0
- package/dist/commands/secret/copy.js +43 -0
- package/dist/commands/secret/copy.js.map +1 -0
- package/dist/commands/secret/create.d.ts +6 -0
- package/dist/commands/secret/create.d.ts.map +1 -0
- package/dist/commands/secret/create.js +297 -0
- package/dist/commands/secret/create.js.map +1 -0
- package/dist/commands/secret/decrypt.d.ts +6 -0
- package/dist/commands/secret/decrypt.d.ts.map +1 -0
- package/dist/commands/secret/decrypt.js +104 -0
- package/dist/commands/secret/decrypt.js.map +1 -0
- package/dist/commands/secret/delete.d.ts +6 -0
- package/dist/commands/secret/delete.d.ts.map +1 -0
- package/dist/commands/secret/delete.js +60 -0
- package/dist/commands/secret/delete.js.map +1 -0
- package/dist/commands/secret/get.d.ts +6 -0
- package/dist/commands/secret/get.d.ts.map +1 -0
- package/dist/commands/secret/get.js +60 -0
- package/dist/commands/secret/get.js.map +1 -0
- package/dist/commands/secret/helpers.d.ts +11 -0
- package/dist/commands/secret/helpers.d.ts.map +1 -0
- package/dist/commands/secret/helpers.js +59 -0
- package/dist/commands/secret/helpers.js.map +1 -0
- package/dist/commands/secret/history.d.ts +6 -0
- package/dist/commands/secret/history.d.ts.map +1 -0
- package/dist/commands/secret/history.js +52 -0
- package/dist/commands/secret/history.js.map +1 -0
- package/dist/commands/secret/index.d.ts +12 -0
- package/dist/commands/secret/index.d.ts.map +1 -0
- package/dist/commands/secret/index.js +49 -0
- package/dist/commands/secret/index.js.map +1 -0
- package/dist/commands/secret/list.d.ts +6 -0
- package/dist/commands/secret/list.d.ts.map +1 -0
- package/dist/commands/secret/list.js +72 -0
- package/dist/commands/secret/list.js.map +1 -0
- package/dist/commands/secret/pem-analysis.d.ts +32 -0
- package/dist/commands/secret/pem-analysis.d.ts.map +1 -0
- package/dist/commands/secret/pem-analysis.js +190 -0
- package/dist/commands/secret/pem-analysis.js.map +1 -0
- package/dist/commands/secret/resolve.d.ts +17 -0
- package/dist/commands/secret/resolve.d.ts.map +1 -0
- package/dist/commands/secret/resolve.js +36 -0
- package/dist/commands/secret/resolve.js.map +1 -0
- package/dist/commands/secret/rotate.d.ts +6 -0
- package/dist/commands/secret/rotate.d.ts.map +1 -0
- package/dist/commands/secret/rotate.js +72 -0
- package/dist/commands/secret/rotate.js.map +1 -0
- package/dist/commands/secret/types.d.ts +123 -0
- package/dist/commands/secret/types.d.ts.map +1 -0
- package/dist/commands/secret/types.js +3 -0
- package/dist/commands/secret/types.js.map +1 -0
- package/dist/commands/secret/update.d.ts +6 -0
- package/dist/commands/secret/update.d.ts.map +1 -0
- package/dist/commands/secret/update.js +124 -0
- package/dist/commands/secret/update.js.map +1 -0
- package/dist/commands/secret.d.ts +8 -2
- package/dist/commands/secret.d.ts.map +1 -1
- package/dist/commands/secret.js +6 -1131
- package/dist/commands/secret.js.map +1 -1
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +51 -5
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/superadmin.d.ts.map +1 -1
- package/dist/commands/superadmin.js +23 -7
- package/dist/commands/superadmin.js.map +1 -1
- package/dist/commands/tenant.d.ts.map +1 -1
- package/dist/commands/tenant.js +4 -0
- package/dist/commands/tenant.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +13 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/user.d.ts.map +1 -1
- package/dist/commands/user.js +35 -8
- package/dist/commands/user.js.map +1 -1
- package/dist/index.js +48 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/client/apikeys.d.ts +34 -0
- package/dist/lib/client/apikeys.d.ts.map +1 -0
- package/dist/lib/client/apikeys.js +113 -0
- package/dist/lib/client/apikeys.js.map +1 -0
- package/dist/lib/client/audit.d.ts +21 -0
- package/dist/lib/client/audit.d.ts.map +1 -0
- package/dist/lib/client/audit.js +40 -0
- package/dist/lib/client/audit.js.map +1 -0
- package/dist/lib/client/health.d.ts +30 -0
- package/dist/lib/client/health.d.ts.map +1 -0
- package/dist/lib/client/health.js +55 -0
- package/dist/lib/client/health.js.map +1 -0
- package/dist/lib/client/http.d.ts +50 -0
- package/dist/lib/client/http.d.ts.map +1 -0
- package/dist/lib/client/http.js +333 -0
- package/dist/lib/client/http.js.map +1 -0
- package/dist/lib/client/index.d.ts +156 -0
- package/dist/lib/client/index.d.ts.map +1 -0
- package/dist/lib/client/index.js +172 -0
- package/dist/lib/client/index.js.map +1 -0
- package/dist/lib/client/lockdown.d.ts +23 -0
- package/dist/lib/client/lockdown.d.ts.map +1 -0
- package/dist/lib/client/lockdown.js +48 -0
- package/dist/lib/client/lockdown.js.map +1 -0
- package/dist/lib/client/managed-keys.d.ts +18 -0
- package/dist/lib/client/managed-keys.d.ts.map +1 -0
- package/dist/lib/client/managed-keys.js +190 -0
- package/dist/lib/client/managed-keys.js.map +1 -0
- package/dist/lib/client/policies.d.ts +35 -0
- package/dist/lib/client/policies.d.ts.map +1 -0
- package/dist/lib/client/policies.js +131 -0
- package/dist/lib/client/policies.js.map +1 -0
- package/dist/lib/client/tenants.d.ts +29 -0
- package/dist/lib/client/tenants.d.ts.map +1 -0
- package/dist/lib/client/tenants.js +56 -0
- package/dist/lib/client/tenants.js.map +1 -0
- package/dist/lib/client/types.d.ts +45 -0
- package/dist/lib/client/types.d.ts.map +1 -0
- package/dist/lib/client/types.js +3 -0
- package/dist/lib/client/types.js.map +1 -0
- package/dist/lib/client/users.d.ts +44 -0
- package/dist/lib/client/users.d.ts.map +1 -0
- package/dist/lib/client/users.js +116 -0
- package/dist/lib/client/users.js.map +1 -0
- package/dist/lib/client.d.ts +11 -246
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +10 -999
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/command-error-handler.d.ts +99 -0
- package/dist/lib/command-error-handler.d.ts.map +1 -0
- package/dist/lib/command-error-handler.js +108 -0
- package/dist/lib/command-error-handler.js.map +1 -0
- package/dist/lib/config/apikey.d.ts +29 -0
- package/dist/lib/config/apikey.d.ts.map +1 -0
- package/dist/lib/config/apikey.js +58 -0
- package/dist/lib/config/apikey.js.map +1 -0
- package/dist/lib/config/cache.d.ts +47 -0
- package/dist/lib/config/cache.d.ts.map +1 -0
- package/dist/lib/config/cache.js +84 -0
- package/dist/lib/config/cache.js.map +1 -0
- package/dist/lib/config/credentials.d.ts +33 -0
- package/dist/lib/config/credentials.d.ts.map +1 -0
- package/dist/lib/config/credentials.js +70 -0
- package/dist/lib/config/credentials.js.map +1 -0
- package/dist/lib/config/getters.d.ts +28 -0
- package/dist/lib/config/getters.d.ts.map +1 -0
- package/dist/lib/config/getters.js +65 -0
- package/dist/lib/config/getters.js.map +1 -0
- package/dist/lib/config/index.d.ts +17 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +21 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/migration.d.ts +10 -0
- package/dist/lib/config/migration.d.ts.map +1 -0
- package/dist/lib/config/migration.js +59 -0
- package/dist/lib/config/migration.js.map +1 -0
- package/dist/lib/config/plugins.d.ts +25 -0
- package/dist/lib/config/plugins.d.ts.map +1 -0
- package/dist/lib/config/plugins.js +58 -0
- package/dist/lib/config/plugins.js.map +1 -0
- package/dist/lib/config/profile.d.ts +42 -0
- package/dist/lib/config/profile.d.ts.map +1 -0
- package/dist/lib/config/profile.js +154 -0
- package/dist/lib/config/profile.js.map +1 -0
- package/dist/lib/config/store.d.ts +23 -0
- package/dist/lib/config/store.d.ts.map +1 -0
- package/dist/lib/config/store.js +41 -0
- package/dist/lib/config/store.js.map +1 -0
- package/dist/lib/config/types.d.ts +44 -0
- package/dist/lib/config/types.d.ts.map +1 -0
- package/dist/lib/config/types.js +8 -0
- package/dist/lib/config/types.js.map +1 -0
- package/dist/lib/config/validation.d.ts +38 -0
- package/dist/lib/config/validation.d.ts.map +1 -0
- package/dist/lib/config/validation.js +146 -0
- package/dist/lib/config/validation.js.map +1 -0
- package/dist/lib/config.d.ts +5 -158
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +26 -424
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +65 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +90 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/db.d.ts +4 -0
- package/dist/lib/db.d.ts.map +1 -1
- package/dist/lib/db.js +77 -46
- package/dist/lib/db.js.map +1 -1
- package/dist/lib/format-helpers.d.ts +63 -0
- package/dist/lib/format-helpers.d.ts.map +1 -0
- package/dist/lib/format-helpers.js +219 -0
- package/dist/lib/format-helpers.js.map +1 -0
- package/dist/lib/validation-helpers.d.ts +132 -0
- package/dist/lib/validation-helpers.d.ts.map +1 -0
- package/dist/lib/validation-helpers.js +319 -0
- package/dist/lib/validation-helpers.js.map +1 -0
- package/dist/lib/visual.d.ts +22 -0
- package/dist/lib/visual.d.ts.map +1 -1
- package/dist/lib/visual.js +83 -0
- package/dist/lib/visual.js.map +1 -1
- package/dist/services/signature-verifier.d.ts.map +1 -1
- package/dist/services/signature-verifier.js +11 -4
- package/dist/services/signature-verifier.js.map +1 -1
- package/dist/services/update-installer.d.ts +7 -0
- package/dist/services/update-installer.d.ts.map +1 -1
- package/dist/services/update-installer.js +58 -19
- package/dist/services/update-installer.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/create.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CA4T9D"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// Path: src/commands/secret/create.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { client } from '../../lib/client.js';
|
|
5
|
+
import * as output from '../../lib/output.js';
|
|
6
|
+
import { getAuthContext } from '../../lib/auth-context.js';
|
|
7
|
+
import { formatBytes } from './helpers.js';
|
|
8
|
+
import { analyzeFileForSuggestion, formatPemType } from './pem-analysis.js';
|
|
9
|
+
export function registerCreateCommand(secretCmd) {
|
|
10
|
+
secretCmd
|
|
11
|
+
.command('create <alias>')
|
|
12
|
+
.description('Create a new secret (use --suggest for AI naming help)')
|
|
13
|
+
.option('-t, --tenant <id>', 'Tenant ID (defaults to current user tenant)')
|
|
14
|
+
.option('--type <type>', 'Secret type (opaque, credential, setting)', 'opaque')
|
|
15
|
+
.option('--sub-type <subType>', 'Semantic sub-type')
|
|
16
|
+
.option('--tags <tags>', 'Comma-separated tags')
|
|
17
|
+
.option('--ttl <datetime>', 'TTL expiration (ISO 8601)')
|
|
18
|
+
.option('--expires <datetime>', 'Natural expiration (ISO 8601)')
|
|
19
|
+
.option('--content-type <mime>', 'Content type for settings')
|
|
20
|
+
.option('--json', 'Output as JSON')
|
|
21
|
+
.option('--suggest', 'Get AI suggestions for naming (alias becomes description)')
|
|
22
|
+
// Non-interactive data options
|
|
23
|
+
.option('--username <username>', 'Username for credential type (non-interactive)')
|
|
24
|
+
.option('--password <password>', 'Password for credential type (non-interactive)')
|
|
25
|
+
.option('--text <text>', 'Text content (non-interactive)')
|
|
26
|
+
.option('--data <json>', 'JSON data (non-interactive)')
|
|
27
|
+
.option('--file <path>', 'File to upload (non-interactive)')
|
|
28
|
+
.action(async (aliasOrDescription, options) => {
|
|
29
|
+
let alias = aliasOrDescription;
|
|
30
|
+
let actualType = options.type || 'opaque';
|
|
31
|
+
let actualSubType = options.subType;
|
|
32
|
+
let actualTags = options.tags;
|
|
33
|
+
// AI Suggestion flow
|
|
34
|
+
if (options.suggest) {
|
|
35
|
+
const tenant = options.tenant || 'me';
|
|
36
|
+
// Analyze file if --file is provided
|
|
37
|
+
let fileInfo = null;
|
|
38
|
+
if (options.file) {
|
|
39
|
+
const analyzeSpinner = ora('Analyzing file...').start();
|
|
40
|
+
fileInfo = await analyzeFileForSuggestion(options.file);
|
|
41
|
+
analyzeSpinner.stop();
|
|
42
|
+
if (fileInfo) {
|
|
43
|
+
output.section('File Analysis');
|
|
44
|
+
const analysisInfo = {
|
|
45
|
+
'Filename': fileInfo.filename,
|
|
46
|
+
'Extension': fileInfo.extension,
|
|
47
|
+
'MIME Type': fileInfo.mimeType,
|
|
48
|
+
'Size': formatBytes(fileInfo.size),
|
|
49
|
+
};
|
|
50
|
+
if (fileInfo.pemInfo) {
|
|
51
|
+
analysisInfo['PEM Type'] = formatPemType(fileInfo.pemInfo.type);
|
|
52
|
+
if (fileInfo.pemInfo.algorithm) {
|
|
53
|
+
analysisInfo['Algorithm'] = fileInfo.pemInfo.algorithm.toUpperCase();
|
|
54
|
+
}
|
|
55
|
+
if (fileInfo.pemInfo.detectedPurpose) {
|
|
56
|
+
analysisInfo['Detected Purpose'] = fileInfo.pemInfo.detectedPurpose;
|
|
57
|
+
}
|
|
58
|
+
if (fileInfo.pemInfo.isAppleP8) {
|
|
59
|
+
analysisInfo['Special'] = 'Apple .p8 authentication key';
|
|
60
|
+
}
|
|
61
|
+
if (fileInfo.pemInfo.certificateCount && fileInfo.pemInfo.certificateCount > 1) {
|
|
62
|
+
analysisInfo['Certificates'] = `${fileInfo.pemInfo.certificateCount} (chain/bundle)`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
output.keyValue(analysisInfo);
|
|
66
|
+
console.log();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const spinner = ora('Getting AI suggestions...').start();
|
|
70
|
+
try {
|
|
71
|
+
const body = { description: aliasOrDescription };
|
|
72
|
+
// Include file analysis in the request
|
|
73
|
+
if (fileInfo) {
|
|
74
|
+
body.fileInfo = fileInfo;
|
|
75
|
+
}
|
|
76
|
+
const response = await client.post(`/v1/advisor/${tenant}/suggest`, body);
|
|
77
|
+
spinner.stop();
|
|
78
|
+
const result = response.data;
|
|
79
|
+
// Show suggestions
|
|
80
|
+
output.section('AI Suggestions');
|
|
81
|
+
output.keyValue({
|
|
82
|
+
'Suggested Alias': result.alias,
|
|
83
|
+
'Type': result.type,
|
|
84
|
+
'Sub-Type': result.subType || '-',
|
|
85
|
+
'Tags': result.tags.join(', ') || 'none',
|
|
86
|
+
'Confidence': `${Math.round(result.confidence * 100)}%`,
|
|
87
|
+
});
|
|
88
|
+
if (result.alternativeAliases && result.alternativeAliases.length > 0) {
|
|
89
|
+
output.info(`Alternatives: ${result.alternativeAliases.join(', ')}`);
|
|
90
|
+
}
|
|
91
|
+
if (result.warnings && result.warnings.length > 0) {
|
|
92
|
+
for (const w of result.warnings) {
|
|
93
|
+
console.log(` ⚠ ${w}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
console.log(`\nReasoning: ${result.reasoning}\n`);
|
|
97
|
+
// Let user confirm or modify
|
|
98
|
+
const aliasChoices = [
|
|
99
|
+
{ name: `${result.alias} (suggested)`, value: result.alias },
|
|
100
|
+
...(result.alternativeAliases || []).map(a => ({ name: a, value: a })),
|
|
101
|
+
{ name: 'Enter custom alias', value: '__custom__' },
|
|
102
|
+
];
|
|
103
|
+
const { useAlias } = await inquirer.prompt([
|
|
104
|
+
{
|
|
105
|
+
type: 'list',
|
|
106
|
+
name: 'useAlias',
|
|
107
|
+
message: 'Use which alias?',
|
|
108
|
+
choices: aliasChoices,
|
|
109
|
+
},
|
|
110
|
+
]);
|
|
111
|
+
if (useAlias === '__custom__') {
|
|
112
|
+
const { customAlias } = await inquirer.prompt([
|
|
113
|
+
{ type: 'input', name: 'customAlias', message: 'Enter alias:' },
|
|
114
|
+
]);
|
|
115
|
+
alias = customAlias;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
alias = useAlias;
|
|
119
|
+
}
|
|
120
|
+
// Apply suggested values (unless overridden by CLI options)
|
|
121
|
+
if (!options.type || options.type === 'opaque') {
|
|
122
|
+
actualType = result.type;
|
|
123
|
+
}
|
|
124
|
+
if (!options.subType && result.subType) {
|
|
125
|
+
actualSubType = result.subType;
|
|
126
|
+
}
|
|
127
|
+
if (!options.tags && result.tags.length > 0) {
|
|
128
|
+
actualTags = result.tags.join(',');
|
|
129
|
+
}
|
|
130
|
+
output.success(`Using alias: ${alias}`);
|
|
131
|
+
console.log();
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
spinner.fail('Failed to get AI suggestions');
|
|
135
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
136
|
+
// Continue without suggestions?
|
|
137
|
+
const { continueWithout } = await inquirer.prompt([
|
|
138
|
+
{
|
|
139
|
+
type: 'confirm',
|
|
140
|
+
name: 'continueWithout',
|
|
141
|
+
message: 'Continue creating secret without AI suggestions?',
|
|
142
|
+
default: true,
|
|
143
|
+
},
|
|
144
|
+
]);
|
|
145
|
+
if (!continueWithout) {
|
|
146
|
+
process.exit(0);
|
|
147
|
+
}
|
|
148
|
+
// Use the description as alias
|
|
149
|
+
alias = aliasOrDescription;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Resolve tenant: use explicit option, or get from stored credentials
|
|
153
|
+
const authContext = getAuthContext();
|
|
154
|
+
const tenantId = options.tenant || authContext.tenantId;
|
|
155
|
+
if (!tenantId) {
|
|
156
|
+
output.error('Tenant is required. Use --tenant <id> or login to a tenant account.');
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
let data = {};
|
|
160
|
+
// Check for non-interactive data options first
|
|
161
|
+
const hasNonInteractiveData = options.username || options.password || options.text || options.data || options.file;
|
|
162
|
+
if (hasNonInteractiveData) {
|
|
163
|
+
// Non-interactive mode: use CLI options
|
|
164
|
+
if (options.username || options.password) {
|
|
165
|
+
actualType = 'credential';
|
|
166
|
+
data = {
|
|
167
|
+
username: options.username || '',
|
|
168
|
+
password: options.password || '',
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
else if (options.text) {
|
|
172
|
+
data = { text: options.text };
|
|
173
|
+
}
|
|
174
|
+
else if (options.data) {
|
|
175
|
+
try {
|
|
176
|
+
data = JSON.parse(options.data);
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
output.error('Invalid JSON in --data option');
|
|
180
|
+
process.exit(1);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (options.file) {
|
|
184
|
+
const fs = await import('fs');
|
|
185
|
+
const pathModule = await import('path');
|
|
186
|
+
if (!fs.existsSync(options.file)) {
|
|
187
|
+
output.error(`File not found: ${options.file}`);
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
const content = fs.readFileSync(options.file);
|
|
191
|
+
const filename = pathModule.basename(options.file);
|
|
192
|
+
data = {
|
|
193
|
+
filename,
|
|
194
|
+
content: content.toString('base64'),
|
|
195
|
+
contentType: options.contentType || 'application/octet-stream',
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// Interactive mode: prompt for data
|
|
201
|
+
const { dataType } = await inquirer.prompt([
|
|
202
|
+
{
|
|
203
|
+
type: 'list',
|
|
204
|
+
name: 'dataType',
|
|
205
|
+
message: 'What type of data?',
|
|
206
|
+
choices: [
|
|
207
|
+
{ name: 'Credential (username/password)', value: 'credential' },
|
|
208
|
+
{ name: 'Plain Text', value: 'text' },
|
|
209
|
+
{ name: 'Key-Value pairs', value: 'keyvalue' },
|
|
210
|
+
{ name: 'File upload', value: 'file' },
|
|
211
|
+
],
|
|
212
|
+
},
|
|
213
|
+
]);
|
|
214
|
+
if (dataType === 'credential') {
|
|
215
|
+
actualType = 'credential';
|
|
216
|
+
const answers = await inquirer.prompt([
|
|
217
|
+
{ type: 'input', name: 'username', message: 'Username:' },
|
|
218
|
+
{ type: 'password', name: 'password', message: 'Password:', mask: '*' },
|
|
219
|
+
]);
|
|
220
|
+
data = answers;
|
|
221
|
+
}
|
|
222
|
+
else if (dataType === 'text') {
|
|
223
|
+
const { text } = await inquirer.prompt([
|
|
224
|
+
{ type: 'editor', name: 'text', message: 'Enter text content:' },
|
|
225
|
+
]);
|
|
226
|
+
data = { text: text.trim() };
|
|
227
|
+
}
|
|
228
|
+
else if (dataType === 'keyvalue') {
|
|
229
|
+
console.log('Enter key-value pairs (empty key to finish):');
|
|
230
|
+
while (true) {
|
|
231
|
+
const { key } = await inquirer.prompt([
|
|
232
|
+
{ type: 'input', name: 'key', message: 'Key:' },
|
|
233
|
+
]);
|
|
234
|
+
if (!key)
|
|
235
|
+
break;
|
|
236
|
+
const { value } = await inquirer.prompt([
|
|
237
|
+
{ type: 'input', name: 'value', message: `Value for "${key}":` },
|
|
238
|
+
]);
|
|
239
|
+
data[key] = value;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else if (dataType === 'file') {
|
|
243
|
+
const { filePath } = await inquirer.prompt([
|
|
244
|
+
{ type: 'input', name: 'filePath', message: 'File path:' },
|
|
245
|
+
]);
|
|
246
|
+
const fs = await import('fs');
|
|
247
|
+
const pathModule = await import('path');
|
|
248
|
+
if (!fs.existsSync(filePath)) {
|
|
249
|
+
output.error(`File not found: ${filePath}`);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
const content = fs.readFileSync(filePath);
|
|
253
|
+
const filename = pathModule.basename(filePath);
|
|
254
|
+
data = {
|
|
255
|
+
filename,
|
|
256
|
+
content: content.toString('base64'),
|
|
257
|
+
contentType: options.contentType || 'application/octet-stream',
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const spinner = ora('Creating secret...').start();
|
|
262
|
+
try {
|
|
263
|
+
const body = {
|
|
264
|
+
alias,
|
|
265
|
+
tenant: tenantId,
|
|
266
|
+
type: actualType,
|
|
267
|
+
data,
|
|
268
|
+
};
|
|
269
|
+
if (actualSubType)
|
|
270
|
+
body.subType = actualSubType;
|
|
271
|
+
if (actualTags)
|
|
272
|
+
body.tags = actualTags.split(',').map(t => t.trim());
|
|
273
|
+
if (options.ttl)
|
|
274
|
+
body.ttlUntil = options.ttl;
|
|
275
|
+
if (options.expires)
|
|
276
|
+
body.expiresAt = options.expires;
|
|
277
|
+
if (options.contentType)
|
|
278
|
+
body.contentType = options.contentType;
|
|
279
|
+
const result = await client.post('/v1/secrets', body);
|
|
280
|
+
spinner.stop();
|
|
281
|
+
if (options.json) {
|
|
282
|
+
output.json(result);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
output.success(`Secret created successfully!`);
|
|
286
|
+
console.log(` ID: ${result.id}`);
|
|
287
|
+
console.log(` Alias: ${result.alias}`);
|
|
288
|
+
console.log(` Tenant: ${result.tenant}`);
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
spinner.fail('Failed to create secret');
|
|
292
|
+
output.error(error.message);
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/secret/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decrypt.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/decrypt.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CA+F/D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// Path: src/commands/secret/decrypt.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { client } from '../../lib/client.js';
|
|
4
|
+
import * as output from '../../lib/output.js';
|
|
5
|
+
import { formatType, formatBytes } from './helpers.js';
|
|
6
|
+
import { resolveSecretId } from './resolve.js';
|
|
7
|
+
export function registerDecryptCommand(secretCmd) {
|
|
8
|
+
secretCmd
|
|
9
|
+
.command('decrypt <id-or-alias>')
|
|
10
|
+
.description('Decrypt and show secret value (supports UUID or tenant/alias format)')
|
|
11
|
+
.option('-o, --output <file>', 'Write content to file')
|
|
12
|
+
.option('--json', 'Output as JSON')
|
|
13
|
+
.addHelpText('after', `
|
|
14
|
+
Examples:
|
|
15
|
+
znvault secret decrypt zn-admin/config # by alias path
|
|
16
|
+
znvault secret decrypt alias:web/api-key # with alias: prefix
|
|
17
|
+
znvault secret decrypt abc12345-... # by UUID
|
|
18
|
+
znvault secret decrypt certs/server-key -o key.pem # save to file
|
|
19
|
+
`)
|
|
20
|
+
.action(async (idOrAlias, options) => {
|
|
21
|
+
const spinner = ora('Resolving secret...').start();
|
|
22
|
+
try {
|
|
23
|
+
// Resolve alias to UUID if needed
|
|
24
|
+
const id = await resolveSecretId(idOrAlias);
|
|
25
|
+
spinner.text = 'Decrypting secret...';
|
|
26
|
+
const secret = await client.post(`/v1/secrets/${id}/decrypt`, {});
|
|
27
|
+
spinner.stop();
|
|
28
|
+
if (options.json) {
|
|
29
|
+
output.json(secret);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// If output file specified and it's a file-based secret
|
|
33
|
+
if (options.output && secret.data) {
|
|
34
|
+
const fs = await import('fs');
|
|
35
|
+
// Check if it's a file-based secret
|
|
36
|
+
if ('content' in secret.data && typeof secret.data.content === 'string') {
|
|
37
|
+
const content = Buffer.from(secret.data.content, 'base64');
|
|
38
|
+
fs.writeFileSync(options.output, content);
|
|
39
|
+
output.success(`File written to: ${options.output}`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Otherwise write JSON
|
|
43
|
+
fs.writeFileSync(options.output, JSON.stringify(secret.data, null, 2));
|
|
44
|
+
output.success(`Data written to: ${options.output}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Display metadata
|
|
48
|
+
console.log('\n--- Secret Metadata ---');
|
|
49
|
+
console.log(`ID: ${secret.id}`);
|
|
50
|
+
console.log(`Alias: ${secret.alias}`);
|
|
51
|
+
console.log(`Tenant: ${secret.tenant}`);
|
|
52
|
+
console.log(`Type: ${formatType(secret.type, secret.subType)}`);
|
|
53
|
+
console.log(`Version: ${secret.version}`);
|
|
54
|
+
// Display data based on type
|
|
55
|
+
console.log('\n--- Secret Data ---');
|
|
56
|
+
if (secret.type === 'credential' && secret.data) {
|
|
57
|
+
if ('username' in secret.data)
|
|
58
|
+
console.log(`Username: ${secret.data.username}`);
|
|
59
|
+
if ('password' in secret.data)
|
|
60
|
+
console.log(`Password: ${secret.data.password}`);
|
|
61
|
+
// Show any additional fields
|
|
62
|
+
const knownFields = ['username', 'password'];
|
|
63
|
+
for (const [key, value] of Object.entries(secret.data)) {
|
|
64
|
+
if (!knownFields.includes(key)) {
|
|
65
|
+
console.log(`${key}: ${typeof value === 'object' ? JSON.stringify(value) : value}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (secret.data && 'text' in secret.data) {
|
|
70
|
+
// Plain text secret
|
|
71
|
+
console.log(secret.data.text);
|
|
72
|
+
}
|
|
73
|
+
else if (secret.data && 'content' in secret.data && 'filename' in secret.data) {
|
|
74
|
+
// File-based secret
|
|
75
|
+
console.log(`File: ${secret.data.filename}`);
|
|
76
|
+
console.log(`Size: ${formatBytes(Buffer.from(secret.data.content, 'base64').length)}`);
|
|
77
|
+
if (secret.data.contentType)
|
|
78
|
+
console.log(`Type: ${secret.data.contentType}`);
|
|
79
|
+
console.log('\nUse --output <file> to save the file content');
|
|
80
|
+
}
|
|
81
|
+
else if (secret.data && 'privateKey' in secret.data) {
|
|
82
|
+
// Key pair secret
|
|
83
|
+
console.log('Key Pair Secret:');
|
|
84
|
+
const pk = secret.data.privateKey;
|
|
85
|
+
const pub = secret.data.publicKey;
|
|
86
|
+
if (pk?.filename)
|
|
87
|
+
console.log(` Private Key: ${pk.filename}`);
|
|
88
|
+
if (pub?.filename)
|
|
89
|
+
console.log(` Public Key: ${pub.filename}`);
|
|
90
|
+
console.log('\nUse --output <file> to save the keys');
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Generic key-value
|
|
94
|
+
console.log(JSON.stringify(secret.data, null, 2));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
spinner.fail('Failed to decrypt secret');
|
|
99
|
+
output.error(error.message);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=decrypt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../../src/commands/secret/decrypt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/delete.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAuD9D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Path: src/commands/secret/delete.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { client } from '../../lib/client.js';
|
|
5
|
+
import * as output from '../../lib/output.js';
|
|
6
|
+
import { resolveSecretId } from './resolve.js';
|
|
7
|
+
export function registerDeleteCommand(secretCmd) {
|
|
8
|
+
secretCmd
|
|
9
|
+
.command('delete <id-or-alias>')
|
|
10
|
+
.description('Delete a secret (supports UUID or tenant/alias format)')
|
|
11
|
+
.option('-f, --force', 'Skip confirmation')
|
|
12
|
+
.action(async (idOrAlias, options) => {
|
|
13
|
+
let id;
|
|
14
|
+
// Resolve alias to UUID first
|
|
15
|
+
try {
|
|
16
|
+
id = await resolveSecretId(idOrAlias);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
output.error(error.message);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
if (!options.force) {
|
|
23
|
+
// Get metadata first
|
|
24
|
+
const spinner = ora('Fetching secret...').start();
|
|
25
|
+
try {
|
|
26
|
+
const secret = await client.get(`/v1/secrets/${id}/meta`);
|
|
27
|
+
spinner.stop();
|
|
28
|
+
const { confirm } = await inquirer.prompt([
|
|
29
|
+
{
|
|
30
|
+
type: 'confirm',
|
|
31
|
+
name: 'confirm',
|
|
32
|
+
message: `Delete secret "${secret.alias}" (${id})? This cannot be undone.`,
|
|
33
|
+
default: false,
|
|
34
|
+
},
|
|
35
|
+
]);
|
|
36
|
+
if (!confirm) {
|
|
37
|
+
output.info('Deletion cancelled');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
spinner.fail('Failed to fetch secret');
|
|
43
|
+
output.error(error.message);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const deleteSpinner = ora('Deleting secret...').start();
|
|
48
|
+
try {
|
|
49
|
+
await client.delete(`/v1/secrets/${id}`);
|
|
50
|
+
deleteSpinner.stop();
|
|
51
|
+
output.success('Secret deleted successfully');
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
deleteSpinner.fail('Failed to delete secret');
|
|
55
|
+
output.error(error.message);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/secret/delete.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAOtC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,SAAkB;IACtD,SAAS;SACN,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAsB,EAAE,EAAE;QAC1D,IAAI,EAAU,CAAC;QAEf,8BAA8B;QAC9B,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,qBAAqB;YACrB,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAiB,eAAe,EAAE,OAAO,CAAC,CAAC;gBAC1E,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB;oBAC9D;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,kBAAkB,MAAM,CAAC,KAAK,MAAM,EAAE,2BAA2B;wBAC1E,OAAO,EAAE,KAAK;qBACf;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBAClC,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACzC,aAAa,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/get.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAmE3D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Path: src/commands/secret/get.ts
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import Table from 'cli-table3';
|
|
4
|
+
import { client } from '../../lib/client.js';
|
|
5
|
+
import * as output from '../../lib/output.js';
|
|
6
|
+
import { formatDate, formatType, formatBytes } from './helpers.js';
|
|
7
|
+
import { resolveSecretId } from './resolve.js';
|
|
8
|
+
export function registerGetCommand(secretCmd) {
|
|
9
|
+
secretCmd
|
|
10
|
+
.command('get <id-or-alias>')
|
|
11
|
+
.description('Get secret metadata (supports UUID or tenant/alias format)')
|
|
12
|
+
.option('--json', 'Output as JSON')
|
|
13
|
+
.action(async (idOrAlias, options) => {
|
|
14
|
+
const spinner = ora('Resolving secret...').start();
|
|
15
|
+
try {
|
|
16
|
+
// Resolve alias to UUID if needed
|
|
17
|
+
const id = await resolveSecretId(idOrAlias);
|
|
18
|
+
spinner.text = 'Fetching secret metadata...';
|
|
19
|
+
const secret = await client.get(`/v1/secrets/${id}/meta`);
|
|
20
|
+
spinner.stop();
|
|
21
|
+
if (options.json) {
|
|
22
|
+
output.json(secret);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const table = new Table({
|
|
26
|
+
colWidths: [20, 60],
|
|
27
|
+
});
|
|
28
|
+
table.push(['ID', secret.id], ['Alias', secret.alias], ['Tenant', secret.tenant], ['Type', formatType(secret.type, secret.subType)], ['Version', String(secret.version)]);
|
|
29
|
+
if (secret.fileName) {
|
|
30
|
+
table.push(['File Name', secret.fileName]);
|
|
31
|
+
}
|
|
32
|
+
if (secret.fileSize) {
|
|
33
|
+
table.push(['File Size', formatBytes(secret.fileSize)]);
|
|
34
|
+
}
|
|
35
|
+
if (secret.fileMime) {
|
|
36
|
+
table.push(['MIME Type', secret.fileMime]);
|
|
37
|
+
}
|
|
38
|
+
if (secret.contentType) {
|
|
39
|
+
table.push(['Content Type', secret.contentType]);
|
|
40
|
+
}
|
|
41
|
+
if (secret.expiresAt) {
|
|
42
|
+
table.push(['Expires At', formatDate(secret.expiresAt)]);
|
|
43
|
+
}
|
|
44
|
+
if (secret.ttlUntil) {
|
|
45
|
+
table.push(['TTL Until', formatDate(secret.ttlUntil)]);
|
|
46
|
+
}
|
|
47
|
+
if (secret.tags && secret.tags.length > 0) {
|
|
48
|
+
table.push(['Tags', secret.tags.join(', ')]);
|
|
49
|
+
}
|
|
50
|
+
table.push(['Created By', secret.createdBy || '-'], ['Created At', formatDate(secret.createdAt)], ['Updated At', formatDate(secret.updatedAt)]);
|
|
51
|
+
console.log(table.toString());
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
spinner.fail('Failed to get secret');
|
|
55
|
+
output.error(error.message);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/secret/get.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAOnC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAAC,SAAkB;IACnD,SAAS;SACN,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAAmB,EAAE,EAAE;QACvD,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEnD,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,GAAG,6BAA6B,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAiB,eAAe,EAAE,OAAO,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;gBACtB,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;aACpB,CAAC,CAAC;YAEH,KAAK,CAAC,IAAI,CACR,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EACjB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EACvB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EACjD,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACpC,CAAC;YAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK,CAAC,IAAI,CACR,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,EACvC,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAC5C,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAC7C,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions for secret commands
|
|
3
|
+
*/
|
|
4
|
+
export declare function formatDate(dateStr: string | undefined): string;
|
|
5
|
+
export declare function formatType(type: string, subType?: string): string;
|
|
6
|
+
export declare function formatTags(tags?: string[]): string;
|
|
7
|
+
export declare function truncateAlias(alias: string, maxLen?: number): string;
|
|
8
|
+
export declare function formatBytes(bytes?: number): string;
|
|
9
|
+
export declare function getDaysUntilExpiry(expiresAt?: string): number | null;
|
|
10
|
+
export declare function formatExpiry(expiresAt?: string): string;
|
|
11
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/helpers.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG9D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAIlD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAGhE;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpE;AAED,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CASvD"}
|