fca-smart-shankar 12.0.0 → 13.0.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 (285) hide show
  1. package/.replit +12 -3
  2. package/.upm/store.json +1 -0
  3. package/CHANGELOG.md +2 -0
  4. package/README.md +0 -1
  5. package/generated-icon.png +0 -0
  6. package/index.js +507 -437
  7. package/package.json +378 -42
  8. package/replit.nix +3 -1
  9. package/shankar-fca.json +4 -0
  10. package/src/addUserToGroup.js +3 -3
  11. package/src/changeAdminStatus.js +2 -2
  12. package/src/changeArchivedStatus.js +2 -2
  13. package/src/changeAvatar.js +8 -8
  14. package/src/changeAvatarV2.js +1 -1
  15. package/src/changeBio.js +4 -4
  16. package/src/changeBlockedStatus.js +2 -2
  17. package/src/changeCover.js +2 -2
  18. package/src/changeGroupImage.js +4 -4
  19. package/src/changeName.js +2 -2
  20. package/src/changeNickname.js +2 -2
  21. package/src/changeThreadColor.js +3 -3
  22. package/src/changeThreadEmoji.js +2 -2
  23. package/src/changeUsername.js +3 -3
  24. package/src/createCommentPost.js +5 -5
  25. package/src/createNewGroup.js +5 -5
  26. package/src/createPoll.js +2 -2
  27. package/src/createPost.js +6 -5
  28. package/src/deleteMessage.js +2 -2
  29. package/src/deleteThread.js +2 -2
  30. package/src/editMessage.js +30 -18
  31. package/src/follow.js +8 -8
  32. package/src/forwardAttachment.js +2 -2
  33. package/src/getAccess.js +2 -2
  34. package/src/getAvatarUser.js +2 -2
  35. package/src/getCurrentUserID.js +4 -4
  36. package/src/getFriendsList.js +3 -3
  37. package/src/getMessage.js +2 -2
  38. package/src/getThreadHistory.js +2 -2
  39. package/src/getThreadHistoryDeprecated.js +2 -2
  40. package/src/getThreadInfo.js +1 -1
  41. package/src/getThreadInfoDeprecated.js +2 -2
  42. package/src/getThreadList.js +3 -3
  43. package/src/getThreadListDeprecated.js +3 -3
  44. package/src/getThreadPictures.js +2 -2
  45. package/src/getUID.js +4 -4
  46. package/src/getUserID.js +3 -3
  47. package/src/getUserInfo.js +52 -18
  48. package/src/handleFriendRequest.js +5 -5
  49. package/src/handleMessageRequest.js +2 -2
  50. package/src/httpGet.js +3 -3
  51. package/src/httpPost.js +3 -3
  52. package/src/httpPostFormData.js +3 -3
  53. package/src/listenMqtt.js +648 -659
  54. package/src/listenNotification.js +1 -1
  55. package/src/logout.js +3 -3
  56. package/src/markAsDelivered.js +5 -2
  57. package/src/markAsRead.js +5 -2
  58. package/src/markAsReadAll.js +2 -2
  59. package/src/markAsSeen.js +2 -2
  60. package/src/muteThread.js +2 -2
  61. package/src/refreshFb_dtsg.js +3 -3
  62. package/src/removeUserFromGroup.js +2 -2
  63. package/src/resolvePhotoUrl.js +2 -2
  64. package/src/searchStickers.js +1 -1
  65. package/src/sendMessage.js +11 -8
  66. package/src/sendMessageMqtt.js +4 -4
  67. package/src/sendTypingIndicator.js +14 -5
  68. package/src/sendTypingIndicatorV2.js +1 -1
  69. package/src/setMessageReaction.js +3 -3
  70. package/src/setPostReaction.js +4 -4
  71. package/src/setProfileGuard.js +3 -3
  72. package/src/setStoryReaction.js +1 -1
  73. package/src/setTitle.js +3 -3
  74. package/src/shareContact.js +1 -1
  75. package/src/shareLink.js +1 -1
  76. package/src/stopListenMqtt.js +5 -2
  77. package/src/unfriend.js +2 -2
  78. package/src/unsendMessage.js +2 -2
  79. package/src/uploadAttachment.js +2 -2
  80. package/test/data/shareAttach.js +146 -0
  81. package/test/data/something.mov +0 -0
  82. package/test/data/test.png +0 -0
  83. package/test/data/test.txt +7 -0
  84. package/test/test-page.js +1 -1
  85. package/utils.js +564 -391
  86. package/.cache/nix/binary-cache-v6.sqlite +0 -0
  87. package/.cache/nix/binary-cache-v6.sqlite-journal +0 -0
  88. package/.cache/replit/env/latest +0 -125
  89. package/.cache/replit/env/latest.json +0 -1
  90. package/.cache/replit/modules/nix.res +0 -1
  91. package/.cache/replit/modules/nodejs-20.res +0 -1
  92. package/.cache/replit/modules/replit.res +0 -1
  93. package/.cache/replit/modules.stamp +0 -0
  94. package/.cache/replit/nix/env.json +0 -1
  95. package/.cache/typescript/5.6/node_modules/.package-lock.json +0 -171
  96. package/.cache/typescript/5.6/node_modules/@types/bluebird/LICENSE +0 -21
  97. package/.cache/typescript/5.6/node_modules/@types/bluebird/README.md +0 -15
  98. package/.cache/typescript/5.6/node_modules/@types/bluebird/index.d.ts +0 -1365
  99. package/.cache/typescript/5.6/node_modules/@types/bluebird/package.json +0 -25
  100. package/.cache/typescript/5.6/node_modules/@types/caseless/LICENSE +0 -21
  101. package/.cache/typescript/5.6/node_modules/@types/caseless/README.md +0 -48
  102. package/.cache/typescript/5.6/node_modules/@types/caseless/index.d.ts +0 -29
  103. package/.cache/typescript/5.6/node_modules/@types/caseless/package.json +0 -35
  104. package/.cache/typescript/5.6/node_modules/@types/cheerio/LICENSE +0 -21
  105. package/.cache/typescript/5.6/node_modules/@types/cheerio/README.md +0 -15
  106. package/.cache/typescript/5.6/node_modules/@types/cheerio/index.d.ts +0 -318
  107. package/.cache/typescript/5.6/node_modules/@types/cheerio/package.json +0 -71
  108. package/.cache/typescript/5.6/node_modules/@types/mocha/LICENSE +0 -21
  109. package/.cache/typescript/5.6/node_modules/@types/mocha/README.md +0 -15
  110. package/.cache/typescript/5.6/node_modules/@types/mocha/index.d.ts +0 -2929
  111. package/.cache/typescript/5.6/node_modules/@types/mocha/package.json +0 -56
  112. package/.cache/typescript/5.6/node_modules/@types/node/LICENSE +0 -21
  113. package/.cache/typescript/5.6/node_modules/@types/node/README.md +0 -15
  114. package/.cache/typescript/5.6/node_modules/@types/node/assert/strict.d.ts +0 -8
  115. package/.cache/typescript/5.6/node_modules/@types/node/assert.d.ts +0 -1040
  116. package/.cache/typescript/5.6/node_modules/@types/node/async_hooks.d.ts +0 -541
  117. package/.cache/typescript/5.6/node_modules/@types/node/buffer.buffer.d.ts +0 -385
  118. package/.cache/typescript/5.6/node_modules/@types/node/buffer.d.ts +0 -1933
  119. package/.cache/typescript/5.6/node_modules/@types/node/child_process.d.ts +0 -1549
  120. package/.cache/typescript/5.6/node_modules/@types/node/cluster.d.ts +0 -579
  121. package/.cache/typescript/5.6/node_modules/@types/node/compatibility/disposable.d.ts +0 -16
  122. package/.cache/typescript/5.6/node_modules/@types/node/compatibility/index.d.ts +0 -9
  123. package/.cache/typescript/5.6/node_modules/@types/node/compatibility/indexable.d.ts +0 -23
  124. package/.cache/typescript/5.6/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  125. package/.cache/typescript/5.6/node_modules/@types/node/console.d.ts +0 -452
  126. package/.cache/typescript/5.6/node_modules/@types/node/constants.d.ts +0 -19
  127. package/.cache/typescript/5.6/node_modules/@types/node/crypto.d.ts +0 -4475
  128. package/.cache/typescript/5.6/node_modules/@types/node/dgram.d.ts +0 -596
  129. package/.cache/typescript/5.6/node_modules/@types/node/diagnostics_channel.d.ts +0 -554
  130. package/.cache/typescript/5.6/node_modules/@types/node/dns/promises.d.ts +0 -476
  131. package/.cache/typescript/5.6/node_modules/@types/node/dns.d.ts +0 -865
  132. package/.cache/typescript/5.6/node_modules/@types/node/dom-events.d.ts +0 -124
  133. package/.cache/typescript/5.6/node_modules/@types/node/domain.d.ts +0 -170
  134. package/.cache/typescript/5.6/node_modules/@types/node/events.d.ts +0 -931
  135. package/.cache/typescript/5.6/node_modules/@types/node/fs/promises.d.ts +0 -1275
  136. package/.cache/typescript/5.6/node_modules/@types/node/fs.d.ts +0 -4396
  137. package/.cache/typescript/5.6/node_modules/@types/node/globals.d.ts +0 -566
  138. package/.cache/typescript/5.6/node_modules/@types/node/globals.typedarray.d.ts +0 -21
  139. package/.cache/typescript/5.6/node_modules/@types/node/http.d.ts +0 -1958
  140. package/.cache/typescript/5.6/node_modules/@types/node/http2.d.ts +0 -2558
  141. package/.cache/typescript/5.6/node_modules/@types/node/https.d.ts +0 -543
  142. package/.cache/typescript/5.6/node_modules/@types/node/index.d.ts +0 -92
  143. package/.cache/typescript/5.6/node_modules/@types/node/inspector.d.ts +0 -3966
  144. package/.cache/typescript/5.6/node_modules/@types/node/module.d.ts +0 -402
  145. package/.cache/typescript/5.6/node_modules/@types/node/net.d.ts +0 -1001
  146. package/.cache/typescript/5.6/node_modules/@types/node/os.d.ts +0 -495
  147. package/.cache/typescript/5.6/node_modules/@types/node/package.json +0 -220
  148. package/.cache/typescript/5.6/node_modules/@types/node/path.d.ts +0 -200
  149. package/.cache/typescript/5.6/node_modules/@types/node/perf_hooks.d.ts +0 -965
  150. package/.cache/typescript/5.6/node_modules/@types/node/process.d.ts +0 -1963
  151. package/.cache/typescript/5.6/node_modules/@types/node/punycode.d.ts +0 -117
  152. package/.cache/typescript/5.6/node_modules/@types/node/querystring.d.ts +0 -153
  153. package/.cache/typescript/5.6/node_modules/@types/node/readline/promises.d.ts +0 -162
  154. package/.cache/typescript/5.6/node_modules/@types/node/readline.d.ts +0 -589
  155. package/.cache/typescript/5.6/node_modules/@types/node/repl.d.ts +0 -430
  156. package/.cache/typescript/5.6/node_modules/@types/node/sea.d.ts +0 -153
  157. package/.cache/typescript/5.6/node_modules/@types/node/sqlite.d.ts +0 -213
  158. package/.cache/typescript/5.6/node_modules/@types/node/stream/consumers.d.ts +0 -12
  159. package/.cache/typescript/5.6/node_modules/@types/node/stream/promises.d.ts +0 -90
  160. package/.cache/typescript/5.6/node_modules/@types/node/stream/web.d.ts +0 -609
  161. package/.cache/typescript/5.6/node_modules/@types/node/stream.d.ts +0 -1726
  162. package/.cache/typescript/5.6/node_modules/@types/node/string_decoder.d.ts +0 -67
  163. package/.cache/typescript/5.6/node_modules/@types/node/test.d.ts +0 -2248
  164. package/.cache/typescript/5.6/node_modules/@types/node/timers/promises.d.ts +0 -97
  165. package/.cache/typescript/5.6/node_modules/@types/node/timers.d.ts +0 -240
  166. package/.cache/typescript/5.6/node_modules/@types/node/tls.d.ts +0 -1226
  167. package/.cache/typescript/5.6/node_modules/@types/node/trace_events.d.ts +0 -197
  168. package/.cache/typescript/5.6/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -385
  169. package/.cache/typescript/5.6/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -19
  170. package/.cache/typescript/5.6/node_modules/@types/node/ts5.6/index.d.ts +0 -92
  171. package/.cache/typescript/5.6/node_modules/@types/node/tty.d.ts +0 -208
  172. package/.cache/typescript/5.6/node_modules/@types/node/url.d.ts +0 -972
  173. package/.cache/typescript/5.6/node_modules/@types/node/util.d.ts +0 -2371
  174. package/.cache/typescript/5.6/node_modules/@types/node/v8.d.ts +0 -808
  175. package/.cache/typescript/5.6/node_modules/@types/node/vm.d.ts +0 -976
  176. package/.cache/typescript/5.6/node_modules/@types/node/wasi.d.ts +0 -181
  177. package/.cache/typescript/5.6/node_modules/@types/node/worker_threads.d.ts +0 -745
  178. package/.cache/typescript/5.6/node_modules/@types/node/zlib.d.ts +0 -539
  179. package/.cache/typescript/5.6/node_modules/@types/request/LICENSE +0 -21
  180. package/.cache/typescript/5.6/node_modules/@types/request/README.md +0 -15
  181. package/.cache/typescript/5.6/node_modules/@types/request/index.d.ts +0 -395
  182. package/.cache/typescript/5.6/node_modules/@types/request/package.json +0 -70
  183. package/.cache/typescript/5.6/node_modules/@types/tough-cookie/LICENSE +0 -21
  184. package/.cache/typescript/5.6/node_modules/@types/tough-cookie/README.md +0 -15
  185. package/.cache/typescript/5.6/node_modules/@types/tough-cookie/index.d.ts +0 -321
  186. package/.cache/typescript/5.6/node_modules/@types/tough-cookie/package.json +0 -35
  187. package/.cache/typescript/5.6/node_modules/asynckit/LICENSE +0 -21
  188. package/.cache/typescript/5.6/node_modules/asynckit/README.md +0 -233
  189. package/.cache/typescript/5.6/node_modules/asynckit/bench.js +0 -76
  190. package/.cache/typescript/5.6/node_modules/asynckit/index.js +0 -6
  191. package/.cache/typescript/5.6/node_modules/asynckit/lib/abort.js +0 -29
  192. package/.cache/typescript/5.6/node_modules/asynckit/lib/async.js +0 -34
  193. package/.cache/typescript/5.6/node_modules/asynckit/lib/defer.js +0 -26
  194. package/.cache/typescript/5.6/node_modules/asynckit/lib/iterate.js +0 -75
  195. package/.cache/typescript/5.6/node_modules/asynckit/lib/readable_asynckit.js +0 -91
  196. package/.cache/typescript/5.6/node_modules/asynckit/lib/readable_parallel.js +0 -25
  197. package/.cache/typescript/5.6/node_modules/asynckit/lib/readable_serial.js +0 -25
  198. package/.cache/typescript/5.6/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
  199. package/.cache/typescript/5.6/node_modules/asynckit/lib/state.js +0 -37
  200. package/.cache/typescript/5.6/node_modules/asynckit/lib/streamify.js +0 -141
  201. package/.cache/typescript/5.6/node_modules/asynckit/lib/terminator.js +0 -29
  202. package/.cache/typescript/5.6/node_modules/asynckit/package.json +0 -63
  203. package/.cache/typescript/5.6/node_modules/asynckit/parallel.js +0 -43
  204. package/.cache/typescript/5.6/node_modules/asynckit/serial.js +0 -17
  205. package/.cache/typescript/5.6/node_modules/asynckit/serialOrdered.js +0 -75
  206. package/.cache/typescript/5.6/node_modules/asynckit/stream.js +0 -21
  207. package/.cache/typescript/5.6/node_modules/combined-stream/License +0 -19
  208. package/.cache/typescript/5.6/node_modules/combined-stream/Readme.md +0 -138
  209. package/.cache/typescript/5.6/node_modules/combined-stream/lib/combined_stream.js +0 -208
  210. package/.cache/typescript/5.6/node_modules/combined-stream/package.json +0 -25
  211. package/.cache/typescript/5.6/node_modules/combined-stream/yarn.lock +0 -17
  212. package/.cache/typescript/5.6/node_modules/delayed-stream/License +0 -19
  213. package/.cache/typescript/5.6/node_modules/delayed-stream/Makefile +0 -7
  214. package/.cache/typescript/5.6/node_modules/delayed-stream/Readme.md +0 -141
  215. package/.cache/typescript/5.6/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
  216. package/.cache/typescript/5.6/node_modules/delayed-stream/package.json +0 -27
  217. package/.cache/typescript/5.6/node_modules/form-data/License +0 -19
  218. package/.cache/typescript/5.6/node_modules/form-data/Readme.md +0 -350
  219. package/.cache/typescript/5.6/node_modules/form-data/index.d.ts +0 -51
  220. package/.cache/typescript/5.6/node_modules/form-data/lib/browser.js +0 -2
  221. package/.cache/typescript/5.6/node_modules/form-data/lib/form_data.js +0 -484
  222. package/.cache/typescript/5.6/node_modules/form-data/lib/populate.js +0 -10
  223. package/.cache/typescript/5.6/node_modules/form-data/package.json +0 -72
  224. package/.cache/typescript/5.6/node_modules/mime-db/HISTORY.md +0 -507
  225. package/.cache/typescript/5.6/node_modules/mime-db/LICENSE +0 -23
  226. package/.cache/typescript/5.6/node_modules/mime-db/README.md +0 -100
  227. package/.cache/typescript/5.6/node_modules/mime-db/db.json +0 -8519
  228. package/.cache/typescript/5.6/node_modules/mime-db/index.js +0 -12
  229. package/.cache/typescript/5.6/node_modules/mime-db/package.json +0 -60
  230. package/.cache/typescript/5.6/node_modules/mime-types/HISTORY.md +0 -397
  231. package/.cache/typescript/5.6/node_modules/mime-types/LICENSE +0 -23
  232. package/.cache/typescript/5.6/node_modules/mime-types/README.md +0 -113
  233. package/.cache/typescript/5.6/node_modules/mime-types/index.js +0 -188
  234. package/.cache/typescript/5.6/node_modules/mime-types/package.json +0 -44
  235. package/.cache/typescript/5.6/node_modules/safe-buffer/LICENSE +0 -21
  236. package/.cache/typescript/5.6/node_modules/safe-buffer/README.md +0 -584
  237. package/.cache/typescript/5.6/node_modules/safe-buffer/index.d.ts +0 -187
  238. package/.cache/typescript/5.6/node_modules/safe-buffer/index.js +0 -65
  239. package/.cache/typescript/5.6/node_modules/safe-buffer/package.json +0 -51
  240. package/.cache/typescript/5.6/node_modules/types-registry/README.md +0 -2
  241. package/.cache/typescript/5.6/node_modules/types-registry/index.json +0 -1
  242. package/.cache/typescript/5.6/node_modules/types-registry/package.json +0 -20
  243. package/.cache/typescript/5.6/node_modules/undici-types/LICENSE +0 -21
  244. package/.cache/typescript/5.6/node_modules/undici-types/README.md +0 -6
  245. package/.cache/typescript/5.6/node_modules/undici-types/agent.d.ts +0 -31
  246. package/.cache/typescript/5.6/node_modules/undici-types/api.d.ts +0 -43
  247. package/.cache/typescript/5.6/node_modules/undici-types/balanced-pool.d.ts +0 -29
  248. package/.cache/typescript/5.6/node_modules/undici-types/cache.d.ts +0 -36
  249. package/.cache/typescript/5.6/node_modules/undici-types/client.d.ts +0 -108
  250. package/.cache/typescript/5.6/node_modules/undici-types/connector.d.ts +0 -34
  251. package/.cache/typescript/5.6/node_modules/undici-types/content-type.d.ts +0 -21
  252. package/.cache/typescript/5.6/node_modules/undici-types/cookies.d.ts +0 -28
  253. package/.cache/typescript/5.6/node_modules/undici-types/diagnostics-channel.d.ts +0 -66
  254. package/.cache/typescript/5.6/node_modules/undici-types/dispatcher.d.ts +0 -255
  255. package/.cache/typescript/5.6/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -21
  256. package/.cache/typescript/5.6/node_modules/undici-types/errors.d.ts +0 -149
  257. package/.cache/typescript/5.6/node_modules/undici-types/eventsource.d.ts +0 -61
  258. package/.cache/typescript/5.6/node_modules/undici-types/fetch.d.ts +0 -209
  259. package/.cache/typescript/5.6/node_modules/undici-types/file.d.ts +0 -39
  260. package/.cache/typescript/5.6/node_modules/undici-types/filereader.d.ts +0 -54
  261. package/.cache/typescript/5.6/node_modules/undici-types/formdata.d.ts +0 -108
  262. package/.cache/typescript/5.6/node_modules/undici-types/global-dispatcher.d.ts +0 -9
  263. package/.cache/typescript/5.6/node_modules/undici-types/global-origin.d.ts +0 -7
  264. package/.cache/typescript/5.6/node_modules/undici-types/handlers.d.ts +0 -15
  265. package/.cache/typescript/5.6/node_modules/undici-types/header.d.ts +0 -4
  266. package/.cache/typescript/5.6/node_modules/undici-types/index.d.ts +0 -71
  267. package/.cache/typescript/5.6/node_modules/undici-types/interceptors.d.ts +0 -17
  268. package/.cache/typescript/5.6/node_modules/undici-types/mock-agent.d.ts +0 -50
  269. package/.cache/typescript/5.6/node_modules/undici-types/mock-client.d.ts +0 -25
  270. package/.cache/typescript/5.6/node_modules/undici-types/mock-errors.d.ts +0 -12
  271. package/.cache/typescript/5.6/node_modules/undici-types/mock-interceptor.d.ts +0 -93
  272. package/.cache/typescript/5.6/node_modules/undici-types/mock-pool.d.ts +0 -25
  273. package/.cache/typescript/5.6/node_modules/undici-types/package.json +0 -55
  274. package/.cache/typescript/5.6/node_modules/undici-types/patch.d.ts +0 -33
  275. package/.cache/typescript/5.6/node_modules/undici-types/pool-stats.d.ts +0 -19
  276. package/.cache/typescript/5.6/node_modules/undici-types/pool.d.ts +0 -39
  277. package/.cache/typescript/5.6/node_modules/undici-types/proxy-agent.d.ts +0 -28
  278. package/.cache/typescript/5.6/node_modules/undici-types/readable.d.ts +0 -60
  279. package/.cache/typescript/5.6/node_modules/undici-types/retry-agent.d.ts +0 -8
  280. package/.cache/typescript/5.6/node_modules/undici-types/retry-handler.d.ts +0 -116
  281. package/.cache/typescript/5.6/node_modules/undici-types/util.d.ts +0 -18
  282. package/.cache/typescript/5.6/node_modules/undici-types/webidl.d.ts +0 -222
  283. package/.cache/typescript/5.6/node_modules/undici-types/websocket.d.ts +0 -150
  284. package/.cache/typescript/5.6/package-lock.json +0 -183
  285. package/.cache/typescript/5.6/package.json +0 -1
@@ -1,29 +0,0 @@
1
- // API
2
- module.exports = abort;
3
-
4
- /**
5
- * Aborts leftover active jobs
6
- *
7
- * @param {object} state - current state object
8
- */
9
- function abort(state)
10
- {
11
- Object.keys(state.jobs).forEach(clean.bind(state));
12
-
13
- // reset leftover jobs
14
- state.jobs = {};
15
- }
16
-
17
- /**
18
- * Cleans up leftover job by invoking abort function for the provided job id
19
- *
20
- * @this state
21
- * @param {string|number} key - job id to abort
22
- */
23
- function clean(key)
24
- {
25
- if (typeof this.jobs[key] == 'function')
26
- {
27
- this.jobs[key]();
28
- }
29
- }
@@ -1,34 +0,0 @@
1
- var defer = require('./defer.js');
2
-
3
- // API
4
- module.exports = async;
5
-
6
- /**
7
- * Runs provided callback asynchronously
8
- * even if callback itself is not
9
- *
10
- * @param {function} callback - callback to invoke
11
- * @returns {function} - augmented callback
12
- */
13
- function async(callback)
14
- {
15
- var isAsync = false;
16
-
17
- // check if async happened
18
- defer(function() { isAsync = true; });
19
-
20
- return function async_callback(err, result)
21
- {
22
- if (isAsync)
23
- {
24
- callback(err, result);
25
- }
26
- else
27
- {
28
- defer(function nextTick_callback()
29
- {
30
- callback(err, result);
31
- });
32
- }
33
- };
34
- }
@@ -1,26 +0,0 @@
1
- module.exports = defer;
2
-
3
- /**
4
- * Runs provided function on next iteration of the event loop
5
- *
6
- * @param {function} fn - function to run
7
- */
8
- function defer(fn)
9
- {
10
- var nextTick = typeof setImmediate == 'function'
11
- ? setImmediate
12
- : (
13
- typeof process == 'object' && typeof process.nextTick == 'function'
14
- ? process.nextTick
15
- : null
16
- );
17
-
18
- if (nextTick)
19
- {
20
- nextTick(fn);
21
- }
22
- else
23
- {
24
- setTimeout(fn, 0);
25
- }
26
- }
@@ -1,75 +0,0 @@
1
- var async = require('./async.js')
2
- , abort = require('./abort.js')
3
- ;
4
-
5
- // API
6
- module.exports = iterate;
7
-
8
- /**
9
- * Iterates over each job object
10
- *
11
- * @param {array|object} list - array or object (named list) to iterate over
12
- * @param {function} iterator - iterator to run
13
- * @param {object} state - current job status
14
- * @param {function} callback - invoked when all elements processed
15
- */
16
- function iterate(list, iterator, state, callback)
17
- {
18
- // store current index
19
- var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
20
-
21
- state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
22
- {
23
- // don't repeat yourself
24
- // skip secondary callbacks
25
- if (!(key in state.jobs))
26
- {
27
- return;
28
- }
29
-
30
- // clean up jobs
31
- delete state.jobs[key];
32
-
33
- if (error)
34
- {
35
- // don't process rest of the results
36
- // stop still active jobs
37
- // and reset the list
38
- abort(state);
39
- }
40
- else
41
- {
42
- state.results[key] = output;
43
- }
44
-
45
- // return salvaged results
46
- callback(error, state.results);
47
- });
48
- }
49
-
50
- /**
51
- * Runs iterator over provided job element
52
- *
53
- * @param {function} iterator - iterator to invoke
54
- * @param {string|number} key - key/index of the element in the list of jobs
55
- * @param {mixed} item - job description
56
- * @param {function} callback - invoked after iterator is done with the job
57
- * @returns {function|mixed} - job abort function or something else
58
- */
59
- function runJob(iterator, key, item, callback)
60
- {
61
- var aborter;
62
-
63
- // allow shortcut if iterator expects only two arguments
64
- if (iterator.length == 2)
65
- {
66
- aborter = iterator(item, async(callback));
67
- }
68
- // otherwise go with full three arguments
69
- else
70
- {
71
- aborter = iterator(item, key, async(callback));
72
- }
73
-
74
- return aborter;
75
- }
@@ -1,91 +0,0 @@
1
- var streamify = require('./streamify.js')
2
- , defer = require('./defer.js')
3
- ;
4
-
5
- // API
6
- module.exports = ReadableAsyncKit;
7
-
8
- /**
9
- * Base constructor for all streams
10
- * used to hold properties/methods
11
- */
12
- function ReadableAsyncKit()
13
- {
14
- ReadableAsyncKit.super_.apply(this, arguments);
15
-
16
- // list of active jobs
17
- this.jobs = {};
18
-
19
- // add stream methods
20
- this.destroy = destroy;
21
- this._start = _start;
22
- this._read = _read;
23
- }
24
-
25
- /**
26
- * Destroys readable stream,
27
- * by aborting outstanding jobs
28
- *
29
- * @returns {void}
30
- */
31
- function destroy()
32
- {
33
- if (this.destroyed)
34
- {
35
- return;
36
- }
37
-
38
- this.destroyed = true;
39
-
40
- if (typeof this.terminator == 'function')
41
- {
42
- this.terminator();
43
- }
44
- }
45
-
46
- /**
47
- * Starts provided jobs in async manner
48
- *
49
- * @private
50
- */
51
- function _start()
52
- {
53
- // first argument – runner function
54
- var runner = arguments[0]
55
- // take away first argument
56
- , args = Array.prototype.slice.call(arguments, 1)
57
- // second argument - input data
58
- , input = args[0]
59
- // last argument - result callback
60
- , endCb = streamify.callback.call(this, args[args.length - 1])
61
- ;
62
-
63
- args[args.length - 1] = endCb;
64
- // third argument - iterator
65
- args[1] = streamify.iterator.call(this, args[1]);
66
-
67
- // allow time for proper setup
68
- defer(function()
69
- {
70
- if (!this.destroyed)
71
- {
72
- this.terminator = runner.apply(null, args);
73
- }
74
- else
75
- {
76
- endCb(null, Array.isArray(input) ? [] : {});
77
- }
78
- }.bind(this));
79
- }
80
-
81
-
82
- /**
83
- * Implement _read to comply with Readable streams
84
- * Doesn't really make sense for flowing object mode
85
- *
86
- * @private
87
- */
88
- function _read()
89
- {
90
-
91
- }
@@ -1,25 +0,0 @@
1
- var parallel = require('../parallel.js');
2
-
3
- // API
4
- module.exports = ReadableParallel;
5
-
6
- /**
7
- * Streaming wrapper to `asynckit.parallel`
8
- *
9
- * @param {array|object} list - array or object (named list) to iterate over
10
- * @param {function} iterator - iterator to run
11
- * @param {function} callback - invoked when all elements processed
12
- * @returns {stream.Readable#}
13
- */
14
- function ReadableParallel(list, iterator, callback)
15
- {
16
- if (!(this instanceof ReadableParallel))
17
- {
18
- return new ReadableParallel(list, iterator, callback);
19
- }
20
-
21
- // turn on object mode
22
- ReadableParallel.super_.call(this, {objectMode: true});
23
-
24
- this._start(parallel, list, iterator, callback);
25
- }
@@ -1,25 +0,0 @@
1
- var serial = require('../serial.js');
2
-
3
- // API
4
- module.exports = ReadableSerial;
5
-
6
- /**
7
- * Streaming wrapper to `asynckit.serial`
8
- *
9
- * @param {array|object} list - array or object (named list) to iterate over
10
- * @param {function} iterator - iterator to run
11
- * @param {function} callback - invoked when all elements processed
12
- * @returns {stream.Readable#}
13
- */
14
- function ReadableSerial(list, iterator, callback)
15
- {
16
- if (!(this instanceof ReadableSerial))
17
- {
18
- return new ReadableSerial(list, iterator, callback);
19
- }
20
-
21
- // turn on object mode
22
- ReadableSerial.super_.call(this, {objectMode: true});
23
-
24
- this._start(serial, list, iterator, callback);
25
- }
@@ -1,29 +0,0 @@
1
- var serialOrdered = require('../serialOrdered.js');
2
-
3
- // API
4
- module.exports = ReadableSerialOrdered;
5
- // expose sort helpers
6
- module.exports.ascending = serialOrdered.ascending;
7
- module.exports.descending = serialOrdered.descending;
8
-
9
- /**
10
- * Streaming wrapper to `asynckit.serialOrdered`
11
- *
12
- * @param {array|object} list - array or object (named list) to iterate over
13
- * @param {function} iterator - iterator to run
14
- * @param {function} sortMethod - custom sort function
15
- * @param {function} callback - invoked when all elements processed
16
- * @returns {stream.Readable#}
17
- */
18
- function ReadableSerialOrdered(list, iterator, sortMethod, callback)
19
- {
20
- if (!(this instanceof ReadableSerialOrdered))
21
- {
22
- return new ReadableSerialOrdered(list, iterator, sortMethod, callback);
23
- }
24
-
25
- // turn on object mode
26
- ReadableSerialOrdered.super_.call(this, {objectMode: true});
27
-
28
- this._start(serialOrdered, list, iterator, sortMethod, callback);
29
- }
@@ -1,37 +0,0 @@
1
- // API
2
- module.exports = state;
3
-
4
- /**
5
- * Creates initial state object
6
- * for iteration over list
7
- *
8
- * @param {array|object} list - list to iterate over
9
- * @param {function|null} sortMethod - function to use for keys sort,
10
- * or `null` to keep them as is
11
- * @returns {object} - initial state object
12
- */
13
- function state(list, sortMethod)
14
- {
15
- var isNamedList = !Array.isArray(list)
16
- , initState =
17
- {
18
- index : 0,
19
- keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
20
- jobs : {},
21
- results : isNamedList ? {} : [],
22
- size : isNamedList ? Object.keys(list).length : list.length
23
- }
24
- ;
25
-
26
- if (sortMethod)
27
- {
28
- // sort array keys based on it's values
29
- // sort object's keys just on own merit
30
- initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
31
- {
32
- return sortMethod(list[a], list[b]);
33
- });
34
- }
35
-
36
- return initState;
37
- }
@@ -1,141 +0,0 @@
1
- var async = require('./async.js');
2
-
3
- // API
4
- module.exports = {
5
- iterator: wrapIterator,
6
- callback: wrapCallback
7
- };
8
-
9
- /**
10
- * Wraps iterators with long signature
11
- *
12
- * @this ReadableAsyncKit#
13
- * @param {function} iterator - function to wrap
14
- * @returns {function} - wrapped function
15
- */
16
- function wrapIterator(iterator)
17
- {
18
- var stream = this;
19
-
20
- return function(item, key, cb)
21
- {
22
- var aborter
23
- , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key))
24
- ;
25
-
26
- stream.jobs[key] = wrappedCb;
27
-
28
- // it's either shortcut (item, cb)
29
- if (iterator.length == 2)
30
- {
31
- aborter = iterator(item, wrappedCb);
32
- }
33
- // or long format (item, key, cb)
34
- else
35
- {
36
- aborter = iterator(item, key, wrappedCb);
37
- }
38
-
39
- return aborter;
40
- };
41
- }
42
-
43
- /**
44
- * Wraps provided callback function
45
- * allowing to execute snitch function before
46
- * real callback
47
- *
48
- * @this ReadableAsyncKit#
49
- * @param {function} callback - function to wrap
50
- * @returns {function} - wrapped function
51
- */
52
- function wrapCallback(callback)
53
- {
54
- var stream = this;
55
-
56
- var wrapped = function(error, result)
57
- {
58
- return finisher.call(stream, error, result, callback);
59
- };
60
-
61
- return wrapped;
62
- }
63
-
64
- /**
65
- * Wraps provided iterator callback function
66
- * makes sure snitch only called once,
67
- * but passes secondary calls to the original callback
68
- *
69
- * @this ReadableAsyncKit#
70
- * @param {function} callback - callback to wrap
71
- * @param {number|string} key - iteration key
72
- * @returns {function} wrapped callback
73
- */
74
- function wrapIteratorCallback(callback, key)
75
- {
76
- var stream = this;
77
-
78
- return function(error, output)
79
- {
80
- // don't repeat yourself
81
- if (!(key in stream.jobs))
82
- {
83
- callback(error, output);
84
- return;
85
- }
86
-
87
- // clean up jobs
88
- delete stream.jobs[key];
89
-
90
- return streamer.call(stream, error, {key: key, value: output}, callback);
91
- };
92
- }
93
-
94
- /**
95
- * Stream wrapper for iterator callback
96
- *
97
- * @this ReadableAsyncKit#
98
- * @param {mixed} error - error response
99
- * @param {mixed} output - iterator output
100
- * @param {function} callback - callback that expects iterator results
101
- */
102
- function streamer(error, output, callback)
103
- {
104
- if (error && !this.error)
105
- {
106
- this.error = error;
107
- this.pause();
108
- this.emit('error', error);
109
- // send back value only, as expected
110
- callback(error, output && output.value);
111
- return;
112
- }
113
-
114
- // stream stuff
115
- this.push(output);
116
-
117
- // back to original track
118
- // send back value only, as expected
119
- callback(error, output && output.value);
120
- }
121
-
122
- /**
123
- * Stream wrapper for finishing callback
124
- *
125
- * @this ReadableAsyncKit#
126
- * @param {mixed} error - error response
127
- * @param {mixed} output - iterator output
128
- * @param {function} callback - callback that expects final results
129
- */
130
- function finisher(error, output, callback)
131
- {
132
- // signal end of the stream
133
- // only for successfully finished streams
134
- if (!error)
135
- {
136
- this.push(null);
137
- }
138
-
139
- // back to original track
140
- callback(error, output);
141
- }
@@ -1,29 +0,0 @@
1
- var abort = require('./abort.js')
2
- , async = require('./async.js')
3
- ;
4
-
5
- // API
6
- module.exports = terminator;
7
-
8
- /**
9
- * Terminates jobs in the attached state context
10
- *
11
- * @this AsyncKitState#
12
- * @param {function} callback - final callback to invoke after termination
13
- */
14
- function terminator(callback)
15
- {
16
- if (!Object.keys(this.jobs).length)
17
- {
18
- return;
19
- }
20
-
21
- // fast forward iteration index
22
- this.index = this.size;
23
-
24
- // abort jobs
25
- abort(this);
26
-
27
- // send back results we have so far
28
- async(callback)(null, this.results);
29
- }
@@ -1,63 +0,0 @@
1
- {
2
- "name": "asynckit",
3
- "version": "0.4.0",
4
- "description": "Minimal async jobs utility library, with streams support",
5
- "main": "index.js",
6
- "scripts": {
7
- "clean": "rimraf coverage",
8
- "lint": "eslint *.js lib/*.js test/*.js",
9
- "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec",
10
- "win-test": "tape test/test-*.js",
11
- "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec",
12
- "report": "istanbul report",
13
- "size": "browserify index.js | size-table asynckit",
14
- "debug": "tape test/test-*.js"
15
- },
16
- "pre-commit": [
17
- "clean",
18
- "lint",
19
- "test",
20
- "browser",
21
- "report",
22
- "size"
23
- ],
24
- "repository": {
25
- "type": "git",
26
- "url": "git+https://github.com/alexindigo/asynckit.git"
27
- },
28
- "keywords": [
29
- "async",
30
- "jobs",
31
- "parallel",
32
- "serial",
33
- "iterator",
34
- "array",
35
- "object",
36
- "stream",
37
- "destroy",
38
- "terminate",
39
- "abort"
40
- ],
41
- "author": "Alex Indigo <iam@alexindigo.com>",
42
- "license": "MIT",
43
- "bugs": {
44
- "url": "https://github.com/alexindigo/asynckit/issues"
45
- },
46
- "homepage": "https://github.com/alexindigo/asynckit#readme",
47
- "devDependencies": {
48
- "browserify": "^13.0.0",
49
- "browserify-istanbul": "^2.0.0",
50
- "coveralls": "^2.11.9",
51
- "eslint": "^2.9.0",
52
- "istanbul": "^0.4.3",
53
- "obake": "^0.1.2",
54
- "phantomjs-prebuilt": "^2.1.7",
55
- "pre-commit": "^1.1.3",
56
- "reamde": "^1.1.0",
57
- "rimraf": "^2.5.2",
58
- "size-table": "^0.2.0",
59
- "tap-spec": "^4.1.1",
60
- "tape": "^4.5.1"
61
- },
62
- "dependencies": {}
63
- }
@@ -1,43 +0,0 @@
1
- var iterate = require('./lib/iterate.js')
2
- , initState = require('./lib/state.js')
3
- , terminator = require('./lib/terminator.js')
4
- ;
5
-
6
- // Public API
7
- module.exports = parallel;
8
-
9
- /**
10
- * Runs iterator over provided array elements in parallel
11
- *
12
- * @param {array|object} list - array or object (named list) to iterate over
13
- * @param {function} iterator - iterator to run
14
- * @param {function} callback - invoked when all elements processed
15
- * @returns {function} - jobs terminator
16
- */
17
- function parallel(list, iterator, callback)
18
- {
19
- var state = initState(list);
20
-
21
- while (state.index < (state['keyedList'] || list).length)
22
- {
23
- iterate(list, iterator, state, function(error, result)
24
- {
25
- if (error)
26
- {
27
- callback(error, result);
28
- return;
29
- }
30
-
31
- // looks like it's the last one
32
- if (Object.keys(state.jobs).length === 0)
33
- {
34
- callback(null, state.results);
35
- return;
36
- }
37
- });
38
-
39
- state.index++;
40
- }
41
-
42
- return terminator.bind(state, callback);
43
- }
@@ -1,17 +0,0 @@
1
- var serialOrdered = require('./serialOrdered.js');
2
-
3
- // Public API
4
- module.exports = serial;
5
-
6
- /**
7
- * Runs iterator over provided array elements in series
8
- *
9
- * @param {array|object} list - array or object (named list) to iterate over
10
- * @param {function} iterator - iterator to run
11
- * @param {function} callback - invoked when all elements processed
12
- * @returns {function} - jobs terminator
13
- */
14
- function serial(list, iterator, callback)
15
- {
16
- return serialOrdered(list, iterator, null, callback);
17
- }