mongodash 2.0.0 → 2.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 (165) hide show
  1. package/README.md +107 -23
  2. package/dist/dashboard/index.html +40 -0
  3. package/dist/lib/playground/server.js +124 -0
  4. package/dist/lib/playground/server.js.map +1 -0
  5. package/dist/lib/src/ConcurrentRunner.js +141 -0
  6. package/dist/lib/src/ConcurrentRunner.js.map +1 -0
  7. package/dist/lib/{OnError.js → src/OnError.js} +2 -9
  8. package/dist/lib/src/OnError.js.map +1 -0
  9. package/dist/lib/{OnInfo.js → src/OnInfo.js} +5 -9
  10. package/dist/lib/src/OnInfo.js.map +1 -0
  11. package/dist/lib/{createContinuousLock.js → src/createContinuousLock.js} +4 -9
  12. package/dist/lib/src/createContinuousLock.js.map +1 -0
  13. package/dist/lib/{cronTasks.js → src/cronTasks.js} +128 -79
  14. package/dist/lib/src/cronTasks.js.map +1 -0
  15. package/dist/lib/{getCollection.js → src/getCollection.js} +1 -8
  16. package/dist/lib/src/getCollection.js.map +1 -0
  17. package/dist/lib/{getMongoClient.js → src/getMongoClient.js} +1 -8
  18. package/dist/lib/src/getMongoClient.js.map +1 -0
  19. package/dist/lib/src/globalsCollection.js +3 -0
  20. package/dist/lib/src/globalsCollection.js.map +1 -0
  21. package/dist/lib/src/index.js +94 -0
  22. package/dist/lib/src/index.js.map +1 -0
  23. package/dist/lib/src/initPromise.js +9 -0
  24. package/dist/lib/src/initPromise.js.map +1 -0
  25. package/dist/lib/src/mongoCompatibility.js +3 -0
  26. package/dist/lib/src/mongoCompatibility.js.map +1 -0
  27. package/dist/lib/src/parseInterval.js +53 -0
  28. package/dist/lib/src/parseInterval.js.map +1 -0
  29. package/dist/lib/src/prefixFilterKeys.js +62 -0
  30. package/dist/lib/src/prefixFilterKeys.js.map +1 -0
  31. package/dist/lib/src/processInBatches.js +39 -0
  32. package/dist/lib/src/processInBatches.js.map +1 -0
  33. package/dist/lib/src/reactiveTasks/LeaderElector.js +148 -0
  34. package/dist/lib/src/reactiveTasks/LeaderElector.js.map +1 -0
  35. package/dist/lib/src/reactiveTasks/MetricsCollector.js +403 -0
  36. package/dist/lib/src/reactiveTasks/MetricsCollector.js.map +1 -0
  37. package/dist/lib/src/reactiveTasks/ReactiveTaskManager.js +281 -0
  38. package/dist/lib/src/reactiveTasks/ReactiveTaskManager.js.map +1 -0
  39. package/dist/lib/src/reactiveTasks/ReactiveTaskOps.js +178 -0
  40. package/dist/lib/src/reactiveTasks/ReactiveTaskOps.js.map +1 -0
  41. package/dist/lib/src/reactiveTasks/ReactiveTaskPlanner.js +436 -0
  42. package/dist/lib/src/reactiveTasks/ReactiveTaskPlanner.js.map +1 -0
  43. package/dist/lib/src/reactiveTasks/ReactiveTaskReconciler.js +211 -0
  44. package/dist/lib/src/reactiveTasks/ReactiveTaskReconciler.js.map +1 -0
  45. package/dist/lib/src/reactiveTasks/ReactiveTaskRegistry.js +177 -0
  46. package/dist/lib/src/reactiveTasks/ReactiveTaskRegistry.js.map +1 -0
  47. package/dist/lib/src/reactiveTasks/ReactiveTaskRepository.js +348 -0
  48. package/dist/lib/src/reactiveTasks/ReactiveTaskRepository.js.map +1 -0
  49. package/dist/lib/src/reactiveTasks/ReactiveTaskRetryStrategy.js +146 -0
  50. package/dist/lib/src/reactiveTasks/ReactiveTaskRetryStrategy.js.map +1 -0
  51. package/dist/lib/src/reactiveTasks/ReactiveTaskTypes.js +27 -0
  52. package/dist/lib/src/reactiveTasks/ReactiveTaskTypes.js.map +1 -0
  53. package/dist/lib/src/reactiveTasks/ReactiveTaskWorker.js +179 -0
  54. package/dist/lib/src/reactiveTasks/ReactiveTaskWorker.js.map +1 -0
  55. package/dist/lib/src/reactiveTasks/compileWatchProjection.js +58 -0
  56. package/dist/lib/src/reactiveTasks/compileWatchProjection.js.map +1 -0
  57. package/dist/lib/src/reactiveTasks/index.js +291 -0
  58. package/dist/lib/src/reactiveTasks/index.js.map +1 -0
  59. package/dist/lib/src/reactiveTasks/queryToExpression.js +153 -0
  60. package/dist/lib/src/reactiveTasks/queryToExpression.js.map +1 -0
  61. package/dist/lib/src/reactiveTasks/validateTaskFilter.js +81 -0
  62. package/dist/lib/src/reactiveTasks/validateTaskFilter.js.map +1 -0
  63. package/dist/lib/src/task-management/OperationalTaskController.js +155 -0
  64. package/dist/lib/src/task-management/OperationalTaskController.js.map +1 -0
  65. package/dist/lib/src/task-management/index.js +20 -0
  66. package/dist/lib/src/task-management/index.js.map +1 -0
  67. package/dist/lib/src/task-management/serveDashboard.js +142 -0
  68. package/dist/lib/src/task-management/serveDashboard.js.map +1 -0
  69. package/dist/lib/src/task-management/types.js +3 -0
  70. package/dist/lib/src/task-management/types.js.map +1 -0
  71. package/dist/lib/{withLock.js → src/withLock.js} +2 -10
  72. package/dist/lib/src/withLock.js.map +1 -0
  73. package/dist/lib/{withTransaction.js → src/withTransaction.js} +3 -10
  74. package/dist/lib/src/withTransaction.js.map +1 -0
  75. package/dist/lib/tools/check-db-connection.js +21 -0
  76. package/dist/lib/tools/check-db-connection.js.map +1 -0
  77. package/dist/lib/tools/clean-testing-databases.js +5 -0
  78. package/dist/lib/tools/clean-testing-databases.js.map +1 -0
  79. package/dist/lib/tools/prepare-republish.js +20 -0
  80. package/dist/lib/tools/prepare-republish.js.map +1 -0
  81. package/dist/lib/tools/test-matrix-local.js +205 -0
  82. package/dist/lib/tools/test-matrix-local.js.map +1 -0
  83. package/dist/lib/tools/testingDatabase.js +48 -0
  84. package/dist/lib/tools/testingDatabase.js.map +1 -0
  85. package/dist/types/playground/server.d.ts +1 -0
  86. package/dist/types/src/ConcurrentRunner.d.ts +30 -0
  87. package/dist/types/{OnInfo.d.ts → src/OnInfo.d.ts} +1 -1
  88. package/dist/types/{cronTasks.d.ts → src/cronTasks.d.ts} +44 -1
  89. package/dist/types/src/globalsCollection.d.ts +4 -0
  90. package/dist/types/src/index.d.ts +28 -0
  91. package/dist/types/src/mongoCompatibility.d.ts +29 -0
  92. package/dist/types/src/parseInterval.d.ts +12 -0
  93. package/dist/types/src/prefixFilterKeys.d.ts +11 -0
  94. package/dist/types/src/processInBatches.d.ts +10 -0
  95. package/dist/types/src/reactiveTasks/LeaderElector.d.ts +42 -0
  96. package/dist/types/src/reactiveTasks/MetricsCollector.d.ts +73 -0
  97. package/dist/types/src/reactiveTasks/ReactiveTaskManager.d.ts +18 -0
  98. package/dist/types/src/reactiveTasks/ReactiveTaskOps.d.ts +17 -0
  99. package/dist/types/src/reactiveTasks/ReactiveTaskPlanner.d.ts +62 -0
  100. package/dist/types/src/reactiveTasks/ReactiveTaskReconciler.d.ts +29 -0
  101. package/dist/types/src/reactiveTasks/ReactiveTaskRegistry.d.ts +34 -0
  102. package/dist/types/src/reactiveTasks/ReactiveTaskRepository.d.ts +59 -0
  103. package/dist/types/src/reactiveTasks/ReactiveTaskRetryStrategy.d.ts +21 -0
  104. package/dist/types/src/reactiveTasks/ReactiveTaskTypes.d.ts +389 -0
  105. package/dist/types/src/reactiveTasks/ReactiveTaskWorker.d.ts +36 -0
  106. package/dist/types/src/reactiveTasks/compileWatchProjection.d.ts +12 -0
  107. package/dist/types/src/reactiveTasks/index.d.ts +82 -0
  108. package/dist/types/src/reactiveTasks/queryToExpression.d.ts +13 -0
  109. package/dist/types/src/reactiveTasks/validateTaskFilter.d.ts +10 -0
  110. package/dist/types/src/task-management/OperationalTaskController.d.ts +59 -0
  111. package/dist/types/src/task-management/index.d.ts +3 -0
  112. package/dist/types/src/task-management/serveDashboard.d.ts +12 -0
  113. package/dist/types/src/task-management/types.d.ts +95 -0
  114. package/dist/types/tools/check-db-connection.d.ts +2 -0
  115. package/dist/types/tools/clean-testing-databases.d.ts +1 -0
  116. package/dist/types/tools/prepare-republish.d.ts +2 -0
  117. package/dist/types/tools/test-matrix-local.d.ts +1 -0
  118. package/dist/types/tools/testingDatabase.d.ts +2 -0
  119. package/docs/.vitepress/cache/deps/_metadata.json +31 -0
  120. package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js +12824 -0
  121. package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js.map +7 -0
  122. package/docs/.vitepress/cache/deps/package.json +3 -0
  123. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4505 -0
  124. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  125. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +9731 -0
  126. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  127. package/docs/.vitepress/cache/deps/vue.js +347 -0
  128. package/docs/.vitepress/cache/deps/vue.js.map +7 -0
  129. package/docs/.vitepress/config.mts +50 -0
  130. package/docs/.vitepress/theme/index.ts +4 -0
  131. package/docs/.vitepress/theme/style.css +21 -0
  132. package/docs/assets/dashboard.png +0 -0
  133. package/docs/cron-tasks.md +172 -0
  134. package/docs/dashboard.md +117 -0
  135. package/docs/getters.md +31 -0
  136. package/docs/getting-started.md +186 -0
  137. package/docs/index.md +32 -0
  138. package/docs/initialization.md +59 -0
  139. package/docs/process-in-batches.md +73 -0
  140. package/docs/public/logo.png +0 -0
  141. package/docs/reactive-tasks.md +913 -0
  142. package/docs/with-lock.md +45 -0
  143. package/docs/with-transaction.md +65 -0
  144. package/grafana/reactive_tasks.json +765 -0
  145. package/package.json +131 -116
  146. package/dist/lib/OnError.js.map +0 -1
  147. package/dist/lib/OnInfo.js.map +0 -1
  148. package/dist/lib/createContinuousLock.js.map +0 -1
  149. package/dist/lib/cronTasks.js.map +0 -1
  150. package/dist/lib/getCollection.js.map +0 -1
  151. package/dist/lib/getMongoClient.js.map +0 -1
  152. package/dist/lib/index.js +0 -64
  153. package/dist/lib/index.js.map +0 -1
  154. package/dist/lib/initPromise.js +0 -17
  155. package/dist/lib/initPromise.js.map +0 -1
  156. package/dist/lib/withLock.js.map +0 -1
  157. package/dist/lib/withTransaction.js.map +0 -1
  158. package/dist/types/index.d.ts +0 -17
  159. /package/dist/types/{OnError.d.ts → src/OnError.d.ts} +0 -0
  160. /package/dist/types/{createContinuousLock.d.ts → src/createContinuousLock.d.ts} +0 -0
  161. /package/dist/types/{getCollection.d.ts → src/getCollection.d.ts} +0 -0
  162. /package/dist/types/{getMongoClient.d.ts → src/getMongoClient.d.ts} +0 -0
  163. /package/dist/types/{initPromise.d.ts → src/initPromise.d.ts} +0 -0
  164. /package/dist/types/{withLock.d.ts → src/withLock.d.ts} +0 -0
  165. /package/dist/types/{withTransaction.d.ts → src/withTransaction.d.ts} +0 -0
@@ -1,11 +1,4 @@
1
- /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
4
- *
5
- * Copyright (c) 2025 Václav Oborník
6
- * Released under the MIT license
7
- */
8
- "use strict";
1
+ "use strict";
9
2
  var __rest = (this && this.__rest) || function (s, e) {
10
3
  var t = {};
11
4
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -25,16 +18,19 @@ exports.stopCronTasks = stopCronTasks;
25
18
  exports.startCronTasks = startCronTasks;
26
19
  exports.scheduleCronTaskImmediately = scheduleCronTaskImmediately;
27
20
  exports.cronTask = cronTask;
28
- // import * as _debug from 'debug';
29
- const cron_parser_1 = require("cron-parser");
30
- const parse_duration_1 = require("parse-duration");
21
+ exports.getCronTasksList = getCronTasksList;
22
+ exports.triggerCronTask = triggerCronTask;
23
+ exports.getRegisteredCronTaskIds = getRegisteredCronTaskIds;
31
24
  const createContinuousLock_1 = require("./createContinuousLock");
32
25
  const getCollection_1 = require("./getCollection");
33
26
  const initPromise_1 = require("./initPromise");
27
+ const parseInterval_1 = require("./parseInterval");
34
28
  exports.CODE_CRON_TASK_STARTED = 'cronTaskStarted';
35
29
  exports.CODE_CRON_TASK_FINISHED = 'cronTaskFinished';
36
30
  exports.CODE_CRON_TASK_SCHEDULED = 'cronTaskScheduled';
37
31
  exports.CODE_CRON_TASK_FAILED = 'cronTaskFailed';
32
+ // const debug = _debug('mongodash:cronTasks');
33
+ const debug = (..._args) => { };
38
34
  class TaskDocument {
39
35
  constructor(_id, runSince) {
40
36
  this._id = _id;
@@ -61,40 +57,12 @@ const state = {
61
57
  ensureIndexPromise: null,
62
58
  cronExpressionParserOptions: {},
63
59
  };
64
- let _taskCaller;
65
- let _taskFilter;
66
- let _onError;
67
- let _onInfo;
68
- function dateInMillis(milliseconds) {
69
- return new Date(Date.now() + milliseconds);
70
- }
71
- const invalidIntervalMessage = `Invalid interval.`;
60
+ let taskCaller;
61
+ let taskFilter;
62
+ let onError;
63
+ let onInfo;
72
64
  function createIntervalFunctionFromScalar(interval) {
73
- if (typeof interval === 'number') {
74
- if (!Number.isFinite(interval)) {
75
- throw new Error('Interval number has to be finite.');
76
- }
77
- return () => dateInMillis(interval);
78
- }
79
- else if (typeof interval !== 'string') {
80
- throw new Error(invalidIntervalMessage);
81
- }
82
- if (/^CRON /i.test(interval)) {
83
- try {
84
- const expression = interval.slice(5);
85
- const parsedExpression = cron_parser_1.default.parse(expression, state.cronExpressionParserOptions);
86
- return () => parsedExpression.next().toDate();
87
- }
88
- catch (err) {
89
- throw new Error(`${invalidIntervalMessage} ${err.message}.`);
90
- }
91
- }
92
- const duration = (0, parse_duration_1.default)(interval);
93
- // debug('parsed duration: ', duration);
94
- if (typeof duration !== 'number') {
95
- throw new Error(invalidIntervalMessage);
96
- }
97
- return () => dateInMillis(duration);
65
+ return (0, parseInterval_1.createIntervalFunction)(interval, { cronOptions: state.cronExpressionParserOptions });
98
66
  }
99
67
  async function getNextRunDate(intervalFunction) {
100
68
  const maybeDate = await intervalFunction();
@@ -108,7 +76,7 @@ async function runCronTask(taskId) {
108
76
  if ((_a = new Error().stack) === null || _a === void 0 ? void 0 : _a.includes('mongoDashRunTaskNotCyclic')) {
109
77
  throw new Error('It is not possible to call runCronTask inside another running task. Use the scheduleCronTaskImmediately() function instead.');
110
78
  }
111
- // debug(`runCronTask called for ${taskId}`);
79
+ debug(`runCronTask called for ${taskId}`);
112
80
  if (!state.tasks.has(taskId)) {
113
81
  throw new Error(`Cannot run unknown task '${taskId}'.`);
114
82
  }
@@ -135,7 +103,7 @@ function getUnlockedFilter() {
135
103
  }
136
104
  function getTasksToProcessFilter() {
137
105
  return {
138
- $and: [{ _id: { $in: Array.from(state.tasks.keys()).filter((taskId) => _taskFilter({ taskId })) } }, getUnlockedFilter()],
106
+ $and: [{ _id: { $in: Array.from(state.tasks.keys()).filter((taskId) => taskFilter({ taskId })) } }, getUnlockedFilter()],
139
107
  };
140
108
  }
141
109
  async function findATaskToRun(enforcedTask) {
@@ -148,8 +116,8 @@ async function findATaskToRun(enforcedTask) {
148
116
  $and: [{ $or: [{ runSince: { $lte: new Date() } }, { runImmediately: true }] }, getTasksToProcessFilter()],
149
117
  };
150
118
  }
151
- // debug('finding a task', JSON.stringify(filter, null, 2));
152
- const { value: document } = await state.collection.findOneAndUpdate(filter, {
119
+ debug('finding a task', JSON.stringify(filter, null, 2));
120
+ const result = await state.collection.findOneAndUpdate(filter, {
153
121
  $set: {
154
122
  lockedTill: getLockDate(),
155
123
  runImmediately: false,
@@ -170,6 +138,8 @@ async function findATaskToRun(enforcedTask) {
170
138
  projection: { _id: true, runImmediately: true },
171
139
  includeResultMetadata: true,
172
140
  });
141
+ // Handle v4/v5+ compatibility
142
+ const document = result.value;
173
143
  if (!document) {
174
144
  if (enforcedTask) {
175
145
  enforcedTask.reject(new Error('The task document not found or is locked right now.'));
@@ -186,41 +156,40 @@ async function findATaskToRun(enforcedTask) {
186
156
  });
187
157
  return null;
188
158
  }
189
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
190
159
  return state.tasks.get(document._id);
191
160
  }
192
161
  async function processTask(task, enforcedTask) {
193
- const stopContinuousLock = (0, createContinuousLock_1.createContinuousLock)(state.collection, task.taskId, 'lockedTill', lockTime, _onError);
162
+ const stopContinuousLock = (0, createContinuousLock_1.createContinuousLock)(state.collection, task.taskId, 'lockedTill', lockTime, onError);
194
163
  const processTheTask = async () => {
195
- // debug(`processing task ${task.taskId}`);
164
+ debug(`processing task ${task.taskId} `);
196
165
  let taskError = null;
197
166
  let nextRunDate;
198
167
  let nextRunScheduled = false;
199
168
  const start = new Date();
200
169
  try {
201
170
  function mongoDashRunTaskNotCyclic() {
202
- _onInfo({ message: `Cron task '${task.taskId}' started.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_STARTED });
171
+ onInfo({ message: `Cron task '${task.taskId}' started.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_STARTED });
203
172
  return task.task();
204
173
  }
205
174
  await mongoDashRunTaskNotCyclic();
206
175
  const duration = Date.now() - start.getTime();
207
- _onInfo({ message: `Cron task '${task.taskId}' finished in ${duration}ms.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_FINISHED, duration });
176
+ onInfo({ message: `Cron task '${task.taskId}' finished in ${duration} ms.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_FINISHED, duration });
208
177
  }
209
178
  catch (err) {
210
179
  const duration = Date.now() - start.getTime();
211
- const reason = err instanceof Error ? err.message : `${err}`;
212
- _onInfo({ message: `Cron task '${task.taskId}' failed in ${duration}ms.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_FAILED, reason, duration });
180
+ const reason = err instanceof Error ? err.message : `${err} `;
181
+ onInfo({ message: `Cron task '${task.taskId}' failed in ${duration} ms.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_FAILED, reason, duration });
213
182
  taskError = err;
214
183
  }
215
184
  try {
216
185
  await stopContinuousLock(); // to avoid possibility of lock after the following document update
217
186
  nextRunDate = await getNextRunDate(task.intervalFunction);
218
- // debug(`scheduling task ${task.taskId} to run in ${nextRunDate.getTime() - Date.now()}ms`);
187
+ debug(`scheduling task ${task.taskId} to run in ${nextRunDate.getTime() - Date.now()} ms`);
219
188
  await state.collection.updateOne({ _id: task.taskId }, {
220
189
  $set: {
221
190
  runSince: nextRunDate,
222
191
  lockedTill: null,
223
- 'runLog.0.error': taskError ? `${taskError}` : null,
192
+ 'runLog.0.error': taskError ? `${taskError} ` : null,
224
193
  'runLog.0.finishedAt': new Date(),
225
194
  },
226
195
  });
@@ -236,11 +205,11 @@ async function processTask(task, enforcedTask) {
236
205
  }
237
206
  }
238
207
  else if (taskError) {
239
- _onError(taskError);
208
+ onError(taskError);
240
209
  }
241
210
  // we want to inform about the scheduling after the
242
211
  if (nextRunScheduled) {
243
- _onInfo({
212
+ onInfo({
244
213
  message: `Cron task '${task.taskId}' scheduled to ${nextRunDate.toISOString()}.`,
245
214
  taskId: task.taskId,
246
215
  code: exports.CODE_CRON_TASK_SCHEDULED,
@@ -250,13 +219,13 @@ async function processTask(task, enforcedTask) {
250
219
  }
251
220
  };
252
221
  try {
253
- await _taskCaller(processTheTask);
222
+ await taskCaller(processTheTask);
254
223
  }
255
224
  catch (err) {
256
225
  // todo revise why we need to do this
257
226
  // this should fix situations when the _taskCaller has a problem
258
227
  await stopContinuousLock();
259
- _onError(err);
228
+ onError(err);
260
229
  }
261
230
  }
262
231
  /** can never throw */
@@ -273,12 +242,12 @@ async function getWaitTimeByNextTask() {
273
242
  return Math.min(Math.max(timeToNext, 0), noTaskWaitTime);
274
243
  }
275
244
  catch (error) {
276
- _onError(error);
245
+ onError(error);
277
246
  return noTaskWaitTime;
278
247
  }
279
248
  }
280
249
  function runATask() {
281
- // debug('runATask called');
250
+ debug('runATask called');
282
251
  state.working = true;
283
252
  (async () => {
284
253
  await initPromise_1.initPromise;
@@ -288,18 +257,18 @@ function runATask() {
288
257
  try {
289
258
  task = await findATaskToRun(enforcedTask);
290
259
  if (!task) {
291
- // debug('no pending task found');
260
+ debug('no pending task found');
292
261
  return; // the finally statement will be called anyway
293
262
  }
294
263
  await processTask(task, enforcedTask);
295
264
  }
296
265
  catch (error) {
297
- // debug(`Catch error ${error}`);
266
+ debug(`Catch error ${error} `);
298
267
  if (enforcedTask) {
299
268
  enforcedTask.reject(error);
300
269
  }
301
270
  else {
302
- _onError(error);
271
+ onError(error);
303
272
  }
304
273
  }
305
274
  finally {
@@ -319,9 +288,9 @@ function runATask() {
319
288
  }
320
289
  // should we still trigger next?
321
290
  if (shouldTriggerNext()) {
322
- // debug(`SCHEDULING NEXT CHECK AFTER ${waitTime}ms`);
291
+ debug(`SCHEDULING NEXT CHECK AFTER ${waitTime} ms`);
323
292
  state.nextTaskTimeoutId = setTimeout(() => {
324
- // debug("it's time!");
293
+ debug("it's time!");
325
294
  state.nextTaskTimeoutId = null;
326
295
  runATask();
327
296
  }, waitTime);
@@ -331,16 +300,16 @@ function runATask() {
331
300
  }
332
301
  })();
333
302
  }
334
- function init({ runCronTasks, cronTaskFilter, cronExpressionParserOptions, onError, onInfo, cronTaskCaller }) {
335
- if (cronExpressionParserOptions.endDate) {
303
+ function init(initOptions) {
304
+ if (initOptions.cronExpressionParserOptions.endDate) {
336
305
  throw new Error("The 'endDate' parameter of the cron-parser package is not supported yet.");
337
306
  }
338
- state.shouldRun = runCronTasks;
339
- _onError = onError;
340
- _onInfo = onInfo;
341
- _taskCaller = cronTaskCaller;
342
- _taskFilter = cronTaskFilter;
343
- state.cronExpressionParserOptions = cronExpressionParserOptions;
307
+ state.shouldRun = initOptions.runCronTasks;
308
+ onError = initOptions.onError;
309
+ onInfo = initOptions.onInfo;
310
+ taskCaller = initOptions.cronTaskCaller;
311
+ taskFilter = initOptions.cronTaskFilter;
312
+ state.cronExpressionParserOptions = initOptions.cronExpressionParserOptions;
344
313
  }
345
314
  function ensureStarted() {
346
315
  // terminate waiting if there is any
@@ -349,13 +318,13 @@ function ensureStarted() {
349
318
  state.nextTaskTimeoutId = null;
350
319
  }
351
320
  if (!state.working) {
352
- // debug('STARTING LOOP');
321
+ debug('STARTING LOOP');
353
322
  runATask();
354
323
  }
355
324
  // else the loop is already set
356
325
  }
357
326
  function stopCronTasks() {
358
- // debug('STOPPING CRON TASKS');
327
+ debug('STOPPING CRON TASKS');
359
328
  state.shouldRun = false;
360
329
  if (state.nextTaskTimeoutId) {
361
330
  clearTimeout(state.nextTaskTimeoutId);
@@ -391,10 +360,90 @@ async function cronTask(taskId, interval, task) {
391
360
  task,
392
361
  intervalFunction,
393
362
  });
394
- // debug(`task ${taskId} has been registered`);
363
+ debug(`task ${taskId} has been registered`);
395
364
  await ensureIndex();
396
365
  if (state.shouldRun) {
397
366
  ensureStarted();
398
367
  }
399
368
  }
369
+ /**
370
+ * Lists cron tasks with pagination and sorting.
371
+ */
372
+ async function getCronTasksList(query = {}) {
373
+ var _a, _b, _c, _d, _e;
374
+ const limit = (_a = query.limit) !== null && _a !== void 0 ? _a : 50;
375
+ const skip = (_b = query.skip) !== null && _b !== void 0 ? _b : 0;
376
+ let sortField = ((_c = query.sort) === null || _c === void 0 ? void 0 : _c.field) || 'runSince';
377
+ if (sortField === 'nextRunAt')
378
+ sortField = 'runSince';
379
+ const sort = { [sortField]: (_e = (_d = query.sort) === null || _d === void 0 ? void 0 : _d.direction) !== null && _e !== void 0 ? _e : 1 };
380
+ let localTaskIds = Array.from(state.tasks.keys());
381
+ if (query.filter) {
382
+ const regex = new RegExp(query.filter, 'i');
383
+ localTaskIds = localTaskIds.filter((id) => regex.test(id));
384
+ }
385
+ const filter = {
386
+ _id: { $in: localTaskIds },
387
+ };
388
+ const [docs, total] = await Promise.all([
389
+ state.collection.find(filter).sort(sort).skip(skip).limit(limit).toArray(),
390
+ state.collection.countDocuments(filter),
391
+ ]);
392
+ const items = docs.map((doc) => {
393
+ const lastRun = doc.runLog[0] || null;
394
+ let lastRunData = null;
395
+ if (lastRun) {
396
+ lastRunData = {
397
+ startedAt: lastRun.startedAt,
398
+ finishedAt: lastRun.finishedAt,
399
+ error: lastRun.error,
400
+ durationMs: lastRun.finishedAt ? lastRun.finishedAt.getTime() - lastRun.startedAt.getTime() : undefined,
401
+ };
402
+ }
403
+ let status = 'idle';
404
+ if (doc.lockedTill && doc.lockedTill > new Date()) {
405
+ status = 'locked';
406
+ // We can assume 'running' if locked, unless just failed/finished and lock not released yet?
407
+ // Actually 'lockedTill' is set during processing.
408
+ // If we want to distinguish 'running' from just 'locked', it's hard without another field.
409
+ // But 'locked' usually means running or zombie.
410
+ status = 'running';
411
+ }
412
+ else if (doc.runImmediately) {
413
+ status = 'scheduled';
414
+ }
415
+ else if (lastRun === null || lastRun === void 0 ? void 0 : lastRun.error) {
416
+ // Only if the LATEST run failed and we are not currently running
417
+ status = 'failed';
418
+ }
419
+ return {
420
+ _id: doc._id,
421
+ status,
422
+ nextRunAt: doc.runSince,
423
+ runImmediately: doc.runImmediately,
424
+ lockedTill: doc.lockedTill,
425
+ lastRun: lastRunData,
426
+ isRegistered: state.tasks.has(doc._id),
427
+ };
428
+ });
429
+ return {
430
+ items,
431
+ total,
432
+ limit,
433
+ offset: skip,
434
+ };
435
+ }
436
+ /**
437
+ * Triggers a cron task immediately.
438
+ * Alias for scheduleCronTaskImmediately but returns the new state or confirmation.
439
+ */
440
+ async function triggerCronTask(taskId) {
441
+ return scheduleCronTaskImmediately(taskId);
442
+ }
443
+ /**
444
+ * Returns IDs of all registered cron tasks in this instance.
445
+ */
446
+ function getRegisteredCronTaskIds() {
447
+ return Array.from(state.tasks.keys()).sort();
448
+ }
400
449
  //# sourceMappingURL=cronTasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cronTasks.js","sourceRoot":"","sources":["../../../src/cronTasks.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,4 @@
1
- /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
4
- *
5
- * Copyright (c) 2025 Václav Oborník
6
- * Released under the MIT license
7
- */
8
- 'use strict';
1
+ 'use strict';
9
2
  Object.defineProperty(exports, "__esModule", { value: true });
10
3
  exports.init = init;
11
4
  exports.getCollection = getCollection;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCollection.js","sourceRoot":"","sources":["../../../src/getCollection.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAoBb,oBAEC;AAID,sCAaC;AApCD,qDAAkD;AAIlD,IAAI,iBAA2C,CAAC;AAahD,SAAgB,IAAI,CAAC,OAAoB;IACrC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAClD,CAAC;AAED,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB,SAAgB,aAAa,CAAqB,IAAY;IAC1D,IAAI,CAAC;QACD,gBAAgB,EAAE,CAAC;QACnB,IAAI,iBAAiB,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAyB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,UAAU,EAAE,CAAC;gBACb,OAAO,UAAU,CAAC;YACtB,CAAC;QACL,CAAC;QACD,OAAO,IAAA,+BAAc,GAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAI,IAAI,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACP,gBAAgB,EAAE,CAAC;IACvB,CAAC;AACL,CAAC"}
@@ -1,11 +1,4 @@
1
- /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
4
- *
5
- * Copyright (c) 2025 Václav Oborník
6
- * Released under the MIT license
7
- */
8
- 'use strict';
1
+ 'use strict';
9
2
  Object.defineProperty(exports, "__esModule", { value: true });
10
3
  exports.getMongoClient = getMongoClient;
11
4
  exports.init = init;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMongoClient.js","sourceRoot":"","sources":["../../../src/getMongoClient.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,wCAKC;AAMD,oBAeC;AA9BD,qCAA0D;AAE1D,IAAI,mBAAgC,CAAC;AAErC,SAAgB,cAAc;IAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAMM,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC3C,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,eAAe,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACnF,CAAC;QACD,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAC9C,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,mBAAmB,GAAG,IAAI,qBAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1E,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAChG,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=globalsCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalsCollection.js","sourceRoot":"","sources":["../../../src/globalsCollection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationalTaskController = exports.serveDashboard = exports.processInBatches = exports.retryReactiveTasks = exports.countReactiveTasks = exports.getReactiveTasks = exports.CODE_REACTIVE_TASK_LEADER_LOCK_LOST = exports.CODE_REACTIVE_TASK_PLANNER_STREAM_ERROR = exports.CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_FINISHED = exports.CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_STARTED = exports.CODE_REACTIVE_TASK_PLANNER_STOPPED = exports.CODE_REACTIVE_TASK_PLANNER_STARTED = exports.CODE_REACTIVE_TASK_FAILED = exports.CODE_REACTIVE_TASK_FINISHED = exports.CODE_REACTIVE_TASK_STARTED = exports._scheduler = exports.getPrometheusMetrics = exports.stopReactiveTasks = exports.startReactiveTasks = exports.TaskConditionFailedError = exports.reactiveTask = exports.registerPostCommitHook = exports.withTransaction = exports.LockAlreadyAcquiredError = exports.isLockAlreadyAcquiredError = exports.withLock = exports.getMongoClient = exports.getCollection = exports.triggerCronTask = exports.getCronTasksList = exports.CODE_CRON_TASK_FAILED = exports.CODE_CRON_TASK_SCHEDULED = exports.CODE_CRON_TASK_FINISHED = exports.CODE_CRON_TASK_STARTED = exports.stopCronTasks = exports.startCronTasks = exports.scheduleCronTaskImmediately = exports.runCronTask = exports.cronTask = void 0;
4
+ exports.init = init;
5
+ const cronTasks_1 = require("./cronTasks");
6
+ const reactiveTasks_1 = require("./reactiveTasks");
7
+ const getCollection_1 = require("./getCollection");
8
+ const getMongoClient_1 = require("./getMongoClient");
9
+ const OnError_1 = require("./OnError");
10
+ const OnInfo_1 = require("./OnInfo");
11
+ const withLock_1 = require("./withLock");
12
+ const withTransaction_1 = require("./withTransaction");
13
+ const initPromise_1 = require("./initPromise");
14
+ var cronTasks_2 = require("./cronTasks");
15
+ Object.defineProperty(exports, "cronTask", { enumerable: true, get: function () { return cronTasks_2.cronTask; } });
16
+ Object.defineProperty(exports, "runCronTask", { enumerable: true, get: function () { return cronTasks_2.runCronTask; } });
17
+ Object.defineProperty(exports, "scheduleCronTaskImmediately", { enumerable: true, get: function () { return cronTasks_2.scheduleCronTaskImmediately; } });
18
+ Object.defineProperty(exports, "startCronTasks", { enumerable: true, get: function () { return cronTasks_2.startCronTasks; } });
19
+ Object.defineProperty(exports, "stopCronTasks", { enumerable: true, get: function () { return cronTasks_2.stopCronTasks; } });
20
+ Object.defineProperty(exports, "CODE_CRON_TASK_STARTED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_STARTED; } });
21
+ Object.defineProperty(exports, "CODE_CRON_TASK_FINISHED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_FINISHED; } });
22
+ Object.defineProperty(exports, "CODE_CRON_TASK_SCHEDULED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_SCHEDULED; } });
23
+ Object.defineProperty(exports, "CODE_CRON_TASK_FAILED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_FAILED; } });
24
+ Object.defineProperty(exports, "getCronTasksList", { enumerable: true, get: function () { return cronTasks_2.getCronTasksList; } });
25
+ Object.defineProperty(exports, "triggerCronTask", { enumerable: true, get: function () { return cronTasks_2.triggerCronTask; } });
26
+ var getCollection_2 = require("./getCollection");
27
+ Object.defineProperty(exports, "getCollection", { enumerable: true, get: function () { return getCollection_2.getCollection; } });
28
+ var getMongoClient_2 = require("./getMongoClient");
29
+ Object.defineProperty(exports, "getMongoClient", { enumerable: true, get: function () { return getMongoClient_2.getMongoClient; } });
30
+ var withLock_2 = require("./withLock");
31
+ Object.defineProperty(exports, "withLock", { enumerable: true, get: function () { return withLock_2.withLock; } });
32
+ Object.defineProperty(exports, "isLockAlreadyAcquiredError", { enumerable: true, get: function () { return withLock_2.isLockAlreadyAcquiredError; } });
33
+ Object.defineProperty(exports, "LockAlreadyAcquiredError", { enumerable: true, get: function () { return withLock_2.LockAlreadyAcquiredError; } });
34
+ var withTransaction_2 = require("./withTransaction");
35
+ Object.defineProperty(exports, "withTransaction", { enumerable: true, get: function () { return withTransaction_2.withTransaction; } });
36
+ Object.defineProperty(exports, "registerPostCommitHook", { enumerable: true, get: function () { return withTransaction_2.registerPostCommitHook; } });
37
+ var reactiveTasks_2 = require("./reactiveTasks");
38
+ Object.defineProperty(exports, "reactiveTask", { enumerable: true, get: function () { return reactiveTasks_2.reactiveTask; } });
39
+ Object.defineProperty(exports, "TaskConditionFailedError", { enumerable: true, get: function () { return reactiveTasks_2.TaskConditionFailedError; } });
40
+ Object.defineProperty(exports, "startReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.startReactiveTasks; } });
41
+ Object.defineProperty(exports, "stopReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.stopReactiveTasks; } });
42
+ Object.defineProperty(exports, "getPrometheusMetrics", { enumerable: true, get: function () { return reactiveTasks_2.getPrometheusMetrics; } });
43
+ Object.defineProperty(exports, "_scheduler", { enumerable: true, get: function () { return reactiveTasks_2._scheduler; } });
44
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_STARTED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_STARTED; } });
45
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_FINISHED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_FINISHED; } });
46
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_FAILED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_FAILED; } });
47
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_STARTED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_STARTED; } });
48
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_STOPPED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_STOPPED; } });
49
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_STARTED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_STARTED; } });
50
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_FINISHED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_FINISHED; } });
51
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_STREAM_ERROR", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_STREAM_ERROR; } });
52
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_LEADER_LOCK_LOST", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_LEADER_LOCK_LOST; } });
53
+ Object.defineProperty(exports, "getReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.getReactiveTasks; } });
54
+ Object.defineProperty(exports, "countReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.countReactiveTasks; } });
55
+ Object.defineProperty(exports, "retryReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.retryReactiveTasks; } });
56
+ var processInBatches_1 = require("./processInBatches");
57
+ Object.defineProperty(exports, "processInBatches", { enumerable: true, get: function () { return processInBatches_1.processInBatches; } });
58
+ var task_management_1 = require("./task-management");
59
+ Object.defineProperty(exports, "serveDashboard", { enumerable: true, get: function () { return task_management_1.serveDashboard; } });
60
+ Object.defineProperty(exports, "OperationalTaskController", { enumerable: true, get: function () { return task_management_1.OperationalTaskController; } });
61
+ let initCalled = false;
62
+ async function init(options) {
63
+ var _a, _b, _c, _d, _e, _f, _g;
64
+ if (initCalled) {
65
+ throw new Error('init method can be called only once.');
66
+ }
67
+ initCalled = true;
68
+ const onError = options.onError ? (0, OnError_1.secureOnError)(options.onError) : OnError_1.defaultOnError;
69
+ const onInfo = options.onInfo ? (0, OnInfo_1.secureOnInfo)(options.onInfo) : OnInfo_1.defaultOnInfo;
70
+ const taskCaller = options.taskCaller || ((task) => task());
71
+ await (0, getMongoClient_1.init)(options);
72
+ (0, getCollection_1.init)({ collectionFactory: (_a = options.collectionFactory) !== null && _a !== void 0 ? _a : null });
73
+ let globalsCollection;
74
+ if (!options.globalsCollection || typeof options.globalsCollection === 'string') {
75
+ globalsCollection = (0, getCollection_1.getCollection)((_b = options.globalsCollection) !== null && _b !== void 0 ? _b : '_mongodash_globals');
76
+ }
77
+ else {
78
+ globalsCollection = options.globalsCollection;
79
+ }
80
+ (0, withLock_1.init)({ onError });
81
+ (0, withTransaction_1.init)({ onError, onInfo });
82
+ (0, cronTasks_1.init)({
83
+ runCronTasks: (_c = options.runCronTasks) !== null && _c !== void 0 ? _c : true,
84
+ cronExpressionParserOptions: (_d = options.cronExpressionParserOptions) !== null && _d !== void 0 ? _d : {},
85
+ onError,
86
+ onInfo,
87
+ cronTaskCaller: (_e = options.cronTaskCaller) !== null && _e !== void 0 ? _e : taskCaller,
88
+ cronTaskFilter: (_f = options.cronTaskFilter) !== null && _f !== void 0 ? _f : (() => true),
89
+ });
90
+ (0, reactiveTasks_1.init)(Object.assign(Object.assign({}, options), { globalsCollection: globalsCollection, onError,
91
+ onInfo, reactiveTaskCaller: (_g = options.reactiveTaskCaller) !== null && _g !== void 0 ? _g : taskCaller }));
92
+ (0, initPromise_1.resolveInitPromise)();
93
+ }
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;AAiFA,oBA2CC;AA5HD,2CAAyF;AACzF,mDAAqG;AACrG,mDAAoH;AACpH,qDAAqG;AACrG,uCAAmE;AACnE,qCAA+D;AAC/D,yCAAkD;AAClD,uDAAgE;AAChE,+CAAmD;AAGnD,yCAmBqB;AAlBjB,qGAAA,QAAQ,OAAA;AAER,wGAAA,WAAW,OAAA;AACX,wHAAA,2BAA2B,OAAA;AAC3B,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AAGb,mHAAA,sBAAsB,OAAA;AACtB,oHAAA,uBAAuB,OAAA;AACvB,qHAAA,wBAAwB,OAAA;AACxB,kHAAA,qBAAqB,OAAA;AACrB,6GAAA,gBAAgB,OAAA;AAChB,4GAAA,eAAe,OAAA;AAMnB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,uCAA6G;AAApG,oGAAA,QAAQ,OAAA;AAAE,sHAAA,0BAA0B,OAAA;AAAmB,oHAAA,wBAAwB,OAAA;AACxF,qDAA4F;AAAnF,kHAAA,eAAe,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AAChD,iDAqByB;AApBrB,6GAAA,YAAY,OAAA;AAGZ,yHAAA,wBAAwB,OAAA;AACxB,mHAAA,kBAAkB,OAAA;AAClB,kHAAA,iBAAiB,OAAA;AACjB,qHAAA,oBAAoB,OAAA;AACpB,2GAAA,UAAU,OAAA;AACV,2HAAA,0BAA0B,OAAA;AAC1B,4HAAA,2BAA2B,OAAA;AAC3B,0HAAA,yBAAyB,OAAA;AACzB,mIAAA,kCAAkC,OAAA;AAClC,mIAAA,kCAAkC,OAAA;AAClC,kJAAA,iDAAiD,OAAA;AACjD,mJAAA,kDAAkD,OAAA;AAClD,wIAAA,uCAAuC,OAAA;AACvC,oIAAA,mCAAmC,OAAA;AACnC,iHAAA,gBAAgB,OAAA;AAChB,mHAAA,kBAAkB,OAAA;AAClB,mHAAA,kBAAkB,OAAA;AAEtB,uDAAuG;AAA9F,oHAAA,gBAAgB,OAAA;AACzB,qDAA8E;AAArE,iHAAA,cAAc,OAAA;AAAE,4HAAA,yBAAyB,OAAA;AAElD,IAAI,UAAU,GAAG,KAAK,CAAC;AAoBhB,KAAK,UAAU,IAAI,CAAC,OAAoB;;IAC3C,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IACD,UAAU,GAAG,IAAI,CAAC;IAElB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,uBAAa,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAc,CAAC;IAClF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,qBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,sBAAa,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAA,qBAAe,EAAC,OAAO,CAAC,CAAC;IAE/B,IAAA,oBAAiB,EAAC,EAAE,iBAAiB,EAAE,MAAA,OAAO,CAAC,iBAAiB,mCAAI,IAAI,EAAE,CAAC,CAAC;IAE5E,IAAI,iBAAoC,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QAC9E,iBAAiB,GAAG,IAAA,6BAAa,EAAC,MAAA,OAAO,CAAC,iBAAiB,mCAAI,oBAAoB,CAAiC,CAAC;IACzH,CAAC;SAAM,CAAC;QACJ,iBAAiB,GAAG,OAAO,CAAC,iBAAiD,CAAC;IAClF,CAAC;IAED,IAAA,eAAY,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1B,IAAA,sBAAmB,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzC,IAAA,gBAAa,EAAC;QACV,YAAY,EAAE,MAAA,OAAO,CAAC,YAAY,mCAAI,IAAI;QAC1C,2BAA2B,EAAE,MAAA,OAAO,CAAC,2BAA2B,mCAAI,EAAE;QACtE,OAAO;QACP,MAAM;QACN,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,UAAU;QACpD,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACzD,CAAC,CAAC;IAEH,IAAA,oBAAiB,kCACV,OAAO,KACV,iBAAiB,EAAE,iBAAiB,EACpC,OAAO;QACP,MAAM,EACN,kBAAkB,EAAE,MAAA,OAAO,CAAC,kBAAkB,mCAAI,UAAU,IAC9D,CAAC;IAEH,IAAA,gCAAkB,GAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveInitPromise = exports.initPromise = void 0;
4
+ let _resolve;
5
+ exports.initPromise = new Promise((resolve) => {
6
+ _resolve = resolve;
7
+ });
8
+ exports.resolveInitPromise = _resolve;
9
+ //# sourceMappingURL=initPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initPromise.js","sourceRoot":"","sources":["../../../src/initPromise.ts"],"names":[],"mappings":";;;AAAA,IAAI,QAAoB,CAAC;AACZ,QAAA,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;IACrD,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAC,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,QAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mongoCompatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoCompatibility.js","sourceRoot":"","sources":["../../../src/mongoCompatibility.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createIntervalFunction = createIntervalFunction;
4
+ const CronParser = require('cron-parser');
5
+ const { Duration } = require('@sapphire/duration');
6
+ /**
7
+ * Create a function that returns the next run Date based on an interval specification.
8
+ *
9
+ * Supports:
10
+ * - Number: returns Date that is `interval` milliseconds from now
11
+ * - Duration string: '1h', '24h', '7d' - returns Date that is duration from now
12
+ * - Cron expression: 'CRON 0 3 * * *' (must start with CRON) - returns next cron occurrence
13
+ */
14
+ function createIntervalFunction(interval, options = {}) {
15
+ const { cronOptions = {} } = options;
16
+ if (typeof interval === 'number') {
17
+ if (!Number.isFinite(interval)) {
18
+ throw new Error(`Error: Interval number has to be finite.`);
19
+ }
20
+ return (referenceDate) => { var _a; return new Date(((_a = referenceDate === null || referenceDate === void 0 ? void 0 : referenceDate.getTime()) !== null && _a !== void 0 ? _a : Date.now()) + interval); };
21
+ }
22
+ if (typeof interval !== 'string') {
23
+ throw new Error('Error: Invalid interval.');
24
+ }
25
+ // Check for CRON prefix (case insensitive)
26
+ if (/^CRON /i.test(interval)) {
27
+ try {
28
+ const expression = interval.slice(5); // Remove "CRON " prefix
29
+ // Validate immediately
30
+ CronParser.CronExpressionParser.parse(expression, cronOptions);
31
+ // We use parse to handle the options correctly, specifically currentDate
32
+ return (referenceDate) => {
33
+ const opts = Object.assign(Object.assign({}, cronOptions), { currentDate: referenceDate !== null && referenceDate !== void 0 ? referenceDate : new Date() });
34
+ const parsed = CronParser.CronExpressionParser.parse(expression, opts);
35
+ return parsed.next().toDate();
36
+ };
37
+ }
38
+ catch (err) {
39
+ throw new Error(`Error: Invalid interval. ${err.message}.`);
40
+ }
41
+ }
42
+ // Safety check: if it looks like a cron expression but missing prefix, throw
43
+ if (interval.includes('*') && interval.split(' ').length >= 5) {
44
+ throw new Error("Error: Invalid interval. Cron expressions must start with 'CRON '.");
45
+ }
46
+ // Parse as duration string
47
+ const duration = new Duration(interval).offset;
48
+ if (typeof duration !== 'number' || Number.isNaN(duration)) {
49
+ throw new Error('Error: Invalid interval.');
50
+ }
51
+ return (referenceDate) => { var _a; return new Date(((_a = referenceDate === null || referenceDate === void 0 ? void 0 : referenceDate.getTime()) !== null && _a !== void 0 ? _a : Date.now()) + duration); };
52
+ }
53
+ //# sourceMappingURL=parseInterval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseInterval.js","sourceRoot":"","sources":["../../../src/parseInterval.ts"],"names":[],"mappings":";;AAaA,wDA+CC;AA5DD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAGnD;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CAClC,QAA4D,EAC5D,UAAmD,EAAE;IAErD,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,aAAoB,EAAE,EAAE,WAAC,OAAA,IAAI,IAAI,CAAC,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAA,EAAA,CAAC;IACnG,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAE9D,uBAAuB;YACvB,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAE/D,yEAAyE;YACzE,OAAO,CAAC,aAAoB,EAAE,EAAE;gBAC5B,MAAM,IAAI,mCAAQ,WAAW,KAAE,WAAW,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,IAAI,IAAI,EAAE,GAAE,CAAC;gBAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4BAA6B,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;QAC3E,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC1F,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,aAAoB,EAAE,EAAE,WAAC,OAAA,IAAI,IAAI,CAAC,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAA,EAAA,CAAC;AACnG,CAAC"}