@aiconnect/confidant 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +570 -0
- package/dist/api-client.d.ts +58 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +101 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +69 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +51 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +29 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/get-request.d.ts +3 -0
- package/dist/commands/get-request.d.ts.map +1 -0
- package/dist/commands/get-request.js +89 -0
- package/dist/commands/get-request.js.map +1 -0
- package/dist/commands/get.d.ts +3 -0
- package/dist/commands/get.d.ts.map +1 -0
- package/dist/commands/get.js +29 -0
- package/dist/commands/get.js.map +1 -0
- package/dist/commands/request.d.ts +3 -0
- package/dist/commands/request.d.ts.map +1 -0
- package/dist/commands/request.js +289 -0
- package/dist/commands/request.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +40 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/crypto.d.ts +32 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +79 -0
- package/dist/crypto.js.map +1 -0
- package/dist/crypto.test.d.ts +5 -0
- package/dist/crypto.test.d.ts.map +1 -0
- package/dist/crypto.test.js +77 -0
- package/dist/crypto.test.js.map +1 -0
- package/dist/i18n.d.ts +55 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +63 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/network-detection.d.ts +11 -0
- package/dist/network-detection.d.ts.map +1 -0
- package/dist/network-detection.js +54 -0
- package/dist/network-detection.js.map +1 -0
- package/dist/network-detection.test.d.ts +2 -0
- package/dist/network-detection.test.d.ts.map +1 -0
- package/dist/network-detection.test.js +150 -0
- package/dist/network-detection.test.js.map +1 -0
- package/dist/rate-limiter.d.ts +61 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limiter.js +128 -0
- package/dist/rate-limiter.js.map +1 -0
- package/dist/rate-limiter.test.d.ts +5 -0
- package/dist/rate-limiter.test.d.ts.map +1 -0
- package/dist/rate-limiter.test.js +130 -0
- package/dist/rate-limiter.test.js.map +1 -0
- package/dist/registry.d.ts +136 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +182 -0
- package/dist/registry.js.map +1 -0
- package/dist/registry.test.d.ts +13 -0
- package/dist/registry.test.d.ts.map +1 -0
- package/dist/registry.test.js +308 -0
- package/dist/registry.test.js.map +1 -0
- package/dist/routes.d.ts +4 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +931 -0
- package/dist/routes.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +79 -0
- package/dist/server.js.map +1 -0
- package/dist/storage.d.ts +150 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +298 -0
- package/dist/storage.js.map +1 -0
- package/dist/storage.test.d.ts +5 -0
- package/dist/storage.test.d.ts.map +1 -0
- package/dist/storage.test.js +466 -0
- package/dist/storage.test.js.map +1 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +56 -0
- package/dist/types.js.map +1 -0
- package/dist/url-helper.d.ts +16 -0
- package/dist/url-helper.d.ts.map +1 -0
- package/dist/url-helper.js +27 -0
- package/dist/url-helper.js.map +1 -0
- package/dist/url-helper.test.d.ts +2 -0
- package/dist/url-helper.test.d.ts.map +1 -0
- package/dist/url-helper.test.js +70 -0
- package/dist/url-helper.test.js.map +1 -0
- package/package.json +73 -0
- package/public/index.html +352 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import fetch from 'node-fetch';
|
|
2
|
+
import { t } from './i18n.js';
|
|
3
|
+
export class ApiClient {
|
|
4
|
+
baseUrl;
|
|
5
|
+
constructor(baseUrl) {
|
|
6
|
+
this.baseUrl = baseUrl;
|
|
7
|
+
this.validateUrl(baseUrl);
|
|
8
|
+
}
|
|
9
|
+
get apiUrl() {
|
|
10
|
+
return this.baseUrl;
|
|
11
|
+
}
|
|
12
|
+
validateUrl(url) {
|
|
13
|
+
try {
|
|
14
|
+
new URL(url);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
throw new Error(t('invalidApiEndpoint'));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async request(endpoint, options = {}) {
|
|
21
|
+
try {
|
|
22
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
23
|
+
const response = await fetch(url, options);
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
const errorData = (await response.json());
|
|
26
|
+
throw new Error(errorData.error || `HTTP ${response.status}`);
|
|
27
|
+
}
|
|
28
|
+
return (await response.json());
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (error instanceof Error) {
|
|
32
|
+
// Network errors
|
|
33
|
+
if (error.message.includes('ECONNREFUSED')) {
|
|
34
|
+
throw new Error(t('connectionFailed'));
|
|
35
|
+
}
|
|
36
|
+
if (error.message.includes('ETIMEDOUT')) {
|
|
37
|
+
throw new Error(t('requestTimedOut'));
|
|
38
|
+
}
|
|
39
|
+
// Re-throw API errors
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
throw new Error(t('networkError'));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async createSecret(secret, ttl, maxAccessCount) {
|
|
46
|
+
const body = { secret };
|
|
47
|
+
if (ttl !== undefined) {
|
|
48
|
+
body.ttl = ttl;
|
|
49
|
+
}
|
|
50
|
+
if (maxAccessCount !== undefined) {
|
|
51
|
+
body.maxAccessCount = maxAccessCount;
|
|
52
|
+
}
|
|
53
|
+
return this.request('/secrets', {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
headers: {
|
|
56
|
+
'Content-Type': 'application/json',
|
|
57
|
+
},
|
|
58
|
+
body: JSON.stringify(body),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async getSecret(id) {
|
|
62
|
+
return this.request(`/secrets/${id}`);
|
|
63
|
+
}
|
|
64
|
+
async deleteSecret(id) {
|
|
65
|
+
return this.request(`/secrets/${id}`, {
|
|
66
|
+
method: 'DELETE',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async getSecretStatus(id) {
|
|
70
|
+
return this.request(`/secrets/${id}/status`);
|
|
71
|
+
}
|
|
72
|
+
// ==================== Secret Request Methods ====================
|
|
73
|
+
/**
|
|
74
|
+
* Create a new secret request
|
|
75
|
+
* @param expiresIn Time to live in seconds (default: 86400)
|
|
76
|
+
* @param label Optional label to describe what secret is being requested
|
|
77
|
+
* @returns Secret request details
|
|
78
|
+
*/
|
|
79
|
+
async createSecretRequest(expiresIn = 86400, label) {
|
|
80
|
+
const body = { expiresIn };
|
|
81
|
+
if (label !== undefined) {
|
|
82
|
+
body.label = label;
|
|
83
|
+
}
|
|
84
|
+
return this.request('/requests', {
|
|
85
|
+
method: 'POST',
|
|
86
|
+
headers: {
|
|
87
|
+
'Content-Type': 'application/json',
|
|
88
|
+
},
|
|
89
|
+
body: JSON.stringify(body),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Poll for secret availability and retrieve if available
|
|
94
|
+
* @param id The request ID
|
|
95
|
+
* @returns Poll result with status and optional secret
|
|
96
|
+
*/
|
|
97
|
+
async pollSecretRequest(id) {
|
|
98
|
+
return this.request(`/requests/${id}/poll`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;AAuC9B,MAAM,OAAO,SAAS;IACZ,OAAO,CAAS;IAExB,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,WAAW,CAAC,GAAW;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,QAAgB,EAChB,UAAuB,EAAE;QAEzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,iBAAiB;gBACjB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,sBAAsB;gBACtB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,GAAY,EACZ,cAAuB;QAEvB,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,CAAC;QAEjD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,CAAC;QACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAuB,UAAU,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAoB,YAAY,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAsB,YAAY,EAAE,EAAE,EAAE;YACzD,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAuB,YAAY,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,mEAAmE;IAEnE;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CACvB,YAAoB,KAAK,EACzB,KAAc;QAEd,MAAM,IAAI,GAA4B,EAAE,SAAS,EAAE,CAAC;QAEpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAA8B,WAAW,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,EAAU;QAChC,OAAO,IAAI,CAAC,OAAO,CAA4B,aAAa,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { t } from './i18n.js';
|
|
5
|
+
import { startServer, getServerUrls } from './server.js';
|
|
6
|
+
import { createCommand } from './commands/create.js';
|
|
7
|
+
import { getCommand } from './commands/get.js';
|
|
8
|
+
import { getRequestCommand } from './commands/get-request.js';
|
|
9
|
+
import { deleteCommand } from './commands/delete.js';
|
|
10
|
+
import { statusCommand } from './commands/status.js';
|
|
11
|
+
import { requestCommand } from './commands/request.js';
|
|
12
|
+
const program = new Command();
|
|
13
|
+
program
|
|
14
|
+
.name('confidant')
|
|
15
|
+
.description(t('programDescription'))
|
|
16
|
+
.version('1.0.0')
|
|
17
|
+
.option('--api-url <url>', t('apiUrlOption'), process.env.CONFIDANT_API_URL || 'http://localhost:3000')
|
|
18
|
+
.addCommand(createCommand)
|
|
19
|
+
.addCommand(getCommand)
|
|
20
|
+
.addCommand(getRequestCommand)
|
|
21
|
+
.addCommand(deleteCommand)
|
|
22
|
+
.addCommand(statusCommand)
|
|
23
|
+
.addCommand(requestCommand);
|
|
24
|
+
// Serve command
|
|
25
|
+
program
|
|
26
|
+
.command('serve')
|
|
27
|
+
.description(t('serveDescription'))
|
|
28
|
+
.option('-p, --port <number>', t('portOption'), (value) => parseInt(value, 10), parseInt(process.env.CONFIDANT_PORT || '3000', 10))
|
|
29
|
+
.option('-h, --host <string>', t('hostOption'), 'localhost')
|
|
30
|
+
.action(async (options) => {
|
|
31
|
+
const { port, host } = options;
|
|
32
|
+
console.log(t('serverStarting'));
|
|
33
|
+
let cleanup = null;
|
|
34
|
+
// Handle graceful shutdown
|
|
35
|
+
const shutdown = async (signal) => {
|
|
36
|
+
console.log(`\n${t('serverShutdown')} (${signal})`);
|
|
37
|
+
if (cleanup) {
|
|
38
|
+
await cleanup();
|
|
39
|
+
}
|
|
40
|
+
console.log(t('serverStopped'));
|
|
41
|
+
process.exit(0);
|
|
42
|
+
};
|
|
43
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
44
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
45
|
+
try {
|
|
46
|
+
// Start the server
|
|
47
|
+
cleanup = await startServer({ port, host });
|
|
48
|
+
// Display available URLs
|
|
49
|
+
const urls = getServerUrls(port, host);
|
|
50
|
+
console.log(t('serverRunning'));
|
|
51
|
+
console.log(t('localhostUrl').replace('%s', urls.localhost));
|
|
52
|
+
if (urls.network) {
|
|
53
|
+
console.log(t('networkUrl').replace('%s', urls.network));
|
|
54
|
+
}
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(t('pressCtrlCToStop'));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error(chalk.red(`Erro ao iniciar servidor: ${error instanceof Error ? error.message : String(error)}`));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// Parse command line arguments
|
|
64
|
+
program.parse(process.argv);
|
|
65
|
+
// If no command is provided, show help
|
|
66
|
+
if (!process.argv.slice(2).length) {
|
|
67
|
+
program.outputHelp();
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SAsDtB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ApiClient } from '../api-client.js';
|
|
3
|
+
import { t } from '../i18n.js';
|
|
4
|
+
export const createCommand = new Command('create')
|
|
5
|
+
.description(t('createDescription'))
|
|
6
|
+
.option('--secret <value>', t('secretOption'))
|
|
7
|
+
.option('--ttl <milliseconds>', t('ttlOption'))
|
|
8
|
+
.option('--max-access-count <number>', t('maxAccessCountOption'))
|
|
9
|
+
.addHelpText('after', `\n${t('createExample')}`)
|
|
10
|
+
.action(async (options) => {
|
|
11
|
+
try {
|
|
12
|
+
// Validate required parameters
|
|
13
|
+
if (!options.secret) {
|
|
14
|
+
console.error(JSON.stringify({ error: t('secretCannotBeEmpty') }));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
// Validate secret is not empty
|
|
18
|
+
if (options.secret.trim() === '') {
|
|
19
|
+
console.error(JSON.stringify({ error: t('secretCannotBeEmpty') }));
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
// Validate TTL
|
|
23
|
+
if (options.ttl !== undefined && options.ttl <= 0) {
|
|
24
|
+
console.error(JSON.stringify({ error: t('ttlMustBePositive') }));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
// Validate max access count
|
|
28
|
+
if (options.maxAccessCount !== undefined && options.maxAccessCount <= 0) {
|
|
29
|
+
console.error(JSON.stringify({ error: t('maxAccessCountMustBePositive') }));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Get API URL from parent command options
|
|
33
|
+
const program = createCommand.parent;
|
|
34
|
+
const apiUrl = program?.opts().apiUrl || 'http://localhost:3000';
|
|
35
|
+
// Create API client and call API
|
|
36
|
+
const client = new ApiClient(apiUrl);
|
|
37
|
+
const result = await client.createSecret(options.secret, options.ttl ? parseInt(options.ttl) : undefined, options.maxAccessCount ? parseInt(options.maxAccessCount) : undefined);
|
|
38
|
+
// Output JSON response
|
|
39
|
+
console.log(JSON.stringify(result, null, 2));
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error instanceof Error) {
|
|
43
|
+
console.error(JSON.stringify({ error: error.message }));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.error(JSON.stringify({ error: t('networkError') }));
|
|
47
|
+
}
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SAwBtB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ApiClient } from '../api-client.js';
|
|
3
|
+
import { t } from '../i18n.js';
|
|
4
|
+
export const deleteCommand = new Command('delete')
|
|
5
|
+
.description(t('deleteDescription'))
|
|
6
|
+
.argument('<id>', 'ID do segredo')
|
|
7
|
+
.addHelpText('after', `\n${t('deleteExample')}`)
|
|
8
|
+
.action(async (id) => {
|
|
9
|
+
try {
|
|
10
|
+
// Get API URL from parent command options
|
|
11
|
+
const program = deleteCommand.parent;
|
|
12
|
+
const apiUrl = program?.opts().apiUrl || 'http://localhost:3000';
|
|
13
|
+
// Create API client and call API
|
|
14
|
+
const client = new ApiClient(apiUrl);
|
|
15
|
+
const result = await client.deleteSecret(id);
|
|
16
|
+
// Output JSON response
|
|
17
|
+
console.log(JSON.stringify(result, null, 2));
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error instanceof Error) {
|
|
21
|
+
console.error(JSON.stringify({ error: error.message }));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.error(JSON.stringify({ error: t('networkError') }));
|
|
25
|
+
}
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;KACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;KACjC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,uBAAuB,CAAC;QAEjE,iCAAiC;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAE7C,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-request.d.ts","sourceRoot":"","sources":["../../src/commands/get-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,iBAAiB,SAuG1B,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export const getRequestCommand = new Command('get-request')
|
|
4
|
+
.description('Recuperar o segredo de um request pelo ID')
|
|
5
|
+
.argument('<id>', 'ID do request')
|
|
6
|
+
.option('--json', 'Output em formato JSON')
|
|
7
|
+
.option('--wait', 'Aguardar até o segredo ser submetido')
|
|
8
|
+
.option('--timeout <seconds>', 'Timeout em segundos (usado com --wait)', '300')
|
|
9
|
+
.addHelpText('after', `
|
|
10
|
+
Exemplos:
|
|
11
|
+
confidant get-request abc123 # Buscar segredo do request
|
|
12
|
+
confidant get-request abc123 --json # Output em JSON
|
|
13
|
+
confidant get-request abc123 --wait # Aguardar submissão
|
|
14
|
+
`)
|
|
15
|
+
.action(async (id, options) => {
|
|
16
|
+
try {
|
|
17
|
+
// Get API URL from parent command options
|
|
18
|
+
const program = getRequestCommand.parent;
|
|
19
|
+
const apiUrl = program?.opts().apiUrl || 'http://localhost:3000';
|
|
20
|
+
const response = await fetch(`${apiUrl}/requests/${id}/poll`);
|
|
21
|
+
if (!response.ok) {
|
|
22
|
+
if (response.status === 404) {
|
|
23
|
+
console.error(JSON.stringify({ error: 'Request não encontrado' }));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`HTTP ${response.status}`);
|
|
27
|
+
}
|
|
28
|
+
const result = await response.json();
|
|
29
|
+
if (options.json) {
|
|
30
|
+
console.log(JSON.stringify(result, null, 2));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log('');
|
|
34
|
+
console.log(chalk.bold('Request Details:'));
|
|
35
|
+
console.log(` ID: ${chalk.yellow(result.id)}`);
|
|
36
|
+
console.log(` Status: ${result.status === 'retrieved' ? chalk.green(result.status) : chalk.yellow(result.status)}`);
|
|
37
|
+
if (result.label) {
|
|
38
|
+
console.log(` Label: ${result.label}`);
|
|
39
|
+
}
|
|
40
|
+
console.log('');
|
|
41
|
+
if (result.secret) {
|
|
42
|
+
console.log(chalk.green('✓ Segredo recebido:'));
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(chalk.cyan(result.secret));
|
|
45
|
+
console.log('');
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
console.log(chalk.yellow('⏳ Segredo ainda não foi submetido'));
|
|
49
|
+
if (!options.wait) {
|
|
50
|
+
console.log(chalk.dim('Use --wait para aguardar a submissão'));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// If --wait and no secret yet, poll until we get it
|
|
55
|
+
if (options.wait && !result.secret) {
|
|
56
|
+
const timeout = parseInt(options.timeout) * 1000;
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
const pollInterval = 2000;
|
|
59
|
+
console.log(chalk.dim(`Aguardando submissão (timeout: ${options.timeout}s)...`));
|
|
60
|
+
while (Date.now() - startTime < timeout) {
|
|
61
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
62
|
+
const pollResponse = await fetch(`${apiUrl}/requests/${id}/poll`);
|
|
63
|
+
if (!pollResponse.ok)
|
|
64
|
+
continue;
|
|
65
|
+
const pollResult = await pollResponse.json();
|
|
66
|
+
if (pollResult.secret) {
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log(chalk.green('✓ Segredo recebido:'));
|
|
69
|
+
console.log('');
|
|
70
|
+
console.log(chalk.cyan(pollResult.secret));
|
|
71
|
+
console.log('');
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
console.log(chalk.red('✗ Timeout - segredo não foi submetido'));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error instanceof Error) {
|
|
81
|
+
console.error(JSON.stringify({ error: error.message }));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.error(JSON.stringify({ error: 'Erro de conexão' }));
|
|
85
|
+
}
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=get-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-request.js","sourceRoot":"","sources":["../../src/commands/get-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACxD,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;KACjC,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC1C,MAAM,CAAC,QAAQ,EAAE,sCAAsC,CAAC;KACxD,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,EAAE,KAAK,CAAC;KAC9E,WAAW,CAAC,OAAO,EAAE;;;;;GAKrB,CAAC;KACD,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAC5B,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,uBAAuB,CAAC;QAEjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAKjC,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC;YAE1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,OAAO,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;YAEjF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;gBACxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;gBAEhE,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE,OAAO,CAAC,CAAC;gBAClE,IAAI,CAAC,YAAY,CAAC,EAAE;oBAAE,SAAS;gBAE/B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,EAKzC,CAAC;gBAEF,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,UAAU,SAwBnB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ApiClient } from '../api-client.js';
|
|
3
|
+
import { t } from '../i18n.js';
|
|
4
|
+
export const getCommand = new Command('get')
|
|
5
|
+
.description(t('getDescription'))
|
|
6
|
+
.argument('<id>', 'ID do segredo')
|
|
7
|
+
.addHelpText('after', `\n${t('getExample')}`)
|
|
8
|
+
.action(async (id) => {
|
|
9
|
+
try {
|
|
10
|
+
// Get API URL from parent command options
|
|
11
|
+
const program = getCommand.parent;
|
|
12
|
+
const apiUrl = program?.opts().apiUrl || 'http://localhost:3000';
|
|
13
|
+
// Create API client and call API
|
|
14
|
+
const client = new ApiClient(apiUrl);
|
|
15
|
+
const result = await client.getSecret(id);
|
|
16
|
+
// Output JSON response
|
|
17
|
+
console.log(JSON.stringify(result, null, 2));
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error instanceof Error) {
|
|
21
|
+
console.error(JSON.stringify({ error: error.message }));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.error(JSON.stringify({ error: t('networkError') }));
|
|
25
|
+
}
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;KAChC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;KACjC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,uBAAuB,CAAC;QAEjE,iCAAiC;QACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1C,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/commands/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,cAAc,SAoEvB,CAAC"}
|