@allgemein/queue 1.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 (53) hide show
  1. package/README.md +1 -0
  2. package/browser.d.ts +6 -0
  3. package/browser.js +23 -0
  4. package/browser.js.map +1 -0
  5. package/index.d.ts +6 -0
  6. package/index.js +29 -0
  7. package/index.js.map +1 -0
  8. package/lib/AsyncWorkerQueue.d.ts +63 -0
  9. package/lib/AsyncWorkerQueue.js +294 -0
  10. package/lib/AsyncWorkerQueue.js.map +1 -0
  11. package/lib/CacheArray.d.ts +22 -0
  12. package/lib/CacheArray.js +76 -0
  13. package/lib/CacheArray.js.map +1 -0
  14. package/lib/Constants.d.ts +8 -0
  15. package/lib/Constants.js +12 -0
  16. package/lib/Constants.js.map +1 -0
  17. package/lib/DefaultArray.d.ts +14 -0
  18. package/lib/DefaultArray.js +55 -0
  19. package/lib/DefaultArray.js.map +1 -0
  20. package/lib/IAsyncQueueOptions.d.ts +28 -0
  21. package/lib/IAsyncQueueOptions.js +3 -0
  22. package/lib/IAsyncQueueOptions.js.map +1 -0
  23. package/lib/IAsyncQueueStats.d.ts +7 -0
  24. package/lib/IAsyncQueueStats.js +3 -0
  25. package/lib/IAsyncQueueStats.js.map +1 -0
  26. package/lib/ICache.d.ts +6 -0
  27. package/lib/ICache.js +5 -0
  28. package/lib/ICache.js.map +1 -0
  29. package/lib/ICacheOptions.d.ts +9 -0
  30. package/lib/ICacheOptions.js +3 -0
  31. package/lib/ICacheOptions.js.map +1 -0
  32. package/lib/IQueue.d.ts +8 -0
  33. package/lib/IQueue.js +3 -0
  34. package/lib/IQueue.js.map +1 -0
  35. package/lib/IQueueArray.d.ts +11 -0
  36. package/lib/IQueueArray.js +3 -0
  37. package/lib/IQueueArray.js.map +1 -0
  38. package/lib/IQueueProcessor.d.ts +7 -0
  39. package/lib/IQueueProcessor.js +3 -0
  40. package/lib/IQueueProcessor.js.map +1 -0
  41. package/lib/IQueueWorkload.d.ts +2 -0
  42. package/lib/IQueueWorkload.js +3 -0
  43. package/lib/IQueueWorkload.js.map +1 -0
  44. package/lib/IdObject.d.ts +3 -0
  45. package/lib/IdObject.js +3 -0
  46. package/lib/IdObject.js.map +1 -0
  47. package/lib/QueueJob.d.ts +69 -0
  48. package/lib/QueueJob.js +158 -0
  49. package/lib/QueueJob.js.map +1 -0
  50. package/lib/QueueJobRef.d.ts +9 -0
  51. package/lib/QueueJobRef.js +14 -0
  52. package/lib/QueueJobRef.js.map +1 -0
  53. package/package.json +24 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @allgemein/queue
package/browser.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './lib/IQueue';
2
+ export * from './lib/ICache';
3
+ export * from './lib/IdObject';
4
+ export * from './lib/IAsyncQueueOptions';
5
+ export * from './lib/IAsyncQueueStats';
6
+ export * from './lib/Constants';
package/browser.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/IQueue"), exports);
18
+ __exportStar(require("./lib/ICache"), exports);
19
+ __exportStar(require("./lib/IdObject"), exports);
20
+ __exportStar(require("./lib/IAsyncQueueOptions"), exports);
21
+ __exportStar(require("./lib/IAsyncQueueStats"), exports);
22
+ __exportStar(require("./lib/Constants"), exports);
23
+ //# sourceMappingURL=browser.js.map
package/browser.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,2DAAyC;AACzC,yDAAuC;AACvC,kDAAgC"}
package/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './browser';
2
+ export { AsyncWorkerQueue } from './lib/AsyncWorkerQueue';
3
+ export { CacheArray } from './lib/CacheArray';
4
+ export { DefaultArray } from './lib/DefaultArray';
5
+ export { QueueJob } from './lib/QueueJob';
6
+ export { QueueJobRef } from './lib/QueueJobRef';
package/index.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.QueueJobRef = exports.QueueJob = exports.DefaultArray = exports.CacheArray = exports.AsyncWorkerQueue = void 0;
18
+ __exportStar(require("./browser"), exports);
19
+ var AsyncWorkerQueue_1 = require("./lib/AsyncWorkerQueue");
20
+ Object.defineProperty(exports, "AsyncWorkerQueue", { enumerable: true, get: function () { return AsyncWorkerQueue_1.AsyncWorkerQueue; } });
21
+ var CacheArray_1 = require("./lib/CacheArray");
22
+ Object.defineProperty(exports, "CacheArray", { enumerable: true, get: function () { return CacheArray_1.CacheArray; } });
23
+ var DefaultArray_1 = require("./lib/DefaultArray");
24
+ Object.defineProperty(exports, "DefaultArray", { enumerable: true, get: function () { return DefaultArray_1.DefaultArray; } });
25
+ var QueueJob_1 = require("./lib/QueueJob");
26
+ Object.defineProperty(exports, "QueueJob", { enumerable: true, get: function () { return QueueJob_1.QueueJob; } });
27
+ var QueueJobRef_1 = require("./lib/QueueJobRef");
28
+ Object.defineProperty(exports, "QueueJobRef", { enumerable: true, get: function () { return QueueJobRef_1.QueueJobRef; } });
29
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA0B;AAE1B,2DAAwD;AAAhD,oHAAA,gBAAgB,OAAA;AACxB,+CAA4C;AAApC,wGAAA,UAAU,OAAA;AAClB,mDAAgD;AAAxC,4GAAA,YAAY,OAAA;AACpB,2CAAwC;AAAhC,oGAAA,QAAQ,OAAA;AAChB,iDAA8C;AAAtC,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,63 @@
1
+ import { EventEmitter } from 'events';
2
+ import { IAsyncQueueOptions } from './IAsyncQueueOptions';
3
+ import { IQueueProcessor } from './IQueueProcessor';
4
+ import { IQueueWorkload } from './IQueueWorkload';
5
+ import { QueueJob } from './QueueJob';
6
+ import { IAsyncQueueStats } from './IAsyncQueueStats';
7
+ import { ILoggerApi } from '@allgemein/logging';
8
+ import { IQueue } from './IQueue';
9
+ import { QueueJobRef } from './QueueJobRef';
10
+ export declare class AsyncWorkerQueue<T extends IQueueWorkload> extends EventEmitter implements IQueue {
11
+ private _inc;
12
+ private _done;
13
+ private _error;
14
+ private _paused;
15
+ private enqueueing;
16
+ private options;
17
+ private processor;
18
+ private runningTasks;
19
+ private all;
20
+ private worker;
21
+ private done;
22
+ private active;
23
+ private logger;
24
+ private concurrent;
25
+ private maxConcurrent;
26
+ constructor(processor: IQueueProcessor<T>, options?: IAsyncQueueOptions);
27
+ getInc(): number;
28
+ getLogger(): ILoggerApi;
29
+ private cleanup;
30
+ private next;
31
+ getConcurrent(): number;
32
+ speedUp(): void;
33
+ speedDown(): void;
34
+ status(): IAsyncQueueStats;
35
+ private process;
36
+ private enqueue;
37
+ private drained;
38
+ private fireProcess;
39
+ get(id: string): Promise<QueueJob<T>> | QueueJob<T>;
40
+ set(x: QueueJob<T>): QueueJob<T> | Promise<QueueJob<T>>;
41
+ /**
42
+ * all processed queue is empty
43
+ */
44
+ await(): Promise<void>;
45
+ /**
46
+ * Creates a new QueueJob for passed entry and return a promise which that the job will be enqueued
47
+ *
48
+ * @param entry
49
+ * @returns {QueueJob<T>}
50
+ */
51
+ push(entry: T): QueueJobRef<T>;
52
+ running(): number;
53
+ doingEnqueueing(): number;
54
+ enqueued(): number;
55
+ amount(): number;
56
+ isPaused(): boolean;
57
+ isRunning(): boolean;
58
+ isIdle(): boolean;
59
+ isOccupied(): boolean;
60
+ pause(): Promise<boolean>;
61
+ resume(): void;
62
+ shutdown(doAwait?: boolean): Promise<void>;
63
+ }
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AsyncWorkerQueue = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const events_1 = require("events");
6
+ const QueueJob_1 = require("./QueueJob");
7
+ const logging_1 = require("@allgemein/logging");
8
+ const Constants_1 = require("./Constants");
9
+ const CacheArray_1 = require("./CacheArray");
10
+ const DefaultArray_1 = require("./DefaultArray");
11
+ const QueueJobRef_1 = require("./QueueJobRef");
12
+ const ASYNC_QUEUE_DEFAULT = {
13
+ name: 'none',
14
+ concurrent: 5,
15
+ cleanupTimeout: 60000
16
+ };
17
+ class AsyncWorkerQueue extends events_1.EventEmitter {
18
+ constructor(processor, options = { name: 'none' }) {
19
+ super();
20
+ this._inc = 0;
21
+ this._done = 0;
22
+ this._error = 0;
23
+ this._paused = false;
24
+ this.enqueueing = 0;
25
+ this.runningTasks = 0;
26
+ this.worker = [];
27
+ this.done = [];
28
+ this.active = [];
29
+ this.concurrent = 5;
30
+ this.maxConcurrent = 5;
31
+ this.setMaxListeners(10000);
32
+ this.options = (0, lodash_1.defaults)(options, ASYNC_QUEUE_DEFAULT);
33
+ this.concurrent = this.maxConcurrent = this.options.concurrent;
34
+ this.logger = 'logger' in this.options ? this.options.logger : logging_1.Logger.getLogger({
35
+ type: logging_1.C_CONSOLE,
36
+ context: 'AsyncWorkerQueue',
37
+ prefix: this.options.name
38
+ });
39
+ this.processor = processor;
40
+ if (this.options.cache) {
41
+ // this.worker = new CacheArray(this.options.cache, QueueJob);
42
+ this.all = new CacheArray_1.CacheArray(this.options.cache, QueueJob_1.QueueJob);
43
+ }
44
+ else {
45
+ // this.worker = new DefaultArray<QueueJob<T>>();
46
+ this.all = new DefaultArray_1.DefaultArray();
47
+ }
48
+ this.on(Constants_1.E_DO_PROCESS, this.process.bind(this));
49
+ this.on(Constants_1.E_ENQUEUE, this.enqueue.bind(this));
50
+ this.on(Constants_1.E_DRAIN, this.drained.bind(this));
51
+ this.on(Constants_1.E_CLEANUP, this.cleanup.bind(this));
52
+ }
53
+ getInc() {
54
+ return this._inc;
55
+ }
56
+ getLogger() {
57
+ return this.logger;
58
+ }
59
+ cleanup() {
60
+ const end = (new Date().getTime()) - this.options.cleanupTimeout;
61
+ const removed = (0, lodash_1.remove)(this.done, x => x.ts <= end);
62
+ for (const r of removed) {
63
+ this.all.remove(r.id);
64
+ }
65
+ }
66
+ next() {
67
+ // TODO idle?
68
+ this.logger.debug('inc=' + this._inc + ' ' +
69
+ 'done=' + this._done + ' ' +
70
+ 'error=' + this._error + ' ' +
71
+ 'running=' + this.running() + ' ' +
72
+ 'todo=' + this.enqueued() + ' ' +
73
+ 'active=' + this.active.length);
74
+ if (this.processor.onNext) {
75
+ this.processor.onNext();
76
+ }
77
+ if (this.isPaused()) {
78
+ if (!this.isRunning()) {
79
+ this.emit(Constants_1.E_NO_RUNNING_JOBS);
80
+ }
81
+ }
82
+ else {
83
+ this.fireProcess();
84
+ }
85
+ }
86
+ getConcurrent() {
87
+ return this.concurrent;
88
+ }
89
+ speedUp() {
90
+ if (this.concurrent < this.maxConcurrent) {
91
+ this.concurrent++;
92
+ }
93
+ }
94
+ speedDown() {
95
+ if (this.concurrent > 1) {
96
+ this.concurrent--;
97
+ }
98
+ }
99
+ status() {
100
+ return {
101
+ all: this._inc,
102
+ done: this._done,
103
+ running: this.running(),
104
+ enqueued: this.enqueued(),
105
+ active: this.active.length
106
+ };
107
+ }
108
+ async process() {
109
+ // ignore if is paused
110
+ if (this._paused) {
111
+ return;
112
+ }
113
+ if (!this.isOccupied() && this.enqueued() > 0) {
114
+ // room for additional job
115
+ this.runningTasks++;
116
+ const workerId = this.worker.shift();
117
+ const worker = await this.get(workerId);
118
+ // if (isArray(this.worker)) {
119
+ // worker = this.worker.shift();
120
+ // } else {
121
+ // worker = await this.worker.shift();
122
+ // }
123
+ worker.prepare(this);
124
+ this.active.push(worker);
125
+ this._inc++;
126
+ await worker.doStart(this);
127
+ let error = null;
128
+ try {
129
+ const workload = await worker.workload();
130
+ const res = await this.processor.do(workload, this);
131
+ worker.setResult(res);
132
+ this._done++;
133
+ }
134
+ catch (e) {
135
+ error = e;
136
+ worker.setError(e);
137
+ this._error++;
138
+ this.logger.error(e.stack);
139
+ }
140
+ finally {
141
+ (0, lodash_1.remove)(this.active, x => x.id === worker.id);
142
+ await worker.doStop(this, error);
143
+ this.done.push({ id: workerId, ts: (new Date().getTime()) });
144
+ this.runningTasks--;
145
+ this.next();
146
+ }
147
+ if (this.amount() === 0) {
148
+ // notthing to do
149
+ this.emit(Constants_1.E_DRAIN);
150
+ }
151
+ else {
152
+ if (this._inc % 20 === 0) {
153
+ this.emit(Constants_1.E_CLEANUP);
154
+ }
155
+ }
156
+ }
157
+ }
158
+ async enqueue(job) {
159
+ this.enqueueing++;
160
+ let error = null;
161
+ if (Array.isArray(this.all)) {
162
+ this.all.push(job);
163
+ }
164
+ else {
165
+ try {
166
+ await this.all.push(job);
167
+ }
168
+ catch (e) {
169
+ this.logger.error(e.stack);
170
+ error = e;
171
+ }
172
+ }
173
+ this.enqueueing--;
174
+ if (!error) {
175
+ this.worker.push(job.id);
176
+ await job.doEnqueue(this);
177
+ this.fireProcess();
178
+ }
179
+ }
180
+ drained() {
181
+ if (this.processor.onEmpty) {
182
+ this.processor.onEmpty();
183
+ }
184
+ this.emit(Constants_1.E_CLEANUP);
185
+ }
186
+ fireProcess() {
187
+ this.emit(Constants_1.E_DO_PROCESS);
188
+ }
189
+ get(id) {
190
+ return this.all.get(id);
191
+ }
192
+ set(x) {
193
+ return this.all.set(x);
194
+ }
195
+ /**
196
+ * all processed queue is empty
197
+ */
198
+ await() {
199
+ return new Promise((resolve) => {
200
+ if (this.amount() > 0) {
201
+ this.once(Constants_1.E_DRAIN, function () {
202
+ resolve();
203
+ });
204
+ }
205
+ else {
206
+ resolve();
207
+ }
208
+ });
209
+ }
210
+ /**
211
+ * Creates a new QueueJob for passed entry and return a promise which that the job will be enqueued
212
+ *
213
+ * @param entry
214
+ * @returns {QueueJob<T>}
215
+ */
216
+ push(entry) {
217
+ const _entry = new QueueJob_1.QueueJob(entry);
218
+ const id = _entry.id;
219
+ this.emit(Constants_1.E_ENQUEUE, _entry);
220
+ return new QueueJobRef_1.QueueJobRef(this, id);
221
+ }
222
+ running() {
223
+ return this.runningTasks;
224
+ }
225
+ doingEnqueueing() {
226
+ return this.enqueueing;
227
+ }
228
+ enqueued() {
229
+ if (this.worker) {
230
+ return this.worker.length;
231
+ }
232
+ return 0;
233
+ }
234
+ amount() {
235
+ return this.running() + this.enqueued() + this.doingEnqueueing();
236
+ }
237
+ isPaused() {
238
+ return this._paused;
239
+ }
240
+ isRunning() {
241
+ return this.runningTasks > 0;
242
+ }
243
+ isIdle() {
244
+ return this.enqueued() + this.runningTasks === 0;
245
+ }
246
+ isOccupied() {
247
+ return this.runningTasks >= this.getConcurrent();
248
+ }
249
+ // TODO impl
250
+ pause() {
251
+ this._paused = true;
252
+ return new Promise((resolve) => {
253
+ if (this.isRunning()) {
254
+ this.once(Constants_1.E_NO_RUNNING_JOBS, () => {
255
+ resolve(this._paused);
256
+ });
257
+ }
258
+ else {
259
+ resolve(this._paused);
260
+ }
261
+ });
262
+ }
263
+ // TODO impl
264
+ resume() {
265
+ this._paused = false;
266
+ for (let i = 0; i < this.getConcurrent(); i++) {
267
+ this.fireProcess();
268
+ }
269
+ }
270
+ async shutdown(doAwait = false) {
271
+ if (doAwait) {
272
+ await this.await();
273
+ }
274
+ await this.pause();
275
+ this.processor = null;
276
+ await Promise.all(this.worker.map(async (k) => {
277
+ const job = await this.get(k);
278
+ job.finalize(this);
279
+ }));
280
+ if (this.active) {
281
+ this.active.map(jobs => jobs.finalize(this));
282
+ }
283
+ this.all = null;
284
+ this.worker = [];
285
+ this.active = null;
286
+ // remove only own logger, passed logger must be handelt by parent
287
+ if (!('logger' in this.options)) {
288
+ this.logger = null;
289
+ }
290
+ this.removeAllListeners();
291
+ }
292
+ }
293
+ exports.AsyncWorkerQueue = AsyncWorkerQueue;
294
+ //# sourceMappingURL=AsyncWorkerQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncWorkerQueue.js","sourceRoot":"","sources":["../../../src/lib/AsyncWorkerQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ClassType } from '@allgemein/schema-api';
2
+ import { IQueueArray } from './IQueueArray';
3
+ import { IdObject } from './IdObject';
4
+ import { ICache } from "./ICache";
5
+ export declare class CacheArray<T extends IdObject> implements IQueueArray<T> {
6
+ cache: ICache;
7
+ classType: ClassType<T>;
8
+ ids: {
9
+ id: string;
10
+ ts: number;
11
+ }[];
12
+ constructor(cache: ICache, classType: ClassType<T>);
13
+ shift(): Promise<T>;
14
+ pop(): Promise<T>;
15
+ get(id: string): Promise<T>;
16
+ set(x: T): Promise<T>;
17
+ push(x: T): Promise<T>;
18
+ get length(): number;
19
+ map(fn: Function): Promise<any[]>;
20
+ filter(fn: Function): Promise<any[]>;
21
+ remove(id: string): Promise<void>;
22
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheArray = void 0;
4
+ class CacheArray {
5
+ constructor(cache, classType) {
6
+ this.ids = [];
7
+ // this.id = CryptUtils.shorthash('cached-array-' + new Date().getTime());
8
+ this.cache = cache;
9
+ this.classType = classType;
10
+ }
11
+ shift() {
12
+ const id = this.ids.shift();
13
+ return this.get(id.id);
14
+ }
15
+ pop() {
16
+ const id = this.ids.pop();
17
+ return this.get(id.id);
18
+ }
19
+ async get(id) {
20
+ const e = this.ids.find(x => x.id === id);
21
+ if (!e) {
22
+ return null;
23
+ }
24
+ const data = await this.cache.get(id);
25
+ if (!data) {
26
+ return null;
27
+ }
28
+ return data;
29
+ // const x = Reflect.construct(this.classType, []);
30
+ // assign(x, JsonUtils.parse(data));
31
+ // return x;
32
+ }
33
+ async set(x) {
34
+ const e = this.ids.find(y => y.id === x.id);
35
+ if (!e) {
36
+ this.ids.push({ id: x.id, ts: (new Date().getTime()) });
37
+ }
38
+ else {
39
+ e.ts = (new Date().getTime());
40
+ }
41
+ // const y = JsonUtils.stringify(x);
42
+ await this.cache.set(x.id, x);
43
+ return x;
44
+ }
45
+ async push(x) {
46
+ return this.set(x);
47
+ }
48
+ get length() {
49
+ return this.ids.length;
50
+ }
51
+ async map(fn) {
52
+ const res = [];
53
+ for (const id of this.ids) {
54
+ const entry = await this.get(id.id);
55
+ res.push(fn(entry));
56
+ }
57
+ return res;
58
+ }
59
+ async filter(fn) {
60
+ const res = [];
61
+ for (const id of this.ids) {
62
+ const entry = await this.get(id.id);
63
+ if (fn(entry)) {
64
+ res.push(entry);
65
+ }
66
+ }
67
+ return res;
68
+ }
69
+ async remove(id) {
70
+ const idx = this.ids.findIndex(y => y.id === id);
71
+ this.ids.splice(idx, 1);
72
+ await this.cache.set(id, null);
73
+ }
74
+ }
75
+ exports.CacheArray = CacheArray;
76
+ //# sourceMappingURL=CacheArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheArray.js","sourceRoot":"","sources":["../../../src/lib/CacheArray.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const E_NO_RUNNING_JOBS = "running empty";
2
+ export declare const E_DO_PROCESS = "process";
3
+ export declare const E_DRAIN = "drain";
4
+ export declare const E_ENQUEUE = "enqueue";
5
+ export declare const E_CLEANUP = "cleanup";
6
+ export declare const QJ_START = "start";
7
+ export declare const QJ_STOP = "stop";
8
+ export declare const QJ_ENQUEUED = "enqueued";
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QJ_ENQUEUED = exports.QJ_STOP = exports.QJ_START = exports.E_CLEANUP = exports.E_ENQUEUE = exports.E_DRAIN = exports.E_DO_PROCESS = exports.E_NO_RUNNING_JOBS = void 0;
4
+ exports.E_NO_RUNNING_JOBS = 'running empty';
5
+ exports.E_DO_PROCESS = 'process';
6
+ exports.E_DRAIN = 'drain';
7
+ exports.E_ENQUEUE = 'enqueue';
8
+ exports.E_CLEANUP = 'cleanup';
9
+ exports.QJ_START = 'start';
10
+ exports.QJ_STOP = 'stop';
11
+ exports.QJ_ENQUEUED = 'enqueued';
12
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../src/lib/Constants.ts"],"names":[],"mappings":";;;AACa,QAAA,iBAAiB,GAAG,eAAe,CAAC;AAEpC,QAAA,YAAY,GAAG,SAAS,CAAC;AAEzB,QAAA,OAAO,GAAG,OAAO,CAAC;AAElB,QAAA,SAAS,GAAG,SAAS,CAAC;AACtB,QAAA,SAAS,GAAG,SAAS,CAAC;AAEtB,QAAA,QAAQ,GAAG,OAAO,CAAC;AACnB,QAAA,OAAO,GAAG,MAAM,CAAC;AACjB,QAAA,WAAW,GAAG,UAAU,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { IQueueArray } from './IQueueArray';
2
+ import { IdObject } from './IdObject';
3
+ export declare class DefaultArray<T extends IdObject> implements IQueueArray<T> {
4
+ entries: T[];
5
+ get length(): number;
6
+ get(id: string): T;
7
+ set(x: T): T;
8
+ map(fn: (x: any) => any): any[] | Promise<any[]>;
9
+ filter(fn: (x: any) => any): any[] | Promise<any[]>;
10
+ pop(): Promise<T> | T;
11
+ push(x: T): void;
12
+ shift(): Promise<T> | T;
13
+ remove(id: string): void;
14
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultArray = void 0;
4
+ class DefaultArray {
5
+ constructor() {
6
+ this.entries = [];
7
+ }
8
+ get length() {
9
+ return this.entries.length;
10
+ }
11
+ get(id) {
12
+ return this.entries.find(x => x.id === id);
13
+ }
14
+ set(x) {
15
+ const idx = this.entries.findIndex(y => y.id === x.id);
16
+ if (idx >= 0) {
17
+ this.entries[idx] = x;
18
+ }
19
+ else {
20
+ this.entries.push(x);
21
+ }
22
+ return x;
23
+ }
24
+ map(fn) {
25
+ const res = [];
26
+ for (const entry of this.entries) {
27
+ res.push(fn(entry));
28
+ }
29
+ return res;
30
+ }
31
+ filter(fn) {
32
+ const res = [];
33
+ for (const entry of this.entries) {
34
+ if (fn(entry)) {
35
+ res.push(fn(entry));
36
+ }
37
+ }
38
+ return res;
39
+ }
40
+ pop() {
41
+ return this.entries.pop();
42
+ }
43
+ push(x) {
44
+ this.entries.push(x);
45
+ }
46
+ shift() {
47
+ return this.entries.shift();
48
+ }
49
+ remove(id) {
50
+ const idx = this.entries.findIndex(y => y.id === id);
51
+ this.entries.splice(idx, 1);
52
+ }
53
+ }
54
+ exports.DefaultArray = DefaultArray;
55
+ //# sourceMappingURL=DefaultArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultArray.js","sourceRoot":"","sources":["../../../src/lib/DefaultArray.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IAAzB;QAGE,YAAO,GAAQ,EAAE,CAAC;IA2DpB,CAAC;IAxDC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,CAAI;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,EAAmB;QACrB,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,MAAM,CAAC,EAAmB;QACxB,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,GAAG;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,CAAI;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;CAGF;AA9DD,oCA8DC"}
@@ -0,0 +1,28 @@
1
+ import { ILoggerApi } from '@allgemein/logging';
2
+ import { ICache } from './ICache';
3
+ export interface IAsyncQueueOptions {
4
+ /**
5
+ * Name of the queue
6
+ */
7
+ name?: string;
8
+ /**
9
+ * Number of concurrent executions
10
+ */
11
+ concurrent?: number;
12
+ /**
13
+ * Override standard logger
14
+ */
15
+ logger?: ILoggerApi;
16
+ /**
17
+ * Override max listener limit default = 10000
18
+ */
19
+ maxListener?: number;
20
+ /**
21
+ * Use cache for data
22
+ */
23
+ cache?: ICache;
24
+ /**
25
+ * Cleanup task timeout
26
+ */
27
+ cleanupTimeout?: number;
28
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAsyncQueueOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAsyncQueueOptions.js","sourceRoot":"","sources":["../../../src/lib/IAsyncQueueOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface IAsyncQueueStats {
2
+ all: number;
3
+ done: number;
4
+ running: number;
5
+ enqueued: number;
6
+ active: number;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAsyncQueueStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAsyncQueueStats.js","sourceRoot":"","sources":["../../../src/lib/IAsyncQueueStats.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { ICacheGetOptions, ICacheSetOptions } from './ICacheOptions';
2
+ export declare const CACHE_NAME = "Cache";
3
+ export interface ICache {
4
+ get<T>(key: string, bin?: string, options?: ICacheGetOptions): Promise<T>;
5
+ set<T>(key: string, value: any, bin?: string, options?: ICacheSetOptions): Promise<T>;
6
+ }
package/lib/ICache.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CACHE_NAME = void 0;
4
+ exports.CACHE_NAME = 'Cache';
5
+ //# sourceMappingURL=ICache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICache.js","sourceRoot":"","sources":["../../../src/lib/ICache.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface ICacheOptions {
2
+ [k: string]: any;
3
+ }
4
+ export interface ICacheGetOptions extends ICacheOptions {
5
+ [k: string]: any;
6
+ }
7
+ export interface ICacheSetOptions extends ICacheOptions {
8
+ ttl?: number;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ICacheOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICacheOptions.js","sourceRoot":"","sources":["../../../src/lib/ICacheOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export interface IQueue {
2
+ get(id: string): any | Promise<any>;
3
+ set(x: any): any | Promise<any>;
4
+ emit(event: string | symbol, ...args: any[]): boolean;
5
+ on(event: string | symbol, listener: Function): this;
6
+ once(event: string | symbol, listener: Function): this;
7
+ removeAllListeners(event?: string | symbol): this;
8
+ }
package/lib/IQueue.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IQueue.js","sourceRoot":"","sources":["../../../src/lib/IQueue.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export interface IQueueArray<T> {
2
+ length: number;
3
+ remove(id: string): void | Promise<void>;
4
+ get(id: string): T | Promise<T>;
5
+ set(id: T): T | Promise<T>;
6
+ shift(): T | Promise<T>;
7
+ pop(): T | Promise<T>;
8
+ push(x: T): void;
9
+ map(fn: (x: any) => any): any[] | Promise<any[]>;
10
+ filter(fn: (x: any) => any): any[] | Promise<any[]>;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IQueueArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IQueueArray.js","sourceRoot":"","sources":["../../../src/lib/IQueueArray.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { IQueueWorkload } from './IQueueWorkload';
2
+ import { AsyncWorkerQueue } from './AsyncWorkerQueue';
3
+ export interface IQueueProcessor<T extends IQueueWorkload> {
4
+ do(workLoad: T, queue?: AsyncWorkerQueue<any>): Promise<any>;
5
+ onEmpty?(): Promise<void>;
6
+ onNext?(): void;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IQueueProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IQueueProcessor.js","sourceRoot":"","sources":["../../../src/lib/IQueueProcessor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export interface IQueueWorkload {
2
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IQueueWorkload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IQueueWorkload.js","sourceRoot":"","sources":["../../../src/lib/IQueueWorkload.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface IdObject {
2
+ id: string;
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IdObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdObject.js","sourceRoot":"","sources":["../../../src/lib/IdObject.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { IQueueWorkload } from './IQueueWorkload';
2
+ import { IQueue } from './IQueue';
3
+ import { IdObject } from './IdObject';
4
+ export declare class QueueJob<T extends IQueueWorkload> implements IdObject {
5
+ private static _INC;
6
+ private _id;
7
+ private _workload;
8
+ private _start;
9
+ private _stop;
10
+ private _enqueued;
11
+ private _duration;
12
+ private _error;
13
+ private _result;
14
+ constructor(/* queue: IQueue, */ workload: T);
15
+ prepare(queue: IQueue): void;
16
+ get id(): string;
17
+ workload(): T;
18
+ enqueued(queue: IQueue): Promise<QueueJob<T>>;
19
+ getResult(): any;
20
+ setResult(v: any): void;
21
+ getError(): Error;
22
+ setError(v: any): void;
23
+ /**
24
+ * Wait till the job is begins
25
+ */
26
+ starting(queue: IQueue): Promise<QueueJob<T>>;
27
+ /**
28
+ * Wait till the job is finished
29
+ */
30
+ done(queue: IQueue): Promise<QueueJob<T>>;
31
+ /**
32
+ * Fire event that the job was enqueued
33
+ */
34
+ doEnqueue(queue: IQueue): Promise<void>;
35
+ /**
36
+ * Fire event that the job was started
37
+ */
38
+ doStart(queue: IQueue): Promise<void>;
39
+ /**
40
+ * Fire event that the job was stopped
41
+ */
42
+ doStop(queue: IQueue, err?: Error): Promise<void>;
43
+ /**
44
+ * Check if the job is enqueued
45
+ */
46
+ isEnqueued(): boolean;
47
+ /**
48
+ * Check if the job is started
49
+ */
50
+ isStarted(): boolean;
51
+ /**
52
+ * Check if the job is finished
53
+ */
54
+ isFinished(): boolean;
55
+ /**
56
+ * Fired when the job is finished
57
+ */
58
+ private onDone;
59
+ /**
60
+ * Clear references to the _queue object
61
+ */
62
+ finalize(queue: IQueue): void;
63
+ /**
64
+ * Helper generating the event names for different jobs id and states
65
+ *
66
+ * @param type
67
+ */
68
+ private jobEventName;
69
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueueJob = void 0;
4
+ const base_1 = require("@allgemein/base");
5
+ const Constants_1 = require("./Constants");
6
+ class QueueJob {
7
+ constructor(/* queue: IQueue, */ workload) {
8
+ this._start = null;
9
+ this._stop = null;
10
+ this._enqueued = null;
11
+ this._error = null;
12
+ this._result = null;
13
+ this._workload = workload;
14
+ this._id = base_1.CryptUtils.shorthash((new Date()).getTime() + '' + (QueueJob._INC++));
15
+ }
16
+ prepare(queue) {
17
+ queue.once(this.jobEventName(Constants_1.QJ_STOP), this.onDone.bind(this, queue));
18
+ }
19
+ get id() {
20
+ return this._id;
21
+ }
22
+ workload() {
23
+ return this._workload;
24
+ }
25
+ enqueued(queue) {
26
+ return new Promise((resolve) => {
27
+ if (!this._enqueued) {
28
+ queue.once(this.jobEventName(Constants_1.QJ_ENQUEUED), (job) => {
29
+ resolve(job);
30
+ });
31
+ }
32
+ else {
33
+ resolve(this);
34
+ }
35
+ });
36
+ }
37
+ getResult() {
38
+ return this._result;
39
+ }
40
+ setResult(v) {
41
+ this._result = v;
42
+ }
43
+ getError() {
44
+ return this._error;
45
+ }
46
+ setError(v) {
47
+ this._error = v;
48
+ }
49
+ /**
50
+ * Wait till the job is begins
51
+ */
52
+ starting(queue) {
53
+ return new Promise((resolve) => {
54
+ if (!this._start) {
55
+ queue.once(this.jobEventName(Constants_1.QJ_START), () => {
56
+ resolve(this);
57
+ });
58
+ }
59
+ else {
60
+ // if started then pass through
61
+ resolve(this);
62
+ }
63
+ });
64
+ }
65
+ /**
66
+ * Wait till the job is finished
67
+ */
68
+ done(queue) {
69
+ return new Promise((resolve, reject) => {
70
+ if (!this._stop) {
71
+ queue.once(this.jobEventName(Constants_1.QJ_STOP), (err = null) => {
72
+ if (err) {
73
+ reject(err);
74
+ }
75
+ else {
76
+ resolve(this);
77
+ }
78
+ });
79
+ }
80
+ else {
81
+ // if stopped then pass through
82
+ resolve(this);
83
+ }
84
+ });
85
+ }
86
+ /**
87
+ * Fire event that the job was enqueued
88
+ */
89
+ async doEnqueue(queue) {
90
+ this._enqueued = new Date();
91
+ await queue.set(this);
92
+ queue.emit(this.jobEventName(Constants_1.QJ_ENQUEUED), this);
93
+ }
94
+ /**
95
+ * Fire event that the job was started
96
+ */
97
+ async doStart(queue) {
98
+ this._start = new Date();
99
+ await queue.set(this);
100
+ queue.emit(this.jobEventName(Constants_1.QJ_START));
101
+ }
102
+ /**
103
+ * Fire event that the job was stopped
104
+ */
105
+ async doStop(queue, err = null) {
106
+ this._error = err;
107
+ this._stop = new Date();
108
+ this._duration = this._stop.getTime() - this._start.getTime();
109
+ await queue.set(this);
110
+ queue.emit(this.jobEventName(Constants_1.QJ_STOP), err);
111
+ }
112
+ /**
113
+ * Check if the job is enqueued
114
+ */
115
+ isEnqueued() {
116
+ return this._enqueued != null && this._start == null && this._stop == null;
117
+ }
118
+ /**
119
+ * Check if the job is started
120
+ */
121
+ isStarted() {
122
+ return this._enqueued != null && this._start != null && this._stop == null;
123
+ }
124
+ /**
125
+ * Check if the job is finished
126
+ */
127
+ isFinished() {
128
+ return this._enqueued != null && this._start != null && this._stop != null;
129
+ }
130
+ /**
131
+ * Fired when the job is finished
132
+ */
133
+ onDone(queue) {
134
+ this.finalize(queue);
135
+ }
136
+ /**
137
+ * Clear references to the _queue object
138
+ */
139
+ finalize(queue) {
140
+ if (!this._stop) {
141
+ this.doStop(queue);
142
+ }
143
+ queue.removeAllListeners(this.jobEventName(Constants_1.QJ_START));
144
+ queue.removeAllListeners(this.jobEventName(Constants_1.QJ_STOP));
145
+ queue.removeAllListeners(this.jobEventName(Constants_1.QJ_ENQUEUED));
146
+ }
147
+ /**
148
+ * Helper generating the event names for different jobs id and states
149
+ *
150
+ * @param type
151
+ */
152
+ jobEventName(type) {
153
+ return `job ${this._id} ${type}`;
154
+ }
155
+ }
156
+ exports.QueueJob = QueueJob;
157
+ QueueJob._INC = 0;
158
+ //# sourceMappingURL=QueueJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueJob.js","sourceRoot":"","sources":["../../../src/lib/QueueJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { IQueueWorkload } from './IQueueWorkload';
2
+ import { QueueJob } from './QueueJob';
3
+ import { IQueue } from './IQueue';
4
+ export declare class QueueJobRef<T extends IQueueWorkload> {
5
+ id: string;
6
+ queue: IQueue;
7
+ constructor(q: IQueue, id: string);
8
+ get(): Promise<QueueJob<T>>;
9
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueueJobRef = void 0;
4
+ class QueueJobRef {
5
+ constructor(q, id) {
6
+ this.queue = q;
7
+ this.id = id;
8
+ }
9
+ get() {
10
+ return this.queue.get(this.id);
11
+ }
12
+ }
13
+ exports.QueueJobRef = QueueJobRef;
14
+ //# sourceMappingURL=QueueJobRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueJobRef.js","sourceRoot":"","sources":["../../../src/lib/QueueJobRef.ts"],"names":[],"mappings":";;;AAKA,MAAa,WAAW;IAMtB,YAAY,CAAS,EAAE,EAAU;QAC/B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;CACF;AAdD,kCAcC"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@allgemein/queue",
3
+ "version": "1.1.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://gitlab.com/allgemein-node/monorepo.git"
9
+ },
10
+ "author": "Robert Kania",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "queue",
14
+ "generic",
15
+ "allgemein"
16
+ ],
17
+ "devDependencies": {
18
+ "lodash": "^4.17.21"
19
+ },
20
+ "peerDependencies": {
21
+ "lodash": "^4.17.0"
22
+ },
23
+ "browser": "browser.js"
24
+ }