@monque/tsed 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -18
- package/dist/CHANGELOG.md +19 -0
- package/dist/README.md +18 -18
- package/dist/index.cjs +101 -88
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +77 -63
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +78 -64
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +98 -85
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -10
- package/src/config/config.ts +4 -2
- package/src/config/types.ts +35 -2
- package/src/constants/constants.ts +1 -1
- package/src/constants/types.ts +3 -3
- package/src/decorators/cron.ts +5 -5
- package/src/decorators/index.ts +5 -5
- package/src/decorators/{worker-controller.ts → job-controller.ts} +14 -14
- package/src/decorators/{worker.ts → job.ts} +14 -14
- package/src/decorators/types.ts +18 -18
- package/src/index.ts +7 -7
- package/src/monque-module.ts +23 -18
- package/src/utils/build-job-name.ts +2 -2
- package/src/utils/collect-job-metadata.ts +95 -0
- package/src/utils/get-job-token.ts +29 -0
- package/src/utils/index.ts +4 -4
- package/src/utils/resolve-database.ts +6 -5
- package/src/utils/collect-worker-metadata.ts +0 -95
- package/src/utils/get-worker-token.ts +0 -27
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Configuration, InjectorService, LOGGER, OnDestroy, OnInit, TokenProvider } from "@tsed/di";
|
|
2
1
|
import { BulkOperationResult, CursorOptions, CursorPage, EnqueueOptions, GetJobsFilter, JobSelector, Monque, MonqueOptions, PersistedJob, QueueStats, ScheduleOptions, WorkerOptions } from "@monque/core";
|
|
2
|
+
import { Configuration, InjectorService, LOGGER, OnDestroy, OnInit, TokenProvider } from "@tsed/di";
|
|
3
3
|
import { Db, ObjectId } from "mongodb";
|
|
4
4
|
|
|
5
5
|
//#region src/config/types.d.ts
|
|
@@ -21,12 +21,12 @@ import { Db, ObjectId } from "mongodb";
|
|
|
21
21
|
* export class Server {}
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
interface MonqueTsedConfig extends
|
|
24
|
+
interface MonqueTsedConfig extends MonqueOptions {
|
|
25
25
|
/**
|
|
26
26
|
* Enable or disable the Monque module.
|
|
27
27
|
*
|
|
28
28
|
* When disabled:
|
|
29
|
-
* -
|
|
29
|
+
* - Jobs are not registered
|
|
30
30
|
* - Lifecycle hooks are no-ops
|
|
31
31
|
* - MonqueService throws on access
|
|
32
32
|
*
|
|
@@ -104,6 +104,38 @@ interface MonqueTsedConfig extends Omit<MonqueOptions, 'db'> {
|
|
|
104
104
|
* @default "default"
|
|
105
105
|
*/
|
|
106
106
|
mongooseConnectionId?: string;
|
|
107
|
+
/**
|
|
108
|
+
* Disable job processing on this instance.
|
|
109
|
+
*
|
|
110
|
+
* When true, the module will initialize the database connection (allowing you to
|
|
111
|
+
* enqueue jobs via MonqueService) but will NOT register jobs or start the
|
|
112
|
+
* polling loop. Useful for "Producer-only" nodes like API servers that only
|
|
113
|
+
* enqueue jobs but don't process them.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* // API Server (Producer-only)
|
|
118
|
+
* @Configuration({
|
|
119
|
+
* monque: {
|
|
120
|
+
* dbFactory: async () => client.db('myapp'),
|
|
121
|
+
* disableJobProcessing: true, // Only enqueue, don't process
|
|
122
|
+
* }
|
|
123
|
+
* })
|
|
124
|
+
* export class ApiServer {}
|
|
125
|
+
*
|
|
126
|
+
* // Job Server (Consumer)
|
|
127
|
+
* @Configuration({
|
|
128
|
+
* monque: {
|
|
129
|
+
* dbFactory: async () => client.db('myapp'),
|
|
130
|
+
* // disableJobProcessing defaults to false - processes jobs
|
|
131
|
+
* }
|
|
132
|
+
* })
|
|
133
|
+
* export class JobServer {}
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
disableJobProcessing?: boolean;
|
|
107
139
|
}
|
|
108
140
|
//#endregion
|
|
109
141
|
//#region src/config/config.d.ts
|
|
@@ -141,7 +173,7 @@ declare function validateDatabaseConfig(config: MonqueTsedConfig): void;
|
|
|
141
173
|
/**
|
|
142
174
|
* Symbol used to store decorator metadata on class constructors.
|
|
143
175
|
*
|
|
144
|
-
* Used by @
|
|
176
|
+
* Used by @JobController, @Job, and @Cron decorators to attach
|
|
145
177
|
* metadata that is later collected by MonqueModule during initialization.
|
|
146
178
|
*
|
|
147
179
|
* @example
|
|
@@ -157,13 +189,13 @@ declare const MONQUE: unique symbol;
|
|
|
157
189
|
*
|
|
158
190
|
* These constants are used to categorize providers registered with Ts.ED's
|
|
159
191
|
* dependency injection container, enabling MonqueModule to discover and
|
|
160
|
-
* register
|
|
192
|
+
* register jobs automatically.
|
|
161
193
|
*
|
|
162
194
|
* Note: Using string constants with `as const` instead of enums per
|
|
163
195
|
* Constitution guidelines.
|
|
164
196
|
*/
|
|
165
197
|
declare const ProviderTypes: {
|
|
166
|
-
/** Provider type for @
|
|
198
|
+
/** Provider type for @JobController decorated classes */readonly JOB_CONTROLLER: "monque:job-controller"; /** Provider type for cron job handlers */
|
|
167
199
|
readonly CRON: "monque:cron";
|
|
168
200
|
};
|
|
169
201
|
/**
|
|
@@ -173,18 +205,18 @@ type ProviderType = (typeof ProviderTypes)[keyof typeof ProviderTypes];
|
|
|
173
205
|
//#endregion
|
|
174
206
|
//#region src/decorators/types.d.ts
|
|
175
207
|
/**
|
|
176
|
-
* Options for the @
|
|
208
|
+
* Options for the @Job method decorator.
|
|
177
209
|
*
|
|
178
210
|
* Maps to @monque/core WorkerOptions. All standard Monque worker options
|
|
179
211
|
* are exposed here for decorator-based configuration.
|
|
180
212
|
*/
|
|
181
|
-
interface
|
|
213
|
+
interface JobDecoratorOptions extends WorkerOptions {}
|
|
182
214
|
/**
|
|
183
|
-
* Metadata for a single @
|
|
215
|
+
* Metadata for a single @Job decorated method.
|
|
184
216
|
*
|
|
185
|
-
* Stored in the
|
|
217
|
+
* Stored in the JobStore and used by MonqueModule to register workers.
|
|
186
218
|
*/
|
|
187
|
-
interface
|
|
219
|
+
interface JobMetadata {
|
|
188
220
|
/**
|
|
189
221
|
* Job name (without namespace prefix).
|
|
190
222
|
* Combined with controller namespace to form full job name.
|
|
@@ -195,9 +227,9 @@ interface WorkerMetadata {
|
|
|
195
227
|
*/
|
|
196
228
|
method: string;
|
|
197
229
|
/**
|
|
198
|
-
*
|
|
230
|
+
* Job options forwarded to Monque.register().
|
|
199
231
|
*/
|
|
200
|
-
opts:
|
|
232
|
+
opts: JobDecoratorOptions;
|
|
201
233
|
}
|
|
202
234
|
/**
|
|
203
235
|
* Options for the @Cron method decorator.
|
|
@@ -213,7 +245,7 @@ interface CronDecoratorOptions extends ScheduleOptions {
|
|
|
213
245
|
/**
|
|
214
246
|
* Metadata for a single @Cron decorated method.
|
|
215
247
|
*
|
|
216
|
-
* Stored in the
|
|
248
|
+
* Stored in the JobStore and used by MonqueModule to schedule cron jobs.
|
|
217
249
|
*/
|
|
218
250
|
interface CronMetadata {
|
|
219
251
|
/**
|
|
@@ -234,21 +266,21 @@ interface CronMetadata {
|
|
|
234
266
|
opts: CronDecoratorOptions;
|
|
235
267
|
}
|
|
236
268
|
/**
|
|
237
|
-
* Complete metadata structure stored on @
|
|
269
|
+
* Complete metadata structure stored on @JobController classes.
|
|
238
270
|
*
|
|
239
271
|
* Accessed via `Store.from(Class).get(MONQUE)`.
|
|
240
272
|
*
|
|
241
273
|
* @example
|
|
242
274
|
* ```typescript
|
|
243
|
-
* const store = Store.from(
|
|
275
|
+
* const store = Store.from(EmailJobs).get<JobStore>(MONQUE);
|
|
244
276
|
* console.log(store.namespace); // "email"
|
|
245
|
-
* console.log(store.
|
|
277
|
+
* console.log(store.jobs); // [{ name: "send", method: "sendEmail", opts: {} }]
|
|
246
278
|
* ```
|
|
247
279
|
*/
|
|
248
|
-
interface
|
|
280
|
+
interface JobStore {
|
|
249
281
|
/**
|
|
250
282
|
* Type identifier for the store.
|
|
251
|
-
* Always "controller" for
|
|
283
|
+
* Always "controller" for JobController.
|
|
252
284
|
*/
|
|
253
285
|
type: 'controller';
|
|
254
286
|
/**
|
|
@@ -257,9 +289,9 @@ interface WorkerStore {
|
|
|
257
289
|
*/
|
|
258
290
|
namespace?: string;
|
|
259
291
|
/**
|
|
260
|
-
*
|
|
292
|
+
* Job method registrations from @Job decorators.
|
|
261
293
|
*/
|
|
262
|
-
|
|
294
|
+
jobs: JobMetadata[];
|
|
263
295
|
/**
|
|
264
296
|
* Cron job registrations from @Cron decorators.
|
|
265
297
|
*/
|
|
@@ -275,8 +307,8 @@ interface WorkerStore {
|
|
|
275
307
|
*
|
|
276
308
|
* @example
|
|
277
309
|
* ```typescript
|
|
278
|
-
* @
|
|
279
|
-
* class
|
|
310
|
+
* @JobController()
|
|
311
|
+
* class ReportJobs {
|
|
280
312
|
* @Cron("@daily", { timezone: "UTC" })
|
|
281
313
|
* async generateDailyReport() {
|
|
282
314
|
* // ...
|
|
@@ -286,22 +318,22 @@ interface WorkerStore {
|
|
|
286
318
|
*/
|
|
287
319
|
declare function Cron(pattern: string, options?: CronDecoratorOptions): MethodDecorator;
|
|
288
320
|
//#endregion
|
|
289
|
-
//#region src/decorators/
|
|
321
|
+
//#region src/decorators/job.d.ts
|
|
290
322
|
/**
|
|
291
323
|
* Method decorator that registers a method as a job handler.
|
|
292
324
|
*
|
|
293
325
|
* @param name - The job name (will be prefixed with controller namespace if present)
|
|
294
|
-
* @param options - Optional
|
|
326
|
+
* @param options - Optional job configuration (concurrency, replace, etc.)
|
|
295
327
|
*/
|
|
296
|
-
declare function
|
|
328
|
+
declare function Job(name: string, options?: JobDecoratorOptions): MethodDecorator;
|
|
297
329
|
//#endregion
|
|
298
|
-
//#region src/decorators/
|
|
330
|
+
//#region src/decorators/job-controller.d.ts
|
|
299
331
|
/**
|
|
300
|
-
* Class decorator that registers a class as a
|
|
332
|
+
* Class decorator that registers a class as a job controller.
|
|
301
333
|
*
|
|
302
334
|
* @param namespace - Optional namespace prefix for job names
|
|
303
335
|
*/
|
|
304
|
-
declare function
|
|
336
|
+
declare function JobController(namespace?: string): ClassDecorator;
|
|
305
337
|
//#endregion
|
|
306
338
|
//#region src/services/monque-service.d.ts
|
|
307
339
|
/**
|
|
@@ -451,17 +483,17 @@ declare class MonqueModule implements OnInit, OnDestroy {
|
|
|
451
483
|
$onInit(): Promise<void>;
|
|
452
484
|
$onDestroy(): Promise<void>;
|
|
453
485
|
/**
|
|
454
|
-
* Discover and register all
|
|
486
|
+
* Discover and register all jobs from @JobController providers
|
|
455
487
|
*/
|
|
456
|
-
protected
|
|
488
|
+
protected registerJobs(): Promise<void>;
|
|
457
489
|
}
|
|
458
490
|
//#endregion
|
|
459
491
|
//#region src/utils/build-job-name.d.ts
|
|
460
492
|
/**
|
|
461
493
|
* Build the full job name by combining namespace and name.
|
|
462
494
|
*
|
|
463
|
-
* @param namespace - Optional namespace from @
|
|
464
|
-
* @param name - Job name from @
|
|
495
|
+
* @param namespace - Optional namespace from @JobController
|
|
496
|
+
* @param name - Job name from @Job or @Cron
|
|
465
497
|
* @returns Full job name (e.g., "email.send" or just "send")
|
|
466
498
|
*
|
|
467
499
|
* @example
|
|
@@ -473,11 +505,11 @@ declare class MonqueModule implements OnInit, OnDestroy {
|
|
|
473
505
|
*/
|
|
474
506
|
declare function buildJobName(namespace: string | undefined, name: string): string;
|
|
475
507
|
//#endregion
|
|
476
|
-
//#region src/utils/collect-
|
|
508
|
+
//#region src/utils/collect-job-metadata.d.ts
|
|
477
509
|
/**
|
|
478
|
-
* Collected
|
|
510
|
+
* Collected job registration info ready for Monque.register()
|
|
479
511
|
*/
|
|
480
|
-
interface
|
|
512
|
+
interface CollectedJobMetadata {
|
|
481
513
|
/**
|
|
482
514
|
* Full job name (with namespace prefix if applicable)
|
|
483
515
|
*/
|
|
@@ -487,9 +519,9 @@ interface CollectedWorkerMetadata {
|
|
|
487
519
|
*/
|
|
488
520
|
method: string;
|
|
489
521
|
/**
|
|
490
|
-
*
|
|
522
|
+
* Job options to pass to Monque.register()
|
|
491
523
|
*/
|
|
492
|
-
opts:
|
|
524
|
+
opts: JobDecoratorOptions | CronDecoratorOptions;
|
|
493
525
|
/**
|
|
494
526
|
* Whether this is a cron job
|
|
495
527
|
*/
|
|
@@ -500,14 +532,14 @@ interface CollectedWorkerMetadata {
|
|
|
500
532
|
cronPattern?: string;
|
|
501
533
|
}
|
|
502
534
|
/**
|
|
503
|
-
* Collect all
|
|
535
|
+
* Collect all job metadata from a class.
|
|
504
536
|
*
|
|
505
|
-
* @param target - The class constructor (decorated with @
|
|
506
|
-
* @returns Array of collected
|
|
537
|
+
* @param target - The class constructor (decorated with @JobController)
|
|
538
|
+
* @returns Array of collected job metadata ready for registration
|
|
507
539
|
*
|
|
508
540
|
* @example
|
|
509
541
|
* ```typescript
|
|
510
|
-
* const metadata =
|
|
542
|
+
* const metadata = collectJobMetadata(EmailJobs);
|
|
511
543
|
* // Returns:
|
|
512
544
|
* // [
|
|
513
545
|
* // { fullName: "email.send", method: "sendEmail", opts: {}, isCron: false },
|
|
@@ -515,28 +547,10 @@ interface CollectedWorkerMetadata {
|
|
|
515
547
|
* // ]
|
|
516
548
|
* ```
|
|
517
549
|
*/
|
|
518
|
-
declare function
|
|
550
|
+
declare function collectJobMetadata(target: new (...args: unknown[]) => unknown): CollectedJobMetadata[];
|
|
519
551
|
//#endregion
|
|
520
|
-
//#region src/utils/get-
|
|
521
|
-
|
|
522
|
-
* Generate a unique token for a worker controller.
|
|
523
|
-
*
|
|
524
|
-
* Used internally by Ts.ED DI to identify worker controller providers.
|
|
525
|
-
* The token is based on the class name for debugging purposes.
|
|
526
|
-
*
|
|
527
|
-
* @param target - The class constructor
|
|
528
|
-
* @returns A Symbol token unique to this worker controller
|
|
529
|
-
*
|
|
530
|
-
* @example
|
|
531
|
-
* ```typescript
|
|
532
|
-
* @WorkerController("email")
|
|
533
|
-
* class EmailWorkers {}
|
|
534
|
-
*
|
|
535
|
-
* const token = getWorkerToken(EmailWorkers);
|
|
536
|
-
* // Symbol("monque:worker:EmailWorkers")
|
|
537
|
-
* ```
|
|
538
|
-
*/
|
|
539
|
-
declare function getWorkerToken(target: new (...args: unknown[]) => unknown): symbol;
|
|
552
|
+
//#region src/utils/get-job-token.d.ts
|
|
553
|
+
declare function getJobToken(target: new (...args: unknown[]) => unknown): symbol;
|
|
540
554
|
//#endregion
|
|
541
555
|
//#region src/utils/resolve-database.d.ts
|
|
542
556
|
/**
|
|
@@ -578,5 +592,5 @@ type InjectorFn = <T>(token: TokenProvider<T>) => T | undefined;
|
|
|
578
592
|
*/
|
|
579
593
|
declare function resolveDatabase(config: MonqueTsedConfig, injectorFn?: InjectorFn): Promise<Db>;
|
|
580
594
|
//#endregion
|
|
581
|
-
export { type
|
|
595
|
+
export { type CollectedJobMetadata, Cron, type CronDecoratorOptions, type CronMetadata, type InjectorFn, Job, JobController, type JobDecoratorOptions, type JobMetadata, type JobStore, MONQUE, MonqueModule, MonqueService, type MonqueTsedConfig, type ProviderType, ProviderTypes, buildJobName, collectJobMetadata, getJobToken, resolveDatabase, validateDatabaseConfig };
|
|
582
596
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config/types.ts","../src/config/config.ts","../src/constants/constants.ts","../src/constants/types.ts","../src/decorators/types.ts","../src/decorators/cron.ts","../src/decorators/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config/types.ts","../src/config/config.ts","../src/constants/constants.ts","../src/constants/types.ts","../src/decorators/types.ts","../src/decorators/cron.ts","../src/decorators/job.ts","../src/decorators/job-controller.ts","../src/services/monque-service.ts","../src/monque-module.ts","../src/utils/build-job-name.ts","../src/utils/collect-job-metadata.ts","../src/utils/get-job-token.ts","../src/utils/resolve-database.ts"],"mappings":"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"}
|