mongodash 2.0.0 → 2.1.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 (163) hide show
  1. package/README.md +40 -22
  2. package/dist/dashboard/index.html +40 -0
  3. package/dist/lib/playground/server.js +131 -0
  4. package/dist/lib/playground/server.js.map +1 -0
  5. package/dist/lib/src/ConcurrentRunner.js +148 -0
  6. package/dist/lib/src/ConcurrentRunner.js.map +1 -0
  7. package/dist/lib/{OnError.js → src/OnError.js} +3 -3
  8. package/dist/lib/src/OnError.js.map +1 -0
  9. package/dist/lib/{OnInfo.js → src/OnInfo.js} +6 -3
  10. package/dist/lib/src/OnInfo.js.map +1 -0
  11. package/dist/lib/{createContinuousLock.js → src/createContinuousLock.js} +5 -3
  12. package/dist/lib/src/createContinuousLock.js.map +1 -0
  13. package/dist/lib/{cronTasks.js → src/cronTasks.js} +129 -73
  14. package/dist/lib/src/cronTasks.js.map +1 -0
  15. package/dist/lib/{getCollection.js → src/getCollection.js} +2 -2
  16. package/dist/lib/src/getCollection.js.map +1 -0
  17. package/dist/lib/{getMongoClient.js → src/getMongoClient.js} +2 -2
  18. package/dist/lib/src/getMongoClient.js.map +1 -0
  19. package/dist/lib/src/globalsCollection.js +10 -0
  20. package/dist/lib/src/globalsCollection.js.map +1 -0
  21. package/dist/lib/src/index.js +101 -0
  22. package/dist/lib/src/index.js.map +1 -0
  23. package/dist/lib/{initPromise.js → src/initPromise.js} +2 -3
  24. package/dist/lib/src/initPromise.js.map +1 -0
  25. package/dist/lib/src/mongoCompatibility.js +10 -0
  26. package/dist/lib/src/mongoCompatibility.js.map +1 -0
  27. package/dist/lib/src/parseInterval.js +60 -0
  28. package/dist/lib/src/parseInterval.js.map +1 -0
  29. package/dist/lib/src/prefixFilterKeys.js +69 -0
  30. package/dist/lib/src/prefixFilterKeys.js.map +1 -0
  31. package/dist/lib/src/processInBatches.js +46 -0
  32. package/dist/lib/src/processInBatches.js.map +1 -0
  33. package/dist/lib/src/reactiveTasks/LeaderElector.js +155 -0
  34. package/dist/lib/src/reactiveTasks/LeaderElector.js.map +1 -0
  35. package/dist/lib/src/reactiveTasks/MetricsCollector.js +410 -0
  36. package/dist/lib/src/reactiveTasks/MetricsCollector.js.map +1 -0
  37. package/dist/lib/src/reactiveTasks/ReactiveTaskManager.js +288 -0
  38. package/dist/lib/src/reactiveTasks/ReactiveTaskManager.js.map +1 -0
  39. package/dist/lib/src/reactiveTasks/ReactiveTaskOps.js +185 -0
  40. package/dist/lib/src/reactiveTasks/ReactiveTaskOps.js.map +1 -0
  41. package/dist/lib/src/reactiveTasks/ReactiveTaskPlanner.js +443 -0
  42. package/dist/lib/src/reactiveTasks/ReactiveTaskPlanner.js.map +1 -0
  43. package/dist/lib/src/reactiveTasks/ReactiveTaskReconciler.js +218 -0
  44. package/dist/lib/src/reactiveTasks/ReactiveTaskReconciler.js.map +1 -0
  45. package/dist/lib/src/reactiveTasks/ReactiveTaskRegistry.js +184 -0
  46. package/dist/lib/src/reactiveTasks/ReactiveTaskRegistry.js.map +1 -0
  47. package/dist/lib/src/reactiveTasks/ReactiveTaskRepository.js +355 -0
  48. package/dist/lib/src/reactiveTasks/ReactiveTaskRepository.js.map +1 -0
  49. package/dist/lib/src/reactiveTasks/ReactiveTaskRetryStrategy.js +153 -0
  50. package/dist/lib/src/reactiveTasks/ReactiveTaskRetryStrategy.js.map +1 -0
  51. package/dist/lib/src/reactiveTasks/ReactiveTaskTypes.js +34 -0
  52. package/dist/lib/src/reactiveTasks/ReactiveTaskTypes.js.map +1 -0
  53. package/dist/lib/src/reactiveTasks/ReactiveTaskWorker.js +186 -0
  54. package/dist/lib/src/reactiveTasks/ReactiveTaskWorker.js.map +1 -0
  55. package/dist/lib/src/reactiveTasks/compileWatchProjection.js +65 -0
  56. package/dist/lib/src/reactiveTasks/compileWatchProjection.js.map +1 -0
  57. package/dist/lib/src/reactiveTasks/index.js +298 -0
  58. package/dist/lib/src/reactiveTasks/index.js.map +1 -0
  59. package/dist/lib/src/reactiveTasks/queryToExpression.js +160 -0
  60. package/dist/lib/src/reactiveTasks/queryToExpression.js.map +1 -0
  61. package/dist/lib/src/reactiveTasks/validateTaskFilter.js +88 -0
  62. package/dist/lib/src/reactiveTasks/validateTaskFilter.js.map +1 -0
  63. package/dist/lib/src/task-management/OperationalTaskController.js +162 -0
  64. package/dist/lib/src/task-management/OperationalTaskController.js.map +1 -0
  65. package/dist/lib/src/task-management/index.js +27 -0
  66. package/dist/lib/src/task-management/index.js.map +1 -0
  67. package/dist/lib/src/task-management/serveDashboard.js +149 -0
  68. package/dist/lib/src/task-management/serveDashboard.js.map +1 -0
  69. package/dist/lib/src/task-management/types.js +10 -0
  70. package/dist/lib/src/task-management/types.js.map +1 -0
  71. package/dist/lib/{withLock.js → src/withLock.js} +3 -4
  72. package/dist/lib/src/withLock.js.map +1 -0
  73. package/dist/lib/{withTransaction.js → src/withTransaction.js} +4 -4
  74. package/dist/lib/src/withTransaction.js.map +1 -0
  75. package/dist/lib/tools/check-db-connection.js +28 -0
  76. package/dist/lib/tools/check-db-connection.js.map +1 -0
  77. package/dist/lib/tools/clean-testing-databases.js +12 -0
  78. package/dist/lib/tools/clean-testing-databases.js.map +1 -0
  79. package/dist/lib/tools/prepare-republish.js +27 -0
  80. package/dist/lib/tools/prepare-republish.js.map +1 -0
  81. package/dist/lib/tools/test-matrix-local.js +212 -0
  82. package/dist/lib/tools/test-matrix-local.js.map +1 -0
  83. package/dist/lib/tools/testingDatabase.js +55 -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 +48 -0
  130. package/docs/.vitepress/theme/index.ts +4 -0
  131. package/docs/.vitepress/theme/style.css +16 -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 +120 -0
  137. package/docs/index.md +29 -0
  138. package/docs/initialization.md +59 -0
  139. package/docs/process-in-batches.md +73 -0
  140. package/docs/reactive-tasks.md +914 -0
  141. package/docs/with-lock.md +45 -0
  142. package/docs/with-transaction.md +65 -0
  143. package/grafana/reactive_tasks.json +765 -0
  144. package/package.json +127 -116
  145. package/dist/lib/OnError.js.map +0 -1
  146. package/dist/lib/OnInfo.js.map +0 -1
  147. package/dist/lib/createContinuousLock.js.map +0 -1
  148. package/dist/lib/cronTasks.js.map +0 -1
  149. package/dist/lib/getCollection.js.map +0 -1
  150. package/dist/lib/getMongoClient.js.map +0 -1
  151. package/dist/lib/index.js +0 -64
  152. package/dist/lib/index.js.map +0 -1
  153. package/dist/lib/initPromise.js.map +0 -1
  154. package/dist/lib/withLock.js.map +0 -1
  155. package/dist/lib/withTransaction.js.map +0 -1
  156. package/dist/types/index.d.ts +0 -17
  157. /package/dist/types/{OnError.d.ts → src/OnError.d.ts} +0 -0
  158. /package/dist/types/{createContinuousLock.d.ts → src/createContinuousLock.d.ts} +0 -0
  159. /package/dist/types/{getCollection.d.ts → src/getCollection.d.ts} +0 -0
  160. /package/dist/types/{getMongoClient.d.ts → src/getMongoClient.d.ts} +0 -0
  161. /package/dist/types/{initPromise.d.ts → src/initPromise.d.ts} +0 -0
  162. /package/dist/types/{withLock.d.ts → src/withLock.d.ts} +0 -0
  163. /package/dist/types/{withTransaction.d.ts → src/withTransaction.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
2
+ * mongodash v2.1.0
3
+ * git+https://github.com/VaclavObornik/mongodash.git
4
4
  *
5
5
  * Copyright (c) 2025 Václav Oborník
6
6
  * Released under the MIT license
@@ -25,16 +25,19 @@ exports.stopCronTasks = stopCronTasks;
25
25
  exports.startCronTasks = startCronTasks;
26
26
  exports.scheduleCronTaskImmediately = scheduleCronTaskImmediately;
27
27
  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");
28
+ exports.getCronTasksList = getCronTasksList;
29
+ exports.triggerCronTask = triggerCronTask;
30
+ exports.getRegisteredCronTaskIds = getRegisteredCronTaskIds;
31
31
  const createContinuousLock_1 = require("./createContinuousLock");
32
32
  const getCollection_1 = require("./getCollection");
33
33
  const initPromise_1 = require("./initPromise");
34
+ const parseInterval_1 = require("./parseInterval");
34
35
  exports.CODE_CRON_TASK_STARTED = 'cronTaskStarted';
35
36
  exports.CODE_CRON_TASK_FINISHED = 'cronTaskFinished';
36
37
  exports.CODE_CRON_TASK_SCHEDULED = 'cronTaskScheduled';
37
38
  exports.CODE_CRON_TASK_FAILED = 'cronTaskFailed';
39
+ // const debug = _debug('mongodash:cronTasks');
40
+ const debug = (..._args) => { };
38
41
  class TaskDocument {
39
42
  constructor(_id, runSince) {
40
43
  this._id = _id;
@@ -61,40 +64,12 @@ const state = {
61
64
  ensureIndexPromise: null,
62
65
  cronExpressionParserOptions: {},
63
66
  };
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.`;
67
+ let taskCaller;
68
+ let taskFilter;
69
+ let onError;
70
+ let onInfo;
72
71
  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);
72
+ return (0, parseInterval_1.createIntervalFunction)(interval, { cronOptions: state.cronExpressionParserOptions });
98
73
  }
99
74
  async function getNextRunDate(intervalFunction) {
100
75
  const maybeDate = await intervalFunction();
@@ -108,7 +83,7 @@ async function runCronTask(taskId) {
108
83
  if ((_a = new Error().stack) === null || _a === void 0 ? void 0 : _a.includes('mongoDashRunTaskNotCyclic')) {
109
84
  throw new Error('It is not possible to call runCronTask inside another running task. Use the scheduleCronTaskImmediately() function instead.');
110
85
  }
111
- // debug(`runCronTask called for ${taskId}`);
86
+ debug(`runCronTask called for ${taskId}`);
112
87
  if (!state.tasks.has(taskId)) {
113
88
  throw new Error(`Cannot run unknown task '${taskId}'.`);
114
89
  }
@@ -135,7 +110,7 @@ function getUnlockedFilter() {
135
110
  }
136
111
  function getTasksToProcessFilter() {
137
112
  return {
138
- $and: [{ _id: { $in: Array.from(state.tasks.keys()).filter((taskId) => _taskFilter({ taskId })) } }, getUnlockedFilter()],
113
+ $and: [{ _id: { $in: Array.from(state.tasks.keys()).filter((taskId) => taskFilter({ taskId })) } }, getUnlockedFilter()],
139
114
  };
140
115
  }
141
116
  async function findATaskToRun(enforcedTask) {
@@ -148,8 +123,8 @@ async function findATaskToRun(enforcedTask) {
148
123
  $and: [{ $or: [{ runSince: { $lte: new Date() } }, { runImmediately: true }] }, getTasksToProcessFilter()],
149
124
  };
150
125
  }
151
- // debug('finding a task', JSON.stringify(filter, null, 2));
152
- const { value: document } = await state.collection.findOneAndUpdate(filter, {
126
+ debug('finding a task', JSON.stringify(filter, null, 2));
127
+ const result = await state.collection.findOneAndUpdate(filter, {
153
128
  $set: {
154
129
  lockedTill: getLockDate(),
155
130
  runImmediately: false,
@@ -170,6 +145,8 @@ async function findATaskToRun(enforcedTask) {
170
145
  projection: { _id: true, runImmediately: true },
171
146
  includeResultMetadata: true,
172
147
  });
148
+ // Handle v4/v5+ compatibility
149
+ const document = result.value;
173
150
  if (!document) {
174
151
  if (enforcedTask) {
175
152
  enforcedTask.reject(new Error('The task document not found or is locked right now.'));
@@ -186,41 +163,40 @@ async function findATaskToRun(enforcedTask) {
186
163
  });
187
164
  return null;
188
165
  }
189
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
190
166
  return state.tasks.get(document._id);
191
167
  }
192
168
  async function processTask(task, enforcedTask) {
193
- const stopContinuousLock = (0, createContinuousLock_1.createContinuousLock)(state.collection, task.taskId, 'lockedTill', lockTime, _onError);
169
+ const stopContinuousLock = (0, createContinuousLock_1.createContinuousLock)(state.collection, task.taskId, 'lockedTill', lockTime, onError);
194
170
  const processTheTask = async () => {
195
- // debug(`processing task ${task.taskId}`);
171
+ debug(`processing task ${task.taskId} `);
196
172
  let taskError = null;
197
173
  let nextRunDate;
198
174
  let nextRunScheduled = false;
199
175
  const start = new Date();
200
176
  try {
201
177
  function mongoDashRunTaskNotCyclic() {
202
- _onInfo({ message: `Cron task '${task.taskId}' started.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_STARTED });
178
+ onInfo({ message: `Cron task '${task.taskId}' started.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_STARTED });
203
179
  return task.task();
204
180
  }
205
181
  await mongoDashRunTaskNotCyclic();
206
182
  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 });
183
+ onInfo({ message: `Cron task '${task.taskId}' finished in ${duration} ms.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_FINISHED, duration });
208
184
  }
209
185
  catch (err) {
210
186
  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 });
187
+ const reason = err instanceof Error ? err.message : `${err} `;
188
+ onInfo({ message: `Cron task '${task.taskId}' failed in ${duration} ms.`, taskId: task.taskId, code: exports.CODE_CRON_TASK_FAILED, reason, duration });
213
189
  taskError = err;
214
190
  }
215
191
  try {
216
192
  await stopContinuousLock(); // to avoid possibility of lock after the following document update
217
193
  nextRunDate = await getNextRunDate(task.intervalFunction);
218
- // debug(`scheduling task ${task.taskId} to run in ${nextRunDate.getTime() - Date.now()}ms`);
194
+ debug(`scheduling task ${task.taskId} to run in ${nextRunDate.getTime() - Date.now()} ms`);
219
195
  await state.collection.updateOne({ _id: task.taskId }, {
220
196
  $set: {
221
197
  runSince: nextRunDate,
222
198
  lockedTill: null,
223
- 'runLog.0.error': taskError ? `${taskError}` : null,
199
+ 'runLog.0.error': taskError ? `${taskError} ` : null,
224
200
  'runLog.0.finishedAt': new Date(),
225
201
  },
226
202
  });
@@ -236,11 +212,11 @@ async function processTask(task, enforcedTask) {
236
212
  }
237
213
  }
238
214
  else if (taskError) {
239
- _onError(taskError);
215
+ onError(taskError);
240
216
  }
241
217
  // we want to inform about the scheduling after the
242
218
  if (nextRunScheduled) {
243
- _onInfo({
219
+ onInfo({
244
220
  message: `Cron task '${task.taskId}' scheduled to ${nextRunDate.toISOString()}.`,
245
221
  taskId: task.taskId,
246
222
  code: exports.CODE_CRON_TASK_SCHEDULED,
@@ -250,13 +226,13 @@ async function processTask(task, enforcedTask) {
250
226
  }
251
227
  };
252
228
  try {
253
- await _taskCaller(processTheTask);
229
+ await taskCaller(processTheTask);
254
230
  }
255
231
  catch (err) {
256
232
  // todo revise why we need to do this
257
233
  // this should fix situations when the _taskCaller has a problem
258
234
  await stopContinuousLock();
259
- _onError(err);
235
+ onError(err);
260
236
  }
261
237
  }
262
238
  /** can never throw */
@@ -273,12 +249,12 @@ async function getWaitTimeByNextTask() {
273
249
  return Math.min(Math.max(timeToNext, 0), noTaskWaitTime);
274
250
  }
275
251
  catch (error) {
276
- _onError(error);
252
+ onError(error);
277
253
  return noTaskWaitTime;
278
254
  }
279
255
  }
280
256
  function runATask() {
281
- // debug('runATask called');
257
+ debug('runATask called');
282
258
  state.working = true;
283
259
  (async () => {
284
260
  await initPromise_1.initPromise;
@@ -288,18 +264,18 @@ function runATask() {
288
264
  try {
289
265
  task = await findATaskToRun(enforcedTask);
290
266
  if (!task) {
291
- // debug('no pending task found');
267
+ debug('no pending task found');
292
268
  return; // the finally statement will be called anyway
293
269
  }
294
270
  await processTask(task, enforcedTask);
295
271
  }
296
272
  catch (error) {
297
- // debug(`Catch error ${error}`);
273
+ debug(`Catch error ${error} `);
298
274
  if (enforcedTask) {
299
275
  enforcedTask.reject(error);
300
276
  }
301
277
  else {
302
- _onError(error);
278
+ onError(error);
303
279
  }
304
280
  }
305
281
  finally {
@@ -319,9 +295,9 @@ function runATask() {
319
295
  }
320
296
  // should we still trigger next?
321
297
  if (shouldTriggerNext()) {
322
- // debug(`SCHEDULING NEXT CHECK AFTER ${waitTime}ms`);
298
+ debug(`SCHEDULING NEXT CHECK AFTER ${waitTime} ms`);
323
299
  state.nextTaskTimeoutId = setTimeout(() => {
324
- // debug("it's time!");
300
+ debug("it's time!");
325
301
  state.nextTaskTimeoutId = null;
326
302
  runATask();
327
303
  }, waitTime);
@@ -331,16 +307,16 @@ function runATask() {
331
307
  }
332
308
  })();
333
309
  }
334
- function init({ runCronTasks, cronTaskFilter, cronExpressionParserOptions, onError, onInfo, cronTaskCaller }) {
335
- if (cronExpressionParserOptions.endDate) {
310
+ function init(initOptions) {
311
+ if (initOptions.cronExpressionParserOptions.endDate) {
336
312
  throw new Error("The 'endDate' parameter of the cron-parser package is not supported yet.");
337
313
  }
338
- state.shouldRun = runCronTasks;
339
- _onError = onError;
340
- _onInfo = onInfo;
341
- _taskCaller = cronTaskCaller;
342
- _taskFilter = cronTaskFilter;
343
- state.cronExpressionParserOptions = cronExpressionParserOptions;
314
+ state.shouldRun = initOptions.runCronTasks;
315
+ onError = initOptions.onError;
316
+ onInfo = initOptions.onInfo;
317
+ taskCaller = initOptions.cronTaskCaller;
318
+ taskFilter = initOptions.cronTaskFilter;
319
+ state.cronExpressionParserOptions = initOptions.cronExpressionParserOptions;
344
320
  }
345
321
  function ensureStarted() {
346
322
  // terminate waiting if there is any
@@ -349,13 +325,13 @@ function ensureStarted() {
349
325
  state.nextTaskTimeoutId = null;
350
326
  }
351
327
  if (!state.working) {
352
- // debug('STARTING LOOP');
328
+ debug('STARTING LOOP');
353
329
  runATask();
354
330
  }
355
331
  // else the loop is already set
356
332
  }
357
333
  function stopCronTasks() {
358
- // debug('STOPPING CRON TASKS');
334
+ debug('STOPPING CRON TASKS');
359
335
  state.shouldRun = false;
360
336
  if (state.nextTaskTimeoutId) {
361
337
  clearTimeout(state.nextTaskTimeoutId);
@@ -391,10 +367,90 @@ async function cronTask(taskId, interval, task) {
391
367
  task,
392
368
  intervalFunction,
393
369
  });
394
- // debug(`task ${taskId} has been registered`);
370
+ debug(`task ${taskId} has been registered`);
395
371
  await ensureIndex();
396
372
  if (state.shouldRun) {
397
373
  ensureStarted();
398
374
  }
399
375
  }
376
+ /**
377
+ * Lists cron tasks with pagination and sorting.
378
+ */
379
+ async function getCronTasksList(query = {}) {
380
+ var _a, _b, _c, _d, _e;
381
+ const limit = (_a = query.limit) !== null && _a !== void 0 ? _a : 50;
382
+ const skip = (_b = query.skip) !== null && _b !== void 0 ? _b : 0;
383
+ let sortField = ((_c = query.sort) === null || _c === void 0 ? void 0 : _c.field) || 'runSince';
384
+ if (sortField === 'nextRunAt')
385
+ sortField = 'runSince';
386
+ const sort = { [sortField]: (_e = (_d = query.sort) === null || _d === void 0 ? void 0 : _d.direction) !== null && _e !== void 0 ? _e : 1 };
387
+ let localTaskIds = Array.from(state.tasks.keys());
388
+ if (query.filter) {
389
+ const regex = new RegExp(query.filter, 'i');
390
+ localTaskIds = localTaskIds.filter((id) => regex.test(id));
391
+ }
392
+ const filter = {
393
+ _id: { $in: localTaskIds },
394
+ };
395
+ const [docs, total] = await Promise.all([
396
+ state.collection.find(filter).sort(sort).skip(skip).limit(limit).toArray(),
397
+ state.collection.countDocuments(filter),
398
+ ]);
399
+ const items = docs.map((doc) => {
400
+ const lastRun = doc.runLog[0] || null;
401
+ let lastRunData = null;
402
+ if (lastRun) {
403
+ lastRunData = {
404
+ startedAt: lastRun.startedAt,
405
+ finishedAt: lastRun.finishedAt,
406
+ error: lastRun.error,
407
+ durationMs: lastRun.finishedAt ? lastRun.finishedAt.getTime() - lastRun.startedAt.getTime() : undefined,
408
+ };
409
+ }
410
+ let status = 'idle';
411
+ if (doc.lockedTill && doc.lockedTill > new Date()) {
412
+ status = 'locked';
413
+ // We can assume 'running' if locked, unless just failed/finished and lock not released yet?
414
+ // Actually 'lockedTill' is set during processing.
415
+ // If we want to distinguish 'running' from just 'locked', it's hard without another field.
416
+ // But 'locked' usually means running or zombie.
417
+ status = 'running';
418
+ }
419
+ else if (doc.runImmediately) {
420
+ status = 'scheduled';
421
+ }
422
+ else if (lastRun === null || lastRun === void 0 ? void 0 : lastRun.error) {
423
+ // Only if the LATEST run failed and we are not currently running
424
+ status = 'failed';
425
+ }
426
+ return {
427
+ _id: doc._id,
428
+ status,
429
+ nextRunAt: doc.runSince,
430
+ runImmediately: doc.runImmediately,
431
+ lockedTill: doc.lockedTill,
432
+ lastRun: lastRunData,
433
+ isRegistered: state.tasks.has(doc._id),
434
+ };
435
+ });
436
+ return {
437
+ items,
438
+ total,
439
+ limit,
440
+ offset: skip,
441
+ };
442
+ }
443
+ /**
444
+ * Triggers a cron task immediately.
445
+ * Alias for scheduleCronTaskImmediately but returns the new state or confirmation.
446
+ */
447
+ async function triggerCronTask(taskId) {
448
+ return scheduleCronTaskImmediately(taskId);
449
+ }
450
+ /**
451
+ * Returns IDs of all registered cron tasks in this instance.
452
+ */
453
+ function getRegisteredCronTaskIds() {
454
+ return Array.from(state.tasks.keys()).sort();
455
+ }
400
456
  //# 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,6 +1,6 @@
1
1
  /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
2
+ * mongodash v2.1.0
3
+ * git+https://github.com/VaclavObornik/mongodash.git
4
4
  *
5
5
  * Copyright (c) 2025 Václav Oborník
6
6
  * Released under the MIT license
@@ -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,6 +1,6 @@
1
1
  /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
2
+ * mongodash v2.1.0
3
+ * git+https://github.com/VaclavObornik/mongodash.git
4
4
  *
5
5
  * Copyright (c) 2025 Václav Oborník
6
6
  * Released under the MIT license
@@ -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,10 @@
1
+ /**!
2
+ * mongodash v2.1.0
3
+ * git+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";
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=globalsCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalsCollection.js","sourceRoot":"","sources":["../../../src/globalsCollection.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ /**!
2
+ * mongodash v2.1.0
3
+ * git+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";
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ 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;
11
+ exports.init = init;
12
+ const cronTasks_1 = require("./cronTasks");
13
+ const reactiveTasks_1 = require("./reactiveTasks");
14
+ const getCollection_1 = require("./getCollection");
15
+ const getMongoClient_1 = require("./getMongoClient");
16
+ const OnError_1 = require("./OnError");
17
+ const OnInfo_1 = require("./OnInfo");
18
+ const withLock_1 = require("./withLock");
19
+ const withTransaction_1 = require("./withTransaction");
20
+ const initPromise_1 = require("./initPromise");
21
+ var cronTasks_2 = require("./cronTasks");
22
+ Object.defineProperty(exports, "cronTask", { enumerable: true, get: function () { return cronTasks_2.cronTask; } });
23
+ Object.defineProperty(exports, "runCronTask", { enumerable: true, get: function () { return cronTasks_2.runCronTask; } });
24
+ Object.defineProperty(exports, "scheduleCronTaskImmediately", { enumerable: true, get: function () { return cronTasks_2.scheduleCronTaskImmediately; } });
25
+ Object.defineProperty(exports, "startCronTasks", { enumerable: true, get: function () { return cronTasks_2.startCronTasks; } });
26
+ Object.defineProperty(exports, "stopCronTasks", { enumerable: true, get: function () { return cronTasks_2.stopCronTasks; } });
27
+ Object.defineProperty(exports, "CODE_CRON_TASK_STARTED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_STARTED; } });
28
+ Object.defineProperty(exports, "CODE_CRON_TASK_FINISHED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_FINISHED; } });
29
+ Object.defineProperty(exports, "CODE_CRON_TASK_SCHEDULED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_SCHEDULED; } });
30
+ Object.defineProperty(exports, "CODE_CRON_TASK_FAILED", { enumerable: true, get: function () { return cronTasks_2.CODE_CRON_TASK_FAILED; } });
31
+ Object.defineProperty(exports, "getCronTasksList", { enumerable: true, get: function () { return cronTasks_2.getCronTasksList; } });
32
+ Object.defineProperty(exports, "triggerCronTask", { enumerable: true, get: function () { return cronTasks_2.triggerCronTask; } });
33
+ var getCollection_2 = require("./getCollection");
34
+ Object.defineProperty(exports, "getCollection", { enumerable: true, get: function () { return getCollection_2.getCollection; } });
35
+ var getMongoClient_2 = require("./getMongoClient");
36
+ Object.defineProperty(exports, "getMongoClient", { enumerable: true, get: function () { return getMongoClient_2.getMongoClient; } });
37
+ var withLock_2 = require("./withLock");
38
+ Object.defineProperty(exports, "withLock", { enumerable: true, get: function () { return withLock_2.withLock; } });
39
+ Object.defineProperty(exports, "isLockAlreadyAcquiredError", { enumerable: true, get: function () { return withLock_2.isLockAlreadyAcquiredError; } });
40
+ Object.defineProperty(exports, "LockAlreadyAcquiredError", { enumerable: true, get: function () { return withLock_2.LockAlreadyAcquiredError; } });
41
+ var withTransaction_2 = require("./withTransaction");
42
+ Object.defineProperty(exports, "withTransaction", { enumerable: true, get: function () { return withTransaction_2.withTransaction; } });
43
+ Object.defineProperty(exports, "registerPostCommitHook", { enumerable: true, get: function () { return withTransaction_2.registerPostCommitHook; } });
44
+ var reactiveTasks_2 = require("./reactiveTasks");
45
+ Object.defineProperty(exports, "reactiveTask", { enumerable: true, get: function () { return reactiveTasks_2.reactiveTask; } });
46
+ Object.defineProperty(exports, "TaskConditionFailedError", { enumerable: true, get: function () { return reactiveTasks_2.TaskConditionFailedError; } });
47
+ Object.defineProperty(exports, "startReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.startReactiveTasks; } });
48
+ Object.defineProperty(exports, "stopReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.stopReactiveTasks; } });
49
+ Object.defineProperty(exports, "getPrometheusMetrics", { enumerable: true, get: function () { return reactiveTasks_2.getPrometheusMetrics; } });
50
+ Object.defineProperty(exports, "_scheduler", { enumerable: true, get: function () { return reactiveTasks_2._scheduler; } });
51
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_STARTED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_STARTED; } });
52
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_FINISHED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_FINISHED; } });
53
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_FAILED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_FAILED; } });
54
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_STARTED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_STARTED; } });
55
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_STOPPED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_STOPPED; } });
56
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_STARTED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_STARTED; } });
57
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_FINISHED", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_RECONCILIATION_FINISHED; } });
58
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_PLANNER_STREAM_ERROR", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_PLANNER_STREAM_ERROR; } });
59
+ Object.defineProperty(exports, "CODE_REACTIVE_TASK_LEADER_LOCK_LOST", { enumerable: true, get: function () { return reactiveTasks_2.CODE_REACTIVE_TASK_LEADER_LOCK_LOST; } });
60
+ Object.defineProperty(exports, "getReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.getReactiveTasks; } });
61
+ Object.defineProperty(exports, "countReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.countReactiveTasks; } });
62
+ Object.defineProperty(exports, "retryReactiveTasks", { enumerable: true, get: function () { return reactiveTasks_2.retryReactiveTasks; } });
63
+ var processInBatches_1 = require("./processInBatches");
64
+ Object.defineProperty(exports, "processInBatches", { enumerable: true, get: function () { return processInBatches_1.processInBatches; } });
65
+ var task_management_1 = require("./task-management");
66
+ Object.defineProperty(exports, "serveDashboard", { enumerable: true, get: function () { return task_management_1.serveDashboard; } });
67
+ Object.defineProperty(exports, "OperationalTaskController", { enumerable: true, get: function () { return task_management_1.OperationalTaskController; } });
68
+ let initCalled = false;
69
+ async function init(options) {
70
+ var _a, _b, _c, _d, _e, _f, _g;
71
+ if (initCalled) {
72
+ throw new Error('init method can be called only once.');
73
+ }
74
+ initCalled = true;
75
+ const onError = options.onError ? (0, OnError_1.secureOnError)(options.onError) : OnError_1.defaultOnError;
76
+ const onInfo = options.onInfo ? (0, OnInfo_1.secureOnInfo)(options.onInfo) : OnInfo_1.defaultOnInfo;
77
+ const taskCaller = options.taskCaller || ((task) => task());
78
+ await (0, getMongoClient_1.init)(options);
79
+ (0, getCollection_1.init)({ collectionFactory: (_a = options.collectionFactory) !== null && _a !== void 0 ? _a : null });
80
+ let globalsCollection;
81
+ if (!options.globalsCollection || typeof options.globalsCollection === 'string') {
82
+ globalsCollection = (0, getCollection_1.getCollection)((_b = options.globalsCollection) !== null && _b !== void 0 ? _b : '_mongodash_globals');
83
+ }
84
+ else {
85
+ globalsCollection = options.globalsCollection;
86
+ }
87
+ (0, withLock_1.init)({ onError });
88
+ (0, withTransaction_1.init)({ onError, onInfo });
89
+ (0, cronTasks_1.init)({
90
+ runCronTasks: (_c = options.runCronTasks) !== null && _c !== void 0 ? _c : true,
91
+ cronExpressionParserOptions: (_d = options.cronExpressionParserOptions) !== null && _d !== void 0 ? _d : {},
92
+ onError,
93
+ onInfo,
94
+ cronTaskCaller: (_e = options.cronTaskCaller) !== null && _e !== void 0 ? _e : taskCaller,
95
+ cronTaskFilter: (_f = options.cronTaskFilter) !== null && _f !== void 0 ? _f : (() => true),
96
+ });
97
+ (0, reactiveTasks_1.init)(Object.assign(Object.assign({}, options), { globalsCollection: globalsCollection, onError,
98
+ onInfo, reactiveTaskCaller: (_g = options.reactiveTaskCaller) !== null && _g !== void 0 ? _g : taskCaller }));
99
+ (0, initPromise_1.resolveInitPromise)();
100
+ }
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**!
2
- * mongodash v2.0.0
3
- * https://github.com/VaclavObornik/mongodash.git
2
+ * mongodash v2.1.0
3
+ * git+https://github.com/VaclavObornik/mongodash.git
4
4
  *
5
5
  * Copyright (c) 2025 Václav Oborník
6
6
  * Released under the MIT license
@@ -12,6 +12,5 @@ let _resolve;
12
12
  exports.initPromise = new Promise((resolve) => {
13
13
  _resolve = resolve;
14
14
  });
15
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16
15
  exports.resolveInitPromise = _resolve;
17
16
  //# 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,10 @@
1
+ /**!
2
+ * mongodash v2.1.0
3
+ * git+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";
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=mongoCompatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoCompatibility.js","sourceRoot":"","sources":["../../../src/mongoCompatibility.ts"],"names":[],"mappings":""}