bunqueue 1.0.7 → 1.0.8

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 (68) hide show
  1. package/README.md +65 -0
  2. package/dist/cli/client.d.ts +14 -0
  3. package/dist/cli/client.d.ts.map +1 -0
  4. package/dist/cli/client.js +170 -0
  5. package/dist/cli/client.js.map +1 -0
  6. package/dist/cli/commands/core.d.ts +7 -0
  7. package/dist/cli/commands/core.d.ts.map +1 -0
  8. package/dist/cli/commands/core.js +150 -0
  9. package/dist/cli/commands/core.js.map +1 -0
  10. package/dist/cli/commands/cron.d.ts +7 -0
  11. package/dist/cli/commands/cron.d.ts.map +1 -0
  12. package/dist/cli/commands/cron.js +69 -0
  13. package/dist/cli/commands/cron.js.map +1 -0
  14. package/dist/cli/commands/dlq.d.ts +7 -0
  15. package/dist/cli/commands/dlq.d.ts.map +1 -0
  16. package/dist/cli/commands/dlq.js +63 -0
  17. package/dist/cli/commands/dlq.js.map +1 -0
  18. package/dist/cli/commands/job.d.ts +7 -0
  19. package/dist/cli/commands/job.d.ts.map +1 -0
  20. package/dist/cli/commands/job.js +155 -0
  21. package/dist/cli/commands/job.js.map +1 -0
  22. package/dist/cli/commands/monitor.d.ts +7 -0
  23. package/dist/cli/commands/monitor.d.ts.map +1 -0
  24. package/dist/cli/commands/monitor.js +19 -0
  25. package/dist/cli/commands/monitor.js.map +1 -0
  26. package/dist/cli/commands/queue.d.ts +7 -0
  27. package/dist/cli/commands/queue.d.ts.map +1 -0
  28. package/dist/cli/commands/queue.js +122 -0
  29. package/dist/cli/commands/queue.js.map +1 -0
  30. package/dist/cli/commands/rateLimit.d.ts +7 -0
  31. package/dist/cli/commands/rateLimit.d.ts.map +1 -0
  32. package/dist/cli/commands/rateLimit.js +64 -0
  33. package/dist/cli/commands/rateLimit.js.map +1 -0
  34. package/dist/cli/commands/server.d.ts +7 -0
  35. package/dist/cli/commands/server.d.ts.map +1 -0
  36. package/dist/cli/commands/server.js +97 -0
  37. package/dist/cli/commands/server.js.map +1 -0
  38. package/dist/cli/commands/types.d.ts +17 -0
  39. package/dist/cli/commands/types.d.ts.map +1 -0
  40. package/dist/cli/commands/types.js +47 -0
  41. package/dist/cli/commands/types.js.map +1 -0
  42. package/dist/cli/commands/webhook.d.ts +7 -0
  43. package/dist/cli/commands/webhook.d.ts.map +1 -0
  44. package/dist/cli/commands/webhook.js +78 -0
  45. package/dist/cli/commands/webhook.js.map +1 -0
  46. package/dist/cli/commands/worker.d.ts +7 -0
  47. package/dist/cli/commands/worker.d.ts.map +1 -0
  48. package/dist/cli/commands/worker.js +49 -0
  49. package/dist/cli/commands/worker.js.map +1 -0
  50. package/dist/cli/help.d.ts +14 -0
  51. package/dist/cli/help.d.ts.map +1 -0
  52. package/dist/cli/help.js +176 -0
  53. package/dist/cli/help.js.map +1 -0
  54. package/dist/cli/index.d.ts +8 -0
  55. package/dist/cli/index.d.ts.map +1 -0
  56. package/dist/cli/index.js +109 -0
  57. package/dist/cli/index.js.map +1 -0
  58. package/dist/cli/output.d.ts +9 -0
  59. package/dist/cli/output.d.ts.map +1 -0
  60. package/dist/cli/output.js +260 -0
  61. package/dist/cli/output.js.map +1 -0
  62. package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
  63. package/dist/domain/queue/priorityQueue.js +10 -8
  64. package/dist/domain/queue/priorityQueue.js.map +1 -1
  65. package/dist/main.d.ts +1 -1
  66. package/dist/main.js +33 -11
  67. package/dist/main.js.map +1 -1
  68. package/package.json +1 -1
package/README.md CHANGED
@@ -87,6 +87,71 @@ const worker = new Worker('emails', async (job) => {
87
87
  - **Prometheus Metrics** — Built-in metrics endpoint for monitoring
88
88
  - **Authentication** — Token-based auth for secure access
89
89
  - **Dual Protocol** — TCP (high performance) and HTTP/REST (compatibility)
90
+ - **Full-Featured CLI** — Manage queues, jobs, cron, and more from the command line
91
+
92
+ ## CLI
93
+
94
+ bunqueue includes a powerful CLI for managing the server and executing commands.
95
+
96
+ ### Server Mode
97
+
98
+ ```bash
99
+ # Start server with defaults
100
+ bunqueue
101
+
102
+ # Start with options
103
+ bunqueue start --tcp-port 6789 --http-port 6790 --data-path ./data/queue.db
104
+ ```
105
+
106
+ ### Client Commands
107
+
108
+ ```bash
109
+ # Push a job
110
+ bunqueue push emails '{"to":"user@test.com","subject":"Hello"}'
111
+ bunqueue push tasks '{"action":"sync"}' --priority 10 --delay 5000
112
+
113
+ # Pull and process jobs
114
+ bunqueue pull emails --timeout 5000
115
+ bunqueue ack 12345 --result '{"sent":true}'
116
+ bunqueue fail 12345 --error "SMTP timeout"
117
+
118
+ # Job management
119
+ bunqueue job get 12345
120
+ bunqueue job progress 12345 50 --message "Processing..."
121
+ bunqueue job cancel 12345
122
+
123
+ # Queue control
124
+ bunqueue queue list
125
+ bunqueue queue pause emails
126
+ bunqueue queue resume emails
127
+ bunqueue queue drain emails
128
+
129
+ # Cron jobs
130
+ bunqueue cron list
131
+ bunqueue cron add hourly-cleanup -q maintenance -d '{"task":"cleanup"}' -s "0 * * * *"
132
+ bunqueue cron delete hourly-cleanup
133
+
134
+ # DLQ management
135
+ bunqueue dlq list emails
136
+ bunqueue dlq retry emails
137
+ bunqueue dlq purge emails
138
+
139
+ # Monitoring
140
+ bunqueue stats
141
+ bunqueue metrics
142
+ bunqueue health
143
+ ```
144
+
145
+ ### Global Options
146
+
147
+ ```bash
148
+ -H, --host <host> # Server host (default: localhost)
149
+ -p, --port <port> # TCP port (default: 6789)
150
+ -t, --token <token> # Authentication token
151
+ --json # Output as JSON
152
+ --help # Show help
153
+ --version # Show version
154
+ ```
90
155
 
91
156
  ## SDK (flashq)
92
157
 
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI TCP Client
3
+ * Connects to bunQ server and executes commands
4
+ */
5
+ /** Client options */
6
+ export interface ClientOptions {
7
+ host: string;
8
+ port: number;
9
+ token?: string;
10
+ json: boolean;
11
+ }
12
+ /** Execute a CLI command against the server */
13
+ export declare function executeCommand(command: string, args: string[], options: ClientOptions): Promise<void>;
14
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,qBAAqB;AACrB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AA6GD,+CAA+C;AAC/C,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * CLI TCP Client
3
+ * Connects to bunQ server and executes commands
4
+ */
5
+ import { formatOutput, formatError } from './output';
6
+ /** Send a command and wait for response */
7
+ async function sendCommand(socket, command) {
8
+ return new Promise((resolve, reject) => {
9
+ socket.data.resolve = resolve;
10
+ socket.data.reject = reject;
11
+ socket.write(JSON.stringify(command) + '\n');
12
+ // Timeout after 30 seconds
13
+ setTimeout(() => {
14
+ if (socket.data.resolve === resolve) {
15
+ socket.data.resolve = null;
16
+ socket.data.reject = null;
17
+ reject(new Error('Command timeout'));
18
+ }
19
+ }, 30000);
20
+ });
21
+ }
22
+ /** Create TCP connection */
23
+ async function connect(options) {
24
+ return new Promise((resolve, reject) => {
25
+ const socketData = {
26
+ buffer: '',
27
+ resolve: null,
28
+ reject: null,
29
+ };
30
+ let connected = false;
31
+ void Bun.connect({
32
+ hostname: options.host,
33
+ port: options.port,
34
+ socket: {
35
+ data(_sock, data) {
36
+ socketData.buffer += data.toString();
37
+ // Look for complete JSON response (newline-delimited)
38
+ let newlineIdx;
39
+ while ((newlineIdx = socketData.buffer.indexOf('\n')) !== -1) {
40
+ const line = socketData.buffer.slice(0, newlineIdx);
41
+ socketData.buffer = socketData.buffer.slice(newlineIdx + 1);
42
+ if (line.trim() && socketData.resolve) {
43
+ try {
44
+ const response = JSON.parse(line);
45
+ socketData.resolve(response);
46
+ socketData.resolve = null;
47
+ socketData.reject = null;
48
+ }
49
+ catch {
50
+ if (socketData.reject) {
51
+ socketData.reject(new Error('Invalid response from server'));
52
+ socketData.resolve = null;
53
+ socketData.reject = null;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ },
59
+ open(sock) {
60
+ connected = true;
61
+ resolve({
62
+ socket: {
63
+ write: (data) => sock.write(data),
64
+ end: () => sock.end(),
65
+ data: socketData,
66
+ },
67
+ close: () => sock.end(),
68
+ });
69
+ },
70
+ close() {
71
+ if (socketData.reject) {
72
+ socketData.reject(new Error('Connection closed'));
73
+ }
74
+ },
75
+ error(_sock, error) {
76
+ reject(new Error(`Connection error: ${error.message}`));
77
+ },
78
+ connectError(_sock, error) {
79
+ reject(new Error(`Failed to connect to ${options.host}:${options.port}: ${error.message}`));
80
+ },
81
+ },
82
+ });
83
+ // Handle connection timeout
84
+ setTimeout(() => {
85
+ if (!connected) {
86
+ reject(new Error(`Connection timeout to ${options.host}:${options.port}`));
87
+ }
88
+ }, 5000);
89
+ });
90
+ }
91
+ /** Execute a CLI command against the server */
92
+ export async function executeCommand(command, args, options) {
93
+ let connection = null;
94
+ try {
95
+ connection = await connect(options);
96
+ // Authenticate if token provided
97
+ if (options.token) {
98
+ const authResponse = await sendCommand(connection.socket, {
99
+ cmd: 'Auth',
100
+ token: options.token,
101
+ });
102
+ if (!authResponse.ok) {
103
+ console.error(formatError('Authentication failed', options.json));
104
+ process.exit(1);
105
+ }
106
+ }
107
+ // Build the command
108
+ const cmd = await buildCommand(command, args);
109
+ if (!cmd) {
110
+ console.error(formatError(`Unknown command: ${command}`, options.json));
111
+ process.exit(1);
112
+ }
113
+ // Execute command
114
+ const response = await sendCommand(connection.socket, cmd);
115
+ console.log(formatOutput(response, command, options.json));
116
+ if (!response.ok) {
117
+ process.exit(1);
118
+ }
119
+ }
120
+ catch (err) {
121
+ const message = err instanceof Error ? err.message : 'Unknown error';
122
+ console.error(formatError(message, options.json));
123
+ process.exit(1);
124
+ }
125
+ finally {
126
+ connection?.close();
127
+ }
128
+ }
129
+ /** Build a command from CLI arguments */
130
+ async function buildCommand(command, args) {
131
+ // Import command builders
132
+ const { buildCoreCommand } = await import('./commands/core');
133
+ const { buildJobCommand } = await import('./commands/job');
134
+ const { buildQueueCommand } = await import('./commands/queue');
135
+ const { buildDlqCommand } = await import('./commands/dlq');
136
+ const { buildCronCommand } = await import('./commands/cron');
137
+ const { buildWorkerCommand } = await import('./commands/worker');
138
+ const { buildWebhookCommand } = await import('./commands/webhook');
139
+ const { buildRateLimitCommand } = await import('./commands/rateLimit');
140
+ const { buildMonitorCommand } = await import('./commands/monitor');
141
+ switch (command) {
142
+ case 'push':
143
+ case 'pull':
144
+ case 'ack':
145
+ case 'fail':
146
+ return buildCoreCommand(command, args);
147
+ case 'job':
148
+ return buildJobCommand(args);
149
+ case 'queue':
150
+ return buildQueueCommand(args);
151
+ case 'dlq':
152
+ return buildDlqCommand(args);
153
+ case 'cron':
154
+ return buildCronCommand(args);
155
+ case 'worker':
156
+ return buildWorkerCommand(args);
157
+ case 'webhook':
158
+ return buildWebhookCommand(args);
159
+ case 'rate-limit':
160
+ case 'concurrency':
161
+ return buildRateLimitCommand(command, args);
162
+ case 'stats':
163
+ case 'metrics':
164
+ case 'health':
165
+ return buildMonitorCommand(command);
166
+ default:
167
+ return null;
168
+ }
169
+ }
170
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core Command Builders
3
+ * Push, Pull, Ack, Fail commands
4
+ */
5
+ /** Build a core command from CLI args */
6
+ export declare function buildCoreCommand(command: string, args: string[]): Record<string, unknown>;
7
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazF"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Core Command Builders
3
+ * Push, Pull, Ack, Fail commands
4
+ */
5
+ import { parseArgs } from 'node:util';
6
+ import { CommandError, requireArg, parseJsonArg, parseNumberArg } from './types';
7
+ /** Build a core command from CLI args */
8
+ export function buildCoreCommand(command, args) {
9
+ switch (command) {
10
+ case 'push':
11
+ return buildPush(args);
12
+ case 'pull':
13
+ return buildPull(args);
14
+ case 'ack':
15
+ return buildAck(args);
16
+ case 'fail':
17
+ return buildFail(args);
18
+ default:
19
+ throw new CommandError(`Unknown core command: ${command}`);
20
+ }
21
+ }
22
+ /** Build PUSH command */
23
+ function buildPush(args) {
24
+ const { values, positionals } = parseArgs({
25
+ args,
26
+ options: {
27
+ priority: { type: 'string', short: 'P' },
28
+ delay: { type: 'string', short: 'd' },
29
+ 'max-attempts': { type: 'string' },
30
+ backoff: { type: 'string' },
31
+ ttl: { type: 'string' },
32
+ timeout: { type: 'string' },
33
+ 'unique-key': { type: 'string', short: 'u' },
34
+ 'job-id': { type: 'string' },
35
+ 'depends-on': { type: 'string' },
36
+ tags: { type: 'string' },
37
+ 'group-id': { type: 'string', short: 'g' },
38
+ lifo: { type: 'boolean' },
39
+ 'remove-on-complete': { type: 'boolean' },
40
+ 'remove-on-fail': { type: 'boolean' },
41
+ },
42
+ allowPositionals: true,
43
+ strict: false,
44
+ });
45
+ const queue = requireArg(positionals, 0, 'queue');
46
+ const data = parseJsonArg(requireArg(positionals, 1, 'data'), 'data');
47
+ const cmd = {
48
+ cmd: 'PUSH',
49
+ queue,
50
+ data,
51
+ };
52
+ // Add optional fields only if provided
53
+ const priority = parseNumberArg(values.priority, 'priority');
54
+ if (priority !== undefined)
55
+ cmd.priority = priority;
56
+ const delay = parseNumberArg(values.delay, 'delay');
57
+ if (delay !== undefined)
58
+ cmd.delay = delay;
59
+ const maxAttempts = parseNumberArg(values['max-attempts'], 'max-attempts');
60
+ if (maxAttempts !== undefined)
61
+ cmd.maxAttempts = maxAttempts;
62
+ const backoff = parseNumberArg(values.backoff, 'backoff');
63
+ if (backoff !== undefined)
64
+ cmd.backoff = backoff;
65
+ const ttl = parseNumberArg(values.ttl, 'ttl');
66
+ if (ttl !== undefined)
67
+ cmd.ttl = ttl;
68
+ const timeout = parseNumberArg(values.timeout, 'timeout');
69
+ if (timeout !== undefined)
70
+ cmd.timeout = timeout;
71
+ if (values['unique-key'])
72
+ cmd.uniqueKey = values['unique-key'];
73
+ if (values['job-id'])
74
+ cmd.jobId = values['job-id'];
75
+ if (values['depends-on']) {
76
+ cmd.dependsOn = values['depends-on'].split(',').filter(Boolean);
77
+ }
78
+ if (values.tags) {
79
+ cmd.tags = values.tags.split(',').filter(Boolean);
80
+ }
81
+ if (values['group-id'])
82
+ cmd.groupId = values['group-id'];
83
+ if (values.lifo)
84
+ cmd.lifo = true;
85
+ if (values['remove-on-complete'])
86
+ cmd.removeOnComplete = true;
87
+ if (values['remove-on-fail'])
88
+ cmd.removeOnFail = true;
89
+ return cmd;
90
+ }
91
+ /** Build PULL command */
92
+ function buildPull(args) {
93
+ const { values, positionals } = parseArgs({
94
+ args,
95
+ options: {
96
+ timeout: { type: 'string', short: 't' },
97
+ },
98
+ allowPositionals: true,
99
+ strict: false,
100
+ });
101
+ const queue = requireArg(positionals, 0, 'queue');
102
+ const cmd = {
103
+ cmd: 'PULL',
104
+ queue,
105
+ };
106
+ const timeout = parseNumberArg(values.timeout, 'timeout');
107
+ if (timeout !== undefined)
108
+ cmd.timeout = timeout;
109
+ return cmd;
110
+ }
111
+ /** Build ACK command */
112
+ function buildAck(args) {
113
+ const { values, positionals } = parseArgs({
114
+ args,
115
+ options: {
116
+ result: { type: 'string', short: 'r' },
117
+ },
118
+ allowPositionals: true,
119
+ strict: false,
120
+ });
121
+ const id = requireArg(positionals, 0, 'id');
122
+ const cmd = {
123
+ cmd: 'ACK',
124
+ id,
125
+ };
126
+ if (values.result) {
127
+ cmd.result = parseJsonArg(values.result, 'result');
128
+ }
129
+ return cmd;
130
+ }
131
+ /** Build FAIL command */
132
+ function buildFail(args) {
133
+ const { values, positionals } = parseArgs({
134
+ args,
135
+ options: {
136
+ error: { type: 'string', short: 'e' },
137
+ },
138
+ allowPositionals: true,
139
+ strict: false,
140
+ });
141
+ const id = requireArg(positionals, 0, 'id');
142
+ const cmd = {
143
+ cmd: 'FAIL',
144
+ id,
145
+ };
146
+ if (values.error)
147
+ cmd.error = values.error;
148
+ return cmd;
149
+ }
150
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/cli/commands/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Cron Command Builders
3
+ * Cron job scheduling operations
4
+ */
5
+ /** Build a cron subcommand */
6
+ export declare function buildCronCommand(args: string[]): Record<string, unknown>;
7
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,8BAA8B;AAC9B,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcxE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Cron Command Builders
3
+ * Cron job scheduling operations
4
+ */
5
+ import { parseArgs } from 'node:util';
6
+ import { CommandError, requireArg, parseJsonArg, parseNumberArg } from './types';
7
+ /** Build a cron subcommand */
8
+ export function buildCronCommand(args) {
9
+ const subcommand = args[0];
10
+ const subArgs = args.slice(1);
11
+ switch (subcommand) {
12
+ case 'list':
13
+ return { cmd: 'CronList' };
14
+ case 'add':
15
+ return buildCronAdd(subArgs);
16
+ case 'delete':
17
+ return buildCronDelete(subArgs);
18
+ default:
19
+ throw new CommandError(`Unknown cron subcommand: ${subcommand}. Use: list, add, delete`);
20
+ }
21
+ }
22
+ function buildCronAdd(args) {
23
+ const { values, positionals } = parseArgs({
24
+ args,
25
+ options: {
26
+ queue: { type: 'string', short: 'q' },
27
+ data: { type: 'string', short: 'd' },
28
+ schedule: { type: 'string', short: 's' },
29
+ every: { type: 'string', short: 'e' },
30
+ priority: { type: 'string', short: 'P' },
31
+ 'max-limit': { type: 'string' },
32
+ },
33
+ allowPositionals: true,
34
+ strict: false,
35
+ });
36
+ const name = requireArg(positionals, 0, 'name');
37
+ if (!values.queue) {
38
+ throw new CommandError('--queue (-q) is required');
39
+ }
40
+ if (!values.data) {
41
+ throw new CommandError('--data (-d) is required (JSON string)');
42
+ }
43
+ if (!values.schedule && !values.every) {
44
+ throw new CommandError('Either --schedule (-s) or --every (-e) is required');
45
+ }
46
+ const cmd = {
47
+ cmd: 'Cron',
48
+ name,
49
+ queue: values.queue,
50
+ data: parseJsonArg(values.data, 'data'),
51
+ };
52
+ if (values.schedule)
53
+ cmd.schedule = values.schedule;
54
+ const every = parseNumberArg(values.every, 'every');
55
+ if (every !== undefined)
56
+ cmd.repeatEvery = every;
57
+ const priority = parseNumberArg(values.priority, 'priority');
58
+ if (priority !== undefined)
59
+ cmd.priority = priority;
60
+ const maxLimit = parseNumberArg(values['max-limit'], 'max-limit');
61
+ if (maxLimit !== undefined)
62
+ cmd.maxLimit = maxLimit;
63
+ return cmd;
64
+ }
65
+ function buildCronDelete(args) {
66
+ const name = requireArg(args, 0, 'name');
67
+ return { cmd: 'CronDelete', name };
68
+ }
69
+ //# sourceMappingURL=cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/cli/commands/cron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * DLQ Command Builders
3
+ * Dead Letter Queue operations
4
+ */
5
+ /** Build a DLQ subcommand */
6
+ export declare function buildDlqCommand(args: string[]): Record<string, unknown>;
7
+ //# sourceMappingURL=dlq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlq.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dlq.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,6BAA6B;AAC7B,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcvE"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * DLQ Command Builders
3
+ * Dead Letter Queue operations
4
+ */
5
+ import { parseArgs } from 'node:util';
6
+ import { CommandError, requireArg, parseNumberArg } from './types';
7
+ /** Build a DLQ subcommand */
8
+ export function buildDlqCommand(args) {
9
+ const subcommand = args[0];
10
+ const subArgs = args.slice(1);
11
+ switch (subcommand) {
12
+ case 'list':
13
+ return buildDlqList(subArgs);
14
+ case 'retry':
15
+ return buildDlqRetry(subArgs);
16
+ case 'purge':
17
+ return buildDlqPurge(subArgs);
18
+ default:
19
+ throw new CommandError(`Unknown dlq subcommand: ${subcommand}. Use: list, retry, purge`);
20
+ }
21
+ }
22
+ function buildDlqList(args) {
23
+ const { values, positionals } = parseArgs({
24
+ args,
25
+ options: {
26
+ count: { type: 'string', short: 'c' },
27
+ },
28
+ allowPositionals: true,
29
+ strict: false,
30
+ });
31
+ const queue = requireArg(positionals, 0, 'queue');
32
+ const cmd = {
33
+ cmd: 'Dlq',
34
+ queue,
35
+ };
36
+ const count = parseNumberArg(values.count, 'count');
37
+ if (count !== undefined)
38
+ cmd.count = count;
39
+ return cmd;
40
+ }
41
+ function buildDlqRetry(args) {
42
+ const { values, positionals } = parseArgs({
43
+ args,
44
+ options: {
45
+ id: { type: 'string' },
46
+ },
47
+ allowPositionals: true,
48
+ strict: false,
49
+ });
50
+ const queue = requireArg(positionals, 0, 'queue');
51
+ const cmd = {
52
+ cmd: 'RetryDlq',
53
+ queue,
54
+ };
55
+ if (values.id)
56
+ cmd.jobId = values.id;
57
+ return cmd;
58
+ }
59
+ function buildDlqPurge(args) {
60
+ const queue = requireArg(args, 0, 'queue');
61
+ return { cmd: 'PurgeDlq', queue };
62
+ }
63
+ //# sourceMappingURL=dlq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlq.js","sourceRoot":"","sources":["../../../src/cli/commands/dlq.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnE,6BAA6B;AAC7B,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC;YACE,MAAM,IAAI,YAAY,CAAC,2BAA2B,UAAU,2BAA2B,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI;QACJ,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;SACtC;QACD,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,GAAG,GAA4B;QACnC,GAAG,EAAE,KAAK;QACV,KAAK;KACN,CAAC;IAEF,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAA2B,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAE3C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI;QACJ,OAAO,EAAE;YACP,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACvB;QACD,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,GAAG,GAA4B;QACnC,GAAG,EAAE,UAAU;QACf,KAAK;KACN,CAAC;IAEF,IAAI,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Job Command Builders
3
+ * Job management subcommands
4
+ */
5
+ /** Build a job subcommand */
6
+ export declare function buildJobCommand(args: string[]): Record<string, unknown>;
7
+ //# sourceMappingURL=job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/job.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,6BAA6B;AAC7B,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoCvE"}