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.
- package/README.md +107 -23
- package/dist/dashboard/index.html +40 -0
- package/dist/lib/playground/server.js +124 -0
- package/dist/lib/playground/server.js.map +1 -0
- package/dist/lib/src/ConcurrentRunner.js +141 -0
- package/dist/lib/src/ConcurrentRunner.js.map +1 -0
- package/dist/lib/{OnError.js → src/OnError.js} +2 -9
- package/dist/lib/src/OnError.js.map +1 -0
- package/dist/lib/{OnInfo.js → src/OnInfo.js} +5 -9
- package/dist/lib/src/OnInfo.js.map +1 -0
- package/dist/lib/{createContinuousLock.js → src/createContinuousLock.js} +4 -9
- package/dist/lib/src/createContinuousLock.js.map +1 -0
- package/dist/lib/{cronTasks.js → src/cronTasks.js} +128 -79
- package/dist/lib/src/cronTasks.js.map +1 -0
- package/dist/lib/{getCollection.js → src/getCollection.js} +1 -8
- package/dist/lib/src/getCollection.js.map +1 -0
- package/dist/lib/{getMongoClient.js → src/getMongoClient.js} +1 -8
- package/dist/lib/src/getMongoClient.js.map +1 -0
- package/dist/lib/src/globalsCollection.js +3 -0
- package/dist/lib/src/globalsCollection.js.map +1 -0
- package/dist/lib/src/index.js +94 -0
- package/dist/lib/src/index.js.map +1 -0
- package/dist/lib/src/initPromise.js +9 -0
- package/dist/lib/src/initPromise.js.map +1 -0
- package/dist/lib/src/mongoCompatibility.js +3 -0
- package/dist/lib/src/mongoCompatibility.js.map +1 -0
- package/dist/lib/src/parseInterval.js +53 -0
- package/dist/lib/src/parseInterval.js.map +1 -0
- package/dist/lib/src/prefixFilterKeys.js +62 -0
- package/dist/lib/src/prefixFilterKeys.js.map +1 -0
- package/dist/lib/src/processInBatches.js +39 -0
- package/dist/lib/src/processInBatches.js.map +1 -0
- package/dist/lib/src/reactiveTasks/LeaderElector.js +148 -0
- package/dist/lib/src/reactiveTasks/LeaderElector.js.map +1 -0
- package/dist/lib/src/reactiveTasks/MetricsCollector.js +403 -0
- package/dist/lib/src/reactiveTasks/MetricsCollector.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskManager.js +281 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskManager.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskOps.js +178 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskOps.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskPlanner.js +436 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskPlanner.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskReconciler.js +211 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskReconciler.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskRegistry.js +177 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskRegistry.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskRepository.js +348 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskRepository.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskRetryStrategy.js +146 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskRetryStrategy.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskTypes.js +27 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskTypes.js.map +1 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskWorker.js +179 -0
- package/dist/lib/src/reactiveTasks/ReactiveTaskWorker.js.map +1 -0
- package/dist/lib/src/reactiveTasks/compileWatchProjection.js +58 -0
- package/dist/lib/src/reactiveTasks/compileWatchProjection.js.map +1 -0
- package/dist/lib/src/reactiveTasks/index.js +291 -0
- package/dist/lib/src/reactiveTasks/index.js.map +1 -0
- package/dist/lib/src/reactiveTasks/queryToExpression.js +153 -0
- package/dist/lib/src/reactiveTasks/queryToExpression.js.map +1 -0
- package/dist/lib/src/reactiveTasks/validateTaskFilter.js +81 -0
- package/dist/lib/src/reactiveTasks/validateTaskFilter.js.map +1 -0
- package/dist/lib/src/task-management/OperationalTaskController.js +155 -0
- package/dist/lib/src/task-management/OperationalTaskController.js.map +1 -0
- package/dist/lib/src/task-management/index.js +20 -0
- package/dist/lib/src/task-management/index.js.map +1 -0
- package/dist/lib/src/task-management/serveDashboard.js +142 -0
- package/dist/lib/src/task-management/serveDashboard.js.map +1 -0
- package/dist/lib/src/task-management/types.js +3 -0
- package/dist/lib/src/task-management/types.js.map +1 -0
- package/dist/lib/{withLock.js → src/withLock.js} +2 -10
- package/dist/lib/src/withLock.js.map +1 -0
- package/dist/lib/{withTransaction.js → src/withTransaction.js} +3 -10
- package/dist/lib/src/withTransaction.js.map +1 -0
- package/dist/lib/tools/check-db-connection.js +21 -0
- package/dist/lib/tools/check-db-connection.js.map +1 -0
- package/dist/lib/tools/clean-testing-databases.js +5 -0
- package/dist/lib/tools/clean-testing-databases.js.map +1 -0
- package/dist/lib/tools/prepare-republish.js +20 -0
- package/dist/lib/tools/prepare-republish.js.map +1 -0
- package/dist/lib/tools/test-matrix-local.js +205 -0
- package/dist/lib/tools/test-matrix-local.js.map +1 -0
- package/dist/lib/tools/testingDatabase.js +48 -0
- package/dist/lib/tools/testingDatabase.js.map +1 -0
- package/dist/types/playground/server.d.ts +1 -0
- package/dist/types/src/ConcurrentRunner.d.ts +30 -0
- package/dist/types/{OnInfo.d.ts → src/OnInfo.d.ts} +1 -1
- package/dist/types/{cronTasks.d.ts → src/cronTasks.d.ts} +44 -1
- package/dist/types/src/globalsCollection.d.ts +4 -0
- package/dist/types/src/index.d.ts +28 -0
- package/dist/types/src/mongoCompatibility.d.ts +29 -0
- package/dist/types/src/parseInterval.d.ts +12 -0
- package/dist/types/src/prefixFilterKeys.d.ts +11 -0
- package/dist/types/src/processInBatches.d.ts +10 -0
- package/dist/types/src/reactiveTasks/LeaderElector.d.ts +42 -0
- package/dist/types/src/reactiveTasks/MetricsCollector.d.ts +73 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskManager.d.ts +18 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskOps.d.ts +17 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskPlanner.d.ts +62 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskReconciler.d.ts +29 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskRegistry.d.ts +34 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskRepository.d.ts +59 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskRetryStrategy.d.ts +21 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskTypes.d.ts +389 -0
- package/dist/types/src/reactiveTasks/ReactiveTaskWorker.d.ts +36 -0
- package/dist/types/src/reactiveTasks/compileWatchProjection.d.ts +12 -0
- package/dist/types/src/reactiveTasks/index.d.ts +82 -0
- package/dist/types/src/reactiveTasks/queryToExpression.d.ts +13 -0
- package/dist/types/src/reactiveTasks/validateTaskFilter.d.ts +10 -0
- package/dist/types/src/task-management/OperationalTaskController.d.ts +59 -0
- package/dist/types/src/task-management/index.d.ts +3 -0
- package/dist/types/src/task-management/serveDashboard.d.ts +12 -0
- package/dist/types/src/task-management/types.d.ts +95 -0
- package/dist/types/tools/check-db-connection.d.ts +2 -0
- package/dist/types/tools/clean-testing-databases.d.ts +1 -0
- package/dist/types/tools/prepare-republish.d.ts +2 -0
- package/dist/types/tools/test-matrix-local.d.ts +1 -0
- package/dist/types/tools/testingDatabase.d.ts +2 -0
- package/docs/.vitepress/cache/deps/_metadata.json +31 -0
- package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js +12824 -0
- package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js.map +7 -0
- package/docs/.vitepress/cache/deps/package.json +3 -0
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4505 -0
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +9731 -0
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
- package/docs/.vitepress/cache/deps/vue.js +347 -0
- package/docs/.vitepress/cache/deps/vue.js.map +7 -0
- package/docs/.vitepress/config.mts +50 -0
- package/docs/.vitepress/theme/index.ts +4 -0
- package/docs/.vitepress/theme/style.css +21 -0
- package/docs/assets/dashboard.png +0 -0
- package/docs/cron-tasks.md +172 -0
- package/docs/dashboard.md +117 -0
- package/docs/getters.md +31 -0
- package/docs/getting-started.md +186 -0
- package/docs/index.md +32 -0
- package/docs/initialization.md +59 -0
- package/docs/process-in-batches.md +73 -0
- package/docs/public/logo.png +0 -0
- package/docs/reactive-tasks.md +913 -0
- package/docs/with-lock.md +45 -0
- package/docs/with-transaction.md +65 -0
- package/grafana/reactive_tasks.json +765 -0
- package/package.json +131 -116
- package/dist/lib/OnError.js.map +0 -1
- package/dist/lib/OnInfo.js.map +0 -1
- package/dist/lib/createContinuousLock.js.map +0 -1
- package/dist/lib/cronTasks.js.map +0 -1
- package/dist/lib/getCollection.js.map +0 -1
- package/dist/lib/getMongoClient.js.map +0 -1
- package/dist/lib/index.js +0 -64
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/initPromise.js +0 -17
- package/dist/lib/initPromise.js.map +0 -1
- package/dist/lib/withLock.js.map +0 -1
- package/dist/lib/withTransaction.js.map +0 -1
- package/dist/types/index.d.ts +0 -17
- /package/dist/types/{OnError.d.ts → src/OnError.d.ts} +0 -0
- /package/dist/types/{createContinuousLock.d.ts → src/createContinuousLock.d.ts} +0 -0
- /package/dist/types/{getCollection.d.ts → src/getCollection.d.ts} +0 -0
- /package/dist/types/{getMongoClient.d.ts → src/getMongoClient.d.ts} +0 -0
- /package/dist/types/{initPromise.d.ts → src/initPromise.d.ts} +0 -0
- /package/dist/types/{withLock.d.ts → src/withLock.d.ts} +0 -0
- /package/dist/types/{withTransaction.d.ts → src/withTransaction.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<br>
|
|
2
2
|
|
|
3
|
-
<img src="
|
|
3
|
+
<img src="logo.png" alt="Mongodash" height="150" />
|
|
4
4
|
|
|
5
|
-
A modern JavaScript & Typescript MongoDB-based utility library
|
|
5
|
+
A modern JavaScript & Typescript MongoDB-based utility library. Includes [**Reactive Tasks**](https://vaclavobornik.github.io/mongodash/reactive-tasks), [**Cron Tasks**](https://vaclavobornik.github.io/mongodash/cron-tasks), [**Distributed Locks**](https://vaclavobornik.github.io/mongodash/with-lock), [**Transactions**](https://vaclavobornik.github.io/mongodash/with-transaction), and a [**Dashboard**](https://vaclavobornik.github.io/mongodash/dashboard).
|
|
6
6
|
|
|
7
7
|
[](https://coveralls.io/github/VaclavObornik/mongodash?branch=master)
|
|
8
8
|
[](https://dashboard.stryker-mutator.io/reports/github.com/VaclavObornik/mongodash/master)
|
|
9
9
|

|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
See full documentation
|
|
12
|
+
See full documentation [here](https://vaclavobornik.github.io/mongodash/getting-started)
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -21,20 +21,38 @@ npm install mongodash
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Initialization
|
|
24
|
-
```
|
|
25
|
-
|
|
24
|
+
```typescript
|
|
25
|
+
import mongodash from 'mongodash';
|
|
26
26
|
|
|
27
27
|
await mongodash.init({
|
|
28
28
|
uri: 'mongodb://mongodb0.example.com:27017/myDatabase'
|
|
29
29
|
});
|
|
30
30
|
```
|
|
31
|
-
See more initialization options [here](https://
|
|
31
|
+
See more initialization options [here](https://vaclavobornik.github.io/mongodash/initialization).
|
|
32
|
+
|
|
33
|
+
<br>
|
|
34
|
+
|
|
35
|
+
## Reactive Tasks
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { reactiveTask } from 'mongodash';
|
|
39
|
+
|
|
40
|
+
// Trigger a task when a user is updated
|
|
41
|
+
await reactiveTask({
|
|
42
|
+
task: 'on-user-update',
|
|
43
|
+
collection: 'users',
|
|
44
|
+
handler: async ({ docId }) => {
|
|
45
|
+
console.log('User changed:', docId);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/reactive-tasks).
|
|
32
50
|
|
|
33
51
|
<br>
|
|
34
52
|
|
|
35
53
|
## cronTask
|
|
36
|
-
```
|
|
37
|
-
|
|
54
|
+
```typescript
|
|
55
|
+
import { cronTask } from 'mongodash';
|
|
38
56
|
|
|
39
57
|
await cronTask('my-task-id', '5m 20s', async () => {
|
|
40
58
|
|
|
@@ -42,14 +60,14 @@ await cronTask('my-task-id', '5m 20s', async () => {
|
|
|
42
60
|
|
|
43
61
|
});
|
|
44
62
|
```
|
|
45
|
-
See detailed description and more cron tasks methods [here](https://
|
|
63
|
+
See detailed description and more cron tasks methods [here](https://vaclavobornik.github.io/mongodash/cron-tasks).
|
|
46
64
|
|
|
47
65
|
<br>
|
|
48
66
|
|
|
49
67
|
## withLock
|
|
50
68
|
|
|
51
|
-
```
|
|
52
|
-
|
|
69
|
+
```typescript
|
|
70
|
+
import { withLock } from 'mongodash';
|
|
53
71
|
|
|
54
72
|
await withLock('my-lock-id', async () => {
|
|
55
73
|
|
|
@@ -61,13 +79,13 @@ await withLock('my-lock-id', async () => {
|
|
|
61
79
|
|
|
62
80
|
});
|
|
63
81
|
```
|
|
64
|
-
See detailed description [here](https://
|
|
82
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/with-lock).
|
|
65
83
|
|
|
66
84
|
<br>
|
|
67
85
|
|
|
68
86
|
## withTransaction
|
|
69
|
-
```
|
|
70
|
-
|
|
87
|
+
```typescript
|
|
88
|
+
import { withTransaction, getCollection } from 'mongodash';
|
|
71
89
|
|
|
72
90
|
const createdDocuments = await withTransaction(async (session) => {
|
|
73
91
|
|
|
@@ -75,30 +93,96 @@ const createdDocuments = await withTransaction(async (session) => {
|
|
|
75
93
|
const myDocument2 = { value: 2 };
|
|
76
94
|
|
|
77
95
|
const collection = getCollection('myCollection');
|
|
78
|
-
await
|
|
79
|
-
await
|
|
96
|
+
await collection.insertOne(myDocument1, { session });
|
|
97
|
+
await collection.insertOne(myDocument2, { session });
|
|
80
98
|
|
|
81
99
|
return [myDocument1, myDocument2];
|
|
82
100
|
});
|
|
83
101
|
```
|
|
84
|
-
See detailed description [here](https://
|
|
102
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/with-transaction).
|
|
85
103
|
|
|
86
104
|
<br>
|
|
87
105
|
|
|
88
106
|
## getCollection
|
|
89
|
-
```
|
|
90
|
-
|
|
107
|
+
```typescript
|
|
108
|
+
import { getCollection } from 'mongodash';
|
|
91
109
|
|
|
92
110
|
const myCollection = getCollection('myCollectionName');
|
|
93
111
|
```
|
|
94
|
-
See detailed description [here](https://
|
|
112
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/getters).
|
|
95
113
|
|
|
96
114
|
<br>
|
|
97
115
|
|
|
98
116
|
## getMongoClient
|
|
99
|
-
```
|
|
100
|
-
|
|
117
|
+
```typescript
|
|
118
|
+
import { getMongoClient } from 'mongodash';
|
|
101
119
|
|
|
102
120
|
const mongoClient = getMongoClient();
|
|
103
121
|
```
|
|
104
|
-
See detailed description [here](https://
|
|
122
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/getters).
|
|
123
|
+
|
|
124
|
+
<br>
|
|
125
|
+
|
|
126
|
+
## processInBatches
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { processInBatches } from 'mongodash';
|
|
130
|
+
|
|
131
|
+
await processInBatches(
|
|
132
|
+
db.collection('users'),
|
|
133
|
+
{ status: 'active' },
|
|
134
|
+
async (user) => {
|
|
135
|
+
// Transform user data
|
|
136
|
+
return {
|
|
137
|
+
updateOne: {
|
|
138
|
+
filter: { _id: user._id },
|
|
139
|
+
update: { $set: { processed: true } }
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
},
|
|
143
|
+
async (batchOps) => {
|
|
144
|
+
// Execute batch
|
|
145
|
+
await db.collection('users').bulkWrite(batchOps);
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
```
|
|
149
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/process-in-batches).
|
|
150
|
+
|
|
151
|
+
<br>
|
|
152
|
+
|
|
153
|
+
## Dashboard
|
|
154
|
+
|
|
155
|
+

|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import * as express from 'express';
|
|
159
|
+
import { serveDashboard } from 'mongodash';
|
|
160
|
+
|
|
161
|
+
const app = express();
|
|
162
|
+
|
|
163
|
+
app.use('/dashboard', async (req, res, next) => {
|
|
164
|
+
// Check if mongodash handled the request
|
|
165
|
+
const handled = await serveDashboard(req, res);
|
|
166
|
+
if (!handled) {
|
|
167
|
+
next();
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
app.listen(3000);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
See detailed description [here](https://vaclavobornik.github.io/mongodash/dashboard).
|
|
175
|
+
|
|
176
|
+
<br>
|
|
177
|
+
|
|
178
|
+
## getPrometheusMetrics
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { getPrometheusMetrics } from 'mongodash';
|
|
182
|
+
|
|
183
|
+
app.get('/metrics', async (req, res) => {
|
|
184
|
+
const registry = await getPrometheusMetrics();
|
|
185
|
+
res.set('Content-Type', registry.contentType);
|
|
186
|
+
res.end(await registry.metrics());
|
|
187
|
+
});
|
|
188
|
+
```
|