flashq 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/connection.d.ts +0 -66
- package/dist/client/connection.d.ts.map +1 -1
- package/dist/client/connection.js +46 -279
- package/dist/client/connection.js.map +1 -1
- package/dist/client/http/request.d.ts +20 -0
- package/dist/client/http/request.d.ts.map +1 -0
- package/dist/client/http/request.js +196 -0
- package/dist/client/http/request.js.map +1 -0
- package/dist/client/http/response.d.ts +9 -0
- package/dist/client/http/response.d.ts.map +1 -0
- package/dist/client/http/response.js +78 -0
- package/dist/client/http/response.js.map +1 -0
- package/dist/client/index.d.ts +63 -565
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +94 -635
- package/dist/client/index.js.map +1 -1
- package/dist/client/{advanced.d.ts → methods/advanced.d.ts} +1 -1
- package/dist/client/methods/advanced.d.ts.map +1 -0
- package/dist/client/methods/advanced.js.map +1 -0
- package/dist/client/{core.d.ts → methods/core.d.ts} +2 -2
- package/dist/client/methods/core.d.ts.map +1 -0
- package/dist/client/{core.js → methods/core.js} +1 -1
- package/dist/client/methods/core.js.map +1 -0
- package/dist/client/{cron.d.ts → methods/cron.d.ts} +1 -1
- package/dist/client/methods/cron.d.ts.map +1 -0
- package/dist/client/methods/cron.js.map +1 -0
- package/dist/client/{dlq.d.ts → methods/dlq.d.ts} +1 -1
- package/dist/client/methods/dlq.d.ts.map +1 -0
- package/dist/client/methods/dlq.js.map +1 -0
- package/dist/client/{flows.d.ts → methods/flows.d.ts} +1 -1
- package/dist/client/methods/flows.d.ts.map +1 -0
- package/dist/client/methods/flows.js.map +1 -0
- package/dist/client/{jobs.d.ts → methods/jobs.d.ts} +2 -16
- package/dist/client/methods/jobs.d.ts.map +1 -0
- package/dist/client/{jobs.js → methods/jobs.js} +1 -15
- package/dist/client/methods/jobs.js.map +1 -0
- package/dist/client/{metrics.d.ts → methods/metrics.d.ts} +1 -1
- package/dist/client/methods/metrics.d.ts.map +1 -0
- package/dist/client/methods/metrics.js.map +1 -0
- package/dist/client/{queue.d.ts → methods/queue.d.ts} +1 -1
- package/dist/client/methods/queue.d.ts.map +1 -0
- package/dist/client/methods/queue.js.map +1 -0
- package/dist/events/index.d.ts +24 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +53 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/subscriber.d.ts +29 -0
- package/dist/events/subscriber.d.ts.map +1 -0
- package/dist/{events.js → events/subscriber.js} +12 -150
- package/dist/events/subscriber.js.map +1 -0
- package/dist/events/types.d.ts +36 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +6 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +0 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/worker.d.ts +0 -2
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +0 -32
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/advanced.d.ts.map +0 -1
- package/dist/client/advanced.js.map +0 -1
- package/dist/client/core.d.ts.map +0 -1
- package/dist/client/core.js.map +0 -1
- package/dist/client/cron.d.ts.map +0 -1
- package/dist/client/cron.js.map +0 -1
- package/dist/client/dlq.d.ts.map +0 -1
- package/dist/client/dlq.js.map +0 -1
- package/dist/client/flows.d.ts.map +0 -1
- package/dist/client/flows.js.map +0 -1
- package/dist/client/jobs.d.ts.map +0 -1
- package/dist/client/jobs.js.map +0 -1
- package/dist/client/kv.d.ts +0 -63
- package/dist/client/kv.d.ts.map +0 -1
- package/dist/client/kv.js +0 -131
- package/dist/client/kv.js.map +0 -1
- package/dist/client/metrics.d.ts.map +0 -1
- package/dist/client/metrics.js.map +0 -1
- package/dist/client/pubsub.d.ts +0 -42
- package/dist/client/pubsub.d.ts.map +0 -1
- package/dist/client/pubsub.js +0 -92
- package/dist/client/pubsub.js.map +0 -1
- package/dist/client/queue.d.ts.map +0 -1
- package/dist/client/queue.js.map +0 -1
- package/dist/events.d.ts +0 -184
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- /package/dist/client/{advanced.js → methods/advanced.js} +0 -0
- /package/dist/client/{cron.js → methods/cron.js} +0 -0
- /package/dist/client/{dlq.js → methods/dlq.js} +0 -0
- /package/dist/client/{flows.js → methods/flows.js} +0 -0
- /package/dist/client/{metrics.js → methods/metrics.js} +0 -0
- /package/dist/client/{queue.js → methods/queue.js} +0 -0
|
@@ -1,103 +1,37 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import type { ClientOptions } from '../types';
|
|
3
|
-
/** Maximum job data size in bytes (1MB) */
|
|
4
3
|
export declare const MAX_JOB_DATA_SIZE: number;
|
|
5
|
-
/** Maximum batch size allowed by the server */
|
|
6
4
|
export declare const MAX_BATCH_SIZE = 1000;
|
|
7
|
-
/**
|
|
8
|
-
* Validate queue name to prevent injection attacks
|
|
9
|
-
* @throws Error if queue name is invalid
|
|
10
|
-
*/
|
|
11
5
|
export declare function validateQueueName(queue: string): void;
|
|
12
|
-
/**
|
|
13
|
-
* Validate job data size
|
|
14
|
-
* @throws Error if data exceeds max size
|
|
15
|
-
*/
|
|
16
6
|
export declare function validateJobDataSize(data: unknown): void;
|
|
17
7
|
type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';
|
|
18
|
-
/**
|
|
19
|
-
* Base connection class for FlashQ.
|
|
20
|
-
* Handles TCP/HTTP connection, binary protocol, request multiplexing, and auto-reconnect.
|
|
21
|
-
*/
|
|
22
8
|
export declare class FlashQConnection extends EventEmitter {
|
|
23
9
|
protected _options: Required<ClientOptions>;
|
|
24
10
|
private socket;
|
|
25
11
|
private connectionState;
|
|
26
12
|
private authenticated;
|
|
27
13
|
private pendingRequests;
|
|
28
|
-
private responseQueue;
|
|
29
14
|
private buffer;
|
|
30
15
|
private binaryBuffer;
|
|
31
16
|
private reconnectAttempts;
|
|
32
17
|
private reconnectTimer;
|
|
33
18
|
private manualClose;
|
|
34
19
|
constructor(options?: ClientOptions);
|
|
35
|
-
/** Get client options (read-only) */
|
|
36
20
|
get options(): Required<ClientOptions>;
|
|
37
|
-
/**
|
|
38
|
-
* Connect to FlashQ server.
|
|
39
|
-
* Automatically called on first command if not connected.
|
|
40
|
-
*
|
|
41
|
-
* @example
|
|
42
|
-
* ```typescript
|
|
43
|
-
* const client = new FlashQ();
|
|
44
|
-
* await client.connect();
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
21
|
connect(): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Attempt to reconnect with exponential backoff
|
|
50
|
-
*/
|
|
51
22
|
private scheduleReconnect;
|
|
52
23
|
private setupSocketHandlers;
|
|
53
24
|
private processBuffer;
|
|
54
25
|
private processBinaryBuffer;
|
|
55
26
|
private handleResponse;
|
|
56
|
-
/**
|
|
57
|
-
* Close the connection to the server.
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```typescript
|
|
61
|
-
* await client.close();
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
27
|
close(): Promise<void>;
|
|
65
|
-
/**
|
|
66
|
-
* Check if connected to the server.
|
|
67
|
-
*
|
|
68
|
-
* @returns true if connected
|
|
69
|
-
*/
|
|
70
28
|
isConnected(): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Get current connection state.
|
|
73
|
-
*
|
|
74
|
-
* @returns Connection state
|
|
75
|
-
*/
|
|
76
29
|
getConnectionState(): ConnectionState;
|
|
77
|
-
/**
|
|
78
|
-
* Ping the server to check connection health.
|
|
79
|
-
*
|
|
80
|
-
* @returns true if server responds
|
|
81
|
-
*/
|
|
82
30
|
ping(): Promise<boolean>;
|
|
83
|
-
/**
|
|
84
|
-
* Authenticate with the server.
|
|
85
|
-
*
|
|
86
|
-
* @param token - Authentication token
|
|
87
|
-
*/
|
|
88
31
|
auth(token: string): Promise<void>;
|
|
89
|
-
/**
|
|
90
|
-
* Send a command to the server.
|
|
91
|
-
* Auto-connects if not connected.
|
|
92
|
-
*
|
|
93
|
-
* @param command - Command object
|
|
94
|
-
* @param customTimeout - Optional custom timeout
|
|
95
|
-
* @returns Response from server
|
|
96
|
-
*/
|
|
97
32
|
send<T>(command: Record<string, unknown>, customTimeout?: number): Promise<T>;
|
|
98
33
|
private sendTcp;
|
|
99
34
|
private sendHttp;
|
|
100
|
-
private httpRequest;
|
|
101
35
|
}
|
|
102
36
|
export {};
|
|
103
37
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAI3D,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAC7C,eAAO,MAAM,cAAc,OAAO,CAAC;AAKnC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAKvD;AAQD,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE/F,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,aAAkB;IAmBvC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,CAA0B;IAE1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD9B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,cAAc;IAUhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,WAAW,IAAI,OAAO;IACtB,kBAAkB,IAAI,eAAe;IAE/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAOxB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YA0BrE,OAAO;YAmBP,QAAQ;CAiBvB"}
|
|
@@ -37,60 +37,39 @@ exports.FlashQConnection = exports.MAX_BATCH_SIZE = exports.MAX_JOB_DATA_SIZE =
|
|
|
37
37
|
exports.validateQueueName = validateQueueName;
|
|
38
38
|
exports.validateJobDataSize = validateJobDataSize;
|
|
39
39
|
/**
|
|
40
|
-
* Connection management for FlashQ client
|
|
41
|
-
* Production-ready with auto-reconnect, validation, and proper error handling
|
|
40
|
+
* Connection management for FlashQ client.
|
|
42
41
|
*/
|
|
43
42
|
const net = __importStar(require("net"));
|
|
44
43
|
const events_1 = require("events");
|
|
45
44
|
const msgpack_1 = require("@msgpack/msgpack");
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const request_1 = require("./http/request");
|
|
46
|
+
const response_1 = require("./http/response");
|
|
48
47
|
exports.MAX_JOB_DATA_SIZE = 1024 * 1024;
|
|
49
|
-
/** Maximum batch size allowed by the server */
|
|
50
48
|
exports.MAX_BATCH_SIZE = 1000;
|
|
51
|
-
/** Valid queue name pattern */
|
|
52
49
|
const QUEUE_NAME_REGEX = /^[a-zA-Z0-9_.-]{1,256}$/;
|
|
53
|
-
/** Ultra-fast request ID generator (no crypto overhead) */
|
|
54
50
|
let requestIdCounter = 0;
|
|
55
51
|
const generateReqId = () => `r${++requestIdCounter}`;
|
|
56
|
-
// ============== Validation ==============
|
|
57
|
-
/**
|
|
58
|
-
* Validate queue name to prevent injection attacks
|
|
59
|
-
* @throws Error if queue name is invalid
|
|
60
|
-
*/
|
|
61
52
|
function validateQueueName(queue) {
|
|
62
|
-
if (!queue || typeof queue !== 'string')
|
|
53
|
+
if (!queue || typeof queue !== 'string')
|
|
63
54
|
throw new Error('Queue name is required');
|
|
64
|
-
}
|
|
65
55
|
if (!QUEUE_NAME_REGEX.test(queue)) {
|
|
66
|
-
throw new Error(`Invalid queue name: "${queue}". Must
|
|
56
|
+
throw new Error(`Invalid queue name: "${queue}". Must be alphanumeric, _, -, . (1-256 chars)`);
|
|
67
57
|
}
|
|
68
58
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Validate job data size
|
|
71
|
-
* @throws Error if data exceeds max size
|
|
72
|
-
*/
|
|
73
59
|
function validateJobDataSize(data) {
|
|
74
60
|
const size = JSON.stringify(data).length;
|
|
75
61
|
if (size > exports.MAX_JOB_DATA_SIZE) {
|
|
76
|
-
throw new Error(`Job data size (${size} bytes) exceeds
|
|
62
|
+
throw new Error(`Job data size (${size} bytes) exceeds max (${exports.MAX_JOB_DATA_SIZE} bytes)`);
|
|
77
63
|
}
|
|
78
64
|
}
|
|
79
|
-
// ============== Connection Class ==============
|
|
80
|
-
/**
|
|
81
|
-
* Base connection class for FlashQ.
|
|
82
|
-
* Handles TCP/HTTP connection, binary protocol, request multiplexing, and auto-reconnect.
|
|
83
|
-
*/
|
|
84
65
|
class FlashQConnection extends events_1.EventEmitter {
|
|
85
66
|
_options;
|
|
86
67
|
socket = null;
|
|
87
68
|
connectionState = 'disconnected';
|
|
88
69
|
authenticated = false;
|
|
89
70
|
pendingRequests = new Map();
|
|
90
|
-
responseQueue = [];
|
|
91
71
|
buffer = '';
|
|
92
72
|
binaryBuffer = Buffer.alloc(0);
|
|
93
|
-
// Reconnect state
|
|
94
73
|
reconnectAttempts = 0;
|
|
95
74
|
reconnectTimer = null;
|
|
96
75
|
manualClose = false;
|
|
@@ -110,44 +89,21 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
110
89
|
reconnectDelay: options.reconnectDelay ?? 1000,
|
|
111
90
|
maxReconnectDelay: options.maxReconnectDelay ?? 30000,
|
|
112
91
|
};
|
|
113
|
-
|
|
114
|
-
if (this._options.useHttp) {
|
|
92
|
+
if (this._options.useHttp)
|
|
115
93
|
this.connectionState = 'connected';
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/** Get client options (read-only) */
|
|
119
|
-
get options() {
|
|
120
|
-
return this._options;
|
|
121
94
|
}
|
|
122
|
-
|
|
123
|
-
* Connect to FlashQ server.
|
|
124
|
-
* Automatically called on first command if not connected.
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* ```typescript
|
|
128
|
-
* const client = new FlashQ();
|
|
129
|
-
* await client.connect();
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
95
|
+
get options() { return this._options; }
|
|
132
96
|
async connect() {
|
|
133
97
|
if (this._options.useHttp) {
|
|
134
98
|
this.connectionState = 'connected';
|
|
135
99
|
return;
|
|
136
100
|
}
|
|
137
|
-
if (this.connectionState === 'connected')
|
|
101
|
+
if (this.connectionState === 'connected')
|
|
138
102
|
return;
|
|
139
|
-
}
|
|
140
103
|
if (this.connectionState === 'connecting') {
|
|
141
|
-
// Wait for existing connection attempt
|
|
142
104
|
return new Promise((resolve, reject) => {
|
|
143
|
-
const onConnect = () => {
|
|
144
|
-
|
|
145
|
-
resolve();
|
|
146
|
-
};
|
|
147
|
-
const onError = (err) => {
|
|
148
|
-
this.removeListener('connect', onConnect);
|
|
149
|
-
reject(err);
|
|
150
|
-
};
|
|
105
|
+
const onConnect = () => { this.removeListener('error', onError); resolve(); };
|
|
106
|
+
const onError = (err) => { this.removeListener('connect', onConnect); reject(err); };
|
|
151
107
|
this.once('connect', onConnect);
|
|
152
108
|
this.once('error', onError);
|
|
153
109
|
});
|
|
@@ -159,10 +115,10 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
159
115
|
this.connectionState = 'disconnected';
|
|
160
116
|
reject(new Error('Connection timeout'));
|
|
161
117
|
}, this._options.timeout);
|
|
162
|
-
const
|
|
118
|
+
const opts = this._options.socketPath
|
|
163
119
|
? { path: this._options.socketPath }
|
|
164
120
|
: { host: this._options.host, port: this._options.port };
|
|
165
|
-
this.socket = net.createConnection(
|
|
121
|
+
this.socket = net.createConnection(opts, async () => {
|
|
166
122
|
clearTimeout(timeout);
|
|
167
123
|
this.connectionState = 'connected';
|
|
168
124
|
this.reconnectAttempts = 0;
|
|
@@ -191,13 +147,9 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
191
147
|
});
|
|
192
148
|
});
|
|
193
149
|
}
|
|
194
|
-
/**
|
|
195
|
-
* Attempt to reconnect with exponential backoff
|
|
196
|
-
*/
|
|
197
150
|
scheduleReconnect() {
|
|
198
|
-
if (this.manualClose || !this._options.autoReconnect)
|
|
151
|
+
if (this.manualClose || !this._options.autoReconnect)
|
|
199
152
|
return;
|
|
200
|
-
}
|
|
201
153
|
if (this._options.maxReconnectAttempts > 0 &&
|
|
202
154
|
this.reconnectAttempts >= this._options.maxReconnectAttempts) {
|
|
203
155
|
this.emit('reconnect_failed', new Error('Max reconnection attempts reached'));
|
|
@@ -205,10 +157,8 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
205
157
|
}
|
|
206
158
|
this.connectionState = 'reconnecting';
|
|
207
159
|
this.reconnectAttempts++;
|
|
208
|
-
// Exponential backoff with jitter
|
|
209
160
|
const baseDelay = Math.min(this._options.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1), this._options.maxReconnectDelay);
|
|
210
|
-
const
|
|
211
|
-
const delay = baseDelay + jitter;
|
|
161
|
+
const delay = baseDelay + Math.random() * 0.3 * baseDelay;
|
|
212
162
|
this.emit('reconnecting', { attempt: this.reconnectAttempts, delay });
|
|
213
163
|
this.reconnectTimer = setTimeout(async () => {
|
|
214
164
|
try {
|
|
@@ -239,14 +189,11 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
239
189
|
this.connectionState = 'disconnected';
|
|
240
190
|
this.authenticated = false;
|
|
241
191
|
this.emit('disconnect');
|
|
242
|
-
// Auto-reconnect if enabled and not manually closed
|
|
243
192
|
if (wasConnected && !this.manualClose && this._options.autoReconnect) {
|
|
244
193
|
this.scheduleReconnect();
|
|
245
194
|
}
|
|
246
195
|
});
|
|
247
|
-
this.socket.on('error', (err) =>
|
|
248
|
-
this.emit('error', err);
|
|
249
|
-
});
|
|
196
|
+
this.socket.on('error', (err) => this.emit('error', err));
|
|
250
197
|
}
|
|
251
198
|
processBuffer() {
|
|
252
199
|
const lines = this.buffer.split('\n');
|
|
@@ -255,12 +202,9 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
255
202
|
if (!line.trim())
|
|
256
203
|
continue;
|
|
257
204
|
try {
|
|
258
|
-
|
|
259
|
-
this.handleResponse(response);
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
// Ignore parse errors
|
|
205
|
+
this.handleResponse(JSON.parse(line));
|
|
263
206
|
}
|
|
207
|
+
catch { /* ignore */ }
|
|
264
208
|
}
|
|
265
209
|
}
|
|
266
210
|
processBinaryBuffer() {
|
|
@@ -271,52 +215,27 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
271
215
|
const frameData = this.binaryBuffer.subarray(4, 4 + len);
|
|
272
216
|
this.binaryBuffer = this.binaryBuffer.subarray(4 + len);
|
|
273
217
|
try {
|
|
274
|
-
|
|
275
|
-
this.handleResponse(response);
|
|
276
|
-
}
|
|
277
|
-
catch {
|
|
278
|
-
// Ignore decode errors
|
|
218
|
+
this.handleResponse((0, msgpack_1.decode)(frameData));
|
|
279
219
|
}
|
|
220
|
+
catch { /* ignore */ }
|
|
280
221
|
}
|
|
281
222
|
}
|
|
282
223
|
handleResponse(response) {
|
|
283
|
-
if (response.reqId)
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
const pending = this.responseQueue.shift();
|
|
298
|
-
if (pending) {
|
|
299
|
-
if (response.ok === false && response.error) {
|
|
300
|
-
pending.reject(new Error(response.error));
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
pending.resolve(response);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
224
|
+
if (!response.reqId)
|
|
225
|
+
return;
|
|
226
|
+
const pending = this.pendingRequests.get(response.reqId);
|
|
227
|
+
if (!pending)
|
|
228
|
+
return;
|
|
229
|
+
this.pendingRequests.delete(response.reqId);
|
|
230
|
+
clearTimeout(pending.timer);
|
|
231
|
+
if (response.ok === false && response.error)
|
|
232
|
+
pending.reject(new Error(response.error));
|
|
233
|
+
else
|
|
234
|
+
pending.resolve(response);
|
|
307
235
|
}
|
|
308
|
-
/**
|
|
309
|
-
* Close the connection to the server.
|
|
310
|
-
*
|
|
311
|
-
* @example
|
|
312
|
-
* ```typescript
|
|
313
|
-
* await client.close();
|
|
314
|
-
* ```
|
|
315
|
-
*/
|
|
316
236
|
async close() {
|
|
317
237
|
this.manualClose = true;
|
|
318
238
|
this.connectionState = 'closed';
|
|
319
|
-
// Cancel any pending reconnect
|
|
320
239
|
if (this.reconnectTimer) {
|
|
321
240
|
clearTimeout(this.reconnectTimer);
|
|
322
241
|
this.reconnectTimer = null;
|
|
@@ -326,36 +245,13 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
326
245
|
pending.reject(new Error('Connection closed'));
|
|
327
246
|
}
|
|
328
247
|
this.pendingRequests.clear();
|
|
329
|
-
for (const pending of this.responseQueue) {
|
|
330
|
-
pending.reject(new Error('Connection closed'));
|
|
331
|
-
}
|
|
332
|
-
this.responseQueue.length = 0;
|
|
333
248
|
if (this.socket) {
|
|
334
249
|
this.socket.destroy();
|
|
335
250
|
this.socket = null;
|
|
336
251
|
}
|
|
337
252
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
*
|
|
341
|
-
* @returns true if connected
|
|
342
|
-
*/
|
|
343
|
-
isConnected() {
|
|
344
|
-
return this.connectionState === 'connected';
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Get current connection state.
|
|
348
|
-
*
|
|
349
|
-
* @returns Connection state
|
|
350
|
-
*/
|
|
351
|
-
getConnectionState() {
|
|
352
|
-
return this.connectionState;
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Ping the server to check connection health.
|
|
356
|
-
*
|
|
357
|
-
* @returns true if server responds
|
|
358
|
-
*/
|
|
253
|
+
isConnected() { return this.connectionState === 'connected'; }
|
|
254
|
+
getConnectionState() { return this.connectionState; }
|
|
359
255
|
async ping() {
|
|
360
256
|
try {
|
|
361
257
|
const response = await this.send({ cmd: 'PING' });
|
|
@@ -365,32 +261,14 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
365
261
|
return false;
|
|
366
262
|
}
|
|
367
263
|
}
|
|
368
|
-
/**
|
|
369
|
-
* Authenticate with the server.
|
|
370
|
-
*
|
|
371
|
-
* @param token - Authentication token
|
|
372
|
-
*/
|
|
373
264
|
async auth(token) {
|
|
374
|
-
const response = await this.send({
|
|
375
|
-
|
|
376
|
-
token,
|
|
377
|
-
});
|
|
378
|
-
if (!response.ok) {
|
|
265
|
+
const response = await this.send({ cmd: 'AUTH', token });
|
|
266
|
+
if (!response.ok)
|
|
379
267
|
throw new Error('Authentication failed');
|
|
380
|
-
}
|
|
381
268
|
this._options.token = token;
|
|
382
269
|
this.authenticated = true;
|
|
383
270
|
}
|
|
384
|
-
/**
|
|
385
|
-
* Send a command to the server.
|
|
386
|
-
* Auto-connects if not connected.
|
|
387
|
-
*
|
|
388
|
-
* @param command - Command object
|
|
389
|
-
* @param customTimeout - Optional custom timeout
|
|
390
|
-
* @returns Response from server
|
|
391
|
-
*/
|
|
392
271
|
async send(command, customTimeout) {
|
|
393
|
-
// Wait for reconnection if in progress
|
|
394
272
|
if (this.connectionState === 'reconnecting') {
|
|
395
273
|
await new Promise((resolve, reject) => {
|
|
396
274
|
const timeout = setTimeout(() => {
|
|
@@ -412,33 +290,20 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
412
290
|
this.once('reconnect_failed', onFailed);
|
|
413
291
|
});
|
|
414
292
|
}
|
|
415
|
-
if (this.connectionState !== 'connected')
|
|
293
|
+
if (this.connectionState !== 'connected')
|
|
416
294
|
await this.connect();
|
|
417
|
-
|
|
418
|
-
if (this._options.useHttp) {
|
|
419
|
-
return this.sendHttp(command, customTimeout);
|
|
420
|
-
}
|
|
421
|
-
return this.sendTcp(command, customTimeout);
|
|
295
|
+
return this._options.useHttp ? this.sendHttp(command, customTimeout) : this.sendTcp(command, customTimeout);
|
|
422
296
|
}
|
|
423
297
|
async sendTcp(command, customTimeout) {
|
|
424
|
-
if (!this.socket || this.connectionState !== 'connected')
|
|
298
|
+
if (!this.socket || this.connectionState !== 'connected')
|
|
425
299
|
throw new Error('Not connected');
|
|
426
|
-
}
|
|
427
300
|
return new Promise((resolve, reject) => {
|
|
428
301
|
const reqId = generateReqId();
|
|
429
302
|
const timeoutMs = customTimeout ?? this._options.timeout;
|
|
430
|
-
const timer = setTimeout(() => {
|
|
431
|
-
|
|
432
|
-
reject(new Error('Request timeout'));
|
|
433
|
-
}, timeoutMs);
|
|
434
|
-
this.pendingRequests.set(reqId, {
|
|
435
|
-
resolve: (value) => resolve(value),
|
|
436
|
-
reject,
|
|
437
|
-
timer,
|
|
438
|
-
});
|
|
303
|
+
const timer = setTimeout(() => { this.pendingRequests.delete(reqId); reject(new Error('Request timeout')); }, timeoutMs);
|
|
304
|
+
this.pendingRequests.set(reqId, { resolve: (value) => resolve(value), reject, timer });
|
|
439
305
|
if (this._options.useBinary) {
|
|
440
|
-
const
|
|
441
|
-
const encoded = (0, msgpack_1.encode)(payload);
|
|
306
|
+
const encoded = (0, msgpack_1.encode)({ ...command, reqId });
|
|
442
307
|
const frame = Buffer.alloc(4 + encoded.length);
|
|
443
308
|
frame.writeUInt32BE(encoded.length, 0);
|
|
444
309
|
frame.set(encoded, 4);
|
|
@@ -453,116 +318,18 @@ class FlashQConnection extends events_1.EventEmitter {
|
|
|
453
318
|
const { cmd, ...params } = command;
|
|
454
319
|
const baseUrl = `http://${this._options.host}:${this._options.httpPort}`;
|
|
455
320
|
const timeout = customTimeout ?? this._options.timeout;
|
|
456
|
-
const
|
|
457
|
-
|
|
458
|
-
}
|
|
459
|
-
async httpRequest(baseUrl, cmd, params, timeout) {
|
|
460
|
-
const headers = {
|
|
461
|
-
'Content-Type': 'application/json',
|
|
462
|
-
};
|
|
463
|
-
if (this._options.token) {
|
|
464
|
-
headers['Authorization'] = `Bearer ${this._options.token}`;
|
|
465
|
-
}
|
|
466
|
-
// URL-encode queue names to prevent injection
|
|
467
|
-
const encodeQueue = (queue) => encodeURIComponent(String(queue));
|
|
468
|
-
let url;
|
|
469
|
-
let method;
|
|
470
|
-
let body;
|
|
471
|
-
switch (cmd) {
|
|
472
|
-
case 'PUSH':
|
|
473
|
-
url = `${baseUrl}/queues/${encodeQueue(params.queue)}/jobs`;
|
|
474
|
-
method = 'POST';
|
|
475
|
-
body = JSON.stringify({
|
|
476
|
-
data: params.data,
|
|
477
|
-
priority: params.priority,
|
|
478
|
-
delay: params.delay,
|
|
479
|
-
ttl: params.ttl,
|
|
480
|
-
timeout: params.timeout,
|
|
481
|
-
max_attempts: params.max_attempts,
|
|
482
|
-
backoff: params.backoff,
|
|
483
|
-
unique_key: params.unique_key,
|
|
484
|
-
depends_on: params.depends_on,
|
|
485
|
-
tags: params.tags,
|
|
486
|
-
lifo: params.lifo,
|
|
487
|
-
remove_on_complete: params.remove_on_complete,
|
|
488
|
-
remove_on_fail: params.remove_on_fail,
|
|
489
|
-
stall_timeout: params.stall_timeout,
|
|
490
|
-
debounce_id: params.debounce_id,
|
|
491
|
-
debounce_ttl: params.debounce_ttl,
|
|
492
|
-
job_id: params.job_id,
|
|
493
|
-
keep_completed_age: params.keep_completed_age,
|
|
494
|
-
keep_completed_count: params.keep_completed_count,
|
|
495
|
-
});
|
|
496
|
-
break;
|
|
497
|
-
case 'PULL':
|
|
498
|
-
url = `${baseUrl}/queues/${encodeQueue(params.queue)}/jobs?count=1`;
|
|
499
|
-
method = 'GET';
|
|
500
|
-
break;
|
|
501
|
-
case 'PULLB':
|
|
502
|
-
url = `${baseUrl}/queues/${encodeQueue(params.queue)}/jobs?count=${params.count}`;
|
|
503
|
-
method = 'GET';
|
|
504
|
-
break;
|
|
505
|
-
case 'ACK':
|
|
506
|
-
url = `${baseUrl}/jobs/${params.id}/ack`;
|
|
507
|
-
method = 'POST';
|
|
508
|
-
body = JSON.stringify({ result: params.result });
|
|
509
|
-
break;
|
|
510
|
-
case 'FAIL':
|
|
511
|
-
url = `${baseUrl}/jobs/${params.id}/fail`;
|
|
512
|
-
method = 'POST';
|
|
513
|
-
body = JSON.stringify({ error: params.error });
|
|
514
|
-
break;
|
|
515
|
-
case 'STATS':
|
|
516
|
-
url = `${baseUrl}/stats`;
|
|
517
|
-
method = 'GET';
|
|
518
|
-
break;
|
|
519
|
-
case 'METRICS':
|
|
520
|
-
url = `${baseUrl}/metrics`;
|
|
521
|
-
method = 'GET';
|
|
522
|
-
break;
|
|
523
|
-
case 'LISTQUEUES':
|
|
524
|
-
url = `${baseUrl}/queues`;
|
|
525
|
-
method = 'GET';
|
|
526
|
-
break;
|
|
527
|
-
default:
|
|
528
|
-
throw new Error(`HTTP not supported for command: ${cmd}`);
|
|
529
|
-
}
|
|
530
|
-
// Create abort controller for timeout
|
|
321
|
+
const headers = (0, request_1.buildHeaders)(this._options.token);
|
|
322
|
+
const req = (0, request_1.buildHttpRequest)(baseUrl, cmd, params);
|
|
531
323
|
const controller = new AbortController();
|
|
532
324
|
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
533
325
|
try {
|
|
534
|
-
const res = await fetch(url, { method, headers, body, signal: controller.signal });
|
|
326
|
+
const res = await fetch(req.url, { method: req.method, headers, body: req.body, signal: controller.signal });
|
|
535
327
|
const json = (await res.json());
|
|
536
|
-
|
|
537
|
-
throw new Error(json.error ?? 'Unknown error');
|
|
538
|
-
}
|
|
539
|
-
const data = json.data;
|
|
540
|
-
if (cmd === 'PUSH' && data && typeof data === 'object') {
|
|
541
|
-
return { ok: true, id: data.id };
|
|
542
|
-
}
|
|
543
|
-
if ((cmd === 'PULL' || cmd === 'PULLB') && Array.isArray(data)) {
|
|
544
|
-
if (data.length === 0) {
|
|
545
|
-
return { ok: true, job: null };
|
|
546
|
-
}
|
|
547
|
-
return cmd === 'PULL'
|
|
548
|
-
? { ok: true, job: data[0] }
|
|
549
|
-
: { ok: true, jobs: data };
|
|
550
|
-
}
|
|
551
|
-
if (cmd === 'STATS' && data && typeof data === 'object') {
|
|
552
|
-
return { ok: true, ...data };
|
|
553
|
-
}
|
|
554
|
-
if (cmd === 'METRICS' && data && typeof data === 'object') {
|
|
555
|
-
return { ok: true, ...data };
|
|
556
|
-
}
|
|
557
|
-
if (cmd === 'LISTQUEUES' && Array.isArray(data)) {
|
|
558
|
-
return { ok: true, queues: data };
|
|
559
|
-
}
|
|
560
|
-
return json;
|
|
328
|
+
return (0, response_1.parseHttpResponse)(cmd, json);
|
|
561
329
|
}
|
|
562
330
|
catch (error) {
|
|
563
|
-
if (error instanceof Error && error.name === 'AbortError')
|
|
331
|
+
if (error instanceof Error && error.name === 'AbortError')
|
|
564
332
|
throw new Error('HTTP request timeout');
|
|
565
|
-
}
|
|
566
333
|
throw error;
|
|
567
334
|
}
|
|
568
335
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"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"}
|