tspace-mysql 1.9.3 → 1.9.4
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 +134 -17
- package/dist/lib/constants/index.d.ts +1 -1
- package/dist/lib/constants/index.js +8 -1
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +1 -1
- package/dist/lib/core/Abstracts/AbstractBuilder.js +1 -0
- package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
- package/dist/lib/core/Blueprint.d.ts +43 -10
- package/dist/lib/core/Blueprint.js +43 -2
- package/dist/lib/core/Blueprint.js.map +1 -1
- package/dist/lib/core/Builder.d.ts +6 -6
- package/dist/lib/core/Builder.js +25 -28
- package/dist/lib/core/Builder.js.map +1 -1
- package/dist/lib/core/Contracts/Audit.d.ts +2 -2
- package/dist/lib/core/Contracts/Logger.d.ts +2 -2
- package/dist/lib/core/DB.d.ts +137 -6
- package/dist/lib/core/DB.js +153 -30
- package/dist/lib/core/DB.js.map +1 -1
- package/dist/lib/core/Driver/index.d.ts +1 -0
- package/dist/lib/core/Driver/index.js +11 -0
- package/dist/lib/core/Driver/index.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbDriver.d.ts +3 -0
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js +17 -2
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
- package/dist/lib/core/Driver/mongodb/MongodbDriver.d.ts +3 -0
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js +4 -1
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -1
- package/dist/lib/core/Driver/mysql/MysqlDriver.d.ts +3 -0
- package/dist/lib/core/Driver/mysql/MysqlDriver.js +32 -2
- package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresDriver.d.ts +3 -0
- package/dist/lib/core/Driver/postgres/PostgresDriver.js +21 -4
- package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +3 -0
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js +10 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -1
- package/dist/lib/core/Model.d.ts +331 -29
- package/dist/lib/core/Model.js +329 -19
- package/dist/lib/core/Model.js.map +1 -1
- package/dist/lib/core/Pool.js +6 -0
- package/dist/lib/core/Pool.js.map +1 -1
- package/dist/lib/core/{Queue.d.ts → Queue/index.d.ts} +115 -111
- package/dist/lib/core/Queue/index.js +283 -0
- package/dist/lib/core/Queue/index.js.map +1 -0
- package/dist/lib/core/Queue/types.d.ts +40 -0
- package/dist/lib/core/Queue/types.js +3 -0
- package/dist/lib/core/Queue/types.js.map +1 -0
- package/dist/lib/core/Queue/worker.d.ts +103 -0
- package/dist/lib/core/{Queue.js → Queue/worker.js} +251 -310
- package/dist/lib/core/Queue/worker.js.map +1 -0
- package/dist/lib/core/Repository.d.ts +40 -20
- package/dist/lib/core/Repository.js +35 -14
- package/dist/lib/core/Repository.js.map +1 -1
- package/dist/lib/core/UtilityTypes.d.ts +7 -3
- package/dist/lib/core/UtilityTypes.js.map +1 -1
- package/dist/lib/types/decorator/index.d.ts +3 -0
- package/dist/lib/types/index.d.ts +17 -16
- package/dist/lib/types/repository/index.d.ts +3 -3
- package/dist/lib/utils/index.d.ts +10 -5
- package/dist/lib/utils/index.js +42 -9
- package/dist/lib/utils/index.js.map +1 -1
- package/package.json +3 -5
- package/dist/lib/core/Queue.js.map +0 -1
package/dist/lib/core/Pool.js
CHANGED
|
@@ -108,6 +108,12 @@ class PoolConnection {
|
|
|
108
108
|
case "mariadb": {
|
|
109
109
|
return new MariadbDriver_1.MariadbDriver(options).disconnect(this.POOL);
|
|
110
110
|
}
|
|
111
|
+
case "mongodb": {
|
|
112
|
+
return new MongodbDriver_1.MongodblDriver(options).disconnect(this.POOL);
|
|
113
|
+
}
|
|
114
|
+
case "sqlite": {
|
|
115
|
+
return new SqliteDriver_1.SqliteDriver(options).disconnect(this.POOL);
|
|
116
|
+
}
|
|
111
117
|
default:
|
|
112
118
|
throw new Error("No default driver specified");
|
|
113
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pool.js","sourceRoot":"","sources":["../../../src/lib/core/Pool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAiD;AACjD,4DAA4D;AAC5D,qEAAkE;AAClE,kEAAgE;AAChE,kEAAgE;AAChE,+DAA8D;AAE9D,oDAEmB;
|
|
1
|
+
{"version":3,"file":"Pool.js","sourceRoot":"","sources":["../../../src/lib/core/Pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,110 +1,42 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { T } from "..";
|
|
2
|
+
import { Worker } from "./worker";
|
|
3
|
+
import type { EventJobName, EventName, Handler, JobName, JobStatus, QueueAddOptions, QueueProcessOptions } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* Represents a job managed by the queue.
|
|
6
|
+
*
|
|
7
|
+
* @template T The type of the job payload.
|
|
8
|
+
*/
|
|
4
9
|
export type Job<T = any> = {
|
|
10
|
+
/** Unique identifier of the job. */
|
|
5
11
|
id: number;
|
|
12
|
+
/** Name of the job. */
|
|
6
13
|
name: string;
|
|
7
|
-
|
|
14
|
+
/** Current status of the job. */
|
|
15
|
+
status: JobStatus;
|
|
16
|
+
/** Data associated with the job. */
|
|
8
17
|
payload: T;
|
|
9
18
|
};
|
|
10
|
-
|
|
11
|
-
type
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
attempts: Blueprint<T.Default<number>>;
|
|
32
|
-
max_attempts: Blueprint<T.Default<number>>;
|
|
33
|
-
delay_ms: Blueprint<T.Default<number>>;
|
|
34
|
-
locked_by: Blueprint<string | null>;
|
|
35
|
-
locked_at: Blueprint<string | Date | null>;
|
|
36
|
-
available_at: Blueprint<NonNullable<string | Date>>;
|
|
37
|
-
completed_at: Blueprint<string | Date | null>;
|
|
38
|
-
created_at: Blueprint<string | Date | null>;
|
|
39
|
-
updated_at: Blueprint<string | Date | null>;
|
|
40
|
-
};
|
|
41
|
-
type TS = T.Schema<typeof schema>;
|
|
42
|
-
declare class Worker extends Model<TS> {
|
|
43
|
-
private HOSTNAME;
|
|
44
|
-
private INSPECT_EXEC;
|
|
45
|
-
private STOPPING;
|
|
46
|
-
private IS_FLUSHING;
|
|
47
|
-
private LIMIT_CONNECTIONS;
|
|
48
|
-
private MAX_IDLE_RETRIES;
|
|
49
|
-
private ACTIVE_JOBS;
|
|
50
|
-
private BATCH_SIZE;
|
|
51
|
-
private MAX_WAIT_MS;
|
|
52
|
-
private BUFFER;
|
|
53
|
-
private WORKER_STATE;
|
|
54
|
-
protected boot(): void;
|
|
55
|
-
initialize(opts?: {
|
|
56
|
-
inspect?: boolean;
|
|
57
|
-
flush?: boolean;
|
|
58
|
-
hostname?: string;
|
|
59
|
-
maxIdleRetries?: number;
|
|
60
|
-
limitConnections?: number;
|
|
61
|
-
}): Promise<this>;
|
|
62
|
-
shutdown(): Promise<void>;
|
|
63
|
-
flush(): Promise<void>;
|
|
64
|
-
getJobOverallStats(name?: string): Promise<{
|
|
65
|
-
total: number;
|
|
66
|
-
completed: number;
|
|
67
|
-
active: number;
|
|
68
|
-
pending: number;
|
|
69
|
-
failed: number;
|
|
70
|
-
}>;
|
|
71
|
-
getJobStats(name?: string): Promise<{
|
|
72
|
-
name: string;
|
|
73
|
-
completed: number;
|
|
74
|
-
active: number;
|
|
75
|
-
pending: number;
|
|
76
|
-
failed: number;
|
|
77
|
-
}[]>;
|
|
78
|
-
getJobs(name?: string): Promise<{
|
|
79
|
-
[x: string]: unknown;
|
|
80
|
-
id: number;
|
|
81
|
-
uuid: string | null;
|
|
82
|
-
name: string;
|
|
83
|
-
status: "pending" | "active" | "completed" | "failed";
|
|
84
|
-
priority: import("../types").TDefault<number>;
|
|
85
|
-
payload: string | null;
|
|
86
|
-
result: string | null;
|
|
87
|
-
error: string | null;
|
|
88
|
-
metadata: string | null;
|
|
89
|
-
attempts: import("../types").TDefault<number>;
|
|
90
|
-
max_attempts: import("../types").TDefault<number>;
|
|
91
|
-
delay_ms: import("../types").TDefault<number>;
|
|
92
|
-
locked_by: string | null;
|
|
93
|
-
locked_at: string | Date | null;
|
|
94
|
-
available_at: NonNullable<string | Date>;
|
|
95
|
-
completed_at: string | Date | null;
|
|
96
|
-
created_at: string | Date | null;
|
|
97
|
-
updated_at: string | Date | null;
|
|
98
|
-
}[]>;
|
|
99
|
-
getNames(): Promise<any[]>;
|
|
100
|
-
add(name: string, payload: any, opts?: QueueAddOptions): Promise<void>;
|
|
101
|
-
process(name: string, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
|
|
102
|
-
private _runJob;
|
|
103
|
-
private _dequeueMany;
|
|
104
|
-
private _flushBuffer;
|
|
105
|
-
private _wakeWorker;
|
|
106
|
-
private safeJsonParse;
|
|
107
|
-
private safeJsonStringify;
|
|
19
|
+
/**
|
|
20
|
+
* Defines the type contract for queue events and jobs.
|
|
21
|
+
*
|
|
22
|
+
* This interface is intentionally empty and can be extended
|
|
23
|
+
* using TypeScript module augmentation to provide type-safe
|
|
24
|
+
* event and job names.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* declare module 'tspace-mysql' {
|
|
29
|
+
* interface QueueContract {
|
|
30
|
+
* events: {
|
|
31
|
+
* 'user.created': ['send-email', 'send-push'];
|
|
32
|
+
* };
|
|
33
|
+
*
|
|
34
|
+
* jobs: ['send-email', 'send-push'];
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export interface QueueContract {
|
|
108
40
|
}
|
|
109
41
|
/**
|
|
110
42
|
* Queue facade class (static API wrapper)
|
|
@@ -138,11 +70,13 @@ declare class Queue {
|
|
|
138
70
|
/**
|
|
139
71
|
* The 'start' method is used to initialize the Queue system.
|
|
140
72
|
* Creates and prepares the underlying Worker instance.
|
|
73
|
+
*
|
|
141
74
|
* @param {Object} [opts] - options (inspect, flush)
|
|
142
|
-
* @property {boolean} opts.inspect queue work flow
|
|
143
|
-
* @property {boolean} opts.flush remove all queue
|
|
144
|
-
* @property {number} opts.maxIdleRetries - Maximum idle time () when no jobs are available
|
|
145
|
-
* @property {
|
|
75
|
+
* @property {boolean?} opts.inspect queue work flow
|
|
76
|
+
* @property {boolean?} opts.flush remove all queue
|
|
77
|
+
* @property {number?} opts.maxIdleRetries - Maximum idle time () when no jobs are available
|
|
78
|
+
* @property {boolean} [opts.poll.enabled] - Enable or disable worker job polling.
|
|
79
|
+
* @property {number} [opts.poll.timeout] - Polling interval in milliseconds.
|
|
146
80
|
* @returns {Promise<void>}
|
|
147
81
|
*/
|
|
148
82
|
static start(opts?: {
|
|
@@ -150,7 +84,10 @@ declare class Queue {
|
|
|
150
84
|
flush?: boolean;
|
|
151
85
|
hostname?: string;
|
|
152
86
|
maxIdleRetries?: number;
|
|
153
|
-
|
|
87
|
+
poll?: {
|
|
88
|
+
enabled?: boolean;
|
|
89
|
+
interval?: number;
|
|
90
|
+
};
|
|
154
91
|
}): Promise<void>;
|
|
155
92
|
/**
|
|
156
93
|
* The 'end' method is used to shutdown the Queue system.
|
|
@@ -231,7 +168,7 @@ declare class Queue {
|
|
|
231
168
|
* return await helloWorld(job)
|
|
232
169
|
* }, { concurrency : 3 });
|
|
233
170
|
*/
|
|
234
|
-
static process(name:
|
|
171
|
+
static process(name: JobName, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
|
|
235
172
|
/**
|
|
236
173
|
* Start a worker for processing jobs of a specific name.
|
|
237
174
|
*
|
|
@@ -248,12 +185,12 @@ declare class Queue {
|
|
|
248
185
|
* return await helloWorld(job)
|
|
249
186
|
* }, { concurrency : 3 });
|
|
250
187
|
*/
|
|
251
|
-
static on(name:
|
|
188
|
+
static on(name: JobName, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
|
|
252
189
|
/**
|
|
253
190
|
* Add a new job into the queue.
|
|
254
191
|
*
|
|
255
192
|
* @param {string} name - Queue name / job type.
|
|
256
|
-
* @param {any} payload - Job payload data
|
|
193
|
+
* @param {any} payload - Job payload data, send to process
|
|
257
194
|
* @param {QueueAddOptions} [opts] - Job options (delay, priority, retry, etc.)
|
|
258
195
|
* @throws {Error} If Queue is not initialized.
|
|
259
196
|
* @returns {Promise<T.Result<Worker>>}
|
|
@@ -261,9 +198,76 @@ declare class Queue {
|
|
|
261
198
|
* @example
|
|
262
199
|
* ```ts
|
|
263
200
|
* Queue.add("send-email", { email: "test@gmail.com" });
|
|
201
|
+
* Queue.add("send-email", { email: "test2@gmail.com" }, {
|
|
202
|
+
* metadata : 'first priority',
|
|
203
|
+
* priority : 9999
|
|
204
|
+
* delayMs : 100
|
|
205
|
+
* maxAttempts : 1
|
|
206
|
+
* });
|
|
264
207
|
* ```
|
|
265
208
|
*/
|
|
266
|
-
static add(name:
|
|
209
|
+
static add(name: JobName, payload: any, opts?: QueueAddOptions): Promise<void>;
|
|
210
|
+
/**
|
|
211
|
+
* Publishes an event to all registered subscribers.
|
|
212
|
+
*
|
|
213
|
+
* Each subscriber receives the event payload as an individual job.
|
|
214
|
+
*
|
|
215
|
+
* @param event - The event name to publish.
|
|
216
|
+
* @param payload - The data associated with the event.
|
|
217
|
+
* @param {QueueAddOptions} [opts] - Job options (delay, priority, retry, etc.)
|
|
218
|
+
* @throws {Error} If the queue worker has not been initialized.
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* Queue.publish('user.created', {
|
|
223
|
+
* userId: 123,
|
|
224
|
+
* email: 'user@example.com',
|
|
225
|
+
* });
|
|
226
|
+
*
|
|
227
|
+
* Queue.publish('user.created', {
|
|
228
|
+
* userId: 123,
|
|
229
|
+
* email: 'user@example.com',
|
|
230
|
+
* }, {
|
|
231
|
+
* metadata : 'first priority',
|
|
232
|
+
* priority : 9999
|
|
233
|
+
* delayMs : 100
|
|
234
|
+
* maxAttempts : 1
|
|
235
|
+
* });
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
static publish<E extends EventName>(event: E, payload: any, opts?: QueueAddOptions): Promise<void>;
|
|
239
|
+
/**
|
|
240
|
+
* Subscribes a handler to an event.
|
|
241
|
+
*
|
|
242
|
+
* The subscriber name is combined with the event name to create
|
|
243
|
+
* a unique job name in the format `{event}.{name}`.
|
|
244
|
+
*
|
|
245
|
+
* @param event - The event name to subscribe to.
|
|
246
|
+
* @param name - The unique name of the subscriber.
|
|
247
|
+
* @param handler - The function executed when the event is received.
|
|
248
|
+
* @param opts - Options controlling job processing behavior.
|
|
249
|
+
*
|
|
250
|
+
* @throws {Error} If the queue worker has not been initialized.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* await Queue.subscribe(
|
|
255
|
+
* 'user.created',
|
|
256
|
+
* 'email',
|
|
257
|
+
* async (job) => {
|
|
258
|
+
* await sendEmail(job.payload);
|
|
259
|
+
* },
|
|
260
|
+
* {
|
|
261
|
+
* concurrency: 5,
|
|
262
|
+
* }
|
|
263
|
+
* );
|
|
264
|
+
* ```
|
|
265
|
+
*
|
|
266
|
+
* @remarks
|
|
267
|
+
* A subscription to `user.created` with the name `email`
|
|
268
|
+
* creates the job queue `user.created.email`.
|
|
269
|
+
*/
|
|
270
|
+
static subscribe<E extends EventName>(event: E, name: EventJobName<E>, handler: Handler, opts?: QueueProcessOptions): Promise<void>;
|
|
267
271
|
}
|
|
268
272
|
export { Queue };
|
|
269
273
|
export default Queue;
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Queue = void 0;
|
|
4
|
+
const worker_1 = require("./worker");
|
|
5
|
+
/**
|
|
6
|
+
* Queue facade class (static API wrapper)
|
|
7
|
+
*
|
|
8
|
+
* This class provides a singleton-style interface over the underlying Worker instance.
|
|
9
|
+
* It must be initialized before use via `Queue.start()`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const sendEmail = (job) => console.log('send mail :' + job.payload.email)
|
|
14
|
+
*
|
|
15
|
+
* await Queue.start({ inspect : true, flush : true // **remove all jobs });
|
|
16
|
+
*
|
|
17
|
+
* // register
|
|
18
|
+
* Queue.progress("send-email", async (job) => {
|
|
19
|
+
* return await sendEmail(job);
|
|
20
|
+
* }, { concurrency : 3 });
|
|
21
|
+
*
|
|
22
|
+
* // add
|
|
23
|
+
* Queue.add("send-email", { email: "test@gmail.com" });
|
|
24
|
+
*
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
class Queue {
|
|
28
|
+
/**
|
|
29
|
+
* Internal Worker instance used for all queue operations.
|
|
30
|
+
* @type {Worker | null}
|
|
31
|
+
*/
|
|
32
|
+
static WORKER;
|
|
33
|
+
static MESSAGE = {
|
|
34
|
+
INIT_ERROR: `Queue is not initialized. Please call 'await Queue.start()' before using it.`
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The 'start' method is used to initialize the Queue system.
|
|
38
|
+
* Creates and prepares the underlying Worker instance.
|
|
39
|
+
*
|
|
40
|
+
* @param {Object} [opts] - options (inspect, flush)
|
|
41
|
+
* @property {boolean?} opts.inspect queue work flow
|
|
42
|
+
* @property {boolean?} opts.flush remove all queue
|
|
43
|
+
* @property {number?} opts.maxIdleRetries - Maximum idle time () when no jobs are available
|
|
44
|
+
* @property {boolean} [opts.poll.enabled] - Enable or disable worker job polling.
|
|
45
|
+
* @property {number} [opts.poll.timeout] - Polling interval in milliseconds.
|
|
46
|
+
* @returns {Promise<void>}
|
|
47
|
+
*/
|
|
48
|
+
static async start(opts = {}) {
|
|
49
|
+
this.WORKER = await new worker_1.Worker().initialize(opts);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The 'end' method is used to shutdown the Queue system.
|
|
54
|
+
*
|
|
55
|
+
* @returns {Promise<void>}
|
|
56
|
+
*/
|
|
57
|
+
static async end() {
|
|
58
|
+
if (this.WORKER == null) {
|
|
59
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
60
|
+
}
|
|
61
|
+
await this.WORKER.shutdown();
|
|
62
|
+
this.WORKER = null;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The 'flush' method is used to flush all jobs in the queue (dangerous operation).
|
|
67
|
+
*
|
|
68
|
+
* @throws {Error} If Queue is not initialized.
|
|
69
|
+
* @returns {Promise<void>}
|
|
70
|
+
*/
|
|
71
|
+
static async flush() {
|
|
72
|
+
if (this.WORKER == null) {
|
|
73
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
74
|
+
}
|
|
75
|
+
await this.WORKER.flush();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The 'getJobOverallStats' method is used to get aggregated queue statistics.
|
|
79
|
+
*
|
|
80
|
+
* @param {string} [name] - Optional queue name filter.
|
|
81
|
+
* @throws {Error} If Queue is not initialized.
|
|
82
|
+
* @returns {Promise<any>}
|
|
83
|
+
*/
|
|
84
|
+
static async getJobOverallStats(name) {
|
|
85
|
+
if (this.WORKER == null) {
|
|
86
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
87
|
+
}
|
|
88
|
+
return await this.WORKER.getJobOverallStats(name);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The 'getJobStats' method is used to Get jobs statistics grouped by name.
|
|
92
|
+
*
|
|
93
|
+
* @param {string} [name] - Optional queue name filter.
|
|
94
|
+
* @throws {Error} If Queue is not initialized.
|
|
95
|
+
* @returns {Promise<any>}
|
|
96
|
+
*/
|
|
97
|
+
static async getJobStats(name) {
|
|
98
|
+
if (this.WORKER == null) {
|
|
99
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
100
|
+
}
|
|
101
|
+
return await this.WORKER.getJobStats(name);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The 'getJobs' method is used to Get jobs.
|
|
105
|
+
*
|
|
106
|
+
* @param {string} [name] - Optional queue name filter.
|
|
107
|
+
* @throws {Error} If Queue is not initialized.
|
|
108
|
+
* @returns {Promise<T.Result<Worker>[]>}
|
|
109
|
+
*/
|
|
110
|
+
static async getJobs(name) {
|
|
111
|
+
if (this.WORKER == null) {
|
|
112
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
113
|
+
}
|
|
114
|
+
return await this.WORKER.getJobs(name);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get all unique queue names.
|
|
118
|
+
*
|
|
119
|
+
* @throws {Error} If Queue is not initialized.
|
|
120
|
+
* @returns {Promise<string[]>}
|
|
121
|
+
*/
|
|
122
|
+
static async getNames() {
|
|
123
|
+
if (this.WORKER == null) {
|
|
124
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
125
|
+
}
|
|
126
|
+
return await this.WORKER.getNames();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Access raw Worker instance safely.
|
|
130
|
+
*
|
|
131
|
+
* @param {(worker: Worker) => any} cb - Callback with Worker instance.
|
|
132
|
+
* @throws {Error} If Queue is not initialized.
|
|
133
|
+
* @returns {Promise<Work>}
|
|
134
|
+
*/
|
|
135
|
+
static async worker(cb) {
|
|
136
|
+
if (this.WORKER == null) {
|
|
137
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
138
|
+
}
|
|
139
|
+
return await cb(this.WORKER);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Start a worker for processing jobs of a specific name.
|
|
143
|
+
*
|
|
144
|
+
* @param {string} name - Queue name to process.
|
|
145
|
+
* @param {Handler} handler - Job handler function.
|
|
146
|
+
* @param {QueueProcessOptions} [opts] - Job options (interval, concurrency)
|
|
147
|
+
* @throws {Error} If Queue is not initialized.
|
|
148
|
+
* @returns {Promise<void>}
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* const helloWorld = (job) => console.log('hello world :' + job.id);
|
|
152
|
+
*
|
|
153
|
+
* Queue.progress("hello", async (job) => {
|
|
154
|
+
* return await helloWorld(job)
|
|
155
|
+
* }, { concurrency : 3 });
|
|
156
|
+
*/
|
|
157
|
+
static async process(name, handler, opts = { interval: 1_000, concurrency: 1 }) {
|
|
158
|
+
if (this.WORKER == null) {
|
|
159
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
160
|
+
}
|
|
161
|
+
return await this.WORKER.process(name, handler, opts);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Start a worker for processing jobs of a specific name.
|
|
165
|
+
*
|
|
166
|
+
* @param {string} name - Queue name to process.
|
|
167
|
+
* @param {Handler} handler - Job handler function.
|
|
168
|
+
* @param {QueueProcessOptions} [opts] - Job options (interval, concurrency)
|
|
169
|
+
* @throws {Error} If Queue is not initialized.
|
|
170
|
+
* @returns {Promise<void>}
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* const helloWorld = (job) => console.log('hello world :' + job.id);
|
|
174
|
+
*
|
|
175
|
+
* Queue.on("hello", async (job) => {
|
|
176
|
+
* return await helloWorld(job)
|
|
177
|
+
* }, { concurrency : 3 });
|
|
178
|
+
*/
|
|
179
|
+
static async on(name, handler, opts = { interval: 1_000, concurrency: 1 }) {
|
|
180
|
+
return await this.process(name, handler, opts);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Add a new job into the queue.
|
|
184
|
+
*
|
|
185
|
+
* @param {string} name - Queue name / job type.
|
|
186
|
+
* @param {any} payload - Job payload data, send to process
|
|
187
|
+
* @param {QueueAddOptions} [opts] - Job options (delay, priority, retry, etc.)
|
|
188
|
+
* @throws {Error} If Queue is not initialized.
|
|
189
|
+
* @returns {Promise<T.Result<Worker>>}
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```ts
|
|
193
|
+
* Queue.add("send-email", { email: "test@gmail.com" });
|
|
194
|
+
* Queue.add("send-email", { email: "test2@gmail.com" }, {
|
|
195
|
+
* metadata : 'first priority',
|
|
196
|
+
* priority : 9999
|
|
197
|
+
* delayMs : 100
|
|
198
|
+
* maxAttempts : 1
|
|
199
|
+
* });
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
static async add(name, payload, opts = {}) {
|
|
203
|
+
if (this.WORKER == null) {
|
|
204
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
205
|
+
}
|
|
206
|
+
await this.WORKER.add(name, payload, opts);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Publishes an event to all registered subscribers.
|
|
211
|
+
*
|
|
212
|
+
* Each subscriber receives the event payload as an individual job.
|
|
213
|
+
*
|
|
214
|
+
* @param event - The event name to publish.
|
|
215
|
+
* @param payload - The data associated with the event.
|
|
216
|
+
* @param {QueueAddOptions} [opts] - Job options (delay, priority, retry, etc.)
|
|
217
|
+
* @throws {Error} If the queue worker has not been initialized.
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```ts
|
|
221
|
+
* Queue.publish('user.created', {
|
|
222
|
+
* userId: 123,
|
|
223
|
+
* email: 'user@example.com',
|
|
224
|
+
* });
|
|
225
|
+
*
|
|
226
|
+
* Queue.publish('user.created', {
|
|
227
|
+
* userId: 123,
|
|
228
|
+
* email: 'user@example.com',
|
|
229
|
+
* }, {
|
|
230
|
+
* metadata : 'first priority',
|
|
231
|
+
* priority : 9999
|
|
232
|
+
* delayMs : 100
|
|
233
|
+
* maxAttempts : 1
|
|
234
|
+
* });
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
237
|
+
static async publish(event, payload, opts = {}) {
|
|
238
|
+
if (this.WORKER == null) {
|
|
239
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
240
|
+
}
|
|
241
|
+
return await this.WORKER.publish(event, payload, opts);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Subscribes a handler to an event.
|
|
245
|
+
*
|
|
246
|
+
* The subscriber name is combined with the event name to create
|
|
247
|
+
* a unique job name in the format `{event}.{name}`.
|
|
248
|
+
*
|
|
249
|
+
* @param event - The event name to subscribe to.
|
|
250
|
+
* @param name - The unique name of the subscriber.
|
|
251
|
+
* @param handler - The function executed when the event is received.
|
|
252
|
+
* @param opts - Options controlling job processing behavior.
|
|
253
|
+
*
|
|
254
|
+
* @throws {Error} If the queue worker has not been initialized.
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```ts
|
|
258
|
+
* await Queue.subscribe(
|
|
259
|
+
* 'user.created',
|
|
260
|
+
* 'email',
|
|
261
|
+
* async (job) => {
|
|
262
|
+
* await sendEmail(job.payload);
|
|
263
|
+
* },
|
|
264
|
+
* {
|
|
265
|
+
* concurrency: 5,
|
|
266
|
+
* }
|
|
267
|
+
* );
|
|
268
|
+
* ```
|
|
269
|
+
*
|
|
270
|
+
* @remarks
|
|
271
|
+
* A subscription to `user.created` with the name `email`
|
|
272
|
+
* creates the job queue `user.created.email`.
|
|
273
|
+
*/
|
|
274
|
+
static async subscribe(event, name, handler, opts = { interval: 1_000, concurrency: 1 }) {
|
|
275
|
+
if (this.WORKER == null) {
|
|
276
|
+
throw new Error(this.MESSAGE.INIT_ERROR);
|
|
277
|
+
}
|
|
278
|
+
return await this.WORKER.subscribe(event, name, handler, opts);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
exports.Queue = Queue;
|
|
282
|
+
exports.default = Queue;
|
|
283
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/core/Queue/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Worker } from "./worker";
|
|
2
|
+
import type { T } from "..";
|
|
3
|
+
import type { Job, QueueContract } from ".";
|
|
4
|
+
export type JobInternal = Job & {
|
|
5
|
+
__job: T.Result<Worker>;
|
|
6
|
+
};
|
|
7
|
+
export type Handler = (job: Job) => any | Promise<any>;
|
|
8
|
+
export type State = {
|
|
9
|
+
handler: Handler;
|
|
10
|
+
idle: number;
|
|
11
|
+
sleeping: boolean;
|
|
12
|
+
running: number;
|
|
13
|
+
opts: Required<QueueProcessOptions>;
|
|
14
|
+
};
|
|
15
|
+
export type QueueAddOptions = {
|
|
16
|
+
delayMs?: number;
|
|
17
|
+
priority?: number;
|
|
18
|
+
metadata?: Record<string, any>;
|
|
19
|
+
maxAttempts?: number;
|
|
20
|
+
};
|
|
21
|
+
export type QueueProcessOptions = {
|
|
22
|
+
interval?: number;
|
|
23
|
+
concurrency?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 20 | 25 | 30;
|
|
24
|
+
};
|
|
25
|
+
export type BufferedJob = {
|
|
26
|
+
jobData: T.Result<Worker>;
|
|
27
|
+
resolve: (value: any) => void;
|
|
28
|
+
reject: (reason?: any) => void;
|
|
29
|
+
};
|
|
30
|
+
export type JobStatus = 'pending' | 'active' | 'completed' | 'failed';
|
|
31
|
+
type QueueEvents = QueueContract extends {
|
|
32
|
+
events: infer E;
|
|
33
|
+
} ? E : never;
|
|
34
|
+
type QueueJobs = QueueContract extends {
|
|
35
|
+
jobs: infer J;
|
|
36
|
+
} ? J : never;
|
|
37
|
+
export type EventName = QueueEvents extends Record<string, readonly string[]> ? keyof QueueEvents & string : string;
|
|
38
|
+
export type EventJobName<E extends EventName> = QueueEvents extends Record<string, readonly string[]> ? E extends keyof QueueEvents ? QueueEvents[E][number] extends never ? string : QueueEvents[E][number] : string : string;
|
|
39
|
+
export type JobName = QueueJobs extends readonly string[] ? QueueJobs[number] extends never ? string : QueueJobs[number] : string;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/core/Queue/types.ts"],"names":[],"mappings":""}
|