Skip to content

Commit 72b5318

Browse files
committed
chore: wip
1 parent 0076af6 commit 72b5318

File tree

8 files changed

+537
-31
lines changed

8 files changed

+537
-31
lines changed

bun.lock

Lines changed: 526 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/proper-laravel-api.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import {
1616
// Laravel-style Job Classes
1717
class SendEmailNotification extends JobBase implements ShouldQueue, ShouldBeUnique {
1818
public connection = 'redis'
19-
public queue!: Queue<any>
2019
public tries = 3
2120
public timeout = 30 // seconds
2221
public backoff = [5, 10, 30] // seconds
@@ -62,7 +61,6 @@ class SendEmailNotification extends JobBase implements ShouldQueue, ShouldBeUniq
6261

6362
class ProcessPayment extends JobBase implements ShouldQueue, ShouldBeUnique {
6463
public connection = 'priority'
65-
public queue!: Queue<any>
6664
public tries = 5
6765
public timeout = 60 // seconds
6866
public backoff = [1, 5, 15, 30, 60] // seconds
@@ -114,7 +112,6 @@ class ProcessPayment extends JobBase implements ShouldQueue, ShouldBeUnique {
114112

115113
class GenerateMonthlyReport extends JobBase implements ShouldQueue, ShouldBatch {
116114
public connection = 'redis'
117-
public queue!: Queue<any>
118115
public tries = 2
119116
public timeout = 120 // seconds
120117
public batchId?: string

examples/unified-config-demo.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010

1111
// Laravel-style Job
1212
class WelcomeEmailJob extends JobBase implements ShouldQueue {
13-
public queue!: Queue<any>
1413
public tries = 3
1514

1615
constructor(private email: string, private name: string) {

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@
6363
},
6464
"devDependencies": {
6565
"@stacksjs/docs": "^0.70.23",
66+
"@stacksjs/eslint-config": "^4.14.0-beta.3",
67+
"@types/bun": "^1.3.0",
6668
"better-dx": "^0.1.4"
6769
},
6870
"overrides": {

packages/bun-queue/src/dispatch.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,11 @@ export class JobBatch implements Batch {
219219
if (this.options?.onConnection)
220220
jobClone.connection = this.options.onConnection
221221

222-
return jobClone.dispatch?.()
222+
const dispatchResult = await jobClone.dispatch?.()
223+
if (!dispatchResult) {
224+
throw new Error('Job dispatch method not implemented or returned undefined')
225+
}
226+
return dispatchResult
223227
})
224228

225229
const dispatchedJobs = await Promise.all(jobPromises)

packages/bun-queue/src/failed/failed-job-provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class RedisFailedJobProvider implements FailedJobProvider {
3838
}
3939

4040
// In a real implementation, store in Redis
41-
console.log(`[FailedJobProvider] Logged failed job ${id} from queue ${queue}`)
41+
console.log(`[FailedJobProvider] Logged failed job ${id} from queue ${_queue}`)
4242

4343
return id
4444
}

packages/bun-queue/src/middleware.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,7 @@ export class UniqueJobMiddleware implements JobMiddleware {
107107

108108
try {
109109
// Try to set a lock key with NX (only if not exists) and EX (expiration)
110-
const lockAcquired = await redisClient.set(key, '1', {
111-
NX: true,
112-
EX: this.ttl,
113-
})
110+
const lockAcquired = await redisClient.send('SET', [key, '1', 'NX', 'EX', this.ttl.toString()])
114111

115112
if (!lockAcquired) {
116113
// Job with this unique ID is already queued/processing
@@ -217,10 +214,7 @@ export class WithoutOverlappingMiddleware implements JobMiddleware {
217214

218215
try {
219216
// Try to acquire a lock
220-
const lockAcquired = await redisClient.set(key, Date.now().toString(), {
221-
NX: true,
222-
EX: this.ttl,
223-
})
217+
const lockAcquired = await redisClient.send('SET', [key, Date.now().toString(), 'NX', 'EX', this.ttl.toString()])
224218

225219
if (!lockAcquired) {
226220
// Another instance of this job is already running

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"module": "esnext",
77
"moduleResolution": "bundler",
88
"resolveJsonModule": true,
9+
"types": ["bun"],
910
"allowImportingTsExtensions": true,
1011
"strict": true,
1112
"strictNullChecks": true,

0 commit comments

Comments
 (0)