imran-dl 2.3.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of imran-dl might be problematic. Click here for more details.

Files changed (229) hide show
  1. package/.cache/nix/binary-cache-v6.sqlite +0 -0
  2. package/.cache/nix/binary-cache-v6.sqlite-journal +0 -0
  3. package/.cache/replit/__replit_disk_meta.json +1 -0
  4. package/.cache/replit/modules/nodejs-20:v32-20240401-269b323.res +1 -0
  5. package/.cache/replit/modules/replit:v8-20240329-787bc7d.res +1 -0
  6. package/.cache/replit/modules.stamp +0 -0
  7. package/.cache/replit/nix/env.json +1 -0
  8. package/.cache/typescript/5.0/node_modules/.package-lock.json +12 -0
  9. package/.cache/typescript/5.0/node_modules/types-registry/README.md +2 -0
  10. package/.cache/typescript/5.0/node_modules/types-registry/index.json +1 -0
  11. package/.cache/typescript/5.0/node_modules/types-registry/package.json +20 -0
  12. package/.cache/typescript/5.0/package.json +1 -0
  13. package/.cache/typescript/5.3/node_modules/.package-lock.json +114 -0
  14. package/.cache/typescript/5.3/node_modules/@types/cheerio/LICENSE +21 -0
  15. package/.cache/typescript/5.3/node_modules/@types/cheerio/README.md +15 -0
  16. package/.cache/typescript/5.3/node_modules/@types/cheerio/index.d.ts +318 -0
  17. package/.cache/typescript/5.3/node_modules/@types/cheerio/package.json +71 -0
  18. package/.cache/typescript/5.3/node_modules/@types/node/LICENSE +21 -0
  19. package/.cache/typescript/5.3/node_modules/@types/node/README.md +15 -0
  20. package/.cache/typescript/5.3/node_modules/@types/node/assert/strict.d.ts +8 -0
  21. package/.cache/typescript/5.3/node_modules/@types/node/assert.d.ts +996 -0
  22. package/.cache/typescript/5.3/node_modules/@types/node/async_hooks.d.ts +539 -0
  23. package/.cache/typescript/5.3/node_modules/@types/node/buffer.d.ts +2362 -0
  24. package/.cache/typescript/5.3/node_modules/@types/node/child_process.d.ts +1540 -0
  25. package/.cache/typescript/5.3/node_modules/@types/node/cluster.d.ts +432 -0
  26. package/.cache/typescript/5.3/node_modules/@types/node/console.d.ts +415 -0
  27. package/.cache/typescript/5.3/node_modules/@types/node/constants.d.ts +19 -0
  28. package/.cache/typescript/5.3/node_modules/@types/node/crypto.d.ts +4456 -0
  29. package/.cache/typescript/5.3/node_modules/@types/node/dgram.d.ts +586 -0
  30. package/.cache/typescript/5.3/node_modules/@types/node/diagnostics_channel.d.ts +191 -0
  31. package/.cache/typescript/5.3/node_modules/@types/node/dns/promises.d.ts +425 -0
  32. package/.cache/typescript/5.3/node_modules/@types/node/dns.d.ts +809 -0
  33. package/.cache/typescript/5.3/node_modules/@types/node/dom-events.d.ts +122 -0
  34. package/.cache/typescript/5.3/node_modules/@types/node/domain.d.ts +170 -0
  35. package/.cache/typescript/5.3/node_modules/@types/node/events.d.ts +879 -0
  36. package/.cache/typescript/5.3/node_modules/@types/node/fs/promises.d.ts +1239 -0
  37. package/.cache/typescript/5.3/node_modules/@types/node/fs.d.ts +4291 -0
  38. package/.cache/typescript/5.3/node_modules/@types/node/globals.d.ts +385 -0
  39. package/.cache/typescript/5.3/node_modules/@types/node/globals.global.d.ts +1 -0
  40. package/.cache/typescript/5.3/node_modules/@types/node/http.d.ts +1888 -0
  41. package/.cache/typescript/5.3/node_modules/@types/node/http2.d.ts +2382 -0
  42. package/.cache/typescript/5.3/node_modules/@types/node/https.d.ts +550 -0
  43. package/.cache/typescript/5.3/node_modules/@types/node/index.d.ts +88 -0
  44. package/.cache/typescript/5.3/node_modules/@types/node/inspector.d.ts +2747 -0
  45. package/.cache/typescript/5.3/node_modules/@types/node/module.d.ts +301 -0
  46. package/.cache/typescript/5.3/node_modules/@types/node/net.d.ts +949 -0
  47. package/.cache/typescript/5.3/node_modules/@types/node/os.d.ts +478 -0
  48. package/.cache/typescript/5.3/node_modules/@types/node/package.json +230 -0
  49. package/.cache/typescript/5.3/node_modules/@types/node/path.d.ts +191 -0
  50. package/.cache/typescript/5.3/node_modules/@types/node/perf_hooks.d.ts +639 -0
  51. package/.cache/typescript/5.3/node_modules/@types/node/process.d.ts +1539 -0
  52. package/.cache/typescript/5.3/node_modules/@types/node/punycode.d.ts +117 -0
  53. package/.cache/typescript/5.3/node_modules/@types/node/querystring.d.ts +141 -0
  54. package/.cache/typescript/5.3/node_modules/@types/node/readline/promises.d.ts +150 -0
  55. package/.cache/typescript/5.3/node_modules/@types/node/readline.d.ts +539 -0
  56. package/.cache/typescript/5.3/node_modules/@types/node/repl.d.ts +430 -0
  57. package/.cache/typescript/5.3/node_modules/@types/node/stream/consumers.d.ts +12 -0
  58. package/.cache/typescript/5.3/node_modules/@types/node/stream/promises.d.ts +83 -0
  59. package/.cache/typescript/5.3/node_modules/@types/node/stream/web.d.ts +350 -0
  60. package/.cache/typescript/5.3/node_modules/@types/node/stream.d.ts +1701 -0
  61. package/.cache/typescript/5.3/node_modules/@types/node/string_decoder.d.ts +67 -0
  62. package/.cache/typescript/5.3/node_modules/@types/node/test.d.ts +1382 -0
  63. package/.cache/typescript/5.3/node_modules/@types/node/timers/promises.d.ts +93 -0
  64. package/.cache/typescript/5.3/node_modules/@types/node/timers.d.ts +240 -0
  65. package/.cache/typescript/5.3/node_modules/@types/node/tls.d.ts +1210 -0
  66. package/.cache/typescript/5.3/node_modules/@types/node/trace_events.d.ts +182 -0
  67. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  68. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/assert.d.ts +996 -0
  69. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/async_hooks.d.ts +539 -0
  70. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/buffer.d.ts +2362 -0
  71. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/child_process.d.ts +1540 -0
  72. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/cluster.d.ts +432 -0
  73. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/console.d.ts +415 -0
  74. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/constants.d.ts +19 -0
  75. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/crypto.d.ts +4455 -0
  76. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/dgram.d.ts +586 -0
  77. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +191 -0
  78. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/dns/promises.d.ts +425 -0
  79. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/dns.d.ts +809 -0
  80. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/dom-events.d.ts +122 -0
  81. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  82. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/events.d.ts +879 -0
  83. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/fs/promises.d.ts +1239 -0
  84. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/fs.d.ts +4291 -0
  85. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/globals.d.ts +385 -0
  86. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  87. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/http.d.ts +1888 -0
  88. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/http2.d.ts +2382 -0
  89. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/https.d.ts +550 -0
  90. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  91. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/inspector.d.ts +2747 -0
  92. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/module.d.ts +301 -0
  93. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/net.d.ts +949 -0
  94. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/os.d.ts +478 -0
  95. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  96. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/perf_hooks.d.ts +639 -0
  97. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/process.d.ts +1539 -0
  98. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  99. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/querystring.d.ts +141 -0
  100. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/readline/promises.d.ts +150 -0
  101. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/readline.d.ts +539 -0
  102. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/repl.d.ts +430 -0
  103. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  104. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/stream/promises.d.ts +83 -0
  105. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/stream/web.d.ts +350 -0
  106. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/stream.d.ts +1701 -0
  107. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  108. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/test.d.ts +1382 -0
  109. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/timers/promises.d.ts +93 -0
  110. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/timers.d.ts +240 -0
  111. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/tls.d.ts +1210 -0
  112. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/trace_events.d.ts +182 -0
  113. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/tty.d.ts +208 -0
  114. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/url.d.ts +927 -0
  115. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/util.d.ts +2183 -0
  116. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/v8.d.ts +635 -0
  117. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/vm.d.ts +903 -0
  118. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  119. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/worker_threads.d.ts +691 -0
  120. package/.cache/typescript/5.3/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  121. package/.cache/typescript/5.3/node_modules/@types/node/tty.d.ts +208 -0
  122. package/.cache/typescript/5.3/node_modules/@types/node/url.d.ts +927 -0
  123. package/.cache/typescript/5.3/node_modules/@types/node/util.d.ts +2183 -0
  124. package/.cache/typescript/5.3/node_modules/@types/node/v8.d.ts +635 -0
  125. package/.cache/typescript/5.3/node_modules/@types/node/vm.d.ts +903 -0
  126. package/.cache/typescript/5.3/node_modules/@types/node/wasi.d.ts +158 -0
  127. package/.cache/typescript/5.3/node_modules/@types/node/worker_threads.d.ts +691 -0
  128. package/.cache/typescript/5.3/node_modules/@types/node/zlib.d.ts +517 -0
  129. package/.cache/typescript/5.3/node_modules/@types/node-fetch/LICENSE +21 -0
  130. package/.cache/typescript/5.3/node_modules/@types/node-fetch/README.md +15 -0
  131. package/.cache/typescript/5.3/node_modules/@types/node-fetch/externals.d.ts +32 -0
  132. package/.cache/typescript/5.3/node_modules/@types/node-fetch/index.d.ts +214 -0
  133. package/.cache/typescript/5.3/node_modules/@types/node-fetch/package.json +83 -0
  134. package/.cache/typescript/5.3/node_modules/@types/qs/LICENSE +21 -0
  135. package/.cache/typescript/5.3/node_modules/@types/qs/README.md +15 -0
  136. package/.cache/typescript/5.3/node_modules/@types/qs/index.d.ts +79 -0
  137. package/.cache/typescript/5.3/node_modules/@types/qs/package.json +65 -0
  138. package/.cache/typescript/5.3/node_modules/asynckit/LICENSE +21 -0
  139. package/.cache/typescript/5.3/node_modules/asynckit/README.md +233 -0
  140. package/.cache/typescript/5.3/node_modules/asynckit/bench.js +76 -0
  141. package/.cache/typescript/5.3/node_modules/asynckit/index.js +6 -0
  142. package/.cache/typescript/5.3/node_modules/asynckit/lib/abort.js +29 -0
  143. package/.cache/typescript/5.3/node_modules/asynckit/lib/async.js +34 -0
  144. package/.cache/typescript/5.3/node_modules/asynckit/lib/defer.js +26 -0
  145. package/.cache/typescript/5.3/node_modules/asynckit/lib/iterate.js +75 -0
  146. package/.cache/typescript/5.3/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  147. package/.cache/typescript/5.3/node_modules/asynckit/lib/readable_parallel.js +25 -0
  148. package/.cache/typescript/5.3/node_modules/asynckit/lib/readable_serial.js +25 -0
  149. package/.cache/typescript/5.3/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  150. package/.cache/typescript/5.3/node_modules/asynckit/lib/state.js +37 -0
  151. package/.cache/typescript/5.3/node_modules/asynckit/lib/streamify.js +141 -0
  152. package/.cache/typescript/5.3/node_modules/asynckit/lib/terminator.js +29 -0
  153. package/.cache/typescript/5.3/node_modules/asynckit/package.json +63 -0
  154. package/.cache/typescript/5.3/node_modules/asynckit/parallel.js +43 -0
  155. package/.cache/typescript/5.3/node_modules/asynckit/serial.js +17 -0
  156. package/.cache/typescript/5.3/node_modules/asynckit/serialOrdered.js +75 -0
  157. package/.cache/typescript/5.3/node_modules/asynckit/stream.js +21 -0
  158. package/.cache/typescript/5.3/node_modules/combined-stream/License +19 -0
  159. package/.cache/typescript/5.3/node_modules/combined-stream/Readme.md +138 -0
  160. package/.cache/typescript/5.3/node_modules/combined-stream/lib/combined_stream.js +208 -0
  161. package/.cache/typescript/5.3/node_modules/combined-stream/package.json +25 -0
  162. package/.cache/typescript/5.3/node_modules/combined-stream/yarn.lock +17 -0
  163. package/.cache/typescript/5.3/node_modules/delayed-stream/License +19 -0
  164. package/.cache/typescript/5.3/node_modules/delayed-stream/Makefile +7 -0
  165. package/.cache/typescript/5.3/node_modules/delayed-stream/Readme.md +141 -0
  166. package/.cache/typescript/5.3/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  167. package/.cache/typescript/5.3/node_modules/delayed-stream/package.json +27 -0
  168. package/.cache/typescript/5.3/node_modules/form-data/License +19 -0
  169. package/.cache/typescript/5.3/node_modules/form-data/README.md.bak +358 -0
  170. package/.cache/typescript/5.3/node_modules/form-data/Readme.md +358 -0
  171. package/.cache/typescript/5.3/node_modules/form-data/index.d.ts +62 -0
  172. package/.cache/typescript/5.3/node_modules/form-data/lib/browser.js +2 -0
  173. package/.cache/typescript/5.3/node_modules/form-data/lib/form_data.js +501 -0
  174. package/.cache/typescript/5.3/node_modules/form-data/lib/populate.js +10 -0
  175. package/.cache/typescript/5.3/node_modules/form-data/package.json +68 -0
  176. package/.cache/typescript/5.3/node_modules/mime-db/HISTORY.md +507 -0
  177. package/.cache/typescript/5.3/node_modules/mime-db/LICENSE +23 -0
  178. package/.cache/typescript/5.3/node_modules/mime-db/README.md +100 -0
  179. package/.cache/typescript/5.3/node_modules/mime-db/db.json +8519 -0
  180. package/.cache/typescript/5.3/node_modules/mime-db/index.js +12 -0
  181. package/.cache/typescript/5.3/node_modules/mime-db/package.json +60 -0
  182. package/.cache/typescript/5.3/node_modules/mime-types/HISTORY.md +397 -0
  183. package/.cache/typescript/5.3/node_modules/mime-types/LICENSE +23 -0
  184. package/.cache/typescript/5.3/node_modules/mime-types/README.md +113 -0
  185. package/.cache/typescript/5.3/node_modules/mime-types/index.js +188 -0
  186. package/.cache/typescript/5.3/node_modules/mime-types/package.json +44 -0
  187. package/.cache/typescript/5.3/node_modules/types-registry/README.md +2 -0
  188. package/.cache/typescript/5.3/node_modules/types-registry/index.json +1 -0
  189. package/.cache/typescript/5.3/node_modules/types-registry/package.json +20 -0
  190. package/.cache/typescript/5.3/node_modules/undici-types/README.md +6 -0
  191. package/.cache/typescript/5.3/node_modules/undici-types/agent.d.ts +31 -0
  192. package/.cache/typescript/5.3/node_modules/undici-types/api.d.ts +43 -0
  193. package/.cache/typescript/5.3/node_modules/undici-types/balanced-pool.d.ts +18 -0
  194. package/.cache/typescript/5.3/node_modules/undici-types/cache.d.ts +36 -0
  195. package/.cache/typescript/5.3/node_modules/undici-types/client.d.ts +97 -0
  196. package/.cache/typescript/5.3/node_modules/undici-types/connector.d.ts +34 -0
  197. package/.cache/typescript/5.3/node_modules/undici-types/content-type.d.ts +21 -0
  198. package/.cache/typescript/5.3/node_modules/undici-types/cookies.d.ts +28 -0
  199. package/.cache/typescript/5.3/node_modules/undici-types/diagnostics-channel.d.ts +67 -0
  200. package/.cache/typescript/5.3/node_modules/undici-types/dispatcher.d.ts +241 -0
  201. package/.cache/typescript/5.3/node_modules/undici-types/errors.d.ts +128 -0
  202. package/.cache/typescript/5.3/node_modules/undici-types/fetch.d.ts +209 -0
  203. package/.cache/typescript/5.3/node_modules/undici-types/file.d.ts +39 -0
  204. package/.cache/typescript/5.3/node_modules/undici-types/filereader.d.ts +54 -0
  205. package/.cache/typescript/5.3/node_modules/undici-types/formdata.d.ts +108 -0
  206. package/.cache/typescript/5.3/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  207. package/.cache/typescript/5.3/node_modules/undici-types/global-origin.d.ts +7 -0
  208. package/.cache/typescript/5.3/node_modules/undici-types/handlers.d.ts +9 -0
  209. package/.cache/typescript/5.3/node_modules/undici-types/header.d.ts +4 -0
  210. package/.cache/typescript/5.3/node_modules/undici-types/index.d.ts +63 -0
  211. package/.cache/typescript/5.3/node_modules/undici-types/interceptors.d.ts +5 -0
  212. package/.cache/typescript/5.3/node_modules/undici-types/mock-agent.d.ts +50 -0
  213. package/.cache/typescript/5.3/node_modules/undici-types/mock-client.d.ts +25 -0
  214. package/.cache/typescript/5.3/node_modules/undici-types/mock-errors.d.ts +12 -0
  215. package/.cache/typescript/5.3/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  216. package/.cache/typescript/5.3/node_modules/undici-types/mock-pool.d.ts +25 -0
  217. package/.cache/typescript/5.3/node_modules/undici-types/package.json +55 -0
  218. package/.cache/typescript/5.3/node_modules/undici-types/patch.d.ts +71 -0
  219. package/.cache/typescript/5.3/node_modules/undici-types/pool-stats.d.ts +19 -0
  220. package/.cache/typescript/5.3/node_modules/undici-types/pool.d.ts +28 -0
  221. package/.cache/typescript/5.3/node_modules/undici-types/proxy-agent.d.ts +30 -0
  222. package/.cache/typescript/5.3/node_modules/undici-types/readable.d.ts +61 -0
  223. package/.cache/typescript/5.3/node_modules/undici-types/webidl.d.ts +220 -0
  224. package/.cache/typescript/5.3/node_modules/undici-types/websocket.d.ts +131 -0
  225. package/.cache/typescript/5.3/package.json +1 -0
  226. package/IMRAN/module.js +1 -0
  227. package/README.md +64 -0
  228. package/index.js +13 -0
  229. package/package.json +48 -0
@@ -0,0 +1,208 @@
1
+ var util = require('util');
2
+ var Stream = require('stream').Stream;
3
+ var DelayedStream = require('delayed-stream');
4
+
5
+ module.exports = CombinedStream;
6
+ function CombinedStream() {
7
+ this.writable = false;
8
+ this.readable = true;
9
+ this.dataSize = 0;
10
+ this.maxDataSize = 2 * 1024 * 1024;
11
+ this.pauseStreams = true;
12
+
13
+ this._released = false;
14
+ this._streams = [];
15
+ this._currentStream = null;
16
+ this._insideLoop = false;
17
+ this._pendingNext = false;
18
+ }
19
+ util.inherits(CombinedStream, Stream);
20
+
21
+ CombinedStream.create = function(options) {
22
+ var combinedStream = new this();
23
+
24
+ options = options || {};
25
+ for (var option in options) {
26
+ combinedStream[option] = options[option];
27
+ }
28
+
29
+ return combinedStream;
30
+ };
31
+
32
+ CombinedStream.isStreamLike = function(stream) {
33
+ return (typeof stream !== 'function')
34
+ && (typeof stream !== 'string')
35
+ && (typeof stream !== 'boolean')
36
+ && (typeof stream !== 'number')
37
+ && (!Buffer.isBuffer(stream));
38
+ };
39
+
40
+ CombinedStream.prototype.append = function(stream) {
41
+ var isStreamLike = CombinedStream.isStreamLike(stream);
42
+
43
+ if (isStreamLike) {
44
+ if (!(stream instanceof DelayedStream)) {
45
+ var newStream = DelayedStream.create(stream, {
46
+ maxDataSize: Infinity,
47
+ pauseStream: this.pauseStreams,
48
+ });
49
+ stream.on('data', this._checkDataSize.bind(this));
50
+ stream = newStream;
51
+ }
52
+
53
+ this._handleErrors(stream);
54
+
55
+ if (this.pauseStreams) {
56
+ stream.pause();
57
+ }
58
+ }
59
+
60
+ this._streams.push(stream);
61
+ return this;
62
+ };
63
+
64
+ CombinedStream.prototype.pipe = function(dest, options) {
65
+ Stream.prototype.pipe.call(this, dest, options);
66
+ this.resume();
67
+ return dest;
68
+ };
69
+
70
+ CombinedStream.prototype._getNext = function() {
71
+ this._currentStream = null;
72
+
73
+ if (this._insideLoop) {
74
+ this._pendingNext = true;
75
+ return; // defer call
76
+ }
77
+
78
+ this._insideLoop = true;
79
+ try {
80
+ do {
81
+ this._pendingNext = false;
82
+ this._realGetNext();
83
+ } while (this._pendingNext);
84
+ } finally {
85
+ this._insideLoop = false;
86
+ }
87
+ };
88
+
89
+ CombinedStream.prototype._realGetNext = function() {
90
+ var stream = this._streams.shift();
91
+
92
+
93
+ if (typeof stream == 'undefined') {
94
+ this.end();
95
+ return;
96
+ }
97
+
98
+ if (typeof stream !== 'function') {
99
+ this._pipeNext(stream);
100
+ return;
101
+ }
102
+
103
+ var getStream = stream;
104
+ getStream(function(stream) {
105
+ var isStreamLike = CombinedStream.isStreamLike(stream);
106
+ if (isStreamLike) {
107
+ stream.on('data', this._checkDataSize.bind(this));
108
+ this._handleErrors(stream);
109
+ }
110
+
111
+ this._pipeNext(stream);
112
+ }.bind(this));
113
+ };
114
+
115
+ CombinedStream.prototype._pipeNext = function(stream) {
116
+ this._currentStream = stream;
117
+
118
+ var isStreamLike = CombinedStream.isStreamLike(stream);
119
+ if (isStreamLike) {
120
+ stream.on('end', this._getNext.bind(this));
121
+ stream.pipe(this, {end: false});
122
+ return;
123
+ }
124
+
125
+ var value = stream;
126
+ this.write(value);
127
+ this._getNext();
128
+ };
129
+
130
+ CombinedStream.prototype._handleErrors = function(stream) {
131
+ var self = this;
132
+ stream.on('error', function(err) {
133
+ self._emitError(err);
134
+ });
135
+ };
136
+
137
+ CombinedStream.prototype.write = function(data) {
138
+ this.emit('data', data);
139
+ };
140
+
141
+ CombinedStream.prototype.pause = function() {
142
+ if (!this.pauseStreams) {
143
+ return;
144
+ }
145
+
146
+ if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
147
+ this.emit('pause');
148
+ };
149
+
150
+ CombinedStream.prototype.resume = function() {
151
+ if (!this._released) {
152
+ this._released = true;
153
+ this.writable = true;
154
+ this._getNext();
155
+ }
156
+
157
+ if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
158
+ this.emit('resume');
159
+ };
160
+
161
+ CombinedStream.prototype.end = function() {
162
+ this._reset();
163
+ this.emit('end');
164
+ };
165
+
166
+ CombinedStream.prototype.destroy = function() {
167
+ this._reset();
168
+ this.emit('close');
169
+ };
170
+
171
+ CombinedStream.prototype._reset = function() {
172
+ this.writable = false;
173
+ this._streams = [];
174
+ this._currentStream = null;
175
+ };
176
+
177
+ CombinedStream.prototype._checkDataSize = function() {
178
+ this._updateDataSize();
179
+ if (this.dataSize <= this.maxDataSize) {
180
+ return;
181
+ }
182
+
183
+ var message =
184
+ 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
185
+ this._emitError(new Error(message));
186
+ };
187
+
188
+ CombinedStream.prototype._updateDataSize = function() {
189
+ this.dataSize = 0;
190
+
191
+ var self = this;
192
+ this._streams.forEach(function(stream) {
193
+ if (!stream.dataSize) {
194
+ return;
195
+ }
196
+
197
+ self.dataSize += stream.dataSize;
198
+ });
199
+
200
+ if (this._currentStream && this._currentStream.dataSize) {
201
+ this.dataSize += this._currentStream.dataSize;
202
+ }
203
+ };
204
+
205
+ CombinedStream.prototype._emitError = function(err) {
206
+ this._reset();
207
+ this.emit('error', err);
208
+ };
@@ -0,0 +1,25 @@
1
+ {
2
+ "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)",
3
+ "name": "combined-stream",
4
+ "description": "A stream that emits multiple other streams one after another.",
5
+ "version": "1.0.8",
6
+ "homepage": "https://github.com/felixge/node-combined-stream",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git://github.com/felixge/node-combined-stream.git"
10
+ },
11
+ "main": "./lib/combined_stream",
12
+ "scripts": {
13
+ "test": "node test/run.js"
14
+ },
15
+ "engines": {
16
+ "node": ">= 0.8"
17
+ },
18
+ "dependencies": {
19
+ "delayed-stream": "~1.0.0"
20
+ },
21
+ "devDependencies": {
22
+ "far": "~0.0.7"
23
+ },
24
+ "license": "MIT"
25
+ }
@@ -0,0 +1,17 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ delayed-stream@~1.0.0:
6
+ version "1.0.0"
7
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
8
+
9
+ far@~0.0.7:
10
+ version "0.0.7"
11
+ resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7"
12
+ dependencies:
13
+ oop "0.0.3"
14
+
15
+ oop@0.0.3:
16
+ version "0.0.3"
17
+ resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401"
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011 Debuggable Limited <felix@debuggable.com>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,7 @@
1
+ SHELL := /bin/bash
2
+
3
+ test:
4
+ @./test/run.js
5
+
6
+ .PHONY: test
7
+
@@ -0,0 +1,141 @@
1
+ # delayed-stream
2
+
3
+ Buffers events from a stream until you are ready to handle them.
4
+
5
+ ## Installation
6
+
7
+ ``` bash
8
+ npm install delayed-stream
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ The following example shows how to write a http echo server that delays its
14
+ response by 1000 ms.
15
+
16
+ ``` javascript
17
+ var DelayedStream = require('delayed-stream');
18
+ var http = require('http');
19
+
20
+ http.createServer(function(req, res) {
21
+ var delayed = DelayedStream.create(req);
22
+
23
+ setTimeout(function() {
24
+ res.writeHead(200);
25
+ delayed.pipe(res);
26
+ }, 1000);
27
+ });
28
+ ```
29
+
30
+ If you are not using `Stream#pipe`, you can also manually release the buffered
31
+ events by calling `delayedStream.resume()`:
32
+
33
+ ``` javascript
34
+ var delayed = DelayedStream.create(req);
35
+
36
+ setTimeout(function() {
37
+ // Emit all buffered events and resume underlaying source
38
+ delayed.resume();
39
+ }, 1000);
40
+ ```
41
+
42
+ ## Implementation
43
+
44
+ In order to use this meta stream properly, here are a few things you should
45
+ know about the implementation.
46
+
47
+ ### Event Buffering / Proxying
48
+
49
+ All events of the `source` stream are hijacked by overwriting the `source.emit`
50
+ method. Until node implements a catch-all event listener, this is the only way.
51
+
52
+ However, delayed-stream still continues to emit all events it captures on the
53
+ `source`, regardless of whether you have released the delayed stream yet or
54
+ not.
55
+
56
+ Upon creation, delayed-stream captures all `source` events and stores them in
57
+ an internal event buffer. Once `delayedStream.release()` is called, all
58
+ buffered events are emitted on the `delayedStream`, and the event buffer is
59
+ cleared. After that, delayed-stream merely acts as a proxy for the underlaying
60
+ source.
61
+
62
+ ### Error handling
63
+
64
+ Error events on `source` are buffered / proxied just like any other events.
65
+ However, `delayedStream.create` attaches a no-op `'error'` listener to the
66
+ `source`. This way you only have to handle errors on the `delayedStream`
67
+ object, rather than in two places.
68
+
69
+ ### Buffer limits
70
+
71
+ delayed-stream provides a `maxDataSize` property that can be used to limit
72
+ the amount of data being buffered. In order to protect you from bad `source`
73
+ streams that don't react to `source.pause()`, this feature is enabled by
74
+ default.
75
+
76
+ ## API
77
+
78
+ ### DelayedStream.create(source, [options])
79
+
80
+ Returns a new `delayedStream`. Available options are:
81
+
82
+ * `pauseStream`
83
+ * `maxDataSize`
84
+
85
+ The description for those properties can be found below.
86
+
87
+ ### delayedStream.source
88
+
89
+ The `source` stream managed by this object. This is useful if you are
90
+ passing your `delayedStream` around, and you still want to access properties
91
+ on the `source` object.
92
+
93
+ ### delayedStream.pauseStream = true
94
+
95
+ Whether to pause the underlaying `source` when calling
96
+ `DelayedStream.create()`. Modifying this property afterwards has no effect.
97
+
98
+ ### delayedStream.maxDataSize = 1024 * 1024
99
+
100
+ The amount of data to buffer before emitting an `error`.
101
+
102
+ If the underlaying source is emitting `Buffer` objects, the `maxDataSize`
103
+ refers to bytes.
104
+
105
+ If the underlaying source is emitting JavaScript strings, the size refers to
106
+ characters.
107
+
108
+ If you know what you are doing, you can set this property to `Infinity` to
109
+ disable this feature. You can also modify this property during runtime.
110
+
111
+ ### delayedStream.dataSize = 0
112
+
113
+ The amount of data buffered so far.
114
+
115
+ ### delayedStream.readable
116
+
117
+ An ECMA5 getter that returns the value of `source.readable`.
118
+
119
+ ### delayedStream.resume()
120
+
121
+ If the `delayedStream` has not been released so far, `delayedStream.release()`
122
+ is called.
123
+
124
+ In either case, `source.resume()` is called.
125
+
126
+ ### delayedStream.pause()
127
+
128
+ Calls `source.pause()`.
129
+
130
+ ### delayedStream.pipe(dest)
131
+
132
+ Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.
133
+
134
+ ### delayedStream.release()
135
+
136
+ Emits and clears all events that have been buffered up so far. This does not
137
+ resume the underlaying source, use `delayedStream.resume()` instead.
138
+
139
+ ## License
140
+
141
+ delayed-stream is licensed under the MIT license.
@@ -0,0 +1,107 @@
1
+ var Stream = require('stream').Stream;
2
+ var util = require('util');
3
+
4
+ module.exports = DelayedStream;
5
+ function DelayedStream() {
6
+ this.source = null;
7
+ this.dataSize = 0;
8
+ this.maxDataSize = 1024 * 1024;
9
+ this.pauseStream = true;
10
+
11
+ this._maxDataSizeExceeded = false;
12
+ this._released = false;
13
+ this._bufferedEvents = [];
14
+ }
15
+ util.inherits(DelayedStream, Stream);
16
+
17
+ DelayedStream.create = function(source, options) {
18
+ var delayedStream = new this();
19
+
20
+ options = options || {};
21
+ for (var option in options) {
22
+ delayedStream[option] = options[option];
23
+ }
24
+
25
+ delayedStream.source = source;
26
+
27
+ var realEmit = source.emit;
28
+ source.emit = function() {
29
+ delayedStream._handleEmit(arguments);
30
+ return realEmit.apply(source, arguments);
31
+ };
32
+
33
+ source.on('error', function() {});
34
+ if (delayedStream.pauseStream) {
35
+ source.pause();
36
+ }
37
+
38
+ return delayedStream;
39
+ };
40
+
41
+ Object.defineProperty(DelayedStream.prototype, 'readable', {
42
+ configurable: true,
43
+ enumerable: true,
44
+ get: function() {
45
+ return this.source.readable;
46
+ }
47
+ });
48
+
49
+ DelayedStream.prototype.setEncoding = function() {
50
+ return this.source.setEncoding.apply(this.source, arguments);
51
+ };
52
+
53
+ DelayedStream.prototype.resume = function() {
54
+ if (!this._released) {
55
+ this.release();
56
+ }
57
+
58
+ this.source.resume();
59
+ };
60
+
61
+ DelayedStream.prototype.pause = function() {
62
+ this.source.pause();
63
+ };
64
+
65
+ DelayedStream.prototype.release = function() {
66
+ this._released = true;
67
+
68
+ this._bufferedEvents.forEach(function(args) {
69
+ this.emit.apply(this, args);
70
+ }.bind(this));
71
+ this._bufferedEvents = [];
72
+ };
73
+
74
+ DelayedStream.prototype.pipe = function() {
75
+ var r = Stream.prototype.pipe.apply(this, arguments);
76
+ this.resume();
77
+ return r;
78
+ };
79
+
80
+ DelayedStream.prototype._handleEmit = function(args) {
81
+ if (this._released) {
82
+ this.emit.apply(this, args);
83
+ return;
84
+ }
85
+
86
+ if (args[0] === 'data') {
87
+ this.dataSize += args[1].length;
88
+ this._checkIfMaxDataSizeExceeded();
89
+ }
90
+
91
+ this._bufferedEvents.push(args);
92
+ };
93
+
94
+ DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
95
+ if (this._maxDataSizeExceeded) {
96
+ return;
97
+ }
98
+
99
+ if (this.dataSize <= this.maxDataSize) {
100
+ return;
101
+ }
102
+
103
+ this._maxDataSizeExceeded = true;
104
+ var message =
105
+ 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
106
+ this.emit('error', new Error(message));
107
+ };
@@ -0,0 +1,27 @@
1
+ {
2
+ "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)",
3
+ "contributors": [
4
+ "Mike Atkins <apeherder@gmail.com>"
5
+ ],
6
+ "name": "delayed-stream",
7
+ "description": "Buffers events from a stream until you are ready to handle them.",
8
+ "license": "MIT",
9
+ "version": "1.0.0",
10
+ "homepage": "https://github.com/felixge/node-delayed-stream",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git://github.com/felixge/node-delayed-stream.git"
14
+ },
15
+ "main": "./lib/delayed_stream",
16
+ "engines": {
17
+ "node": ">=0.4.0"
18
+ },
19
+ "scripts": {
20
+ "test": "make test"
21
+ },
22
+ "dependencies": {},
23
+ "devDependencies": {
24
+ "fake": "0.2.0",
25
+ "far": "0.0.1"
26
+ }
27
+ }
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.