glasswork 0.12.2 → 0.13.1
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/auth/abilities.d.ts +41 -0
- package/dist/auth/abilities.d.ts.map +1 -0
- package/dist/auth/abilities.js +62 -0
- package/dist/auth/abilities.js.map +1 -0
- package/dist/auth/assert.d.ts +20 -0
- package/dist/auth/assert.d.ts.map +1 -0
- package/dist/auth/assert.js +28 -0
- package/dist/auth/assert.js.map +1 -0
- package/dist/auth/better-auth-provider.d.ts +56 -0
- package/dist/auth/better-auth-provider.d.ts.map +1 -0
- package/dist/auth/better-auth-provider.js +62 -0
- package/dist/auth/better-auth-provider.js.map +1 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +31 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +92 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/types.d.ts +54 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +5 -2
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/types.d.ts +8 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/http/route-helpers.d.ts +52 -9
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js +90 -40
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs/define-job.d.ts +34 -2
- package/dist/jobs/define-job.d.ts.map +1 -1
- package/dist/jobs/define-job.js.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts +75 -0
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -0
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js +135 -0
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -0
- package/dist/jobs/drivers/mock-driver.d.ts +45 -10
- package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/mock-driver.js +36 -17
- package/dist/jobs/drivers/mock-driver.js.map +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts +26 -19
- package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/sqs-driver.js +54 -69
- package/dist/jobs/drivers/sqs-driver.js.map +1 -1
- package/dist/jobs/errors.d.ts +8 -4
- package/dist/jobs/errors.d.ts.map +1 -1
- package/dist/jobs/errors.js +13 -7
- package/dist/jobs/errors.js.map +1 -1
- package/dist/jobs/index.d.ts +4 -3
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +3 -2
- package/dist/jobs/index.js.map +1 -1
- package/dist/jobs/job-registry.d.ts +4 -4
- package/dist/jobs/job-registry.d.ts.map +1 -1
- package/dist/jobs/job-registry.js.map +1 -1
- package/dist/jobs/job-service.js +1 -1
- package/dist/jobs/job-service.js.map +1 -1
- package/dist/jobs/schedule-constants.d.ts +0 -4
- package/dist/jobs/schedule-constants.d.ts.map +1 -1
- package/dist/jobs/schedule-constants.js +0 -4
- package/dist/jobs/schedule-constants.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +1 -1
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +46 -10
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/types.d.ts +59 -50
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/utils.d.ts +0 -9
- package/dist/jobs/utils.d.ts.map +1 -1
- package/dist/jobs/utils.js +3 -23
- package/dist/jobs/utils.js.map +1 -1
- package/dist/jobs/worker.d.ts +2 -3
- package/dist/jobs/worker.d.ts.map +1 -1
- package/dist/jobs/worker.js +183 -82
- package/dist/jobs/worker.js.map +1 -1
- package/dist/list-query/casl.d.ts +18 -19
- package/dist/list-query/casl.d.ts.map +1 -1
- package/dist/list-query/casl.js +40 -46
- package/dist/list-query/casl.js.map +1 -1
- package/dist/uploads/file-upload.d.ts +44 -0
- package/dist/uploads/file-upload.d.ts.map +1 -0
- package/dist/uploads/file-upload.js +145 -0
- package/dist/uploads/file-upload.js.map +1 -0
- package/dist/uploads/index.d.ts +6 -0
- package/dist/uploads/index.d.ts.map +1 -0
- package/dist/uploads/index.js +7 -0
- package/dist/uploads/index.js.map +1 -0
- package/dist/uploads/uploads.service.d.ts +98 -0
- package/dist/uploads/uploads.service.d.ts.map +1 -0
- package/dist/uploads/uploads.service.js +134 -0
- package/dist/uploads/uploads.service.js.map +1 -0
- package/dist/uploads/validators.d.ts +41 -0
- package/dist/uploads/validators.d.ts.map +1 -0
- package/dist/uploads/validators.js +94 -0
- package/dist/uploads/validators.js.map +1 -0
- package/package.json +34 -3
- package/dist/email/compiler/code-generator.d.ts +0 -11
- package/dist/email/compiler/code-generator.d.ts.map +0 -1
- package/dist/email/compiler/code-generator.js +0 -319
- package/dist/email/compiler/code-generator.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { EnqueueResult, JobMessage } from '../types.js';
|
|
2
|
+
export interface EventBridgeSchedulerConfig {
|
|
3
|
+
/** AWS region */
|
|
4
|
+
region: string;
|
|
5
|
+
/** IAM role ARN that EventBridge Scheduler assumes to send messages to SQS */
|
|
6
|
+
roleArn: string;
|
|
7
|
+
/** Optional schedule group name for organization (default: 'default') */
|
|
8
|
+
scheduleGroupName?: string;
|
|
9
|
+
/** Custom endpoint (for LocalStack) */
|
|
10
|
+
endpoint?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ScheduledJobConfig {
|
|
13
|
+
/** Target SQS queue URL */
|
|
14
|
+
queueUrl: string;
|
|
15
|
+
/** Job message */
|
|
16
|
+
message: JobMessage;
|
|
17
|
+
/** When to run the job */
|
|
18
|
+
scheduledAt: Date;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Result of scheduling a job with EventBridge Scheduler.
|
|
22
|
+
*/
|
|
23
|
+
export interface ScheduleResult extends EnqueueResult {
|
|
24
|
+
/** EventBridge Scheduler schedule ARN */
|
|
25
|
+
scheduleArn: string;
|
|
26
|
+
/** Schedule name (can be used for cancellation) */
|
|
27
|
+
scheduleName: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* EventBridge Scheduler driver for scheduling jobs with delays longer than 15 minutes.
|
|
31
|
+
*
|
|
32
|
+
* Uses one-off schedules with `at()` expressions that target an SQS queue.
|
|
33
|
+
* Schedules are automatically deleted after execution.
|
|
34
|
+
*/
|
|
35
|
+
export declare class EventBridgeSchedulerDriver {
|
|
36
|
+
private readonly config;
|
|
37
|
+
private client;
|
|
38
|
+
constructor(config: EventBridgeSchedulerConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Lazily initialize the Scheduler client.
|
|
41
|
+
*/
|
|
42
|
+
private getClient;
|
|
43
|
+
/**
|
|
44
|
+
* Schedule a job to be executed at a specific time.
|
|
45
|
+
*
|
|
46
|
+
* Creates a one-off EventBridge Scheduler schedule that sends a message
|
|
47
|
+
* to the specified SQS queue at the scheduled time.
|
|
48
|
+
*
|
|
49
|
+
* @param config - The scheduled job configuration
|
|
50
|
+
* @returns Schedule result with ARN and name
|
|
51
|
+
*/
|
|
52
|
+
scheduleAt(config: ScheduledJobConfig): Promise<ScheduleResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Cancel a scheduled job.
|
|
55
|
+
*
|
|
56
|
+
* @param scheduleName - The name of the schedule to cancel
|
|
57
|
+
*/
|
|
58
|
+
cancel(scheduleName: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Dispose of the driver and release AWS SDK client resources.
|
|
61
|
+
* Call this when you're done using the driver to prevent memory leaks.
|
|
62
|
+
*/
|
|
63
|
+
dispose(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Convert an SQS queue URL to its ARN.
|
|
66
|
+
*
|
|
67
|
+
* Supports both standard AWS and LocalStack URL formats:
|
|
68
|
+
* - AWS: https://sqs.{region}.amazonaws.com/{accountId}/{queueName}
|
|
69
|
+
* - LocalStack: http://localhost:4566/{accountId}/{queueName}
|
|
70
|
+
*
|
|
71
|
+
* ARN format: arn:aws:sqs:{region}:{accountId}:{queueName}
|
|
72
|
+
*/
|
|
73
|
+
private sqsArnFromUrl;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=eventbridge-scheduler-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventbridge-scheduler-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/eventbridge-scheduler-driver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO7D,MAAM,WAAW,0BAA0B;IACzC,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,0BAA0B;IAC1B,WAAW,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAgC;gBAEjB,MAAM,EAAE,0BAA0B;IAE/D;;OAEG;YACW,SAAS;IAWvB;;;;;;;;OAQG;IACG,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsDrE;;;;OAIG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAwBtB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { generateJobId } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* EventBridge Scheduler driver for scheduling jobs with delays longer than 15 minutes.
|
|
4
|
+
*
|
|
5
|
+
* Uses one-off schedules with `at()` expressions that target an SQS queue.
|
|
6
|
+
* Schedules are automatically deleted after execution.
|
|
7
|
+
*/
|
|
8
|
+
export class EventBridgeSchedulerDriver {
|
|
9
|
+
config;
|
|
10
|
+
client = null;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Lazily initialize the Scheduler client.
|
|
16
|
+
*/
|
|
17
|
+
async getClient() {
|
|
18
|
+
if (!this.client) {
|
|
19
|
+
const { SchedulerClient } = await import('@aws-sdk/client-scheduler');
|
|
20
|
+
this.client = new SchedulerClient({
|
|
21
|
+
region: this.config.region,
|
|
22
|
+
...(this.config.endpoint && { endpoint: this.config.endpoint }),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return this.client;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Schedule a job to be executed at a specific time.
|
|
29
|
+
*
|
|
30
|
+
* Creates a one-off EventBridge Scheduler schedule that sends a message
|
|
31
|
+
* to the specified SQS queue at the scheduled time.
|
|
32
|
+
*
|
|
33
|
+
* @param config - The scheduled job configuration
|
|
34
|
+
* @returns Schedule result with ARN and name
|
|
35
|
+
*/
|
|
36
|
+
async scheduleAt(config) {
|
|
37
|
+
const client = await this.getClient();
|
|
38
|
+
const { CreateScheduleCommand } = await import('@aws-sdk/client-scheduler');
|
|
39
|
+
const jobId = config.message.jobId ?? generateJobId();
|
|
40
|
+
const scheduleName = `glasswork-${jobId}`;
|
|
41
|
+
// Format: at(yyyy-mm-ddThh:mm:ss)
|
|
42
|
+
const scheduleExpression = `at(${config.scheduledAt.toISOString().slice(0, 19)})`;
|
|
43
|
+
// Build the SQS message payload
|
|
44
|
+
const messageBody = JSON.stringify({
|
|
45
|
+
jobName: config.message.jobName,
|
|
46
|
+
payload: config.message.payload,
|
|
47
|
+
jobId,
|
|
48
|
+
metadata: config.message.metadata,
|
|
49
|
+
enqueuedAt: new Date().toISOString(),
|
|
50
|
+
});
|
|
51
|
+
const command = new CreateScheduleCommand({
|
|
52
|
+
Name: scheduleName,
|
|
53
|
+
GroupName: this.config.scheduleGroupName ?? 'default',
|
|
54
|
+
ScheduleExpression: scheduleExpression,
|
|
55
|
+
ScheduleExpressionTimezone: 'UTC',
|
|
56
|
+
FlexibleTimeWindow: {
|
|
57
|
+
Mode: 'OFF',
|
|
58
|
+
},
|
|
59
|
+
Target: {
|
|
60
|
+
Arn: this.sqsArnFromUrl(config.queueUrl),
|
|
61
|
+
RoleArn: this.config.roleArn,
|
|
62
|
+
Input: messageBody,
|
|
63
|
+
SqsParameters: {
|
|
64
|
+
MessageGroupId: config.message.queue ?? config.message.jobName,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
// Auto-delete the schedule after it runs
|
|
68
|
+
ActionAfterCompletion: 'DELETE',
|
|
69
|
+
});
|
|
70
|
+
const result = await client.send(command);
|
|
71
|
+
const scheduleArn = result.ScheduleArn;
|
|
72
|
+
if (!scheduleArn) {
|
|
73
|
+
throw new Error('EventBridge Scheduler did not return a schedule ARN');
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
messageId: jobId,
|
|
77
|
+
jobId,
|
|
78
|
+
scheduleArn,
|
|
79
|
+
scheduleName,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Cancel a scheduled job.
|
|
84
|
+
*
|
|
85
|
+
* @param scheduleName - The name of the schedule to cancel
|
|
86
|
+
*/
|
|
87
|
+
async cancel(scheduleName) {
|
|
88
|
+
const client = await this.getClient();
|
|
89
|
+
const { DeleteScheduleCommand } = await import('@aws-sdk/client-scheduler');
|
|
90
|
+
const command = new DeleteScheduleCommand({
|
|
91
|
+
Name: scheduleName,
|
|
92
|
+
GroupName: this.config.scheduleGroupName ?? 'default',
|
|
93
|
+
});
|
|
94
|
+
await client.send(command);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Dispose of the driver and release AWS SDK client resources.
|
|
98
|
+
* Call this when you're done using the driver to prevent memory leaks.
|
|
99
|
+
*/
|
|
100
|
+
async dispose() {
|
|
101
|
+
if (this.client) {
|
|
102
|
+
this.client.destroy();
|
|
103
|
+
this.client = null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Convert an SQS queue URL to its ARN.
|
|
108
|
+
*
|
|
109
|
+
* Supports both standard AWS and LocalStack URL formats:
|
|
110
|
+
* - AWS: https://sqs.{region}.amazonaws.com/{accountId}/{queueName}
|
|
111
|
+
* - LocalStack: http://localhost:4566/{accountId}/{queueName}
|
|
112
|
+
*
|
|
113
|
+
* ARN format: arn:aws:sqs:{region}:{accountId}:{queueName}
|
|
114
|
+
*/
|
|
115
|
+
sqsArnFromUrl(queueUrl) {
|
|
116
|
+
const url = new URL(queueUrl);
|
|
117
|
+
const pathParts = url.pathname.split('/').filter(Boolean);
|
|
118
|
+
if (pathParts.length < 2) {
|
|
119
|
+
throw new Error(`Invalid SQS queue URL format: ${queueUrl}`);
|
|
120
|
+
}
|
|
121
|
+
const accountId = pathParts[0];
|
|
122
|
+
const queueName = pathParts[1];
|
|
123
|
+
// Determine region from URL or fall back to configured region
|
|
124
|
+
// Standard AWS format: sqs.{region}.amazonaws.com
|
|
125
|
+
// LocalStack format: localhost:4566 (no region in hostname)
|
|
126
|
+
let region = this.config.region;
|
|
127
|
+
const hostParts = url.hostname.split('.');
|
|
128
|
+
const isAwsUrl = url.hostname.includes('amazonaws.com');
|
|
129
|
+
if (isAwsUrl && hostParts.length >= 2 && hostParts[0] === 'sqs') {
|
|
130
|
+
region = hostParts[1];
|
|
131
|
+
}
|
|
132
|
+
return `arn:aws:sqs:${region}:${accountId}:${queueName}`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=eventbridge-scheduler-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventbridge-scheduler-driver.js","sourceRoot":"","sources":["../../../src/jobs/drivers/eventbridge-scheduler-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { JobRegistry } from '../job-registry.js';
|
|
2
|
+
import type { Duration, EnqueueResult, JobMessage, QueueDriver } from '../types.js';
|
|
2
3
|
export interface MockEnqueuedJob {
|
|
3
4
|
message: JobMessage & {
|
|
4
5
|
jobId: string;
|
|
@@ -7,18 +8,55 @@ export interface MockEnqueuedJob {
|
|
|
7
8
|
delay?: Duration;
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
+
* Configuration for MockQueueDriver.
|
|
12
|
+
*/
|
|
13
|
+
export interface MockQueueDriverConfig {
|
|
14
|
+
/**
|
|
15
|
+
* Execute jobs synchronously when enqueued.
|
|
16
|
+
* Useful for local development to test job handlers immediately.
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
executeImmediately?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Job registry for looking up job definitions.
|
|
22
|
+
* Required when executeImmediately is true.
|
|
23
|
+
*/
|
|
24
|
+
registry?: JobRegistry;
|
|
25
|
+
/**
|
|
26
|
+
* Resolver to get DI services for job execution.
|
|
27
|
+
* Called when a job is executed, returning the services container.
|
|
28
|
+
* Required when executeImmediately is true.
|
|
29
|
+
*/
|
|
30
|
+
serviceResolver?: () => Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* In-memory queue driver for testing and local development.
|
|
34
|
+
*
|
|
35
|
+
* @example Testing mode (default)
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const driver = new MockQueueDriver();
|
|
38
|
+
* await jobService.enqueue(myJob, payload);
|
|
39
|
+
* expect(driver.enqueued).toHaveLength(1);
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Development mode with immediate execution
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const driver = new MockQueueDriver({
|
|
45
|
+
* executeImmediately: true,
|
|
46
|
+
* registry: createJobRegistry([myJob]),
|
|
47
|
+
* serviceResolver: () => diContainer,
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
11
50
|
*/
|
|
12
51
|
export declare class MockQueueDriver implements QueueDriver {
|
|
13
52
|
readonly name = "mock";
|
|
14
53
|
private counter;
|
|
15
54
|
private failNext?;
|
|
55
|
+
private readonly executeImmediately;
|
|
56
|
+
private readonly registry?;
|
|
57
|
+
private readonly serviceResolver?;
|
|
16
58
|
readonly enqueued: MockEnqueuedJob[];
|
|
17
|
-
|
|
18
|
-
readonly nacks: Array<{
|
|
19
|
-
job: ReceivedJob;
|
|
20
|
-
error?: Error;
|
|
21
|
-
}>;
|
|
59
|
+
constructor(config?: MockQueueDriverConfig);
|
|
22
60
|
/**
|
|
23
61
|
* Simulate the next enqueue call failing.
|
|
24
62
|
*/
|
|
@@ -31,8 +69,5 @@ export declare class MockQueueDriver implements QueueDriver {
|
|
|
31
69
|
enqueue(message: JobMessage): Promise<EnqueueResult>;
|
|
32
70
|
enqueueAt(message: JobMessage, at: Date): Promise<EnqueueResult>;
|
|
33
71
|
enqueueIn(message: JobMessage, delay: Duration): Promise<EnqueueResult>;
|
|
34
|
-
receive(_options?: ReceiveOptions): Promise<ReceivedJob[]>;
|
|
35
|
-
ack(job: ReceivedJob): Promise<void>;
|
|
36
|
-
nack(job: ReceivedJob, error?: Error): Promise<void>;
|
|
37
72
|
}
|
|
38
73
|
//# sourceMappingURL=mock-driver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/mock-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mock-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/mock-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAc,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGhG,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,EAAE,CAAC,EAAE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAgC;IACjE,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAM;gBAE9B,MAAM,GAAE,qBAA0B;IAM9C;;OAEG;IACH,eAAe,CAAC,KAAK,QAAoC,GAAG,IAAI;IAIhE;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb,IAAI,OAAO,IAAI,eAAe,GAAG,SAAS,CAEzC;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAgCpD,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAShE,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;CAQ9E"}
|
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import { generateJobId } from '../utils.js';
|
|
2
2
|
/**
|
|
3
|
-
* In-memory queue driver for testing.
|
|
3
|
+
* In-memory queue driver for testing and local development.
|
|
4
|
+
*
|
|
5
|
+
* @example Testing mode (default)
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const driver = new MockQueueDriver();
|
|
8
|
+
* await jobService.enqueue(myJob, payload);
|
|
9
|
+
* expect(driver.enqueued).toHaveLength(1);
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @example Development mode with immediate execution
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const driver = new MockQueueDriver({
|
|
15
|
+
* executeImmediately: true,
|
|
16
|
+
* registry: createJobRegistry([myJob]),
|
|
17
|
+
* serviceResolver: () => diContainer,
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
4
20
|
*/
|
|
5
21
|
export class MockQueueDriver {
|
|
6
22
|
name = 'mock';
|
|
7
23
|
counter = 0;
|
|
8
24
|
failNext;
|
|
25
|
+
executeImmediately;
|
|
26
|
+
registry;
|
|
27
|
+
serviceResolver;
|
|
9
28
|
enqueued = [];
|
|
10
|
-
|
|
11
|
-
|
|
29
|
+
constructor(config = {}) {
|
|
30
|
+
this.executeImmediately = config.executeImmediately ?? false;
|
|
31
|
+
this.registry = config.registry;
|
|
32
|
+
this.serviceResolver = config.serviceResolver;
|
|
33
|
+
}
|
|
12
34
|
/**
|
|
13
35
|
* Simulate the next enqueue call failing.
|
|
14
36
|
*/
|
|
@@ -20,8 +42,6 @@ export class MockQueueDriver {
|
|
|
20
42
|
*/
|
|
21
43
|
clear() {
|
|
22
44
|
this.enqueued.length = 0;
|
|
23
|
-
this.acks.length = 0;
|
|
24
|
-
this.nacks.length = 0;
|
|
25
45
|
this.counter = 0;
|
|
26
46
|
this.failNext = undefined;
|
|
27
47
|
}
|
|
@@ -42,6 +62,17 @@ export class MockQueueDriver {
|
|
|
42
62
|
this.enqueued.push({
|
|
43
63
|
message: { ...message, jobId },
|
|
44
64
|
});
|
|
65
|
+
// Execute immediately if configured
|
|
66
|
+
if (this.executeImmediately && this.registry && this.serviceResolver) {
|
|
67
|
+
const job = this.registry.getOrThrow(message.jobName);
|
|
68
|
+
const context = {
|
|
69
|
+
services: this.serviceResolver(),
|
|
70
|
+
jobId,
|
|
71
|
+
attemptNumber: 1,
|
|
72
|
+
enqueuedAt: new Date(),
|
|
73
|
+
};
|
|
74
|
+
await job.handler(message.payload, context);
|
|
75
|
+
}
|
|
45
76
|
return result;
|
|
46
77
|
}
|
|
47
78
|
async enqueueAt(message, at) {
|
|
@@ -60,17 +91,5 @@ export class MockQueueDriver {
|
|
|
60
91
|
}
|
|
61
92
|
return result;
|
|
62
93
|
}
|
|
63
|
-
async receive(_options) {
|
|
64
|
-
return this.enqueued.map(({ message }) => ({
|
|
65
|
-
message,
|
|
66
|
-
receiptHandle: message.jobId,
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
async ack(job) {
|
|
70
|
-
this.acks.push(job);
|
|
71
|
-
}
|
|
72
|
-
async nack(job, error) {
|
|
73
|
-
this.nacks.push({ job, error });
|
|
74
|
-
}
|
|
75
94
|
}
|
|
76
95
|
//# sourceMappingURL=mock-driver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-driver.js","sourceRoot":"","sources":["../../../src/jobs/drivers/mock-driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mock-driver.js","sourceRoot":"","sources":["../../../src/jobs/drivers/mock-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SQSClient as SQSClientType } from '@aws-sdk/client-sqs';
|
|
2
|
-
import type { Duration, EnqueueResult, JobMessage, QueueDriver
|
|
2
|
+
import type { Duration, EnqueueResult, JobMessage, QueueDriver } from '../types.js';
|
|
3
|
+
import { type EventBridgeSchedulerConfig } from './eventbridge-scheduler-driver.js';
|
|
3
4
|
export interface SQSDriverConfig {
|
|
4
5
|
/** AWS region */
|
|
5
6
|
region: string;
|
|
@@ -10,43 +11,49 @@ export interface SQSDriverConfig {
|
|
|
10
11
|
/** Custom endpoint (for LocalStack) */
|
|
11
12
|
endpoint?: string;
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
14
|
+
* EventBridge Scheduler configuration for delays over 15 minutes.
|
|
15
|
+
* Required when using enqueueAt or enqueueIn with delays exceeding SQS maximum.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Strategy for delays over 15 minutes (SQS maximum).
|
|
19
|
-
* - "self-reschedule" (default): the job re-enqueues itself in 15-minute slices until due.
|
|
20
|
-
* - "dynamodb": store in DynamoDB and poll via the scheduler Lambda.
|
|
21
|
-
*/
|
|
22
|
-
longDelayStrategy?: 'self-reschedule' | 'dynamodb';
|
|
17
|
+
scheduler?: EventBridgeSchedulerConfig;
|
|
23
18
|
/** Optional pre-configured SQS client */
|
|
24
19
|
client?: SQSClientType;
|
|
25
20
|
}
|
|
26
21
|
/**
|
|
27
|
-
* AWS SQS queue driver
|
|
22
|
+
* AWS SQS queue driver with EventBridge Scheduler support for long delays.
|
|
23
|
+
*
|
|
24
|
+
* For delays up to 15 minutes, uses native SQS delay.
|
|
25
|
+
* For delays over 15 minutes, uses EventBridge Scheduler to create a one-off
|
|
26
|
+
* schedule that sends the job to SQS at the specified time.
|
|
28
27
|
*/
|
|
29
28
|
export declare class SQSQueueDriver implements QueueDriver {
|
|
30
29
|
private readonly config;
|
|
31
30
|
readonly name = "sqs";
|
|
31
|
+
readonly defaultQueue: string;
|
|
32
32
|
private client;
|
|
33
|
-
private
|
|
33
|
+
private schedulerDriver;
|
|
34
|
+
private disposed;
|
|
34
35
|
constructor(config: SQSDriverConfig);
|
|
35
36
|
/**
|
|
36
37
|
* Lazily initialize the SQS client.
|
|
38
|
+
* @throws Error if the driver has been disposed
|
|
37
39
|
*/
|
|
38
40
|
private getClient;
|
|
39
41
|
enqueue(message: JobMessage): Promise<EnqueueResult>;
|
|
40
42
|
enqueueAt(message: JobMessage, at: Date): Promise<EnqueueResult>;
|
|
41
43
|
enqueueIn(message: JobMessage, delay: Duration): Promise<EnqueueResult>;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Cancel a scheduled job. Only works for jobs scheduled with EventBridge Scheduler.
|
|
46
|
+
*
|
|
47
|
+
* @param scheduleName - The schedule name from the ScheduleResult
|
|
48
|
+
*/
|
|
49
|
+
cancelSchedule(scheduleName: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Dispose of the driver and release AWS SDK client resources.
|
|
52
|
+
* Call this when you're done using the driver to prevent memory leaks.
|
|
53
|
+
*/
|
|
54
|
+
dispose(): Promise<void>;
|
|
45
55
|
private getQueueUrl;
|
|
46
56
|
private enqueueWithDelay;
|
|
47
|
-
private
|
|
48
|
-
private scheduleJobWithSelfReschedule;
|
|
49
|
-
private scheduleJobWithDynamo;
|
|
50
|
-
private getSchedulerClient;
|
|
57
|
+
private scheduleWithEventBridge;
|
|
51
58
|
}
|
|
52
59
|
//# sourceMappingURL=sqs-driver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqs-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/sqs-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,IAAI,aAAa,EAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"sqs-driver.d.ts","sourceRoot":"","sources":["../../../src/jobs/drivers/sqs-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,IAAI,aAAa,EAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,mCAAmC,CAAC;AAK3C,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,yCAAyC;IACzC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,WAAW;IAOpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAS;gBAEI,MAAM,EAAE,eAAe;IAUpD;;;OAGG;YACW,SAAS;IAcjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAqCpD,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAWhE,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IAS7E;;;;OAIG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,CAAC,WAAW;YASL,gBAAgB;YAyChB,uBAAuB;CAgBtC"}
|