@dropthis/cli 0.1.5

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 (236) hide show
  1. package/README.md +171 -0
  2. package/dist/cli.cjs +1489 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/node_modules/@dropthis/node/README.md +90 -0
  5. package/node_modules/@dropthis/node/dist/index.cjs +1010 -0
  6. package/node_modules/@dropthis/node/dist/index.cjs.map +1 -0
  7. package/node_modules/@dropthis/node/dist/index.d.cts +408 -0
  8. package/node_modules/@dropthis/node/dist/index.d.ts +408 -0
  9. package/node_modules/@dropthis/node/dist/index.mjs +969 -0
  10. package/node_modules/@dropthis/node/dist/index.mjs.map +1 -0
  11. package/node_modules/@dropthis/node/package.json +55 -0
  12. package/node_modules/@nodelib/fs.scandir/LICENSE +21 -0
  13. package/node_modules/@nodelib/fs.scandir/README.md +171 -0
  14. package/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
  15. package/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0
  16. package/node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0
  17. package/node_modules/@nodelib/fs.scandir/out/constants.js +17 -0
  18. package/node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0
  19. package/node_modules/@nodelib/fs.scandir/out/index.js +26 -0
  20. package/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
  21. package/node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0
  22. package/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0
  23. package/node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0
  24. package/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0
  25. package/node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0
  26. package/node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0
  27. package/node_modules/@nodelib/fs.scandir/out/settings.js +24 -0
  28. package/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
  29. package/node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0
  30. package/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0
  31. package/node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0
  32. package/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0
  33. package/node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0
  34. package/node_modules/@nodelib/fs.scandir/package.json +44 -0
  35. package/node_modules/@nodelib/fs.stat/LICENSE +21 -0
  36. package/node_modules/@nodelib/fs.stat/README.md +126 -0
  37. package/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
  38. package/node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0
  39. package/node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0
  40. package/node_modules/@nodelib/fs.stat/out/index.js +26 -0
  41. package/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
  42. package/node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0
  43. package/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0
  44. package/node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0
  45. package/node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0
  46. package/node_modules/@nodelib/fs.stat/out/settings.js +16 -0
  47. package/node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0
  48. package/node_modules/@nodelib/fs.stat/out/types/index.js +2 -0
  49. package/node_modules/@nodelib/fs.stat/package.json +37 -0
  50. package/node_modules/@nodelib/fs.walk/LICENSE +21 -0
  51. package/node_modules/@nodelib/fs.walk/README.md +215 -0
  52. package/node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0
  53. package/node_modules/@nodelib/fs.walk/out/index.js +34 -0
  54. package/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
  55. package/node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0
  56. package/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0
  57. package/node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0
  58. package/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0
  59. package/node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0
  60. package/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0
  61. package/node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0
  62. package/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
  63. package/node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0
  64. package/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0
  65. package/node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0
  66. package/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
  67. package/node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0
  68. package/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0
  69. package/node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0
  70. package/node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0
  71. package/node_modules/@nodelib/fs.walk/out/settings.js +26 -0
  72. package/node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0
  73. package/node_modules/@nodelib/fs.walk/out/types/index.js +2 -0
  74. package/node_modules/@nodelib/fs.walk/package.json +44 -0
  75. package/node_modules/braces/LICENSE +21 -0
  76. package/node_modules/braces/README.md +586 -0
  77. package/node_modules/braces/index.js +170 -0
  78. package/node_modules/braces/lib/compile.js +60 -0
  79. package/node_modules/braces/lib/constants.js +57 -0
  80. package/node_modules/braces/lib/expand.js +113 -0
  81. package/node_modules/braces/lib/parse.js +331 -0
  82. package/node_modules/braces/lib/stringify.js +32 -0
  83. package/node_modules/braces/lib/utils.js +122 -0
  84. package/node_modules/braces/package.json +77 -0
  85. package/node_modules/fast-glob/LICENSE +21 -0
  86. package/node_modules/fast-glob/README.md +830 -0
  87. package/node_modules/fast-glob/out/index.d.ts +40 -0
  88. package/node_modules/fast-glob/out/index.js +102 -0
  89. package/node_modules/fast-glob/out/managers/tasks.d.ts +22 -0
  90. package/node_modules/fast-glob/out/managers/tasks.js +110 -0
  91. package/node_modules/fast-glob/out/providers/async.d.ts +9 -0
  92. package/node_modules/fast-glob/out/providers/async.js +23 -0
  93. package/node_modules/fast-glob/out/providers/filters/deep.d.ts +16 -0
  94. package/node_modules/fast-glob/out/providers/filters/deep.js +62 -0
  95. package/node_modules/fast-glob/out/providers/filters/entry.d.ts +17 -0
  96. package/node_modules/fast-glob/out/providers/filters/entry.js +85 -0
  97. package/node_modules/fast-glob/out/providers/filters/error.d.ts +8 -0
  98. package/node_modules/fast-glob/out/providers/filters/error.js +15 -0
  99. package/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +33 -0
  100. package/node_modules/fast-glob/out/providers/matchers/matcher.js +45 -0
  101. package/node_modules/fast-glob/out/providers/matchers/partial.d.ts +4 -0
  102. package/node_modules/fast-glob/out/providers/matchers/partial.js +38 -0
  103. package/node_modules/fast-glob/out/providers/provider.d.ts +19 -0
  104. package/node_modules/fast-glob/out/providers/provider.js +48 -0
  105. package/node_modules/fast-glob/out/providers/stream.d.ts +11 -0
  106. package/node_modules/fast-glob/out/providers/stream.js +31 -0
  107. package/node_modules/fast-glob/out/providers/sync.d.ts +9 -0
  108. package/node_modules/fast-glob/out/providers/sync.js +23 -0
  109. package/node_modules/fast-glob/out/providers/transformers/entry.d.ts +8 -0
  110. package/node_modules/fast-glob/out/providers/transformers/entry.js +26 -0
  111. package/node_modules/fast-glob/out/readers/async.d.ts +10 -0
  112. package/node_modules/fast-glob/out/readers/async.js +35 -0
  113. package/node_modules/fast-glob/out/readers/reader.d.ts +15 -0
  114. package/node_modules/fast-glob/out/readers/reader.js +33 -0
  115. package/node_modules/fast-glob/out/readers/stream.d.ts +14 -0
  116. package/node_modules/fast-glob/out/readers/stream.js +55 -0
  117. package/node_modules/fast-glob/out/readers/sync.d.ts +12 -0
  118. package/node_modules/fast-glob/out/readers/sync.js +43 -0
  119. package/node_modules/fast-glob/out/settings.d.ts +164 -0
  120. package/node_modules/fast-glob/out/settings.js +59 -0
  121. package/node_modules/fast-glob/out/types/index.d.ts +31 -0
  122. package/node_modules/fast-glob/out/types/index.js +2 -0
  123. package/node_modules/fast-glob/out/utils/array.d.ts +2 -0
  124. package/node_modules/fast-glob/out/utils/array.js +22 -0
  125. package/node_modules/fast-glob/out/utils/errno.d.ts +2 -0
  126. package/node_modules/fast-glob/out/utils/errno.js +7 -0
  127. package/node_modules/fast-glob/out/utils/fs.d.ts +4 -0
  128. package/node_modules/fast-glob/out/utils/fs.js +19 -0
  129. package/node_modules/fast-glob/out/utils/index.d.ts +8 -0
  130. package/node_modules/fast-glob/out/utils/index.js +17 -0
  131. package/node_modules/fast-glob/out/utils/path.d.ts +13 -0
  132. package/node_modules/fast-glob/out/utils/path.js +68 -0
  133. package/node_modules/fast-glob/out/utils/pattern.d.ts +49 -0
  134. package/node_modules/fast-glob/out/utils/pattern.js +206 -0
  135. package/node_modules/fast-glob/out/utils/stream.d.ts +4 -0
  136. package/node_modules/fast-glob/out/utils/stream.js +17 -0
  137. package/node_modules/fast-glob/out/utils/string.d.ts +2 -0
  138. package/node_modules/fast-glob/out/utils/string.js +11 -0
  139. package/node_modules/fast-glob/package.json +81 -0
  140. package/node_modules/fastq/LICENSE +13 -0
  141. package/node_modules/fastq/README.md +310 -0
  142. package/node_modules/fastq/SECURITY.md +15 -0
  143. package/node_modules/fastq/bench.js +66 -0
  144. package/node_modules/fastq/eslint.config.js +11 -0
  145. package/node_modules/fastq/example.js +14 -0
  146. package/node_modules/fastq/example.mjs +9 -0
  147. package/node_modules/fastq/index.d.ts +59 -0
  148. package/node_modules/fastq/package.json +49 -0
  149. package/node_modules/fastq/queue.js +346 -0
  150. package/node_modules/fastq/test/example.ts +83 -0
  151. package/node_modules/fastq/test/promise.js +325 -0
  152. package/node_modules/fastq/test/test.js +733 -0
  153. package/node_modules/fastq/test/tsconfig.json +11 -0
  154. package/node_modules/fill-range/LICENSE +21 -0
  155. package/node_modules/fill-range/README.md +237 -0
  156. package/node_modules/fill-range/index.js +248 -0
  157. package/node_modules/fill-range/package.json +74 -0
  158. package/node_modules/glob-parent/LICENSE +15 -0
  159. package/node_modules/glob-parent/README.md +137 -0
  160. package/node_modules/glob-parent/index.js +42 -0
  161. package/node_modules/glob-parent/package.json +48 -0
  162. package/node_modules/ignore/LICENSE-MIT +21 -0
  163. package/node_modules/ignore/README.md +452 -0
  164. package/node_modules/ignore/index.d.ts +81 -0
  165. package/node_modules/ignore/index.js +784 -0
  166. package/node_modules/ignore/legacy.js +681 -0
  167. package/node_modules/ignore/package.json +87 -0
  168. package/node_modules/is-extglob/LICENSE +21 -0
  169. package/node_modules/is-extglob/README.md +107 -0
  170. package/node_modules/is-extglob/index.js +20 -0
  171. package/node_modules/is-extglob/package.json +69 -0
  172. package/node_modules/is-glob/LICENSE +21 -0
  173. package/node_modules/is-glob/README.md +206 -0
  174. package/node_modules/is-glob/index.js +150 -0
  175. package/node_modules/is-glob/package.json +81 -0
  176. package/node_modules/is-number/LICENSE +21 -0
  177. package/node_modules/is-number/README.md +187 -0
  178. package/node_modules/is-number/index.js +18 -0
  179. package/node_modules/is-number/package.json +82 -0
  180. package/node_modules/merge2/LICENSE +21 -0
  181. package/node_modules/merge2/README.md +144 -0
  182. package/node_modules/merge2/index.js +144 -0
  183. package/node_modules/merge2/package.json +43 -0
  184. package/node_modules/micromatch/LICENSE +21 -0
  185. package/node_modules/micromatch/README.md +1024 -0
  186. package/node_modules/micromatch/index.js +474 -0
  187. package/node_modules/micromatch/package.json +119 -0
  188. package/node_modules/mime-db/HISTORY.md +541 -0
  189. package/node_modules/mime-db/LICENSE +23 -0
  190. package/node_modules/mime-db/README.md +109 -0
  191. package/node_modules/mime-db/db.json +9342 -0
  192. package/node_modules/mime-db/index.js +12 -0
  193. package/node_modules/mime-db/package.json +56 -0
  194. package/node_modules/mime-types/HISTORY.md +421 -0
  195. package/node_modules/mime-types/LICENSE +23 -0
  196. package/node_modules/mime-types/README.md +126 -0
  197. package/node_modules/mime-types/index.js +211 -0
  198. package/node_modules/mime-types/mimeScore.js +52 -0
  199. package/node_modules/mime-types/package.json +45 -0
  200. package/node_modules/picomatch/LICENSE +21 -0
  201. package/node_modules/picomatch/README.md +716 -0
  202. package/node_modules/picomatch/index.js +3 -0
  203. package/node_modules/picomatch/lib/constants.js +184 -0
  204. package/node_modules/picomatch/lib/parse.js +1392 -0
  205. package/node_modules/picomatch/lib/picomatch.js +342 -0
  206. package/node_modules/picomatch/lib/scan.js +391 -0
  207. package/node_modules/picomatch/lib/utils.js +64 -0
  208. package/node_modules/picomatch/package.json +81 -0
  209. package/node_modules/queue-microtask/LICENSE +20 -0
  210. package/node_modules/queue-microtask/README.md +90 -0
  211. package/node_modules/queue-microtask/index.d.ts +2 -0
  212. package/node_modules/queue-microtask/index.js +9 -0
  213. package/node_modules/queue-microtask/package.json +55 -0
  214. package/node_modules/reusify/.github/dependabot.yml +7 -0
  215. package/node_modules/reusify/.github/workflows/ci.yml +96 -0
  216. package/node_modules/reusify/LICENSE +22 -0
  217. package/node_modules/reusify/README.md +139 -0
  218. package/node_modules/reusify/SECURITY.md +15 -0
  219. package/node_modules/reusify/benchmarks/createNoCodeFunction.js +30 -0
  220. package/node_modules/reusify/benchmarks/fib.js +13 -0
  221. package/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +38 -0
  222. package/node_modules/reusify/eslint.config.js +14 -0
  223. package/node_modules/reusify/package.json +50 -0
  224. package/node_modules/reusify/reusify.d.ts +14 -0
  225. package/node_modules/reusify/reusify.js +33 -0
  226. package/node_modules/reusify/test.js +66 -0
  227. package/node_modules/reusify/tsconfig.json +11 -0
  228. package/node_modules/run-parallel/LICENSE +20 -0
  229. package/node_modules/run-parallel/README.md +85 -0
  230. package/node_modules/run-parallel/index.js +51 -0
  231. package/node_modules/run-parallel/package.json +58 -0
  232. package/node_modules/to-regex-range/LICENSE +21 -0
  233. package/node_modules/to-regex-range/README.md +305 -0
  234. package/node_modules/to-regex-range/index.js +288 -0
  235. package/node_modules/to-regex-range/package.json +88 -0
  236. package/package.json +53 -0
@@ -0,0 +1,310 @@
1
+ # fastq
2
+
3
+ ![ci][ci-url]
4
+ [![npm version][npm-badge]][npm-url]
5
+
6
+ Fast, in memory work queue.
7
+
8
+ Benchmarks (1 million tasks):
9
+
10
+ * setImmediate: 812ms
11
+ * fastq: 854ms
12
+ * async.queue: 1298ms
13
+ * neoAsync.queue: 1249ms
14
+
15
+ Obtained on node 12.16.1, on a dedicated server.
16
+
17
+ If you need zero-overhead series function call, check out
18
+ [fastseries](http://npm.im/fastseries). For zero-overhead parallel
19
+ function call, check out [fastparallel](http://npm.im/fastparallel).
20
+
21
+ * <a href="#install">Installation</a>
22
+ * <a href="#usage">Usage</a>
23
+ * <a href="#api">API</a>
24
+ * <a href="#license">Licence &amp; copyright</a>
25
+
26
+ ## Install
27
+
28
+ `npm i fastq --save`
29
+
30
+ ## Usage (callback API)
31
+
32
+ ```js
33
+ 'use strict'
34
+
35
+ const queue = require('fastq')(worker, 1)
36
+
37
+ queue.push(42, function (err, result) {
38
+ if (err) { throw err }
39
+ console.log('the result is', result)
40
+ })
41
+
42
+ function worker (arg, cb) {
43
+ cb(null, arg * 2)
44
+ }
45
+ ```
46
+
47
+ ## Usage (promise API)
48
+
49
+ ```js
50
+ const queue = require('fastq').promise(worker, 1)
51
+
52
+ async function worker (arg) {
53
+ return arg * 2
54
+ }
55
+
56
+ async function run () {
57
+ const result = await queue.push(42)
58
+ console.log('the result is', result)
59
+ }
60
+
61
+ run()
62
+ ```
63
+
64
+ ### Setting "this"
65
+
66
+ ```js
67
+ 'use strict'
68
+
69
+ const that = { hello: 'world' }
70
+ const queue = require('fastq')(that, worker, 1)
71
+
72
+ queue.push(42, function (err, result) {
73
+ if (err) { throw err }
74
+ console.log(this)
75
+ console.log('the result is', result)
76
+ })
77
+
78
+ function worker (arg, cb) {
79
+ console.log(this)
80
+ cb(null, arg * 2)
81
+ }
82
+ ```
83
+
84
+ ### Using with TypeScript (callback API)
85
+
86
+ ```ts
87
+ 'use strict'
88
+
89
+ import * as fastq from "fastq";
90
+ import type { queue, done } from "fastq";
91
+
92
+ type Task = {
93
+ id: number
94
+ }
95
+
96
+ const q: queue<Task> = fastq(worker, 1)
97
+
98
+ q.push({ id: 42})
99
+
100
+ function worker (arg: Task, cb: done) {
101
+ console.log(arg.id)
102
+ cb(null)
103
+ }
104
+ ```
105
+
106
+ ### Using with TypeScript (promise API)
107
+
108
+ ```ts
109
+ 'use strict'
110
+
111
+ import * as fastq from "fastq";
112
+ import type { queueAsPromised } from "fastq";
113
+
114
+ type Task = {
115
+ id: number
116
+ }
117
+
118
+ const q: queueAsPromised<Task> = fastq.promise(asyncWorker, 1)
119
+
120
+ q.push({ id: 42}).catch((err) => console.error(err))
121
+
122
+ async function asyncWorker (arg: Task): Promise<void> {
123
+ // No need for a try-catch block, fastq handles errors automatically
124
+ console.log(arg.id)
125
+ }
126
+ ```
127
+
128
+ ## API
129
+
130
+ * <a href="#fastqueue"><code>fastqueue()</code></a>
131
+ * <a href="#push"><code>queue#<b>push()</b></code></a>
132
+ * <a href="#unshift"><code>queue#<b>unshift()</b></code></a>
133
+ * <a href="#pause"><code>queue#<b>pause()</b></code></a>
134
+ * <a href="#resume"><code>queue#<b>resume()</b></code></a>
135
+ * <a href="#idle"><code>queue#<b>idle()</b></code></a>
136
+ * <a href="#length"><code>queue#<b>length()</b></code></a>
137
+ * <a href="#getQueue"><code>queue#<b>getQueue()</b></code></a>
138
+ * <a href="#kill"><code>queue#<b>kill()</b></code></a>
139
+ * <a href="#killAndDrain"><code>queue#<b>killAndDrain()</b></code></a>
140
+ * <a href="#error"><code>queue#<b>error()</b></code></a>
141
+ * <a href="#concurrency"><code>queue#<b>concurrency</b></code></a>
142
+ * <a href="#drain"><code>queue#<b>drain</b></code></a>
143
+ * <a href="#empty"><code>queue#<b>empty</b></code></a>
144
+ * <a href="#saturated"><code>queue#<b>saturated</b></code></a>
145
+ * <a href="#promise"><code>fastqueue.promise()</code></a>
146
+
147
+ -------------------------------------------------------
148
+ <a name="fastqueue"></a>
149
+ ### fastqueue([that], worker, concurrency)
150
+
151
+ Creates a new queue.
152
+
153
+ Arguments:
154
+
155
+ * `that`, optional context of the `worker` function.
156
+ * `worker`, worker function, it would be called with `that` as `this`,
157
+ if that is specified.
158
+ * `concurrency`, number of concurrent tasks that could be executed in
159
+ parallel.
160
+
161
+ -------------------------------------------------------
162
+ <a name="push"></a>
163
+ ### queue.push(task, done)
164
+
165
+ Add a task at the end of the queue. `done(err, result)` will be called
166
+ when the task was processed.
167
+
168
+ -------------------------------------------------------
169
+ <a name="unshift"></a>
170
+ ### queue.unshift(task, done)
171
+
172
+ Add a task at the beginning of the queue. `done(err, result)` will be called
173
+ when the task was processed.
174
+
175
+ -------------------------------------------------------
176
+ <a name="pause"></a>
177
+ ### queue.pause()
178
+
179
+ Pause the processing of tasks. Currently worked tasks are not
180
+ stopped.
181
+
182
+ -------------------------------------------------------
183
+ <a name="resume"></a>
184
+ ### queue.resume()
185
+
186
+ Resume the processing of tasks.
187
+
188
+ -------------------------------------------------------
189
+ <a name="idle"></a>
190
+ ### queue.idle()
191
+
192
+ Returns `false` if there are tasks being processed or waiting to be processed.
193
+ `true` otherwise.
194
+
195
+ -------------------------------------------------------
196
+ <a name="length"></a>
197
+ ### queue.length()
198
+
199
+ Returns the number of tasks waiting to be processed (in the queue).
200
+
201
+ -------------------------------------------------------
202
+ <a name="getQueue"></a>
203
+ ### queue.getQueue()
204
+
205
+ Returns all the tasks be processed (in the queue). Returns empty array when there are no tasks
206
+
207
+ -------------------------------------------------------
208
+ <a name="kill"></a>
209
+ ### queue.kill()
210
+
211
+ Removes all tasks waiting to be processed, and reset `drain` to an empty
212
+ function.
213
+
214
+ -------------------------------------------------------
215
+ <a name="killAndDrain"></a>
216
+ ### queue.killAndDrain()
217
+
218
+ Same than `kill` but the `drain` function will be called before reset to empty.
219
+
220
+ -------------------------------------------------------
221
+ <a name="error"></a>
222
+ ### queue.error(handler)
223
+
224
+ Set a global error handler. `handler(err, task)` will be called
225
+ each time a task is completed, `err` will be not null if the task has thrown an error.
226
+
227
+ -------------------------------------------------------
228
+ <a name="concurrency"></a>
229
+ ### queue.concurrency
230
+
231
+ Property that returns the number of concurrent tasks that could be executed in
232
+ parallel. It can be altered at runtime.
233
+
234
+ -------------------------------------------------------
235
+ <a name="paused"></a>
236
+ ### queue.paused
237
+
238
+ Property (Read-Only) that returns `true` when the queue is in a paused state.
239
+
240
+ -------------------------------------------------------
241
+ <a name="drain"></a>
242
+ ### queue.drain
243
+
244
+ Function that will be called when the last
245
+ item from the queue has been processed by a worker.
246
+ It can be altered at runtime.
247
+
248
+ -------------------------------------------------------
249
+ <a name="empty"></a>
250
+ ### queue.empty
251
+
252
+ Function that will be called when the last
253
+ item from the queue has been assigned to a worker.
254
+ It can be altered at runtime.
255
+
256
+ -------------------------------------------------------
257
+ <a name="saturated"></a>
258
+ ### queue.saturated
259
+
260
+ Function that will be called when the queue hits the concurrency
261
+ limit.
262
+ It can be altered at runtime.
263
+
264
+ -------------------------------------------------------
265
+ <a name="promise"></a>
266
+ ### fastqueue.promise([that], worker(arg), concurrency)
267
+
268
+ Creates a new queue with `Promise` apis. It also offers all the methods
269
+ and properties of the object returned by [`fastqueue`](#fastqueue) with the modified
270
+ [`push`](#pushPromise) and [`unshift`](#unshiftPromise) methods.
271
+
272
+ Node v10+ is required to use the promisified version.
273
+
274
+ Arguments:
275
+ * `that`, optional context of the `worker` function.
276
+ * `worker`, worker function, it would be called with `that` as `this`,
277
+ if that is specified. It MUST return a `Promise`.
278
+ * `concurrency`, number of concurrent tasks that could be executed in
279
+ parallel.
280
+
281
+ <a name="pushPromise"></a>
282
+ #### queue.push(task) => Promise
283
+
284
+ Add a task at the end of the queue. The returned `Promise` will be fulfilled (rejected)
285
+ when the task is completed successfully (unsuccessfully).
286
+
287
+ This promise could be ignored as it will not lead to a `'unhandledRejection'`.
288
+
289
+ <a name="unshiftPromise"></a>
290
+ #### queue.unshift(task) => Promise
291
+
292
+ Add a task at the beginning of the queue. The returned `Promise` will be fulfilled (rejected)
293
+ when the task is completed successfully (unsuccessfully).
294
+
295
+ This promise could be ignored as it will not lead to a `'unhandledRejection'`.
296
+
297
+ <a name="drained"></a>
298
+ #### queue.drained() => Promise
299
+
300
+ Wait for the queue to be drained. The returned `Promise` will be resolved when all tasks in the queue have been processed by a worker.
301
+
302
+ This promise could be ignored as it will not lead to a `'unhandledRejection'`.
303
+
304
+ ## License
305
+
306
+ ISC
307
+
308
+ [ci-url]: https://github.com/mcollina/fastq/workflows/ci/badge.svg
309
+ [npm-badge]: https://badge.fury.io/js/fastq.svg
310
+ [npm-url]: https://badge.fury.io/js/fastq
@@ -0,0 +1,15 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ Use this section to tell people about which versions of your project are
6
+ currently being supported with security updates.
7
+
8
+ | Version | Supported |
9
+ | ------- | ------------------ |
10
+ | 1.x | :white_check_mark: |
11
+ | < 1.0 | :x: |
12
+
13
+ ## Reporting a Vulnerability
14
+
15
+ Please report all vulnerabilities at [https://github.com/mcollina/fastq/security](https://github.com/mcollina/fastq/security).
@@ -0,0 +1,66 @@
1
+ 'use strict'
2
+
3
+ const max = 1000000
4
+ const fastqueue = require('./')(worker, 1)
5
+ const { promisify } = require('util')
6
+ const immediate = promisify(setImmediate)
7
+ const qPromise = require('./').promise(immediate, 1)
8
+ const async = require('async')
9
+ const neo = require('neo-async')
10
+ const asyncqueue = async.queue(worker, 1)
11
+ const neoqueue = neo.queue(worker, 1)
12
+
13
+ function bench (func, done) {
14
+ const key = max + '*' + func.name
15
+ let count = -1
16
+
17
+ console.time(key)
18
+ end()
19
+
20
+ function end () {
21
+ if (++count < max) {
22
+ func(end)
23
+ } else {
24
+ console.timeEnd(key)
25
+ if (done) {
26
+ done()
27
+ }
28
+ }
29
+ }
30
+ }
31
+
32
+ function benchFastQ (done) {
33
+ fastqueue.push(42, done)
34
+ }
35
+
36
+ function benchAsyncQueue (done) {
37
+ asyncqueue.push(42, done)
38
+ }
39
+
40
+ function benchNeoQueue (done) {
41
+ neoqueue.push(42, done)
42
+ }
43
+
44
+ function worker (arg, cb) {
45
+ setImmediate(cb)
46
+ }
47
+
48
+ function benchSetImmediate (cb) {
49
+ worker(42, cb)
50
+ }
51
+
52
+ function benchFastQPromise (done) {
53
+ qPromise.push(42).then(function () { done() }, done)
54
+ }
55
+
56
+ function runBench (done) {
57
+ async.eachSeries([
58
+ benchSetImmediate,
59
+ benchFastQ,
60
+ benchNeoQueue,
61
+ benchAsyncQueue,
62
+ benchFastQPromise
63
+ ], bench, done)
64
+ }
65
+
66
+ runBench(runBench)
@@ -0,0 +1,11 @@
1
+ const neostandard = require('neostandard')
2
+
3
+ module.exports = [
4
+ ...neostandard(),
5
+ {
6
+ name: 'node-0.10-compatibility',
7
+ rules: {
8
+ 'object-shorthand': 'off' // Disable ES6 object shorthand for Node.js 0.10 compatibility
9
+ }
10
+ }
11
+ ]
@@ -0,0 +1,14 @@
1
+ 'use strict'
2
+
3
+ /* eslint-disable no-var */
4
+
5
+ var queue = require('./')(worker, 1)
6
+
7
+ queue.push(42, function (err, result) {
8
+ if (err) { throw err }
9
+ console.log('the result is', result)
10
+ })
11
+
12
+ function worker (arg, cb) {
13
+ cb(null, 42 * 2)
14
+ }
@@ -0,0 +1,9 @@
1
+ import { promise as queueAsPromised } from './queue.js'
2
+
3
+ const queue = queueAsPromised(worker, 1)
4
+
5
+ console.log('the result is', await queue.push(42))
6
+
7
+ async function worker (arg) {
8
+ return 42 * 2
9
+ }
@@ -0,0 +1,59 @@
1
+ declare function fastq<C, T = any, R = any>(context: C, worker: fastq.worker<C, T, R>, concurrency: number): fastq.queue<T, R>
2
+ declare function fastq<C, T = any, R = any>(worker: fastq.worker<C, T, R>, concurrency: number): fastq.queue<T, R>
3
+
4
+ declare namespace fastq {
5
+ type worker<C, T = any, R = any> = (this: C, task: T, cb: fastq.done<R>) => void
6
+ type asyncWorker<C, T = any, R = any> = (this: C, task: T) => Promise<R>
7
+ type done<R = any> = (err: Error | null, result?: R) => void
8
+ type errorHandler<T = any> = (err: Error, task: T) => void
9
+
10
+ interface queue<T = any, R = any> {
11
+ /** Add a task at the end of the queue. `done(err, result)` will be called when the task was processed. */
12
+ push(task: T, done?: done<R>): void
13
+ /** Add a task at the beginning of the queue. `done(err, result)` will be called when the task was processed. */
14
+ unshift(task: T, done?: done<R>): void
15
+ /** Pause the processing of tasks. Currently worked tasks are not stopped. */
16
+ pause(): any
17
+ /** Resume the processing of tasks. */
18
+ resume(): any
19
+ running(): number
20
+ /** Returns `false` if there are tasks being processed or waiting to be processed. `true` otherwise. */
21
+ idle(): boolean
22
+ /** Returns the number of tasks waiting to be processed (in the queue). */
23
+ length(): number
24
+ /** Returns all the tasks be processed (in the queue). Returns empty array when there are no tasks */
25
+ getQueue(): T[]
26
+ /** Removes all tasks waiting to be processed, and reset `drain` to an empty function. */
27
+ kill(): any
28
+ /** Same than `kill` but the `drain` function will be called before reset to empty. */
29
+ killAndDrain(): any
30
+ /** Removes all tasks waiting to be processed, calls each task's callback with an abort error (rejects promises for promise-based queues), and resets `drain` to an empty function. */
31
+ abort(): any
32
+ /** Set a global error handler. `handler(err, task)` will be called each time a task is completed, `err` will be not null if the task has thrown an error. */
33
+ error(handler: errorHandler<T>): void
34
+ /** Property that returns the number of concurrent tasks that could be executed in parallel. It can be altered at runtime. */
35
+ concurrency: number
36
+ /** Property (Read-Only) that returns `true` when the queue is in a paused state. */
37
+ readonly paused: boolean
38
+ /** Function that will be called when the last item from the queue has been processed by a worker. It can be altered at runtime. */
39
+ drain(): any
40
+ /** Function that will be called when the last item from the queue has been assigned to a worker. It can be altered at runtime. */
41
+ empty: () => void
42
+ /** Function that will be called when the queue hits the concurrency limit. It can be altered at runtime. */
43
+ saturated: () => void
44
+ }
45
+
46
+ interface queueAsPromised<T = any, R = any> extends queue<T, R> {
47
+ /** Add a task at the end of the queue. The returned `Promise` will be fulfilled (rejected) when the task is completed successfully (unsuccessfully). */
48
+ push(task: T): Promise<R>
49
+ /** Add a task at the beginning of the queue. The returned `Promise` will be fulfilled (rejected) when the task is completed successfully (unsuccessfully). */
50
+ unshift(task: T): Promise<R>
51
+ /** Wait for the queue to be drained. The returned `Promise` will be resolved when all tasks in the queue have been processed by a worker. */
52
+ drained(): Promise<void>
53
+ }
54
+
55
+ function promise<C, T = any, R = any>(context: C, worker: fastq.asyncWorker<C, T, R>, concurrency: number): fastq.queueAsPromised<T, R>
56
+ function promise<C, T = any, R = any>(worker: fastq.asyncWorker<C, T, R>, concurrency: number): fastq.queueAsPromised<T, R>
57
+ }
58
+
59
+ export = fastq
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "fastq",
3
+ "version": "1.20.1",
4
+ "description": "Fast, in memory work queue",
5
+ "main": "queue.js",
6
+ "type": "commonjs",
7
+ "scripts": {
8
+ "lint": "eslint .",
9
+ "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test/test.js test/promise.js",
10
+ "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js test/promise.js",
11
+ "test:report": "npm run lint && npm run unit:report",
12
+ "test": "npm run lint && npm run unit",
13
+ "typescript": "tsc --project ./test/tsconfig.json",
14
+ "legacy": "tape test/test.js"
15
+ },
16
+ "pre-commit": [
17
+ "test",
18
+ "typescript"
19
+ ],
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/mcollina/fastq.git"
23
+ },
24
+ "keywords": [
25
+ "fast",
26
+ "queue",
27
+ "async",
28
+ "worker"
29
+ ],
30
+ "author": "Matteo Collina <hello@matteocollina.com>",
31
+ "license": "ISC",
32
+ "bugs": {
33
+ "url": "https://github.com/mcollina/fastq/issues"
34
+ },
35
+ "homepage": "https://github.com/mcollina/fastq#readme",
36
+ "devDependencies": {
37
+ "async": "^3.1.0",
38
+ "eslint": "^9.36.0",
39
+ "neo-async": "^2.6.1",
40
+ "neostandard": "^0.12.2",
41
+ "nyc": "^17.0.0",
42
+ "pre-commit": "^1.2.2",
43
+ "tape": "^5.0.0",
44
+ "typescript": "^5.0.4"
45
+ },
46
+ "dependencies": {
47
+ "reusify": "^1.0.4"
48
+ }
49
+ }