bunqueue 1.0.7 → 1.0.9
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 +65 -0
- package/dist/cli/client.d.ts +14 -0
- package/dist/cli/client.d.ts.map +1 -0
- package/dist/cli/client.js +170 -0
- package/dist/cli/client.js.map +1 -0
- package/dist/cli/commands/core.d.ts +7 -0
- package/dist/cli/commands/core.d.ts.map +1 -0
- package/dist/cli/commands/core.js +150 -0
- package/dist/cli/commands/core.js.map +1 -0
- package/dist/cli/commands/cron.d.ts +7 -0
- package/dist/cli/commands/cron.d.ts.map +1 -0
- package/dist/cli/commands/cron.js +69 -0
- package/dist/cli/commands/cron.js.map +1 -0
- package/dist/cli/commands/dlq.d.ts +7 -0
- package/dist/cli/commands/dlq.d.ts.map +1 -0
- package/dist/cli/commands/dlq.js +63 -0
- package/dist/cli/commands/dlq.js.map +1 -0
- package/dist/cli/commands/job.d.ts +7 -0
- package/dist/cli/commands/job.d.ts.map +1 -0
- package/dist/cli/commands/job.js +155 -0
- package/dist/cli/commands/job.js.map +1 -0
- package/dist/cli/commands/monitor.d.ts +7 -0
- package/dist/cli/commands/monitor.d.ts.map +1 -0
- package/dist/cli/commands/monitor.js +19 -0
- package/dist/cli/commands/monitor.js.map +1 -0
- package/dist/cli/commands/queue.d.ts +7 -0
- package/dist/cli/commands/queue.d.ts.map +1 -0
- package/dist/cli/commands/queue.js +122 -0
- package/dist/cli/commands/queue.js.map +1 -0
- package/dist/cli/commands/rateLimit.d.ts +7 -0
- package/dist/cli/commands/rateLimit.d.ts.map +1 -0
- package/dist/cli/commands/rateLimit.js +64 -0
- package/dist/cli/commands/rateLimit.js.map +1 -0
- package/dist/cli/commands/server.d.ts +7 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +97 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/types.d.ts +17 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/types.js +47 -0
- package/dist/cli/commands/types.js.map +1 -0
- package/dist/cli/commands/webhook.d.ts +7 -0
- package/dist/cli/commands/webhook.d.ts.map +1 -0
- package/dist/cli/commands/webhook.js +78 -0
- package/dist/cli/commands/webhook.js.map +1 -0
- package/dist/cli/commands/worker.d.ts +7 -0
- package/dist/cli/commands/worker.d.ts.map +1 -0
- package/dist/cli/commands/worker.js +49 -0
- package/dist/cli/commands/worker.js.map +1 -0
- package/dist/cli/help.d.ts +14 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +176 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +109 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +9 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +260 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
- package/dist/domain/queue/priorityQueue.js +10 -8
- package/dist/domain/queue/priorityQueue.js.map +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/main.js +33 -11
- package/dist/main.js.map +1 -1
- package/package.json +2 -2
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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAiBrD,2CAA2C;AAC3C,KAAK,UAAU,WAAW,CACxB,MAA2D,EAC3D,OAAgC;IAEhC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAE7C,2BAA2B;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4BAA4B;AAC5B,KAAK,UAAU,OAAO,CAAC,OAAsB;IAI3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,UAAU,GAAe;YAC7B,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,GAAG,CAAC,OAAO,CAAC;YACf,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE;gBACN,IAAI,CAAC,KAAK,EAAE,IAAI;oBACd,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAErC,sDAAsD;oBACtD,IAAI,UAAkB,CAAC;oBACvB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;wBAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;wBACpD,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAE5D,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;4BACtC,IAAI,CAAC;gCACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;gCAC7D,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gCAC7B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;gCAC1B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;4BAC3B,CAAC;4BAAC,MAAM,CAAC;gCACP,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oCACtB,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;oCAC7D,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;oCAC1B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;gCAC3B,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,IAAI;oBACP,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,CAAC;wBACN,MAAM,EAAE;4BACN,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;4BACzC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;4BACrB,IAAI,EAAE,UAAU;yBACjB;wBACD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;qBACxB,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK;oBACH,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;wBACtB,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,KAAK,EAAE,KAAK;oBAChB,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBACD,YAAY,CAAC,KAAK,EAAE,KAAK;oBACvB,MAAM,CACJ,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CACpF,CAAC;gBACJ,CAAC;aACF;SACF,CAAC,CAAC;QAEH,4BAA4B;QAC5B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,IAAc,EACd,OAAsB;IAEtB,IAAI,UAAU,GAA+C,IAAI,CAAC;IAElE,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QAEpC,iCAAiC;QACjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE;gBACxD,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,OAAO,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kBAAkB;QAClB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,UAAU,EAAE,KAAK,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,KAAK,UAAU,YAAY,CACzB,OAAe,EACf,IAAc;IAEd,0BAA0B;IAC1B,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC/D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACjE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACnE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACvE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEnE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,KAAK;YACR,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,KAAK;YACR,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa;YAChB,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACtC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|