@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.
Files changed (103) hide show
  1. package/README.md +570 -0
  2. package/dist/api-client.d.ts +58 -0
  3. package/dist/api-client.d.ts.map +1 -0
  4. package/dist/api-client.js +101 -0
  5. package/dist/api-client.js.map +1 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +69 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/create.d.ts +3 -0
  11. package/dist/commands/create.d.ts.map +1 -0
  12. package/dist/commands/create.js +51 -0
  13. package/dist/commands/create.js.map +1 -0
  14. package/dist/commands/delete.d.ts +3 -0
  15. package/dist/commands/delete.d.ts.map +1 -0
  16. package/dist/commands/delete.js +29 -0
  17. package/dist/commands/delete.js.map +1 -0
  18. package/dist/commands/get-request.d.ts +3 -0
  19. package/dist/commands/get-request.d.ts.map +1 -0
  20. package/dist/commands/get-request.js +89 -0
  21. package/dist/commands/get-request.js.map +1 -0
  22. package/dist/commands/get.d.ts +3 -0
  23. package/dist/commands/get.d.ts.map +1 -0
  24. package/dist/commands/get.js +29 -0
  25. package/dist/commands/get.js.map +1 -0
  26. package/dist/commands/request.d.ts +3 -0
  27. package/dist/commands/request.d.ts.map +1 -0
  28. package/dist/commands/request.js +289 -0
  29. package/dist/commands/request.js.map +1 -0
  30. package/dist/commands/status.d.ts +3 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/status.js +40 -0
  33. package/dist/commands/status.js.map +1 -0
  34. package/dist/crypto.d.ts +32 -0
  35. package/dist/crypto.d.ts.map +1 -0
  36. package/dist/crypto.js +79 -0
  37. package/dist/crypto.js.map +1 -0
  38. package/dist/crypto.test.d.ts +5 -0
  39. package/dist/crypto.test.d.ts.map +1 -0
  40. package/dist/crypto.test.js +77 -0
  41. package/dist/crypto.test.js.map +1 -0
  42. package/dist/i18n.d.ts +55 -0
  43. package/dist/i18n.d.ts.map +1 -0
  44. package/dist/i18n.js +63 -0
  45. package/dist/i18n.js.map +1 -0
  46. package/dist/index.d.ts +2 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +53 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/network-detection.d.ts +11 -0
  51. package/dist/network-detection.d.ts.map +1 -0
  52. package/dist/network-detection.js +54 -0
  53. package/dist/network-detection.js.map +1 -0
  54. package/dist/network-detection.test.d.ts +2 -0
  55. package/dist/network-detection.test.d.ts.map +1 -0
  56. package/dist/network-detection.test.js +150 -0
  57. package/dist/network-detection.test.js.map +1 -0
  58. package/dist/rate-limiter.d.ts +61 -0
  59. package/dist/rate-limiter.d.ts.map +1 -0
  60. package/dist/rate-limiter.js +128 -0
  61. package/dist/rate-limiter.js.map +1 -0
  62. package/dist/rate-limiter.test.d.ts +5 -0
  63. package/dist/rate-limiter.test.d.ts.map +1 -0
  64. package/dist/rate-limiter.test.js +130 -0
  65. package/dist/rate-limiter.test.js.map +1 -0
  66. package/dist/registry.d.ts +136 -0
  67. package/dist/registry.d.ts.map +1 -0
  68. package/dist/registry.js +182 -0
  69. package/dist/registry.js.map +1 -0
  70. package/dist/registry.test.d.ts +13 -0
  71. package/dist/registry.test.d.ts.map +1 -0
  72. package/dist/registry.test.js +308 -0
  73. package/dist/registry.test.js.map +1 -0
  74. package/dist/routes.d.ts +4 -0
  75. package/dist/routes.d.ts.map +1 -0
  76. package/dist/routes.js +931 -0
  77. package/dist/routes.js.map +1 -0
  78. package/dist/server.d.ts +27 -0
  79. package/dist/server.d.ts.map +1 -0
  80. package/dist/server.js +79 -0
  81. package/dist/server.js.map +1 -0
  82. package/dist/storage.d.ts +150 -0
  83. package/dist/storage.d.ts.map +1 -0
  84. package/dist/storage.js +298 -0
  85. package/dist/storage.js.map +1 -0
  86. package/dist/storage.test.d.ts +5 -0
  87. package/dist/storage.test.d.ts.map +1 -0
  88. package/dist/storage.test.js +466 -0
  89. package/dist/storage.test.js.map +1 -0
  90. package/dist/types.d.ts +144 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +56 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/url-helper.d.ts +16 -0
  95. package/dist/url-helper.d.ts.map +1 -0
  96. package/dist/url-helper.js +27 -0
  97. package/dist/url-helper.js.map +1 -0
  98. package/dist/url-helper.test.d.ts +2 -0
  99. package/dist/url-helper.test.d.ts.map +1 -0
  100. package/dist/url-helper.test.js +70 -0
  101. package/dist/url-helper.test.js.map +1 -0
  102. package/package.json +73 -0
  103. 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":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const createCommand: Command;
3
+ //# sourceMappingURL=create.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const deleteCommand: Command;
3
+ //# sourceMappingURL=delete.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const getRequestCommand: Command;
3
+ //# sourceMappingURL=get-request.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const getCommand: Command;
3
+ //# sourceMappingURL=get.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const requestCommand: Command;
3
+ //# sourceMappingURL=request.d.ts.map
@@ -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"}