@unchainedshop/core-worker 3.0.0-alpha2 → 3.0.0-alpha4

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 (56) hide show
  1. package/lib/db/WorkQueueCollection.d.ts +1 -1
  2. package/lib/db/WorkQueueCollection.d.ts.map +1 -1
  3. package/lib/director/WorkerAdapter.d.ts +13 -1
  4. package/lib/director/WorkerAdapter.d.ts.map +1 -1
  5. package/lib/director/WorkerAdapter.js.map +1 -1
  6. package/lib/director/WorkerDirector.d.ts +24 -1
  7. package/lib/director/WorkerDirector.d.ts.map +1 -1
  8. package/lib/director/WorkerDirector.js +2 -2
  9. package/lib/director/WorkerDirector.js.map +1 -1
  10. package/lib/module/configureWorkerModule.d.ts +79 -4
  11. package/lib/module/configureWorkerModule.d.ts.map +1 -1
  12. package/lib/module/configureWorkerModule.js +160 -42
  13. package/lib/module/configureWorkerModule.js.map +1 -1
  14. package/lib/module/migrations/addMigrations.d.ts +3 -0
  15. package/lib/module/migrations/addMigrations.d.ts.map +1 -0
  16. package/lib/module/migrations/addMigrations.js +16 -0
  17. package/lib/module/migrations/addMigrations.js.map +1 -0
  18. package/lib/schedulers/FailedRescheduler.d.ts +11 -1
  19. package/lib/schedulers/FailedRescheduler.d.ts.map +1 -1
  20. package/lib/schedulers/FailedRescheduler.js.map +1 -1
  21. package/lib/types.d.ts +20 -0
  22. package/lib/types.d.ts.map +1 -0
  23. package/lib/types.js +2 -0
  24. package/lib/types.js.map +1 -0
  25. package/lib/worker-index.d.ts +8 -7
  26. package/lib/worker-index.d.ts.map +1 -1
  27. package/lib/worker-index.js +8 -7
  28. package/lib/worker-index.js.map +1 -1
  29. package/lib/workers/BaseWorker.d.ts +27 -1
  30. package/lib/workers/BaseWorker.d.ts.map +1 -1
  31. package/lib/workers/BaseWorker.js +3 -2
  32. package/lib/workers/BaseWorker.js.map +1 -1
  33. package/lib/workers/EventListenerWorker.d.ts +1 -1
  34. package/lib/workers/EventListenerWorker.d.ts.map +1 -1
  35. package/lib/workers/EventListenerWorker.js.map +1 -1
  36. package/lib/workers/IntervalWorker.d.ts +2 -1
  37. package/lib/workers/IntervalWorker.d.ts.map +1 -1
  38. package/lib/workers/IntervalWorker.js.map +1 -1
  39. package/package.json +6 -8
  40. package/src/db/WorkQueueCollection.ts +1 -1
  41. package/src/director/WorkerAdapter.ts +15 -1
  42. package/src/director/WorkerDirector.ts +31 -8
  43. package/src/module/buildQuerySelector.test.ts +144 -124
  44. package/src/module/configureWorkerModule.ts +286 -57
  45. package/src/module/migrations/addMigrations.ts +18 -0
  46. package/src/schedulers/FailedRescheduler.ts +17 -1
  47. package/src/types.ts +20 -0
  48. package/src/worker-index.ts +8 -8
  49. package/src/workers/BaseWorker.ts +31 -3
  50. package/src/workers/EventListenerWorker.ts +1 -2
  51. package/src/workers/IntervalWorker.ts +2 -2
  52. package/lib/db/WorkQueueSchema.d.ts +0 -3
  53. package/lib/db/WorkQueueSchema.d.ts.map +0 -1
  54. package/lib/db/WorkQueueSchema.js +0 -20
  55. package/lib/db/WorkQueueSchema.js.map +0 -1
  56. package/src/db/WorkQueueSchema.ts +0 -23
@@ -1,189 +1,209 @@
1
- import { WorkStatus } from "../worker-index.js";
2
- import { buildQuerySelector } from "./configureWorkerModule.js";
3
-
1
+ import { WorkStatus } from '../worker-index.js';
2
+ import { buildQuerySelector } from './configureWorkerModule.js';
4
3
 
5
4
  describe('Worker', () => {
6
-
7
- describe("buildQuerySelector", () => {
8
- it('Return correct filter object when passed no argument', async () => {
9
- expect(buildQuerySelector({})).toEqual({ deleted: { '$exists': false } })
5
+ describe('buildQuerySelector', () => {
6
+ it('Return correct filter object when passed no argument', () => {
7
+ expect(buildQuerySelector({})).toEqual({ deleted: { $exists: false } });
10
8
  });
11
9
 
12
- it('Return correct filter object when passed create, queryString, scheduled, status, types & workId', async () => {
13
- const selector = buildQuerySelector({created: {start: new Date("2022-12-04T17:13:09.285Z"), end: new Date("2022-12-04T17:13:09.285Z") }, queryString: "hello world", scheduled: {end: new Date("2022-12-04T17:13:09.285Z"), start: new Date("2022-12-04T17:13:09.285Z")}, status: [WorkStatus.ALLOCATED], types: ['EMAIL'], workId: 'work-id'})
10
+ it('Return correct filter object when passed create, queryString, scheduled, status, types & workId', () => {
11
+ const selector = buildQuerySelector({
12
+ created: {
13
+ start: new Date('2022-12-04T17:13:09.285Z'),
14
+ end: new Date('2022-12-04T17:13:09.285Z'),
15
+ },
16
+ queryString: 'hello world',
17
+ scheduled: {
18
+ end: new Date('2022-12-04T17:13:09.285Z'),
19
+ start: new Date('2022-12-04T17:13:09.285Z'),
20
+ },
21
+ status: [WorkStatus.ALLOCATED],
22
+ types: ['EMAIL'],
23
+ workId: 'work-id',
24
+ });
14
25
  expect(selector).toEqual({
15
26
  _id: 'work-id',
16
- '$or': [
27
+ $or: [
17
28
  {
18
- started: { '$exists': true },
19
- finished: { '$exists': false },
20
- deleted: { '$exists': false }
21
- }
29
+ started: { $exists: true },
30
+ finished: { $exists: false },
31
+ deleted: { $exists: false },
32
+ },
22
33
  ],
23
34
  created: {
24
- '$gte': new Date("2022-12-04T17:13:09.285Z"),
25
- '$lte': new Date("2022-12-04T17:13:09.285Z")
35
+ $gte: new Date('2022-12-04T17:13:09.285Z'),
36
+ $lte: new Date('2022-12-04T17:13:09.285Z'),
26
37
  },
27
38
  scheduled: {
28
- '$gte': new Date("2022-12-04T17:13:09.285Z"),
29
- '$lte': new Date("2022-12-04T17:13:09.285Z")
39
+ $gte: new Date('2022-12-04T17:13:09.285Z'),
40
+ $lte: new Date('2022-12-04T17:13:09.285Z'),
30
41
  },
31
- type: { '$in': [ 'EMAIL' ] },
32
- '$text': { '$search': 'hello world' }
33
- }
34
- )
35
-
42
+ type: { $in: ['EMAIL'] },
43
+ $text: { $search: 'hello world' },
44
+ });
36
45
  });
37
46
 
38
- it('Return correct filter object when passed queryString, scheduled, status, types & workId', async () => {
39
- const selector = buildQuerySelector({ queryString: "hello world", scheduled: {end: new Date("2022-12-04T17:13:09.285Z"), start: new Date("2022-12-04T17:13:09.285Z")}, status: [WorkStatus.ALLOCATED], types: ['EMAIL'], workId: 'work-id'})
47
+ it('Return correct filter object when passed queryString, scheduled, status, types & workId', () => {
48
+ const selector = buildQuerySelector({
49
+ queryString: 'hello world',
50
+ scheduled: {
51
+ end: new Date('2022-12-04T17:13:09.285Z'),
52
+ start: new Date('2022-12-04T17:13:09.285Z'),
53
+ },
54
+ status: [WorkStatus.ALLOCATED],
55
+ types: ['EMAIL'],
56
+ workId: 'work-id',
57
+ });
40
58
  expect(selector).toEqual({
41
59
  _id: 'work-id',
42
- '$or': [
60
+ $or: [
43
61
  {
44
- started: { '$exists': true },
45
- finished: { '$exists': false },
46
- deleted: { '$exists': false }
47
- }
62
+ started: { $exists: true },
63
+ finished: { $exists: false },
64
+ deleted: { $exists: false },
65
+ },
48
66
  ],
49
67
  scheduled: {
50
- '$gte': new Date("2022-12-04T17:13:09.285Z"),
51
- '$lte': new Date("2022-12-04T17:13:09.285Z")
68
+ $gte: new Date('2022-12-04T17:13:09.285Z'),
69
+ $lte: new Date('2022-12-04T17:13:09.285Z'),
52
70
  },
53
- type: { '$in': [ 'EMAIL' ] },
54
- '$text': { '$search': 'hello world' }
55
- }
56
- )
57
-
71
+ type: { $in: ['EMAIL'] },
72
+ $text: { $search: 'hello world' },
73
+ });
58
74
  });
59
75
 
60
- it('Return correct filter object when passed scheduled, status, types & workId', async () => {
61
- const selector = buildQuerySelector({ scheduled: {end: new Date("2022-12-04T17:13:09.285Z"), start: new Date("2022-12-04T17:13:09.285Z")}, status: [WorkStatus.ALLOCATED], types: ['EMAIL'], workId: 'work-id'})
76
+ it('Return correct filter object when passed scheduled, status, types & workId', () => {
77
+ const selector = buildQuerySelector({
78
+ scheduled: {
79
+ end: new Date('2022-12-04T17:13:09.285Z'),
80
+ start: new Date('2022-12-04T17:13:09.285Z'),
81
+ },
82
+ status: [WorkStatus.ALLOCATED],
83
+ types: ['EMAIL'],
84
+ workId: 'work-id',
85
+ });
62
86
  expect(selector).toEqual({
63
87
  _id: 'work-id',
64
- '$or': [
88
+ $or: [
65
89
  {
66
- started: { '$exists': true },
67
- finished: { '$exists': false },
68
- deleted: { '$exists': false }
69
- }
90
+ started: { $exists: true },
91
+ finished: { $exists: false },
92
+ deleted: { $exists: false },
93
+ },
70
94
  ],
71
95
  scheduled: {
72
- '$gte': new Date("2022-12-04T17:13:09.285Z"),
73
- '$lte': new Date("2022-12-04T17:13:09.285Z")
96
+ $gte: new Date('2022-12-04T17:13:09.285Z'),
97
+ $lte: new Date('2022-12-04T17:13:09.285Z'),
74
98
  },
75
- type: { '$in': [ 'EMAIL' ] },
76
- }
77
- )
78
-
99
+ type: { $in: ['EMAIL'] },
100
+ });
79
101
  });
80
102
 
81
- it('Return correct filter object when passed status, types & workId', async () => {
82
- const selector = buildQuerySelector({ status: [WorkStatus.ALLOCATED], types: ['EMAIL'], workId: 'work-id'})
103
+ it('Return correct filter object when passed status, types & workId', () => {
104
+ const selector = buildQuerySelector({
105
+ status: [WorkStatus.ALLOCATED],
106
+ types: ['EMAIL'],
107
+ workId: 'work-id',
108
+ });
83
109
  expect(selector).toEqual({
84
110
  _id: 'work-id',
85
- '$or': [
111
+ $or: [
86
112
  {
87
- started: { '$exists': true },
88
- finished: { '$exists': false },
89
- deleted: { '$exists': false }
90
- }
113
+ started: { $exists: true },
114
+ finished: { $exists: false },
115
+ deleted: { $exists: false },
116
+ },
91
117
  ],
92
- type: { '$in': [ 'EMAIL' ] },
93
- }
94
- )
95
-
118
+ type: { $in: ['EMAIL'] },
119
+ });
96
120
  });
97
121
 
98
- it('Return correct filter object when passed types & workId', async () => {
99
- const selector = buildQuerySelector({ types: ['EMAIL'], workId: 'work-id'})
122
+ it('Return correct filter object when passed types & workId', () => {
123
+ const selector = buildQuerySelector({ types: ['EMAIL'], workId: 'work-id' });
100
124
  expect(selector).toEqual({
101
125
  _id: 'work-id',
102
- deleted: { '$exists': false },
103
- type: { '$in': [ 'EMAIL' ] },
104
- }
105
- )
106
-
126
+ deleted: { $exists: false },
127
+ type: { $in: ['EMAIL'] },
128
+ });
107
129
  });
108
130
 
109
- it('Return correct filter object when passed workId', async () => {
110
- const selector = buildQuerySelector({ workId: 'work-id'})
131
+ it('Return correct filter object when passed workId', () => {
132
+ const selector = buildQuerySelector({ workId: 'work-id' });
111
133
  expect(selector).toEqual({
112
134
  _id: 'work-id',
113
- deleted: { '$exists': false },
114
- }
115
- )
135
+ deleted: { $exists: false },
136
+ });
116
137
  });
117
138
 
118
- it('Create start should be set to start of unix timestamp if created.start not provided', async () => {
119
- const selector = buildQuerySelector({ workId: 'work-id', created: {end: new Date("2022-12-04T17:13:09.285Z")}})
120
-
139
+ it('Create start should be set to start of unix timestamp if created.start not provided', () => {
140
+ const selector = buildQuerySelector({
141
+ workId: 'work-id',
142
+ created: { end: new Date('2022-12-04T17:13:09.285Z') },
143
+ });
144
+
121
145
  expect(selector).toEqual({
122
146
  _id: 'work-id',
123
- deleted: { '$exists': false },
147
+ deleted: { $exists: false },
124
148
  created: {
125
- '$gte': new Date(0),
126
- '$lte': new Date("2022-12-04T17:13:09.285Z")
127
- }
128
- }
129
- )
149
+ $gte: new Date(0),
150
+ $lte: new Date('2022-12-04T17:13:09.285Z'),
151
+ },
152
+ });
130
153
  });
131
154
 
132
-
133
- it('Create start should be set to start or unix timestamp if created.end not provided', async () => {
134
- const selector = buildQuerySelector({ workId: 'work-id', created: {start: new Date("2022-12-04T17:13:09.285Z")}})
155
+ it('Create start should be set to start or unix timestamp if created.end not provided', () => {
156
+ const selector = buildQuerySelector({
157
+ workId: 'work-id',
158
+ created: { start: new Date('2022-12-04T17:13:09.285Z') },
159
+ });
135
160
 
136
161
  expect(selector).toEqual({
137
162
  _id: 'work-id',
138
- deleted: { '$exists': false },
139
- created: { '$gte': new Date("2022-12-04T17:13:09.285Z")}
140
- }
141
- )
142
-
143
- expect(buildQuerySelector({ workId: 'work-id', created: {}})).toEqual({
144
- _id: 'work-id',
145
- deleted: { '$exists': false },
146
- created: { '$gte': new Date(0)}
147
- }
148
- )
163
+ deleted: { $exists: false },
164
+ created: { $gte: new Date('2022-12-04T17:13:09.285Z') },
165
+ });
166
+
167
+ expect(buildQuerySelector({ workId: 'work-id', created: {} })).toEqual({
168
+ _id: 'work-id',
169
+ deleted: { $exists: false },
170
+ created: { $gte: new Date(0) },
171
+ });
149
172
  });
150
173
 
174
+ it('scheduled start should be set to start of unix timestamp if scheduled.start not provided', () => {
175
+ const selector = buildQuerySelector({
176
+ workId: 'work-id',
177
+ scheduled: { end: new Date('2022-12-04T17:13:09.285Z') },
178
+ });
151
179
 
152
- it('scheduled start should be set to start of unix timestamp if scheduled.start not provided', async () => {
153
- const selector = buildQuerySelector({ workId: 'work-id', scheduled: {end: new Date("2022-12-04T17:13:09.285Z")}})
154
-
155
180
  expect(selector).toEqual({
156
181
  _id: 'work-id',
157
- deleted: { '$exists': false },
182
+ deleted: { $exists: false },
158
183
  scheduled: {
159
- '$gte': new Date(0),
160
- '$lte': new Date("2022-12-04T17:13:09.285Z")
161
- }
162
- }
163
- )
184
+ $gte: new Date(0),
185
+ $lte: new Date('2022-12-04T17:13:09.285Z'),
186
+ },
187
+ });
164
188
  });
165
189
 
166
-
167
- it('Scheduled start should be set to start or unix timestamp if scheduled.end not provided', async () => {
168
- const selector = buildQuerySelector({ workId: 'work-id', scheduled: {start: new Date("2022-12-04T17:13:09.285Z")}})
190
+ it('Scheduled start should be set to start or unix timestamp if scheduled.end not provided', () => {
191
+ const selector = buildQuerySelector({
192
+ workId: 'work-id',
193
+ scheduled: { start: new Date('2022-12-04T17:13:09.285Z') },
194
+ });
169
195
 
170
196
  expect(selector).toEqual({
171
197
  _id: 'work-id',
172
- deleted: { '$exists': false },
173
- scheduled: { '$gte': new Date("2022-12-04T17:13:09.285Z")}
174
- }
175
- )
176
-
177
- expect(buildQuerySelector({ workId: 'work-id', scheduled: {}})).toEqual({
178
- _id: 'work-id',
179
- deleted: { '$exists': false },
180
- scheduled: { '$gte': new Date(0)}
181
- }
182
- )
183
- });
184
-
198
+ deleted: { $exists: false },
199
+ scheduled: { $gte: new Date('2022-12-04T17:13:09.285Z') },
200
+ });
185
201
 
186
-
187
- })
188
-
202
+ expect(buildQuerySelector({ workId: 'work-id', scheduled: {} })).toEqual({
203
+ _id: 'work-id',
204
+ deleted: { $exists: false },
205
+ scheduled: { $gte: new Date(0) },
206
+ });
207
+ });
208
+ });
189
209
  });