@sapphire/plugin-scheduled-tasks 7.1.1-next.e5382c1.0 → 7.1.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/lib/strategies/ScheduledTaskRedisStrategy.d.ts +36 -0
  3. package/dist/lib/strategies/ScheduledTaskRedisStrategy.d.ts.map +1 -0
  4. package/dist/lib/strategies/ScheduledTaskRedisStrategy.js +99 -0
  5. package/dist/lib/strategies/ScheduledTaskRedisStrategy.js.map +1 -0
  6. package/dist/lib/strategies/ScheduledTaskSQSStrategy.d.ts +29 -0
  7. package/dist/lib/strategies/ScheduledTaskSQSStrategy.d.ts.map +1 -0
  8. package/dist/lib/strategies/ScheduledTaskSQSStrategy.js +92 -0
  9. package/dist/lib/strategies/ScheduledTaskSQSStrategy.js.map +1 -0
  10. package/dist/lib/types/ScheduledTaskBaseStrategy.d.ts +17 -0
  11. package/dist/lib/types/ScheduledTaskBaseStrategy.d.ts.map +1 -0
  12. package/dist/lib/types/ScheduledTaskBaseStrategy.js +3 -0
  13. package/dist/lib/types/ScheduledTaskBaseStrategy.js.map +1 -0
  14. package/dist/lib/types/ScheduledTaskCreateRepeatedTask.d.ts +6 -0
  15. package/dist/lib/types/ScheduledTaskCreateRepeatedTask.d.ts.map +1 -0
  16. package/dist/lib/types/ScheduledTaskCreateRepeatedTask.js +3 -0
  17. package/dist/lib/types/ScheduledTaskCreateRepeatedTask.js.map +1 -0
  18. package/dist/lib/types/ScheduledTasksOptions.d.ts +5 -0
  19. package/dist/lib/types/ScheduledTasksOptions.d.ts.map +1 -0
  20. package/dist/lib/types/ScheduledTasksOptions.js +3 -0
  21. package/dist/lib/types/ScheduledTasksOptions.js.map +1 -0
  22. package/dist/lib/types/ScheduledTasksTaskOptions.d.ts +19 -0
  23. package/dist/lib/types/ScheduledTasksTaskOptions.d.ts.map +1 -0
  24. package/dist/lib/types/ScheduledTasksTaskOptions.js +3 -0
  25. package/dist/lib/types/ScheduledTasksTaskOptions.js.map +1 -0
  26. package/dist/register-redis.d.ts +10 -0
  27. package/dist/register-redis.d.ts.map +1 -0
  28. package/dist/register-redis.js +6 -0
  29. package/dist/register-redis.js.map +1 -0
  30. package/dist/register-redis.mjs +4 -0
  31. package/dist/register-sqs.d.ts +4 -0
  32. package/dist/register-sqs.d.ts.map +1 -0
  33. package/dist/register-sqs.js +6 -0
  34. package/dist/register-sqs.js.map +1 -0
  35. package/dist/register-sqs.mjs +4 -0
  36. package/dist/types-redis.d.ts +2 -0
  37. package/dist/types-redis.d.ts.map +1 -0
  38. package/dist/types-redis.js +3 -0
  39. package/dist/types-redis.js.map +1 -0
  40. package/dist/types-sqs.d.ts +2 -0
  41. package/dist/types-sqs.d.ts.map +1 -0
  42. package/dist/types-sqs.js +3 -0
  43. package/dist/types-sqs.js.map +1 -0
  44. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ # [@sapphire/plugin-scheduled-tasks@7.1.1](https://github.com/sapphiredev/plugins/compare/@sapphire/plugin-scheduled-tasks@7.1.0...@sapphire/plugin-scheduled-tasks@7.1.1) - (2023-07-21)
6
+
7
+ ## 🐛 Bug Fixes
8
+
9
+ - **scheduled-tasks:** Bump transitive @sapphire/utilities and bullmq dependencies ([4497403](https://github.com/sapphiredev/plugins/commit/449740360e06caf98998c6f8b54e2f1750cb07b1))
10
+ - **scheduled-tasks:** Bump bullmq transitive dependency ([7140c34](https://github.com/sapphiredev/plugins/commit/7140c3498de7ed3572c82c19cad9fbaa9584d7c1))
11
+
5
12
  # [@sapphire/plugin-scheduled-tasks@7.1.0](https://github.com/sapphiredev/plugins/compare/@sapphire/plugin-scheduled-tasks@7.0.0...@sapphire/plugin-scheduled-tasks@7.1.0) - (2023-05-24)
6
13
 
7
14
  ## 🐛 Bug Fixes
@@ -0,0 +1,36 @@
1
+ import { Job, Queue, type EntryId, type JobState, type QueueOptions } from 'bullmq';
2
+ import type { ScheduledTaskBaseStrategy } from '../types/ScheduledTaskBaseStrategy';
3
+ import type { ScheduledTaskCreateRepeatedTask } from '../types/ScheduledTaskCreateRepeatedTask';
4
+ import type { ScheduledTasksTaskOptions } from '../types/ScheduledTasksTaskOptions';
5
+ export interface ScheduledTaskRedisStrategyOptions {
6
+ queue?: string;
7
+ bull?: QueueOptions;
8
+ }
9
+ export interface ScheduledTaskRedisStrategyJob {
10
+ }
11
+ export interface ScheduledTaskRedisStrategyListRepeatedOptions {
12
+ start?: number;
13
+ end?: number;
14
+ asc?: boolean;
15
+ }
16
+ export interface ScheduledTaskRedisStrategyListOptions extends ScheduledTaskRedisStrategyListRepeatedOptions {
17
+ types: JobState[];
18
+ }
19
+ export type BullClient = Queue<ScheduledTaskRedisStrategyJob | null>;
20
+ export type ScheduledTaskRedisListRepeatedReturnType = ReturnType<BullClient['getRepeatableJobs']> extends Promise<infer U> ? U : never;
21
+ export declare class ScheduledTaskRedisStrategy implements ScheduledTaskBaseStrategy {
22
+ readonly options: QueueOptions;
23
+ readonly queue: string;
24
+ private queueClient;
25
+ constructor(options?: ScheduledTaskRedisStrategyOptions);
26
+ get client(): BullClient;
27
+ connect(): void;
28
+ create<T = unknown>(task: string, payload?: ScheduledTaskRedisStrategyJob | null, options?: ScheduledTasksTaskOptions): Promise<Job<T>> | undefined;
29
+ createRepeated(tasks: ScheduledTaskCreateRepeatedTask[]): Promise<void>;
30
+ delete(id: EntryId): Promise<void>;
31
+ list<T = unknown>(options: ScheduledTaskRedisStrategyListOptions): Promise<Job<T>[]> | undefined;
32
+ listRepeated(options: ScheduledTaskRedisStrategyListRepeatedOptions): Promise<ScheduledTaskRedisListRepeatedReturnType> | undefined;
33
+ get<T = unknown>(id: EntryId): Promise<Job<T> | null> | undefined;
34
+ run(task: string, payload: unknown): Promise<unknown>;
35
+ }
36
+ //# sourceMappingURL=ScheduledTaskRedisStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskRedisStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/ScheduledTaskRedisStrategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAU,KAAK,OAAO,EAAoB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC9G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAEhG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAEpF,MAAM,WAAW,iCAAiC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;CAAG;AAEjD,MAAM,WAAW,6CAA6C;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,qCAAsC,SAAQ,6CAA6C;IAC3G,KAAK,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;AAErE,MAAM,MAAM,wCAAwC,GAAG,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAExI,qBAAa,0BAA2B,YAAW,yBAAyB;IAC3E,SAAgB,OAAO,EAAE,YAAY,CAAC;IACtC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,WAAW,CAAc;gBAEd,OAAO,CAAC,EAAE,iCAAiC;IAK9D,IAAW,MAAM,IAAI,UAAU,CAE9B;IAEM,OAAO,IAAI,IAAI;IASf,MAAM,CAAC,CAAC,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,6BAA6B,GAAG,IAAI,EAC9C,OAAO,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;IA0BjB,cAAc,CAAC,KAAK,EAAE,+BAA+B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvE,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASxC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,qCAAqC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS;IAShG,YAAY,CAAC,OAAO,EAAE,6CAA6C,GAAG,OAAO,CAAC,wCAAwC,CAAC,GAAG,SAAS;IASnI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS;IAQjE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAG5D"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScheduledTaskRedisStrategy = void 0;
4
+ const framework_1 = require("@sapphire/framework");
5
+ const bullmq_1 = require("bullmq");
6
+ const ScheduledTaskEvents_1 = require("../types/ScheduledTaskEvents");
7
+ class ScheduledTaskRedisStrategy {
8
+ constructor(options) {
9
+ Object.defineProperty(this, "options", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: void 0
14
+ });
15
+ Object.defineProperty(this, "queue", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ Object.defineProperty(this, "queueClient", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ this.queue = options?.queue ?? 'scheduled-tasks';
28
+ this.options = options?.bull ?? {};
29
+ }
30
+ get client() {
31
+ return this.queueClient;
32
+ }
33
+ connect() {
34
+ const connectResult = framework_1.Result.from(() => {
35
+ this.queueClient = new bullmq_1.Queue(this.queue, this.options);
36
+ new bullmq_1.Worker(this.queue, async (job) => this.run(job?.name, job?.data), { connection: this.options.connection });
37
+ });
38
+ connectResult.inspectErr((error) => framework_1.container.client.emit(ScheduledTaskEvents_1.ScheduledTaskEvents.ScheduledTaskStrategyConnectError, error));
39
+ }
40
+ create(task, payload, options) {
41
+ if (!this.queueClient) {
42
+ return;
43
+ }
44
+ let jobOptions = {
45
+ delay: options?.delay,
46
+ ...options?.customJobOptions
47
+ };
48
+ if (options?.repeated) {
49
+ jobOptions = {
50
+ ...jobOptions,
51
+ repeat: options?.interval
52
+ ? {
53
+ every: options.interval
54
+ }
55
+ : {
56
+ pattern: options.pattern
57
+ }
58
+ };
59
+ }
60
+ return this.queueClient.add(task, payload ?? null, jobOptions);
61
+ }
62
+ async createRepeated(tasks) {
63
+ for (const task of tasks) {
64
+ await this.create(task.name, null, task.options);
65
+ }
66
+ }
67
+ async delete(id) {
68
+ if (!this.queueClient) {
69
+ return;
70
+ }
71
+ const job = await this.get(id);
72
+ return job?.remove();
73
+ }
74
+ list(options) {
75
+ const { types, start, end, asc } = options;
76
+ if (!this.queueClient) {
77
+ return;
78
+ }
79
+ return this.queueClient.getJobs(types, start, end, asc);
80
+ }
81
+ listRepeated(options) {
82
+ const { start, end, asc } = options;
83
+ if (!this.queueClient) {
84
+ return;
85
+ }
86
+ return this.queueClient.getRepeatableJobs(start, end, asc);
87
+ }
88
+ get(id) {
89
+ if (!this.queueClient) {
90
+ return;
91
+ }
92
+ return this.queueClient.getJob(id);
93
+ }
94
+ run(task, payload) {
95
+ return framework_1.container.tasks.run(task, payload);
96
+ }
97
+ }
98
+ exports.ScheduledTaskRedisStrategy = ScheduledTaskRedisStrategy;
99
+ //# sourceMappingURL=ScheduledTaskRedisStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskRedisStrategy.js","sourceRoot":"","sources":["../../../src/lib/strategies/ScheduledTaskRedisStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { SendMessageBatchResultEntryList } from 'aws-sdk/clients/sqs';
2
+ import { type ConsumerOptions } from 'sqs-consumer';
3
+ import { Producer } from 'sqs-producer';
4
+ import type { ScheduledTaskBaseStrategy } from '../types/ScheduledTaskBaseStrategy';
5
+ import type { ScheduledTaskCreateRepeatedTask } from '../types/ScheduledTaskCreateRepeatedTask';
6
+ import type { ScheduledTasksTaskOptions } from '../types/ScheduledTasksTaskOptions';
7
+ export interface ScheduledTaskSQSStrategyMessageBody {
8
+ task: string;
9
+ payload?: unknown;
10
+ options: ScheduledTasksTaskOptions;
11
+ }
12
+ export type SQSClient = Producer;
13
+ export declare class ScheduledTaskSQSStrategy implements ScheduledTaskBaseStrategy {
14
+ readonly options: ConsumerOptions;
15
+ private producer;
16
+ constructor(options: ConsumerOptions);
17
+ get client(): SQSClient;
18
+ connect(): void;
19
+ create(task: string, payload?: unknown, options?: ScheduledTasksTaskOptions): Promise<SendMessageBatchResultEntryList>;
20
+ createRepeated(tasks: ScheduledTaskCreateRepeatedTask[]): Promise<void>;
21
+ delete(): void;
22
+ list(): void;
23
+ listRepeated(): void;
24
+ get(): void;
25
+ run(task: string, payload: unknown): Promise<unknown>;
26
+ private handleMessage;
27
+ private handleBatch;
28
+ }
29
+ //# sourceMappingURL=ScheduledTaskSQSStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskSQSStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/ScheduledTaskSQSStrategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAEhG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAEpF,MAAM,WAAW,mCAAmC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,yBAAyB,CAAC;CACnC;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;AAEjC,qBAAa,wBAAyB,YAAW,yBAAyB;IACzE,SAAgB,OAAO,EAAE,eAAe,CAAC;IAEzC,OAAO,CAAC,QAAQ,CAAY;gBAET,OAAO,EAAE,eAAe;IAK3C,IAAW,MAAM,IAAI,SAAS,CAE7B;IAEM,OAAO;IAcP,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAqBhH,cAAc,CAAC,KAAK,EAAE,+BAA+B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7E,MAAM,IAAI,IAAI;IAId,IAAI,IAAI,IAAI;IAIZ,YAAY,IAAI,IAAI;IAIpB,GAAG,IAAI,IAAI;IAIX,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAI9C,aAAa;YAWb,WAAW;CAOzB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScheduledTaskSQSStrategy = void 0;
4
+ const framework_1 = require("@sapphire/framework");
5
+ const crypto_1 = require("crypto");
6
+ const sqs_consumer_1 = require("sqs-consumer");
7
+ const sqs_producer_1 = require("sqs-producer");
8
+ const ScheduledTaskEvents_1 = require("../types/ScheduledTaskEvents");
9
+ class ScheduledTaskSQSStrategy {
10
+ constructor(options) {
11
+ Object.defineProperty(this, "options", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ Object.defineProperty(this, "producer", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ this.options = options;
24
+ this.producer = sqs_producer_1.Producer.create(this.options);
25
+ }
26
+ get client() {
27
+ return this.producer;
28
+ }
29
+ connect() {
30
+ const connectResult = framework_1.Result.from(() => {
31
+ const consumer = sqs_consumer_1.Consumer.create({
32
+ ...this.options,
33
+ handleMessage: this.handleMessage.bind(this),
34
+ handleMessageBatch: this.handleBatch.bind(this)
35
+ });
36
+ consumer.start();
37
+ });
38
+ connectResult.inspectErr((error) => framework_1.container.client.emit(ScheduledTaskEvents_1.ScheduledTaskEvents.ScheduledTaskStrategyConnectError, error));
39
+ }
40
+ create(task, payload, options) {
41
+ if (options?.pattern) {
42
+ throw new Error('SQS does not support pattern notation.');
43
+ }
44
+ let delay = (options?.delay ?? 0) / 1000;
45
+ if (options?.repeated) {
46
+ delay = options.interval / 1000;
47
+ }
48
+ return this.producer.send({
49
+ id: `${task}-${(0, crypto_1.randomBytes)(6)}`,
50
+ body: JSON.stringify({
51
+ task,
52
+ payload,
53
+ options
54
+ }),
55
+ delaySeconds: delay
56
+ });
57
+ }
58
+ async createRepeated(tasks) {
59
+ for (const task of tasks) {
60
+ await this.create(task.name, null, task.options);
61
+ }
62
+ }
63
+ delete() {
64
+ throw new Error('SQS does not support deleting tasks.');
65
+ }
66
+ list() {
67
+ throw new Error('SQS does not support listing tasks.');
68
+ }
69
+ listRepeated() {
70
+ throw new Error('SQS does not support listing tasks.');
71
+ }
72
+ get() {
73
+ throw new Error('SQS does not support getting tasks.');
74
+ }
75
+ run(task, payload) {
76
+ return framework_1.container.tasks.run(task, payload);
77
+ }
78
+ async handleMessage(message) {
79
+ const data = JSON.parse(message.Body);
80
+ await this.run(data.task, data.payload);
81
+ if (data.options.repeated) {
82
+ await this.create(data.task, data.payload, data.options);
83
+ }
84
+ }
85
+ async handleBatch(messages) {
86
+ for (const message of messages) {
87
+ await this.handleMessage(message);
88
+ }
89
+ }
90
+ }
91
+ exports.ScheduledTaskSQSStrategy = ScheduledTaskSQSStrategy;
92
+ //# sourceMappingURL=ScheduledTaskSQSStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskSQSStrategy.js","sourceRoot":"","sources":["../../../src/lib/strategies/ScheduledTaskSQSStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Awaitable } from '@sapphire/utilities';
2
+ import type { ScheduledTaskCreateRepeatedTask } from './ScheduledTaskCreateRepeatedTask';
3
+ import type { ScheduledTasksTaskOptions } from './ScheduledTasksTaskOptions';
4
+ export interface ScheduledTaskBaseStrategy {
5
+ client: unknown;
6
+ connect(): void;
7
+ create(task: keyof ScheduledTasks, payload: unknown, options?: ScheduledTasksTaskOptions): Awaitable<unknown>;
8
+ createRepeated(tasks: ScheduledTaskCreateRepeatedTask[]): void;
9
+ delete(id: unknown): unknown;
10
+ list(options?: unknown): unknown;
11
+ listRepeated(options?: unknown): unknown;
12
+ get(id: unknown): unknown;
13
+ run(task: string, payload: unknown): Awaitable<unknown>;
14
+ }
15
+ export interface ScheduledTasks {
16
+ }
17
+ //# sourceMappingURL=ScheduledTaskBaseStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskBaseStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTaskBaseStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,IAAI,EAAE,MAAM,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9G,cAAc,CAAC,KAAK,EAAE,+BAA+B,EAAE,GAAG,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,cAAc;CAAG"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ScheduledTaskBaseStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskBaseStrategy.js","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTaskBaseStrategy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { ScheduledTasksTaskOptions } from './ScheduledTasksTaskOptions';
2
+ export interface ScheduledTaskCreateRepeatedTask {
3
+ name: string;
4
+ options: ScheduledTasksTaskOptions;
5
+ }
6
+ //# sourceMappingURL=ScheduledTaskCreateRepeatedTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskCreateRepeatedTask.d.ts","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTaskCreateRepeatedTask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,WAAW,+BAA+B;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,yBAAyB,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ScheduledTaskCreateRepeatedTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTaskCreateRepeatedTask.js","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTaskCreateRepeatedTask.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { ScheduledTaskBaseStrategy } from './ScheduledTaskBaseStrategy';
2
+ export interface ScheduledTasksOptions {
3
+ strategy: ScheduledTaskBaseStrategy;
4
+ }
5
+ //# sourceMappingURL=ScheduledTasksOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTasksOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTasksOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,yBAAyB,CAAC;CACpC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ScheduledTasksOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTasksOptions.js","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTasksOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ export type ScheduledTasksTaskOptions = {
2
+ repeated: boolean;
3
+ } & ({
4
+ delay: number;
5
+ interval?: never;
6
+ pattern?: never;
7
+ customJobOptions?: any;
8
+ } | {
9
+ delay?: never;
10
+ interval: number;
11
+ pattern?: never;
12
+ customJobOptions?: any;
13
+ } | {
14
+ delay?: never;
15
+ interval?: never;
16
+ pattern: string;
17
+ customJobOptions?: any;
18
+ });
19
+ //# sourceMappingURL=ScheduledTasksTaskOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTasksTaskOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTasksTaskOptions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG;IACvC,QAAQ,EAAE,OAAO,CAAC;CAClB,GAAG,CACD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAA;CAAE,GAC5E;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAA;CAAE,GAC5E;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,GAAG,CAAA;CAAE,CAC9E,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ScheduledTasksTaskOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduledTasksTaskOptions.js","sourceRoot":"","sources":["../../../src/lib/types/ScheduledTasksTaskOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { JobsOptions } from 'bullmq';
2
+ import './index';
3
+ import './register';
4
+ export * from './lib/strategies/ScheduledTaskRedisStrategy';
5
+ declare module '@sapphire/plugin-scheduled-tasks' {
6
+ interface ScheduledTaskOptions {
7
+ bullJobsOptions?: Omit<JobsOptions, 'repeat'>;
8
+ }
9
+ }
10
+ //# sourceMappingURL=register-redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-redis.d.ts","sourceRoot":"","sources":["../src/register-redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,SAAS,CAAC;AACjB,OAAO,YAAY,CAAC;AAEpB,cAAc,6CAA6C,CAAC;AAG5D,OAAO,QAAQ,kCAAkC,CAAC;IACjD,UAAU,oBAAoB;QAC7B,eAAe,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KAC9C;CACD"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("./index");
4
+ require("./register");
5
+ __exportStar(require("./lib/strategies/ScheduledTaskRedisStrategy"), exports);
6
+ //# sourceMappingURL=register-redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-redis.js","sourceRoot":"","sources":["../src/register-redis.ts"],"names":[],"mappings":";;AACA,mBAAiB;AACjB,sBAAoB;AAEpB,8EAA4D"}
@@ -0,0 +1,4 @@
1
+ import mod from "./register-redis.js";
2
+
3
+ export default mod;
4
+ export const {ScheduledTaskRedisStrategy} = mod;
@@ -0,0 +1,4 @@
1
+ import './index';
2
+ import './register';
3
+ export * from './lib/strategies/ScheduledTaskSQSStrategy';
4
+ //# sourceMappingURL=register-sqs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-sqs.d.ts","sourceRoot":"","sources":["../src/register-sqs.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,YAAY,CAAC;AAEpB,cAAc,2CAA2C,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("./index");
4
+ require("./register");
5
+ __exportStar(require("./lib/strategies/ScheduledTaskSQSStrategy"), exports);
6
+ //# sourceMappingURL=register-sqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-sqs.js","sourceRoot":"","sources":["../src/register-sqs.ts"],"names":[],"mappings":";;AAAA,mBAAiB;AACjB,sBAAoB;AAEpB,4EAA0D"}
@@ -0,0 +1,4 @@
1
+ import mod from "./register-sqs.js";
2
+
3
+ export default mod;
4
+ export const {ScheduledTaskSQSStrategy} = mod;
@@ -0,0 +1,2 @@
1
+ export type { BullClient, ScheduledTaskRedisListRepeatedReturnType, ScheduledTaskRedisStrategy, ScheduledTaskRedisStrategyJob, ScheduledTaskRedisStrategyListOptions, ScheduledTaskRedisStrategyListRepeatedOptions, ScheduledTaskRedisStrategyOptions } from './lib/strategies/ScheduledTaskRedisStrategy';
2
+ //# sourceMappingURL=types-redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-redis.d.ts","sourceRoot":"","sources":["../src/types-redis.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,UAAU,EACV,wCAAwC,EACxC,0BAA0B,EAC1B,6BAA6B,EAC7B,qCAAqC,EACrC,6CAA6C,EAC7C,iCAAiC,EACjC,MAAM,6CAA6C,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types-redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-redis.js","sourceRoot":"","sources":["../src/types-redis.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { ScheduledTaskSQSStrategy, ScheduledTaskSQSStrategyMessageBody, SQSClient } from './lib/strategies/ScheduledTaskSQSStrategy';
2
+ //# sourceMappingURL=types-sqs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-sqs.d.ts","sourceRoot":"","sources":["../src/types-sqs.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,mCAAmC,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types-sqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-sqs.js","sourceRoot":"","sources":["../src/types-sqs.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapphire/plugin-scheduled-tasks",
3
- "version": "7.1.1-next.e5382c1.0",
3
+ "version": "7.1.1",
4
4
  "description": "Plugin for @sapphire/framework to have scheduled tasks",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",