@riktajs/queue 0.1.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.
Files changed (62) hide show
  1. package/README.md +476 -0
  2. package/dist/config/queue.config.d.ts +137 -0
  3. package/dist/config/queue.config.d.ts.map +1 -0
  4. package/dist/config/queue.config.js +82 -0
  5. package/dist/config/queue.config.js.map +1 -0
  6. package/dist/constants.d.ts +33 -0
  7. package/dist/constants.d.ts.map +1 -0
  8. package/dist/constants.js +37 -0
  9. package/dist/constants.js.map +1 -0
  10. package/dist/decorators/events.decorator.d.ts +85 -0
  11. package/dist/decorators/events.decorator.d.ts.map +1 -0
  12. package/dist/decorators/events.decorator.js +120 -0
  13. package/dist/decorators/events.decorator.js.map +1 -0
  14. package/dist/decorators/index.d.ts +8 -0
  15. package/dist/decorators/index.d.ts.map +1 -0
  16. package/dist/decorators/index.js +8 -0
  17. package/dist/decorators/index.js.map +1 -0
  18. package/dist/decorators/process.decorator.d.ts +41 -0
  19. package/dist/decorators/process.decorator.d.ts.map +1 -0
  20. package/dist/decorators/process.decorator.js +61 -0
  21. package/dist/decorators/process.decorator.js.map +1 -0
  22. package/dist/decorators/processor.decorator.d.ts +41 -0
  23. package/dist/decorators/processor.decorator.d.ts.map +1 -0
  24. package/dist/decorators/processor.decorator.js +59 -0
  25. package/dist/decorators/processor.decorator.js.map +1 -0
  26. package/dist/decorators/queue.decorator.d.ts +35 -0
  27. package/dist/decorators/queue.decorator.d.ts.map +1 -0
  28. package/dist/decorators/queue.decorator.js +49 -0
  29. package/dist/decorators/queue.decorator.js.map +1 -0
  30. package/dist/events/queue-events.d.ts +32 -0
  31. package/dist/events/queue-events.d.ts.map +1 -0
  32. package/dist/events/queue-events.js +103 -0
  33. package/dist/events/queue-events.js.map +1 -0
  34. package/dist/index.d.ts +22 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +30 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/monitoring/bull-board.d.ts +77 -0
  39. package/dist/monitoring/bull-board.d.ts.map +1 -0
  40. package/dist/monitoring/bull-board.js +112 -0
  41. package/dist/monitoring/bull-board.js.map +1 -0
  42. package/dist/providers/queue.provider.d.ts +94 -0
  43. package/dist/providers/queue.provider.d.ts.map +1 -0
  44. package/dist/providers/queue.provider.js +333 -0
  45. package/dist/providers/queue.provider.js.map +1 -0
  46. package/dist/services/queue.service.d.ts +133 -0
  47. package/dist/services/queue.service.d.ts.map +1 -0
  48. package/dist/services/queue.service.js +192 -0
  49. package/dist/services/queue.service.js.map +1 -0
  50. package/dist/types.d.ts +133 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +5 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/utils/connection.d.ts +47 -0
  55. package/dist/utils/connection.d.ts.map +1 -0
  56. package/dist/utils/connection.js +104 -0
  57. package/dist/utils/connection.js.map +1 -0
  58. package/dist/utils/validation.d.ts +187 -0
  59. package/dist/utils/validation.d.ts.map +1 -0
  60. package/dist/utils/validation.js +156 -0
  61. package/dist/utils/validation.js.map +1 -0
  62. package/package.json +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.service.js","sourceRoot":"","sources":["../../src/services/queue.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Type definitions for @riktajs/queue
3
+ */
4
+ import type { QueueOptions as BullMQQueueOptions, WorkerOptions as BullMQWorkerOptions, JobsOptions, RepeatOptions } from 'bullmq';
5
+ /** Redis connection configuration */
6
+ export interface RedisConnectionOptions {
7
+ /** Redis host */
8
+ host?: string;
9
+ /** Redis port */
10
+ port?: number;
11
+ /** Redis password */
12
+ password?: string;
13
+ /** Redis username */
14
+ username?: string;
15
+ /** Redis database number */
16
+ db?: number;
17
+ /** Enable TLS */
18
+ tls?: boolean;
19
+ /** Cluster mode configuration */
20
+ cluster?: {
21
+ nodes: Array<{
22
+ host: string;
23
+ port: number;
24
+ }>;
25
+ };
26
+ }
27
+ /** Options for @Queue decorator */
28
+ export interface QueueDecoratorOptions {
29
+ /** Queue name (required) */
30
+ name: string;
31
+ /** BullMQ queue options */
32
+ options?: Omit<BullMQQueueOptions, 'connection'>;
33
+ /** Default job options */
34
+ defaultJobOptions?: JobsOptions;
35
+ }
36
+ /** Options for @Processor decorator */
37
+ export interface ProcessorOptions {
38
+ /** The queue name to process */
39
+ queueName: string;
40
+ /** Worker concurrency */
41
+ concurrency?: number;
42
+ /** Rate limiter configuration */
43
+ rateLimiter?: {
44
+ /** Maximum jobs per duration */
45
+ max: number;
46
+ /** Duration in milliseconds */
47
+ duration: number;
48
+ };
49
+ /** Additional BullMQ worker options */
50
+ workerOptions?: Omit<BullMQWorkerOptions, 'connection' | 'concurrency' | 'limiter'>;
51
+ }
52
+ /** Metadata for a job handler method */
53
+ export interface JobHandlerMeta {
54
+ /** Job name */
55
+ name: string;
56
+ /** Method name on the processor class */
57
+ methodName: string;
58
+ /** Validation schema (Zod) */
59
+ schema?: unknown;
60
+ }
61
+ /** Queue event names */
62
+ export type QueueEventName = 'job:added' | 'job:completed' | 'job:failed' | 'job:progress' | 'job:stalled' | 'job:delayed' | 'job:removed' | 'worker:ready' | 'worker:closed' | 'worker:error';
63
+ /** Metadata for an event handler method */
64
+ export interface EventHandlerMeta {
65
+ /** Event name */
66
+ event: QueueEventName;
67
+ /** Method name on the processor class */
68
+ methodName: string;
69
+ }
70
+ /** Event payload for queue events */
71
+ export interface QueueEventPayload<TData = unknown, TResult = unknown> {
72
+ /** Queue name */
73
+ queueName: string;
74
+ /** Job ID */
75
+ jobId: string;
76
+ /** Job name */
77
+ jobName: string;
78
+ /** Job data */
79
+ data: TData;
80
+ /** Job return value (for completed events) */
81
+ returnValue?: TResult;
82
+ /** Number of attempts made */
83
+ attemptsMade?: number;
84
+ /** Error message (for failed events) */
85
+ error?: string;
86
+ /** Progress value (for progress events) */
87
+ progress?: number | object;
88
+ /** Timestamp */
89
+ timestamp: number;
90
+ }
91
+ /** Options for adding a job */
92
+ export interface AddJobOptions extends JobsOptions {
93
+ /** Deduplicate by this key */
94
+ deduplicationKey?: string;
95
+ }
96
+ /** Repeat options for scheduled jobs */
97
+ export interface ScheduleOptions extends RepeatOptions {
98
+ /** Job ID for the repeatable job */
99
+ jobId?: string;
100
+ }
101
+ /** Queue configuration from environment/config */
102
+ export interface QueueConfig {
103
+ /** Redis connection options */
104
+ redis: RedisConnectionOptions;
105
+ /** Default worker concurrency */
106
+ defaultConcurrency?: number;
107
+ /** Default rate limiter */
108
+ defaultRateLimiter?: {
109
+ max: number;
110
+ duration: number;
111
+ };
112
+ /** Bull Board dashboard path */
113
+ dashboardPath?: string;
114
+ /** Enable dashboard (default: false in production) */
115
+ dashboardEnabled?: boolean;
116
+ /** Graceful shutdown timeout in ms */
117
+ shutdownTimeout?: number;
118
+ }
119
+ /** Provider options for creating QueueProvider */
120
+ export interface QueueProviderOptions {
121
+ /** Queue configuration */
122
+ config?: Partial<QueueConfig>;
123
+ /** Auto-initialize on provider init */
124
+ autoInitialize?: boolean;
125
+ /** Retry connection attempts */
126
+ retryAttempts?: number;
127
+ /** Delay between retries in ms */
128
+ retryDelay?: number;
129
+ }
130
+ /** Re-export useful BullMQ types */
131
+ export type { Job, Queue as BullQueue, Worker, QueueEvents } from 'bullmq';
132
+ export type { Redis } from 'ioredis';
133
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for @riktajs/queue
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Redis connection utilities
3
+ */
4
+ import type { RedisConnectionOptions } from '../types.js';
5
+ import type { Redis, Cluster } from 'ioredis';
6
+ /**
7
+ * Create a Redis client based on configuration
8
+ * @param config - Redis connection options
9
+ */
10
+ export declare function createRedisClient(config: RedisConnectionOptions): Redis | Cluster;
11
+ /**
12
+ * Error thrown when Redis connection fails
13
+ */
14
+ export declare class QueueConnectionError extends Error {
15
+ readonly host?: string | undefined;
16
+ readonly port?: number | undefined;
17
+ readonly cause?: Error | undefined;
18
+ constructor(message: string, host?: string | undefined, port?: number | undefined, cause?: Error | undefined);
19
+ }
20
+ /**
21
+ * Manages a shared Redis connection for all queues
22
+ */
23
+ export declare class RedisConnectionManager {
24
+ private client;
25
+ private config;
26
+ /**
27
+ * Initialize the connection manager with configuration
28
+ */
29
+ configure(config: RedisConnectionOptions): this;
30
+ /**
31
+ * Get or create the Redis client
32
+ */
33
+ getClient(): Redis | Cluster;
34
+ /**
35
+ * Check if client is connected
36
+ */
37
+ isConnected(): boolean;
38
+ /**
39
+ * Close the Redis connection
40
+ */
41
+ close(): Promise<void>;
42
+ /**
43
+ * Disconnect immediately (force)
44
+ */
45
+ disconnect(): void;
46
+ }
47
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,GAAG,KAAK,GAAG,OAAO,CAyBjF;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,IAAI,CAAC,EAAE,MAAM;aACb,IAAI,CAAC,EAAE,MAAM;aACb,KAAK,CAAC,EAAE,KAAK;gBAH7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAuC;IAErD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAK/C;;OAEG;IACH,SAAS,IAAI,KAAK,GAAG,OAAO;IAqB5B;;OAEG;IACH,WAAW,IAAI,OAAO;IAKtB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,UAAU,IAAI,IAAI;CAMnB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Redis connection utilities
3
+ */
4
+ /**
5
+ * Create a Redis client based on configuration
6
+ * @param config - Redis connection options
7
+ */
8
+ export function createRedisClient(config) {
9
+ // Dynamic import to avoid bundling issues
10
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
11
+ const IORedis = require('ioredis').default || require('ioredis');
12
+ if (config.cluster?.nodes) {
13
+ // Cluster mode
14
+ return new IORedis.Cluster(config.cluster.nodes, {
15
+ redisOptions: {
16
+ password: config.password,
17
+ username: config.username,
18
+ },
19
+ });
20
+ }
21
+ // Single node mode
22
+ return new IORedis({
23
+ host: config.host || 'localhost',
24
+ port: config.port || 6379,
25
+ password: config.password,
26
+ username: config.username,
27
+ db: config.db || 0,
28
+ maxRetriesPerRequest: null, // Required for BullMQ
29
+ enableReadyCheck: false,
30
+ });
31
+ }
32
+ /**
33
+ * Error thrown when Redis connection fails
34
+ */
35
+ export class QueueConnectionError extends Error {
36
+ host;
37
+ port;
38
+ cause;
39
+ constructor(message, host, port, cause) {
40
+ super(message);
41
+ this.host = host;
42
+ this.port = port;
43
+ this.cause = cause;
44
+ this.name = 'QueueConnectionError';
45
+ }
46
+ }
47
+ /**
48
+ * Manages a shared Redis connection for all queues
49
+ */
50
+ export class RedisConnectionManager {
51
+ client = null;
52
+ config = null;
53
+ /**
54
+ * Initialize the connection manager with configuration
55
+ */
56
+ configure(config) {
57
+ this.config = config;
58
+ return this;
59
+ }
60
+ /**
61
+ * Get or create the Redis client
62
+ */
63
+ getClient() {
64
+ if (!this.client) {
65
+ if (!this.config) {
66
+ throw new QueueConnectionError('Redis connection not configured');
67
+ }
68
+ try {
69
+ this.client = createRedisClient(this.config);
70
+ }
71
+ catch (error) {
72
+ throw new QueueConnectionError(`Failed to create Redis connection: ${error.message}`, this.config.host, this.config.port, error);
73
+ }
74
+ }
75
+ return this.client;
76
+ }
77
+ /**
78
+ * Check if client is connected
79
+ */
80
+ isConnected() {
81
+ if (!this.client)
82
+ return false;
83
+ return this.client.status === 'ready';
84
+ }
85
+ /**
86
+ * Close the Redis connection
87
+ */
88
+ async close() {
89
+ if (this.client) {
90
+ await this.client.quit();
91
+ this.client = null;
92
+ }
93
+ }
94
+ /**
95
+ * Disconnect immediately (force)
96
+ */
97
+ disconnect() {
98
+ if (this.client) {
99
+ this.client.disconnect();
100
+ this.client = null;
101
+ }
102
+ }
103
+ }
104
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Zod validation utilities for job payloads
3
+ */
4
+ import { z, type ZodSchema, type ZodError } from 'zod';
5
+ /**
6
+ * Creates a wrapper around a Zod schema for job validation
7
+ *
8
+ * @param schema - The Zod schema to use for validation
9
+ * @returns A wrapped schema with job-specific utilities
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const EmailJobSchema = createJobSchema(z.object({
14
+ * to: z.string().email(),
15
+ * subject: z.string().min(1),
16
+ * body: z.string(),
17
+ * }));
18
+ *
19
+ * // Validate job data
20
+ * const result = EmailJobSchema.validate({ to: 'test@example.com', subject: 'Hello', body: 'World' });
21
+ * ```
22
+ */
23
+ export declare function createJobSchema<T>(schema: ZodSchema<T>): JobSchema<T>;
24
+ /**
25
+ * Wrapper class for Zod schemas with job-specific utilities
26
+ */
27
+ export declare class JobSchema<T> {
28
+ private readonly schema;
29
+ constructor(schema: ZodSchema<T>);
30
+ /**
31
+ * Get the underlying Zod schema
32
+ */
33
+ getSchema(): ZodSchema<T>;
34
+ /**
35
+ * Validate job data
36
+ * @throws JobValidationError if validation fails
37
+ */
38
+ validate(data: unknown): T;
39
+ /**
40
+ * Validate job data, returning undefined on failure
41
+ */
42
+ validateSafe(data: unknown): T | undefined;
43
+ /**
44
+ * Check if data is valid without throwing
45
+ */
46
+ isValid(data: unknown): data is T;
47
+ /**
48
+ * Get validation errors for data
49
+ */
50
+ getErrors(data: unknown): string[];
51
+ /**
52
+ * Parse and transform data with defaults
53
+ */
54
+ parse(data: unknown): T;
55
+ }
56
+ /**
57
+ * Error thrown when job schema validation fails
58
+ */
59
+ export declare class JobSchemaValidationError extends Error {
60
+ readonly zodError: ZodError;
61
+ constructor(message: string, zodError: ZodError);
62
+ /**
63
+ * Get formatted validation errors
64
+ */
65
+ getErrors(): Array<{
66
+ path: string;
67
+ message: string;
68
+ }>;
69
+ }
70
+ export { z };
71
+ /**
72
+ * Common job schemas for typical use cases
73
+ */
74
+ export declare const CommonJobSchemas: {
75
+ /**
76
+ * Email job schema
77
+ */
78
+ email: z.ZodObject<{
79
+ to: z.ZodString;
80
+ cc: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
81
+ bcc: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
82
+ subject: z.ZodString;
83
+ body: z.ZodString;
84
+ html: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
85
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
86
+ filename: z.ZodString;
87
+ content: z.ZodString;
88
+ contentType: z.ZodOptional<z.ZodString>;
89
+ }, "strip", z.ZodTypeAny, {
90
+ filename: string;
91
+ content: string;
92
+ contentType?: string | undefined;
93
+ }, {
94
+ filename: string;
95
+ content: string;
96
+ contentType?: string | undefined;
97
+ }>, "many">>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ body: string;
100
+ to: string;
101
+ subject: string;
102
+ html: boolean;
103
+ cc?: string[] | undefined;
104
+ bcc?: string[] | undefined;
105
+ attachments?: {
106
+ filename: string;
107
+ content: string;
108
+ contentType?: string | undefined;
109
+ }[] | undefined;
110
+ }, {
111
+ body: string;
112
+ to: string;
113
+ subject: string;
114
+ cc?: string[] | undefined;
115
+ bcc?: string[] | undefined;
116
+ html?: boolean | undefined;
117
+ attachments?: {
118
+ filename: string;
119
+ content: string;
120
+ contentType?: string | undefined;
121
+ }[] | undefined;
122
+ }>;
123
+ /**
124
+ * Notification job schema
125
+ */
126
+ notification: z.ZodObject<{
127
+ userId: z.ZodString;
128
+ title: z.ZodString;
129
+ message: z.ZodString;
130
+ type: z.ZodDefault<z.ZodEnum<["info", "warning", "error", "success"]>>;
131
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
132
+ }, "strip", z.ZodTypeAny, {
133
+ message: string;
134
+ type: "error" | "info" | "warning" | "success";
135
+ userId: string;
136
+ title: string;
137
+ metadata?: Record<string, unknown> | undefined;
138
+ }, {
139
+ message: string;
140
+ userId: string;
141
+ title: string;
142
+ type?: "error" | "info" | "warning" | "success" | undefined;
143
+ metadata?: Record<string, unknown> | undefined;
144
+ }>;
145
+ /**
146
+ * File processing job schema
147
+ */
148
+ fileProcessing: z.ZodObject<{
149
+ fileId: z.ZodString;
150
+ filePath: z.ZodString;
151
+ operation: z.ZodEnum<["resize", "compress", "convert", "thumbnail"]>;
152
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
153
+ }, "strip", z.ZodTypeAny, {
154
+ fileId: string;
155
+ filePath: string;
156
+ operation: "resize" | "compress" | "convert" | "thumbnail";
157
+ options?: Record<string, unknown> | undefined;
158
+ }, {
159
+ fileId: string;
160
+ filePath: string;
161
+ operation: "resize" | "compress" | "convert" | "thumbnail";
162
+ options?: Record<string, unknown> | undefined;
163
+ }>;
164
+ /**
165
+ * Webhook job schema
166
+ */
167
+ webhook: z.ZodObject<{
168
+ url: z.ZodString;
169
+ method: z.ZodDefault<z.ZodEnum<["GET", "POST", "PUT", "PATCH", "DELETE"]>>;
170
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
171
+ body: z.ZodOptional<z.ZodUnknown>;
172
+ timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ timeout: number;
175
+ method: "DELETE" | "GET" | "PATCH" | "POST" | "PUT";
176
+ url: string;
177
+ headers?: Record<string, string> | undefined;
178
+ body?: unknown;
179
+ }, {
180
+ url: string;
181
+ timeout?: number | undefined;
182
+ headers?: Record<string, string> | undefined;
183
+ body?: unknown;
184
+ method?: "DELETE" | "GET" | "PATCH" | "POST" | "PUT" | undefined;
185
+ }>;
186
+ };
187
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAEvD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAErE;AAED;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjD;;OAEG;IACH,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC;IAIzB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;IAa1B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS;IAK1C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IAIjC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE;IAUlC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;CAGxB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;aAG/B,QAAQ,EAAE,QAAQ;gBADlC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,QAAQ;IAUpC;;OAEG;IACH,SAAS,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAMtD;AAGD,OAAO,EAAE,CAAC,EAAE,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeH;;OAEG;;;;;;;;;;;;;;;;;;;;IASH;;OAEG;;;;;;;;;;;;;;;;;IAQH;;OAEG;;;;;;;;;;;;;;;;;;;;CAQJ,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Zod validation utilities for job payloads
3
+ */
4
+ import { z } from 'zod';
5
+ /**
6
+ * Creates a wrapper around a Zod schema for job validation
7
+ *
8
+ * @param schema - The Zod schema to use for validation
9
+ * @returns A wrapped schema with job-specific utilities
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const EmailJobSchema = createJobSchema(z.object({
14
+ * to: z.string().email(),
15
+ * subject: z.string().min(1),
16
+ * body: z.string(),
17
+ * }));
18
+ *
19
+ * // Validate job data
20
+ * const result = EmailJobSchema.validate({ to: 'test@example.com', subject: 'Hello', body: 'World' });
21
+ * ```
22
+ */
23
+ export function createJobSchema(schema) {
24
+ return new JobSchema(schema);
25
+ }
26
+ /**
27
+ * Wrapper class for Zod schemas with job-specific utilities
28
+ */
29
+ export class JobSchema {
30
+ schema;
31
+ constructor(schema) {
32
+ this.schema = schema;
33
+ }
34
+ /**
35
+ * Get the underlying Zod schema
36
+ */
37
+ getSchema() {
38
+ return this.schema;
39
+ }
40
+ /**
41
+ * Validate job data
42
+ * @throws JobValidationError if validation fails
43
+ */
44
+ validate(data) {
45
+ const result = this.schema.safeParse(data);
46
+ if (!result.success) {
47
+ throw new JobSchemaValidationError('Job data validation failed', result.error);
48
+ }
49
+ return result.data;
50
+ }
51
+ /**
52
+ * Validate job data, returning undefined on failure
53
+ */
54
+ validateSafe(data) {
55
+ const result = this.schema.safeParse(data);
56
+ return result.success ? result.data : undefined;
57
+ }
58
+ /**
59
+ * Check if data is valid without throwing
60
+ */
61
+ isValid(data) {
62
+ return this.schema.safeParse(data).success;
63
+ }
64
+ /**
65
+ * Get validation errors for data
66
+ */
67
+ getErrors(data) {
68
+ const result = this.schema.safeParse(data);
69
+ if (result.success) {
70
+ return [];
71
+ }
72
+ return result.error.errors.map(e => `${e.path.join('.')}: ${e.message}`);
73
+ }
74
+ /**
75
+ * Parse and transform data with defaults
76
+ */
77
+ parse(data) {
78
+ return this.schema.parse(data);
79
+ }
80
+ }
81
+ /**
82
+ * Error thrown when job schema validation fails
83
+ */
84
+ export class JobSchemaValidationError extends Error {
85
+ zodError;
86
+ constructor(message, zodError) {
87
+ const details = zodError.errors
88
+ .map(e => `${e.path.join('.')}: ${e.message}`)
89
+ .join(', ');
90
+ super(`${message}: ${details}`);
91
+ this.zodError = zodError;
92
+ this.name = 'JobSchemaValidationError';
93
+ }
94
+ /**
95
+ * Get formatted validation errors
96
+ */
97
+ getErrors() {
98
+ return this.zodError.errors.map(e => ({
99
+ path: e.path.join('.'),
100
+ message: e.message,
101
+ }));
102
+ }
103
+ }
104
+ // Re-export z for convenience
105
+ export { z };
106
+ /**
107
+ * Common job schemas for typical use cases
108
+ */
109
+ export const CommonJobSchemas = {
110
+ /**
111
+ * Email job schema
112
+ */
113
+ email: z.object({
114
+ to: z.string().email(),
115
+ cc: z.array(z.string().email()).optional(),
116
+ bcc: z.array(z.string().email()).optional(),
117
+ subject: z.string().min(1).max(998),
118
+ body: z.string(),
119
+ html: z.boolean().optional().default(false),
120
+ attachments: z.array(z.object({
121
+ filename: z.string(),
122
+ content: z.string(),
123
+ contentType: z.string().optional(),
124
+ })).optional(),
125
+ }),
126
+ /**
127
+ * Notification job schema
128
+ */
129
+ notification: z.object({
130
+ userId: z.string(),
131
+ title: z.string().max(100),
132
+ message: z.string().max(1000),
133
+ type: z.enum(['info', 'warning', 'error', 'success']).default('info'),
134
+ metadata: z.record(z.unknown()).optional(),
135
+ }),
136
+ /**
137
+ * File processing job schema
138
+ */
139
+ fileProcessing: z.object({
140
+ fileId: z.string(),
141
+ filePath: z.string(),
142
+ operation: z.enum(['resize', 'compress', 'convert', 'thumbnail']),
143
+ options: z.record(z.unknown()).optional(),
144
+ }),
145
+ /**
146
+ * Webhook job schema
147
+ */
148
+ webhook: z.object({
149
+ url: z.string().url(),
150
+ method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).default('POST'),
151
+ headers: z.record(z.string()).optional(),
152
+ body: z.unknown().optional(),
153
+ timeout: z.number().positive().optional().default(30000),
154
+ }),
155
+ };
156
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}