light-async-queue 1.0.1 → 2.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.
Files changed (60) hide show
  1. package/README.md +334 -40
  2. package/dist/src/constants.d.ts +68 -0
  3. package/dist/src/constants.d.ts.map +1 -0
  4. package/dist/src/constants.js +75 -0
  5. package/dist/src/constants.js.map +1 -0
  6. package/dist/src/dashboard/Dashboard.d.ts +70 -0
  7. package/dist/src/dashboard/Dashboard.d.ts.map +1 -0
  8. package/dist/src/dashboard/Dashboard.js +308 -0
  9. package/dist/src/dashboard/Dashboard.js.map +1 -0
  10. package/dist/src/dashboard/index.d.ts +3 -0
  11. package/dist/src/dashboard/index.d.ts.map +1 -0
  12. package/dist/src/dashboard/index.js +2 -0
  13. package/dist/src/dashboard/index.js.map +1 -0
  14. package/dist/src/index.d.ts +13 -1
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +11 -0
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/queue/Backoff.d.ts.map +1 -1
  19. package/dist/src/queue/Backoff.js +2 -1
  20. package/dist/src/queue/Backoff.js.map +1 -1
  21. package/dist/src/queue/Job.d.ts +35 -4
  22. package/dist/src/queue/Job.d.ts.map +1 -1
  23. package/dist/src/queue/Job.js +97 -12
  24. package/dist/src/queue/Job.js.map +1 -1
  25. package/dist/src/queue/Queue.d.ts +73 -3
  26. package/dist/src/queue/Queue.d.ts.map +1 -1
  27. package/dist/src/queue/Queue.js +359 -36
  28. package/dist/src/queue/Queue.js.map +1 -1
  29. package/dist/src/queue/Scheduler.d.ts.map +1 -1
  30. package/dist/src/queue/Scheduler.js +8 -1
  31. package/dist/src/queue/Scheduler.js.map +1 -1
  32. package/dist/src/storage/FileStore.d.ts.map +1 -1
  33. package/dist/src/storage/FileStore.js +4 -3
  34. package/dist/src/storage/FileStore.js.map +1 -1
  35. package/dist/src/storage/MemoryStore.d.ts.map +1 -1
  36. package/dist/src/storage/MemoryStore.js +2 -1
  37. package/dist/src/storage/MemoryStore.js.map +1 -1
  38. package/dist/src/types.d.ts +85 -10
  39. package/dist/src/types.d.ts.map +1 -1
  40. package/dist/src/types.js +4 -1
  41. package/dist/src/types.js.map +1 -1
  42. package/dist/src/utils/CronParser.d.ts +12 -0
  43. package/dist/src/utils/CronParser.d.ts.map +1 -0
  44. package/dist/src/utils/CronParser.js +28 -0
  45. package/dist/src/utils/CronParser.js.map +1 -0
  46. package/dist/src/utils/RateLimiter.d.ts +37 -0
  47. package/dist/src/utils/RateLimiter.d.ts.map +1 -0
  48. package/dist/src/utils/RateLimiter.js +68 -0
  49. package/dist/src/utils/RateLimiter.js.map +1 -0
  50. package/dist/src/utils/WebhookManager.d.ts +29 -0
  51. package/dist/src/utils/WebhookManager.d.ts.map +1 -0
  52. package/dist/src/utils/WebhookManager.js +82 -0
  53. package/dist/src/utils/WebhookManager.js.map +1 -0
  54. package/dist/src/worker/Worker.d.ts +2 -2
  55. package/dist/src/worker/Worker.d.ts.map +1 -1
  56. package/dist/src/worker/Worker.js +60 -38
  57. package/dist/src/worker/Worker.js.map +1 -1
  58. package/dist/src/worker/childProcessor.js +23 -7
  59. package/dist/src/worker/childProcessor.js.map +1 -1
  60. package/package.json +27 -5
@@ -1,3 +1,4 @@
1
+ import { JobStatus } from '../types.js';
1
2
  import { randomUUID } from 'node:crypto';
2
3
  /**
3
4
  * Job class representing a single unit of work in the queue
@@ -8,17 +9,34 @@ export class Job {
8
9
  attempts;
9
10
  maxAttempts;
10
11
  status;
12
+ priority;
13
+ progress;
11
14
  nextRunAt;
15
+ delay;
16
+ repeatConfig;
17
+ repeatCount;
18
+ dependsOn;
19
+ parentJobId;
20
+ result;
21
+ error;
12
22
  createdAt;
13
23
  updatedAt;
14
- constructor(payload, maxAttempts, nextRunAt) {
24
+ startedAt;
25
+ completedAt;
26
+ constructor(payload, maxAttempts, options = {}) {
15
27
  const now = Date.now();
16
- this.id = randomUUID();
28
+ this.id = options.jobId || randomUUID();
17
29
  this.payload = payload;
18
30
  this.attempts = 0;
19
31
  this.maxAttempts = maxAttempts;
20
- this.status = 'pending';
21
- this.nextRunAt = nextRunAt ?? now;
32
+ this.status = options.delay ? JobStatus.DELAYED : options.dependsOn?.length ? JobStatus.WAITING : JobStatus.PENDING;
33
+ this.priority = options.priority ?? 0;
34
+ this.progress = 0;
35
+ this.delay = options.delay ?? 0;
36
+ this.nextRunAt = now + (options.delay ?? 0);
37
+ this.repeatConfig = options.repeat;
38
+ this.repeatCount = 0;
39
+ this.dependsOn = options.dependsOn;
22
40
  this.createdAt = now;
23
41
  this.updatedAt = now;
24
42
  }
@@ -40,31 +58,47 @@ export class Job {
40
58
  attempts: this.attempts,
41
59
  maxAttempts: this.maxAttempts,
42
60
  status: this.status,
61
+ priority: this.priority,
62
+ progress: this.progress,
43
63
  nextRunAt: this.nextRunAt,
64
+ delay: this.delay,
65
+ repeatConfig: this.repeatConfig,
66
+ repeatCount: this.repeatCount,
67
+ dependsOn: this.dependsOn,
68
+ parentJobId: this.parentJobId,
69
+ result: this.result,
70
+ error: this.error,
44
71
  createdAt: this.createdAt,
45
72
  updatedAt: this.updatedAt,
73
+ startedAt: this.startedAt,
74
+ completedAt: this.completedAt,
46
75
  };
47
76
  }
48
77
  /**
49
78
  * Mark job as processing
50
79
  */
51
80
  markProcessing() {
52
- this.status = 'processing';
53
- this.updatedAt = Date.now();
81
+ this.status = JobStatus.PROCESSING;
82
+ this.startedAt = Date.now();
83
+ this.updatedAt = this.startedAt;
54
84
  }
55
85
  /**
56
86
  * Mark job as completed
57
87
  */
58
- markCompleted() {
59
- this.status = 'completed';
60
- this.updatedAt = Date.now();
88
+ markCompleted(result) {
89
+ this.status = JobStatus.COMPLETED;
90
+ this.result = result;
91
+ this.completedAt = Date.now();
92
+ this.updatedAt = this.completedAt;
93
+ this.progress = 100;
61
94
  }
62
95
  /**
63
96
  * Mark job as failed and increment attempts
64
97
  */
65
- markFailed(nextRunAt) {
98
+ markFailed(error, nextRunAt) {
66
99
  this.attempts += 1;
67
- this.status = this.attempts >= this.maxAttempts ? 'failed' : 'pending';
100
+ this.error = error;
101
+ this.status = this.attempts >= this.maxAttempts ? JobStatus.FAILED : JobStatus.PENDING;
68
102
  if (nextRunAt !== undefined) {
69
103
  this.nextRunAt = nextRunAt;
70
104
  }
@@ -81,9 +115,60 @@ export class Job {
81
115
  */
82
116
  reset() {
83
117
  this.attempts = 0;
84
- this.status = 'pending';
118
+ this.status = JobStatus.PENDING;
85
119
  this.nextRunAt = Date.now();
86
120
  this.updatedAt = Date.now();
121
+ this.error = undefined;
122
+ this.progress = 0;
123
+ this.startedAt = undefined;
124
+ this.completedAt = undefined;
125
+ }
126
+ /**
127
+ * Update job progress
128
+ */
129
+ updateProgress(progress) {
130
+ this.progress = Math.min(100, Math.max(0, progress));
131
+ this.updatedAt = Date.now();
132
+ }
133
+ /**
134
+ * Mark job as stalled
135
+ */
136
+ markStalled() {
137
+ this.status = JobStatus.STALLED;
138
+ this.updatedAt = Date.now();
139
+ }
140
+ /**
141
+ * Check if job is stalled (processing for too long)
142
+ */
143
+ isStalled(stalledThreshold = 30000) {
144
+ if (this.status !== JobStatus.PROCESSING || !this.startedAt) {
145
+ return false;
146
+ }
147
+ return Date.now() - this.startedAt > stalledThreshold;
148
+ }
149
+ /**
150
+ * Check if dependencies are satisfied
151
+ */
152
+ areDependenciesSatisfied(completedJobIds) {
153
+ if (!this.dependsOn || this.dependsOn.length === 0) {
154
+ return true;
155
+ }
156
+ return this.dependsOn.every(id => completedJobIds.has(id));
157
+ }
158
+ /**
159
+ * Create a repeated instance of this job
160
+ */
161
+ createRepeatInstance() {
162
+ const job = Job.fromData(this.toData());
163
+ job.attempts = 0;
164
+ job.status = JobStatus.PENDING;
165
+ job.repeatCount += 1;
166
+ job.progress = 0;
167
+ job.error = undefined;
168
+ job.result = undefined;
169
+ job.startedAt = undefined;
170
+ job.completedAt = undefined;
171
+ return job;
87
172
  }
88
173
  }
89
174
  //# sourceMappingURL=Job.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,GAAG;IACE,EAAE,CAAS;IACpB,OAAO,CAAU;IACjB,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,MAAM,CAAY;IAClB,SAAS,CAAS;IACT,SAAS,CAAS;IAC3B,SAAS,CAAS;IAEzB,YAAY,OAAgB,EAAE,WAAmB,EAAE,SAAkB;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAa;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAkB;QAC3B,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { QueueConfig, JobProcessor, JobData } from '../types.js';
1
+ import { QueueConfig, JobProcessor, JobData, JobOptions } from "../types.js";
2
+ import { EventEmitter } from "node:events";
2
3
  /**
3
4
  * Main Queue class - orchestrates job processing
4
5
  */
5
- export declare class Queue {
6
+ export declare class Queue extends EventEmitter {
6
7
  private config;
7
8
  private storage;
8
9
  private scheduler;
@@ -10,9 +11,15 @@ export declare class Queue {
10
11
  private backoff;
11
12
  private processor;
12
13
  private workers;
14
+ private reservedWorkers;
13
15
  private activeJobs;
16
+ private completedJobIds;
17
+ private repeatingJobs;
14
18
  private isShuttingDown;
15
19
  private isInitialized;
20
+ private rateLimiter?;
21
+ private webhookManager?;
22
+ private stalledCheckInterval?;
16
23
  constructor(config: QueueConfig);
17
24
  /**
18
25
  * Initialize the queue
@@ -25,7 +32,7 @@ export declare class Queue {
25
32
  /**
26
33
  * Add a job to the queue
27
34
  */
28
- add(payload: unknown): Promise<string>;
35
+ add(payload: unknown, options?: JobOptions): Promise<string>;
29
36
  /**
30
37
  * Handle a job that's ready to process
31
38
  */
@@ -38,6 +45,62 @@ export declare class Queue {
38
45
  * Get an available worker or create a new one
39
46
  */
40
47
  private getAvailableWorker;
48
+ /**
49
+ * Create a job with methods for use in processor
50
+ */
51
+ private createJobWithMethods;
52
+ /**
53
+ * Load completed job IDs for dependency tracking
54
+ */
55
+ private loadCompletedJobIds;
56
+ /**
57
+ * Check and update waiting jobs whose dependencies are now satisfied
58
+ */
59
+ private checkDependentJobs;
60
+ /**
61
+ * Schedule a repeating job
62
+ */
63
+ private scheduleRepeat;
64
+ /**
65
+ * Start stalled job checker
66
+ */
67
+ private startStalledChecker;
68
+ /**
69
+ * Check for stalled jobs and mark them
70
+ */
71
+ private checkStalledJobs;
72
+ /**
73
+ * Send webhook notification
74
+ */
75
+ private sendWebhook;
76
+ /**
77
+ * Get a specific job by ID
78
+ */
79
+ getJob(jobId: string): Promise<JobData | null>;
80
+ /**
81
+ * Get all jobs from the queue
82
+ */
83
+ getAllJobs(): Promise<JobData[]>;
84
+ /**
85
+ * Remove a specific job
86
+ */
87
+ removeJob(jobId: string): Promise<boolean>;
88
+ /**
89
+ * Pause the queue (stop processing new jobs)
90
+ */
91
+ pause(): void;
92
+ /**
93
+ * Resume the queue
94
+ */
95
+ resume(): void;
96
+ /**
97
+ * Drain the queue - process all pending jobs
98
+ */
99
+ drain(): Promise<void>;
100
+ /**
101
+ * Clean completed jobs older than a certain age
102
+ */
103
+ clean(maxAge?: number): Promise<number>;
41
104
  /**
42
105
  * Get all failed jobs from DLQ
43
106
  */
@@ -46,14 +109,21 @@ export declare class Queue {
46
109
  * Reprocess a failed job from DLQ
47
110
  */
48
111
  reprocessFailed(jobId: string): Promise<boolean>;
112
+ /**
113
+ * Get queue statistics
114
+ */
115
+ getConcurrency(): number;
49
116
  /**
50
117
  * Get queue statistics
51
118
  */
52
119
  getStats(): Promise<{
53
120
  active: number;
121
+ waiting: number;
122
+ delayed: number;
54
123
  pending: number;
55
124
  failed: number;
56
125
  completed: number;
126
+ stalled: number;
57
127
  }>;
58
128
  /**
59
129
  * Set up graceful shutdown handlers
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAoB,OAAO,EAAE,MAAM,aAAa,CAAC;AASnF;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,aAAa,CAAU;gBAEnB,MAAM,EAAE,WAAW;IAkC/B;;OAEG;YACW,UAAU;IASxB;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAItC;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB5C;;OAEG;YACW,cAAc;IAsD5B;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,kBAAkB;IAkChC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOzC;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBtD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAgBF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BhC"}
1
+ {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EAEZ,OAAO,EAGP,UAAU,EAGX,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,qBAAa,KAAM,SAAQ,YAAY;IACrC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,oBAAoB,CAAC,CAAiB;gBAElC,MAAM,EAAE,WAAW;IAmD/B;;OAEG;YACW,UAAU;IAexB;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAItC;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCtE;;OAEG;YACW,cAAc;IAuF5B;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;YACW,mBAAmB;IAUjC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,cAAc;IAmD5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,WAAW;IAazB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAOpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOtC;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBhD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,IAAI;IAMd;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B;;OAEG;IACG,KAAK,CAAC,MAAM,GAAE,MAA4B,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOzC;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBtD;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAmBF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAwChC"}