@unchainedshop/core-worker 1.1.3

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 (57) hide show
  1. package/.npm/package/README +7 -0
  2. package/.npm/package/npm-shrinkwrap.json +257 -0
  3. package/.versions +53 -0
  4. package/README.md +9 -0
  5. package/lib/db/WorkQueueCollection.d.ts +3 -0
  6. package/lib/db/WorkQueueCollection.js +32 -0
  7. package/lib/db/WorkQueueCollection.js.map +1 -0
  8. package/lib/db/WorkQueueSchema.d.ts +1 -0
  9. package/lib/db/WorkQueueSchema.js +20 -0
  10. package/lib/db/WorkQueueSchema.js.map +1 -0
  11. package/lib/director/WorkStatus.d.ts +7 -0
  12. package/lib/director/WorkStatus.js +9 -0
  13. package/lib/director/WorkStatus.js.map +1 -0
  14. package/lib/director/WorkerAdapter.d.ts +2 -0
  15. package/lib/director/WorkerAdapter.js +10 -0
  16. package/lib/director/WorkerAdapter.js.map +1 -0
  17. package/lib/director/WorkerDirector.d.ts +3 -0
  18. package/lib/director/WorkerDirector.js +46 -0
  19. package/lib/director/WorkerDirector.js.map +1 -0
  20. package/lib/director/WorkerEventTypes.d.ts +8 -0
  21. package/lib/director/WorkerEventTypes.js +13 -0
  22. package/lib/director/WorkerEventTypes.js.map +1 -0
  23. package/lib/module/configureWorkerModule.d.ts +3 -0
  24. package/lib/module/configureWorkerModule.js +272 -0
  25. package/lib/module/configureWorkerModule.js.map +1 -0
  26. package/lib/schedulers/FailedRescheduler.d.ts +2 -0
  27. package/lib/schedulers/FailedRescheduler.js +38 -0
  28. package/lib/schedulers/FailedRescheduler.js.map +1 -0
  29. package/lib/worker-index.d.ts +9 -0
  30. package/lib/worker-index.js +10 -0
  31. package/lib/worker-index.js.map +1 -0
  32. package/lib/workers/BaseWorker.d.ts +7 -0
  33. package/lib/workers/BaseWorker.js +85 -0
  34. package/lib/workers/BaseWorker.js.map +1 -0
  35. package/lib/workers/EventListenerWorker.d.ts +4 -0
  36. package/lib/workers/EventListenerWorker.js +44 -0
  37. package/lib/workers/EventListenerWorker.js.map +1 -0
  38. package/lib/workers/IntervalWorker.d.ts +9 -0
  39. package/lib/workers/IntervalWorker.js +38 -0
  40. package/lib/workers/IntervalWorker.js.map +1 -0
  41. package/package.js +33 -0
  42. package/package.json +43 -0
  43. package/src/db/WorkQueueCollection.ts +37 -0
  44. package/src/db/WorkQueueSchema.js +23 -0
  45. package/src/director/WorkStatus.ts +7 -0
  46. package/src/director/WorkerAdapter.ts +12 -0
  47. package/src/director/WorkerDirector.ts +73 -0
  48. package/src/director/WorkerEventTypes.ts +11 -0
  49. package/src/module/configureWorkerModule.ts +397 -0
  50. package/src/schedulers/FailedRescheduler.ts +53 -0
  51. package/src/worker-index.ts +12 -0
  52. package/src/workers/BaseWorker.ts +116 -0
  53. package/src/workers/EventListenerWorker.ts +55 -0
  54. package/src/workers/IntervalWorker.ts +57 -0
  55. package/tests/worker-index.test.ts +32 -0
  56. package/tsconfig.build.json +26 -0
  57. package/tsconfig.json +8 -0
@@ -0,0 +1,7 @@
1
+ This directory and the files immediately inside it are automatically generated
2
+ when you change this package's NPM dependencies. Commit the files in this
3
+ directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
4
+ so that others run the same versions of sub-dependencies.
5
+
6
+ You should NOT check in the node_modules directory that Meteor automatically
7
+ creates; if you are using git, the .gitignore file tells git to ignore it.
@@ -0,0 +1,257 @@
1
+ {
2
+ "lockfileVersion": 1,
3
+ "dependencies": {
4
+ "@colors/colors": {
5
+ "version": "1.5.0",
6
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
7
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
8
+ },
9
+ "@dabh/diagnostics": {
10
+ "version": "2.0.3",
11
+ "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
12
+ "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA=="
13
+ },
14
+ "@unchainedshop/logger": {
15
+ "version": "1.1.3",
16
+ "resolved": "https://registry.npmjs.org/@unchainedshop/logger/-/logger-1.1.3.tgz",
17
+ "integrity": "sha512-tYQIMhkSRehRTcIG7g04lMsYj+9E5gs+rH4/KLWMGkHOMawwn6Gzy2Q3ecuDBGWoR79zTv6LaHJ4b23pAktzwA=="
18
+ },
19
+ "@unchainedshop/utils": {
20
+ "version": "1.1.3",
21
+ "resolved": "https://registry.npmjs.org/@unchainedshop/utils/-/utils-1.1.3.tgz",
22
+ "integrity": "sha512-5kUVHspX3RQK2dSiV6rr7FEn4VbP94M3EySxkDxH9Ck6WvZd9rVPjJiaOQwAK5ChC6EGdghqOI5D7pJQsuKi7g==",
23
+ "dependencies": {
24
+ "@unchainedshop/logger": {
25
+ "version": "1.1.3",
26
+ "resolved": "https://registry.npmjs.org/@unchainedshop/logger/-/logger-1.1.3.tgz",
27
+ "integrity": "sha512-tYQIMhkSRehRTcIG7g04lMsYj+9E5gs+rH4/KLWMGkHOMawwn6Gzy2Q3ecuDBGWoR79zTv6LaHJ4b23pAktzwA=="
28
+ },
29
+ "simpl-schema": {
30
+ "version": "1.12.2",
31
+ "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.12.2.tgz",
32
+ "integrity": "sha512-FaisAjfJEt7Ie7K39wNqb/0F7FQ1q7yXmZcNa5JEBiPA9hIt4MpWMouL9mLqNB89alGpZAEiU7U9BelDxRqCVg=="
33
+ }
34
+ }
35
+ },
36
+ "abort-controller": {
37
+ "version": "3.0.0",
38
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
39
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="
40
+ },
41
+ "async": {
42
+ "version": "3.2.4",
43
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
44
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
45
+ },
46
+ "base64-js": {
47
+ "version": "1.5.1",
48
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
49
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
50
+ },
51
+ "bson": {
52
+ "version": "4.6.4",
53
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
54
+ "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ=="
55
+ },
56
+ "buffer": {
57
+ "version": "5.7.1",
58
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
59
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="
60
+ },
61
+ "clone": {
62
+ "version": "2.1.2",
63
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
64
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
65
+ },
66
+ "color": {
67
+ "version": "3.2.1",
68
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
69
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="
70
+ },
71
+ "color-convert": {
72
+ "version": "1.9.3",
73
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
74
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
75
+ },
76
+ "color-name": {
77
+ "version": "1.1.3",
78
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
79
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
80
+ },
81
+ "color-string": {
82
+ "version": "1.9.1",
83
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
84
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="
85
+ },
86
+ "colorspace": {
87
+ "version": "1.1.4",
88
+ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
89
+ "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w=="
90
+ },
91
+ "enabled": {
92
+ "version": "2.0.0",
93
+ "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
94
+ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
95
+ },
96
+ "event-target-shim": {
97
+ "version": "5.0.1",
98
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
99
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
100
+ },
101
+ "fecha": {
102
+ "version": "4.2.3",
103
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
104
+ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="
105
+ },
106
+ "fn.name": {
107
+ "version": "1.1.0",
108
+ "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
109
+ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
110
+ },
111
+ "hashids": {
112
+ "version": "2.2.10",
113
+ "resolved": "https://registry.npmjs.org/hashids/-/hashids-2.2.10.tgz",
114
+ "integrity": "sha512-nXnYums7F8B5Y+GSThutLPlKMaamW1yjWNZVt0WModiJfdjaDZHnhYTWblS+h1OoBx3yjwiBwxldPP3nIbFSSA=="
115
+ },
116
+ "ieee754": {
117
+ "version": "1.2.1",
118
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
119
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
120
+ },
121
+ "inherits": {
122
+ "version": "2.0.4",
123
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
124
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
125
+ },
126
+ "is-arrayish": {
127
+ "version": "0.3.2",
128
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
129
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
130
+ },
131
+ "is-stream": {
132
+ "version": "2.0.1",
133
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
134
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
135
+ },
136
+ "kuler": {
137
+ "version": "2.0.0",
138
+ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
139
+ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
140
+ },
141
+ "later": {
142
+ "version": "1.2.0",
143
+ "resolved": "https://registry.npmjs.org/later/-/later-1.2.0.tgz",
144
+ "integrity": "sha512-Gi4c6JariwTigfAQLFCyWKKtyY5yzMZOdJdUH9Ori4FqQxQYDREvDRTu5N+jBM7hcnyEDMeYjhmRUTwLIjEMqA=="
145
+ },
146
+ "locale": {
147
+ "version": "0.1.0",
148
+ "resolved": "https://registry.npmjs.org/locale/-/locale-0.1.0.tgz",
149
+ "integrity": "sha512-rY3ZMnUkMfaZEix1fp/pjdwsHJkDQcE0UEcXHuYI77J03K8gddL3iD+UuJCLAmT2Z2oz5A70/0QS4J9OLCCvXw=="
150
+ },
151
+ "lodash._reinterpolate": {
152
+ "version": "3.0.0",
153
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
154
+ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA=="
155
+ },
156
+ "lodash.template": {
157
+ "version": "4.5.0",
158
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
159
+ "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A=="
160
+ },
161
+ "lodash.templatesettings": {
162
+ "version": "4.2.0",
163
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
164
+ "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ=="
165
+ },
166
+ "logform": {
167
+ "version": "2.4.1",
168
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.1.tgz",
169
+ "integrity": "sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A=="
170
+ },
171
+ "lru-cache": {
172
+ "version": "7.10.2",
173
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.2.tgz",
174
+ "integrity": "sha512-9zDbhgmXAUvUMPV81A705K3tVzcPiZL3Bf5/5JC/FjYJlLZ5AJCeqIRFHJqyBppiLosqF+uKB7p8/RDXylqBIw=="
175
+ },
176
+ "message-box": {
177
+ "version": "0.2.7",
178
+ "resolved": "https://registry.npmjs.org/message-box/-/message-box-0.2.7.tgz",
179
+ "integrity": "sha512-C4ccA5nHb58kTS+pLrgF/JWtr7fAIkHxRDceH7tdy5fMA783nUfbYwZ7H2XLvSeYfcnWIYCig5dWW+icK9X/Ag=="
180
+ },
181
+ "mongo-object": {
182
+ "version": "0.1.4",
183
+ "resolved": "https://registry.npmjs.org/mongo-object/-/mongo-object-0.1.4.tgz",
184
+ "integrity": "sha512-QtYk0gupWEn2+iB+DDRt1L+WbcNYvJRaHdih/dcqthOa1DbnREUGSs2WGcW478GNYpElflo/yybZXu0sTiRXHg=="
185
+ },
186
+ "ms": {
187
+ "version": "2.1.3",
188
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
189
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
190
+ },
191
+ "one-time": {
192
+ "version": "1.0.0",
193
+ "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
194
+ "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g=="
195
+ },
196
+ "readable-stream": {
197
+ "version": "3.6.0",
198
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
199
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="
200
+ },
201
+ "safe-buffer": {
202
+ "version": "5.2.1",
203
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
204
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
205
+ },
206
+ "safe-stable-stringify": {
207
+ "version": "2.3.1",
208
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz",
209
+ "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg=="
210
+ },
211
+ "simpl-schema": {
212
+ "version": "1.12.0",
213
+ "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.12.0.tgz",
214
+ "integrity": "sha512-lzXC3L8jJbPhNXGR3cjlyIauqqrC5WUJS4O34Ym/wLIvb8K3ZieK+1OfTzs4mBpDc3Y8u53gQFAr1X37DmTcEg=="
215
+ },
216
+ "simple-swizzle": {
217
+ "version": "0.2.2",
218
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
219
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="
220
+ },
221
+ "stack-trace": {
222
+ "version": "0.0.10",
223
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
224
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="
225
+ },
226
+ "string_decoder": {
227
+ "version": "1.3.0",
228
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
229
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="
230
+ },
231
+ "text-hex": {
232
+ "version": "1.0.0",
233
+ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
234
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
235
+ },
236
+ "triple-beam": {
237
+ "version": "1.3.0",
238
+ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
239
+ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
240
+ },
241
+ "util-deprecate": {
242
+ "version": "1.0.2",
243
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
244
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
245
+ },
246
+ "winston": {
247
+ "version": "3.8.0",
248
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.0.tgz",
249
+ "integrity": "sha512-Iix1w8rIq2kBDkGvclO0db2CVOHYVamCIkVWcUbs567G9i2pdB+gvqLgDgxx4B4HXHYD6U4Zybh6ojepUOqcFQ=="
250
+ },
251
+ "winston-transport": {
252
+ "version": "4.5.0",
253
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
254
+ "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q=="
255
+ }
256
+ }
257
+ }
package/.versions ADDED
@@ -0,0 +1,53 @@
1
+ allow-deny@1.1.1
2
+ babel-compiler@7.9.0
3
+ babel-runtime@1.5.1
4
+ base64@1.0.12
5
+ binary-heap@1.0.11
6
+ boilerplate-generator@1.7.1
7
+ callback-hook@1.4.0
8
+ check@1.3.1
9
+ ddp@1.4.0
10
+ ddp-client@2.5.0
11
+ ddp-common@1.4.0
12
+ ddp-server@2.5.0
13
+ diff-sequence@1.1.1
14
+ dynamic-import@0.7.2
15
+ ecmascript@0.16.2
16
+ ecmascript-runtime@0.8.0
17
+ ecmascript-runtime-client@0.12.1
18
+ ecmascript-runtime-server@0.11.0
19
+ ejson@1.1.2
20
+ fetch@0.1.1
21
+ geojson-utils@1.0.10
22
+ id-map@1.1.1
23
+ inter-process-messaging@0.1.1
24
+ local-test:unchained:core-worker@1.1.2
25
+ logging@1.3.1
26
+ meteor@1.10.0
27
+ meteortesting:browser-tests@0.1.2
28
+ meteortesting:mocha@0.4.4
29
+ minimongo@1.8.0
30
+ modern-browsers@0.1.8
31
+ modules@0.18.0
32
+ modules-runtime@0.13.0
33
+ mongo@1.15.0
34
+ mongo-decimal@0.1.3
35
+ mongo-dev-server@1.1.0
36
+ mongo-id@1.0.8
37
+ npm-mongo@4.3.1
38
+ ordered-dict@1.1.0
39
+ practicalmeteor:mocha-core@1.0.1
40
+ promise@0.12.0
41
+ random@1.2.0
42
+ react-fast-refresh@0.2.3
43
+ reload@1.3.1
44
+ retry@1.1.0
45
+ routepolicy@1.1.1
46
+ socket-stream-client@0.5.0
47
+ tracker@1.2.0
48
+ typescript@4.5.4
49
+ unchained:core-worker@1.1.2
50
+ unchained:mongodb@1.0.0
51
+ underscore@1.0.10
52
+ webapp@1.13.1
53
+ webapp-hashing@1.1.0
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Worker (Unchained Engine)
2
+
3
+ This is a simple implementation of a worker queue and workers as plugins.
4
+
5
+ Plugins are linked to jobs by the `type`.
6
+
7
+ ## Explanations
8
+
9
+ - It is the plugins responsibility to handle the retries.
@@ -0,0 +1,3 @@
1
+ import { Db } from '@unchainedshop/types/common';
2
+ import { Work } from '@unchainedshop/types/worker';
3
+ export declare const WorkQueueCollection: (db: Db) => Promise<import("mongodb").Collection<Work>>;
@@ -0,0 +1,32 @@
1
+ import { buildDbIndexes } from '@unchainedshop/utils';
2
+ const ONE_DAY_IN_SECONDS = 86400;
3
+ export const WorkQueueCollection = async (db) => {
4
+ const WorkQueue = db.collection('work_queue');
5
+ await buildDbIndexes(WorkQueue, [
6
+ {
7
+ index: { created: -1 },
8
+ options: { expireAfterSeconds: 30 * ONE_DAY_IN_SECONDS },
9
+ },
10
+ { index: { started: -1 } },
11
+ { index: { finished: 1 } },
12
+ { index: { scheduled: 1 } },
13
+ { index: { priority: -1 } },
14
+ { index: { type: 1 } },
15
+ { index: { originalWorkId: 1 } },
16
+ {
17
+ index: { originalWorkId: 'text', _id: 'text', worker: 'text', input: 'text', type: 'text' },
18
+ options: {
19
+ weights: {
20
+ _id: 8,
21
+ originalWorkId: 6,
22
+ type: 5,
23
+ worker: 4,
24
+ input: 2,
25
+ },
26
+ name: 'workqueue_fulltext_search',
27
+ },
28
+ },
29
+ ]);
30
+ return WorkQueue;
31
+ };
32
+ //# sourceMappingURL=WorkQueueCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkQueueCollection.js","sourceRoot":"","sources":["../../src/db/WorkQueueCollection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAAM,EAAE,EAAE;IAClD,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAO,YAAY,CAAC,CAAC;IAEpD,MAAM,cAAc,CAAO,SAAS,EAAE;QACpC;YACE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;YACtB,OAAO,EAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,kBAAkB,EAAE;SACzD;QACD,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE;QAC1B,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;QAC3B,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QAC3B,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACtB,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE;QAChC;YACE,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3F,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,GAAG,EAAE,CAAC;oBACN,cAAc,EAAE,CAAC;oBACjB,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,CAAC;iBACT;gBACD,IAAI,EAAE,2BAA2B;aAClC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export const WorkQueueSchema: any;
@@ -0,0 +1,20 @@
1
+ import { Schemas } from '@unchainedshop/utils';
2
+ import SimpleSchema from 'simpl-schema';
3
+ export const WorkQueueSchema = new SimpleSchema({
4
+ finished: Date,
5
+ originalWorkId: { type: String },
6
+ priority: { type: Number, required: true },
7
+ retries: { type: Number, required: true },
8
+ scheduled: { type: Date, required: true },
9
+ started: Date,
10
+ success: Boolean,
11
+ timeout: Number,
12
+ type: { type: String, required: true },
13
+ worker: String,
14
+ // Worker data
15
+ input: { type: Object, blackbox: true },
16
+ result: { type: Object, blackbox: true },
17
+ error: { type: Object, blackbox: true },
18
+ ...Schemas.timestampFields,
19
+ }, { requiredByDefault: false });
20
+ //# sourceMappingURL=WorkQueueSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkQueueSchema.js","sourceRoot":"","sources":["../../src/db/WorkQueueSchema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,YAAY,CAC7C;IACE,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAChC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzC,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM;IACd,cAAc;IACd,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare enum WorkStatus {
2
+ NEW = "NEW",
3
+ ALLOCATED = "ALLOCATED",
4
+ SUCCESS = "SUCCESS",
5
+ FAILED = "FAILED",
6
+ DELETED = "DELETED"
7
+ }
@@ -0,0 +1,9 @@
1
+ export var WorkStatus;
2
+ (function (WorkStatus) {
3
+ WorkStatus["NEW"] = "NEW";
4
+ WorkStatus["ALLOCATED"] = "ALLOCATED";
5
+ WorkStatus["SUCCESS"] = "SUCCESS";
6
+ WorkStatus["FAILED"] = "FAILED";
7
+ WorkStatus["DELETED"] = "DELETED";
8
+ })(WorkStatus || (WorkStatus = {}));
9
+ //# sourceMappingURL=WorkStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkStatus.js","sourceRoot":"","sources":["../../src/director/WorkStatus.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;AACrB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB"}
@@ -0,0 +1,2 @@
1
+ import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
+ export declare const WorkerAdapter: Omit<IWorkerAdapter<any, void>, 'key' | 'label' | 'type' | 'version'>;
@@ -0,0 +1,10 @@
1
+ import { log, LogLevel } from '@unchainedshop/logger';
2
+ export const WorkerAdapter = {
3
+ async doWork() {
4
+ return { success: false, result: null };
5
+ },
6
+ log(message, { level = LogLevel.Debug, ...options } = {}) {
7
+ return log(message, { level, ...options });
8
+ },
9
+ };
10
+ //# sourceMappingURL=WorkerAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerAdapter.js","sourceRoot":"","sources":["../../src/director/WorkerAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAA0E;IAClG,KAAK,CAAC,MAAM;QACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;QAC9D,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { IWorkerDirector } from '@unchainedshop/types/worker';
2
+ export declare const DIRECTOR_MARKED_FAILED_ERROR = "DIRECTOR_MARKED_FAILED";
3
+ export declare const WorkerDirector: IWorkerDirector;
@@ -0,0 +1,46 @@
1
+ import { EventEmitter } from 'events';
2
+ import { log, LogLevel } from '@unchainedshop/logger';
3
+ import { BaseDirector } from '@unchainedshop/utils';
4
+ import { WorkerEventTypes } from './WorkerEventTypes';
5
+ export const DIRECTOR_MARKED_FAILED_ERROR = 'DIRECTOR_MARKED_FAILED';
6
+ const AutoScheduleMap = new Map();
7
+ const baseDirector = BaseDirector('WorkerDirector', {
8
+ adapterKeyField: 'type',
9
+ });
10
+ export const WorkerDirector = {
11
+ ...baseDirector,
12
+ events: new EventEmitter(),
13
+ getActivePluginTypes: () => {
14
+ return baseDirector.getAdapters().map((adapter) => adapter.type);
15
+ },
16
+ registerAdapter: (Adapter) => {
17
+ if (baseDirector.getAdapter(Adapter.type))
18
+ throw new Error(`WorkderDirector: There is already a adapter registered with type: ${Adapter.type}`);
19
+ baseDirector.registerAdapter(Adapter);
20
+ },
21
+ configureAutoscheduling: (adapter, workQueue) => {
22
+ const { schedule } = workQueue;
23
+ AutoScheduleMap.set(adapter.type, workQueue);
24
+ log(`WorkderDirector -> Configured ${adapter.type} ${adapter.key}@${adapter.version} (${adapter.label}) for Autorun at ${schedule}`);
25
+ },
26
+ getAutoSchedules: () => Array.from(AutoScheduleMap),
27
+ doWork: async ({ type, input, _id: workId }, requestContext) => {
28
+ const adapter = baseDirector.getAdapter(type);
29
+ if (!adapter) {
30
+ log(`WorkderDirector: No registered adapter for type: ${type}`);
31
+ }
32
+ const output = await adapter.doWork(input, requestContext, workId).catch((error) => {
33
+ // DO not use this as flow control. The adapter should catch expected errors and return status: FAILED
34
+ log('DO not use this as flow control.', { level: LogLevel.Verbose });
35
+ log(`WorkderDirector -> Error doing work ${type}: ${error.message}`);
36
+ const errorOutput = { error, success: false };
37
+ WorkerDirector.events.emit(WorkerEventTypes.DONE, {
38
+ output: errorOutput,
39
+ });
40
+ return errorOutput;
41
+ });
42
+ WorkerDirector.events.emit(WorkerEventTypes.DONE, { output });
43
+ return output;
44
+ },
45
+ };
46
+ //# sourceMappingURL=WorkerDirector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerDirector.js","sourceRoot":"","sources":["../../src/director/WorkerDirector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;AAErE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAsC,CAAC;AAEtE,MAAM,YAAY,GAAG,YAAY,CAA2B,gBAAgB,EAAE;IAC5E,eAAe,EAAE,MAAM;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,GAAG,YAAY;IAEf,MAAM,EAAE,IAAI,YAAY,EAAE;IAE1B,oBAAoB,EAAE,GAAG,EAAE;QACzB,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,qEAAqE,OAAO,CAAC,IAAI,EAAE,CACpF,CAAC;QAEJ,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,uBAAuB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QAC/B,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,GAAG,CACD,iCAAiC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,oBAAoB,QAAQ,EAAE,CAChI,CAAC;IACJ,CAAC;IACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IAEnD,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,cAAuB,EAAE,EAAE;QACtE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE;YACZ,GAAG,CAAC,oDAAoD,IAAI,EAAE,CAAC,CAAC;SACjE;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACjF,sGAAsG;YACtG,GAAG,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAErE,GAAG,CAAC,uCAAuC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAErE,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAE9C,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;gBAChD,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAE9D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare enum WorkerEventTypes {
2
+ ADDED = "added",
3
+ ALLOCATED = "allocated",
4
+ DONE = "done",
5
+ FINISHED = "finished",
6
+ DELETED = "deleted",
7
+ RESCHEDULED = "rescheduled"
8
+ }
@@ -0,0 +1,13 @@
1
+ export var WorkerEventTypes;
2
+ (function (WorkerEventTypes) {
3
+ WorkerEventTypes["ADDED"] = "added";
4
+ WorkerEventTypes["ALLOCATED"] = "allocated";
5
+ WorkerEventTypes["DONE"] = "done";
6
+ WorkerEventTypes["FINISHED"] = "finished";
7
+ WorkerEventTypes["DELETED"] = "deleted";
8
+ WorkerEventTypes["RESCHEDULED"] = "rescheduled";
9
+ })(WorkerEventTypes || (WorkerEventTypes = {}));
10
+ // The difference between `done` and `finished` is, that work is `done` after
11
+ // it was computed (no DB write, could be external) and `finished` after
12
+ // the changes are written to the DB
13
+ //# sourceMappingURL=WorkerEventTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerEventTypes.js","sourceRoot":"","sources":["../../src/director/WorkerEventTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,2CAAuB,CAAA;IACvB,iCAAa,CAAA;IACb,yCAAqB,CAAA;IACrB,uCAAmB,CAAA;IACnB,+CAA2B,CAAA;AAC7B,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AACD,6EAA6E;AAC7E,wEAAwE;AACxE,oCAAoC"}
@@ -0,0 +1,3 @@
1
+ import { ModuleInput } from '@unchainedshop/types/common';
2
+ import { WorkerModule } from '@unchainedshop/types/worker';
3
+ export declare const configureWorkerModule: ({ db, }: ModuleInput<Record<string, never>>) => Promise<WorkerModule>;