UNPKG

1.44 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7exports.default = function (worker, concurrency) {
8 // Start with a normal queue
9 var q = (0, _queue2.default)(worker, concurrency);
10
11 var {
12 push,
13 pushAsync
14 } = q;
15
16 q._tasks = new _Heap2.default();
17 q._createTaskItem = ({ data, priority }, callback) => {
18 return {
19 data,
20 priority,
21 callback
22 };
23 };
24
25 function createDataItems(tasks, priority) {
26 if (!Array.isArray(tasks)) {
27 return { data: tasks, priority };
28 }
29 return tasks.map(data => {
30 return { data, priority };
31 });
32 }
33
34 // Override push to accept second parameter representing priority
35 q.push = function (data, priority = 0, callback) {
36 return push(createDataItems(data, priority), callback);
37 };
38
39 q.pushAsync = function (data, priority = 0, callback) {
40 return pushAsync(createDataItems(data, priority), callback);
41 };
42
43 // Remove unshift functions
44 delete q.unshift;
45 delete q.unshiftAsync;
46
47 return q;
48};
49
50var _queue = require('./queue.js');
51
52var _queue2 = _interopRequireDefault(_queue);
53
54var _Heap = require('./internal/Heap.js');
55
56var _Heap2 = _interopRequireDefault(_Heap);
57
58function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
59
60module.exports = exports.default;
\No newline at end of file