@fireberry/sdk 0.0.2

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 (258) hide show
  1. package/.eslintrc.json +36 -0
  2. package/.prettierrc.json +7 -0
  3. package/.vscode/settings.json +35 -0
  4. package/README.md +37 -0
  5. package/dist/base.fireberrySDK.d.ts +7 -0
  6. package/dist/base.fireberrySDK.js +10 -0
  7. package/dist/base.fireberrySDK.js.map +1 -0
  8. package/dist/context/context.d.ts +13 -0
  9. package/dist/context/context.js +22 -0
  10. package/dist/context/context.js.map +1 -0
  11. package/dist/context/context.record.test.d.ts +1 -0
  12. package/dist/context/context.record.test.js +45 -0
  13. package/dist/context/context.record.test.js.map +1 -0
  14. package/dist/context/index.d.ts +5 -0
  15. package/dist/context/index.js +18 -0
  16. package/dist/context/index.js.map +1 -0
  17. package/dist/context/record.d.ts +9 -0
  18. package/dist/context/record.js +33 -0
  19. package/dist/context/record.js.map +1 -0
  20. package/dist/context/user.d.ts +5 -0
  21. package/dist/context/user.js +27 -0
  22. package/dist/context/user.js.map +1 -0
  23. package/dist/fireberry.sdk.d.ts +4 -0
  24. package/dist/fireberry.sdk.js +13 -0
  25. package/dist/fireberry.sdk.js.map +1 -0
  26. package/dist/fireberryAPI/fireberryV2Api.d.ts +17 -0
  27. package/dist/fireberryAPI/fireberryV2Api.js +54 -0
  28. package/dist/fireberryAPI/fireberryV2Api.js.map +1 -0
  29. package/dist/fireberryAPI/fireberryV2Api.test.d.ts +1 -0
  30. package/dist/fireberryAPI/fireberryV2Api.test.js +56 -0
  31. package/dist/fireberryAPI/fireberryV2Api.test.js.map +1 -0
  32. package/dist/fireberryAPI/index.d.ts +2 -0
  33. package/dist/fireberryAPI/index.js +21 -0
  34. package/dist/fireberryAPI/index.js.map +1 -0
  35. package/dist/fireberryAPI/types.d.ts +10 -0
  36. package/dist/fireberryAPI/types.js +3 -0
  37. package/dist/fireberryAPI/types.js.map +1 -0
  38. package/dist/fireberrySDK.client.d.ts +5 -0
  39. package/dist/fireberrySDK.client.js +13 -0
  40. package/dist/fireberrySDK.client.js.map +1 -0
  41. package/dist/fireberrySDK.server.d.ts +6 -0
  42. package/dist/fireberrySDK.server.js +12 -0
  43. package/dist/fireberrySDK.server.js.map +1 -0
  44. package/dist/index.d.ts +6 -0
  45. package/dist/index.js +25 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/jest.config.d.ts +6 -0
  48. package/dist/jest.config.js +11 -0
  49. package/dist/src/context/context.d.ts +13 -0
  50. package/dist/src/context/context.js +21 -0
  51. package/dist/src/context/context.record.test.d.ts +1 -0
  52. package/dist/src/context/context.record.test.js +36 -0
  53. package/dist/src/context/index.d.ts +5 -0
  54. package/dist/src/context/index.js +17 -0
  55. package/dist/src/context/record.d.ts +9 -0
  56. package/dist/src/context/record.js +32 -0
  57. package/dist/src/context/user.d.ts +8 -0
  58. package/dist/src/context/user.js +31 -0
  59. package/dist/src/fireberry.sdk.d.ts +9 -0
  60. package/dist/src/fireberry.sdk.js +14 -0
  61. package/dist/src/fireberryAPI/fireberryV2Api.d.ts +14 -0
  62. package/dist/src/fireberryAPI/fireberryV2Api.js +41 -0
  63. package/dist/src/fireberryAPI/index.d.ts +2 -0
  64. package/dist/src/fireberryAPI/index.js +20 -0
  65. package/dist/src/fireberryAPI/types.d.ts +10 -0
  66. package/dist/src/fireberryAPI/types.js +2 -0
  67. package/dist/src/index.d.ts +9 -0
  68. package/dist/src/index.js +6 -0
  69. package/dist/src/utils/axios.util.d.ts +6 -0
  70. package/dist/src/utils/axios.util.js +24 -0
  71. package/dist/src/utils/index.d.ts +2 -0
  72. package/dist/src/utils/index.js +18 -0
  73. package/dist/src/utils/queryParam.util.d.ts +1 -0
  74. package/dist/src/utils/queryParam.util.js +10 -0
  75. package/dist/utils/axios.util.d.ts +6 -0
  76. package/dist/utils/axios.util.js +24 -0
  77. package/dist/utils/axios.util.js.map +1 -0
  78. package/dist/utils/index.d.ts +2 -0
  79. package/dist/utils/index.js +19 -0
  80. package/dist/utils/index.js.map +1 -0
  81. package/dist/utils/queryParam.util.d.ts +1 -0
  82. package/dist/utils/queryParam.util.js +12 -0
  83. package/dist/utils/queryParam.util.js.map +1 -0
  84. package/jest.config.ts +10 -0
  85. package/node_modules/asynckit/LICENSE +21 -0
  86. package/node_modules/asynckit/README.md +233 -0
  87. package/node_modules/asynckit/bench.js +76 -0
  88. package/node_modules/asynckit/index.js +6 -0
  89. package/node_modules/asynckit/lib/abort.js +29 -0
  90. package/node_modules/asynckit/lib/async.js +34 -0
  91. package/node_modules/asynckit/lib/defer.js +26 -0
  92. package/node_modules/asynckit/lib/iterate.js +75 -0
  93. package/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  94. package/node_modules/asynckit/lib/readable_parallel.js +25 -0
  95. package/node_modules/asynckit/lib/readable_serial.js +25 -0
  96. package/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  97. package/node_modules/asynckit/lib/state.js +37 -0
  98. package/node_modules/asynckit/lib/streamify.js +141 -0
  99. package/node_modules/asynckit/lib/terminator.js +29 -0
  100. package/node_modules/asynckit/package.json +63 -0
  101. package/node_modules/asynckit/parallel.js +43 -0
  102. package/node_modules/asynckit/serial.js +17 -0
  103. package/node_modules/asynckit/serialOrdered.js +75 -0
  104. package/node_modules/asynckit/stream.js +21 -0
  105. package/node_modules/axios/CHANGELOG.md +874 -0
  106. package/node_modules/axios/LICENSE +7 -0
  107. package/node_modules/axios/MIGRATION_GUIDE.md +3 -0
  108. package/node_modules/axios/README.md +1650 -0
  109. package/node_modules/axios/SECURITY.md +6 -0
  110. package/node_modules/axios/dist/axios.js +3448 -0
  111. package/node_modules/axios/dist/axios.js.map +1 -0
  112. package/node_modules/axios/dist/axios.min.js +2 -0
  113. package/node_modules/axios/dist/axios.min.js.map +1 -0
  114. package/node_modules/axios/dist/browser/axios.cjs +3258 -0
  115. package/node_modules/axios/dist/browser/axios.cjs.map +1 -0
  116. package/node_modules/axios/dist/esm/axios.js +3281 -0
  117. package/node_modules/axios/dist/esm/axios.js.map +1 -0
  118. package/node_modules/axios/dist/esm/axios.min.js +2 -0
  119. package/node_modules/axios/dist/esm/axios.min.js.map +1 -0
  120. package/node_modules/axios/dist/node/axios.cjs +4354 -0
  121. package/node_modules/axios/dist/node/axios.cjs.map +1 -0
  122. package/node_modules/axios/index.d.cts +542 -0
  123. package/node_modules/axios/index.d.ts +559 -0
  124. package/node_modules/axios/index.js +43 -0
  125. package/node_modules/axios/lib/adapters/README.md +37 -0
  126. package/node_modules/axios/lib/adapters/adapters.js +77 -0
  127. package/node_modules/axios/lib/adapters/http.js +685 -0
  128. package/node_modules/axios/lib/adapters/xhr.js +260 -0
  129. package/node_modules/axios/lib/axios.js +89 -0
  130. package/node_modules/axios/lib/cancel/CancelToken.js +121 -0
  131. package/node_modules/axios/lib/cancel/CanceledError.js +25 -0
  132. package/node_modules/axios/lib/cancel/isCancel.js +5 -0
  133. package/node_modules/axios/lib/core/Axios.js +225 -0
  134. package/node_modules/axios/lib/core/AxiosError.js +100 -0
  135. package/node_modules/axios/lib/core/AxiosHeaders.js +298 -0
  136. package/node_modules/axios/lib/core/InterceptorManager.js +71 -0
  137. package/node_modules/axios/lib/core/README.md +8 -0
  138. package/node_modules/axios/lib/core/buildFullPath.js +21 -0
  139. package/node_modules/axios/lib/core/dispatchRequest.js +81 -0
  140. package/node_modules/axios/lib/core/mergeConfig.js +106 -0
  141. package/node_modules/axios/lib/core/settle.js +27 -0
  142. package/node_modules/axios/lib/core/transformData.js +28 -0
  143. package/node_modules/axios/lib/defaults/index.js +156 -0
  144. package/node_modules/axios/lib/defaults/transitional.js +7 -0
  145. package/node_modules/axios/lib/env/README.md +3 -0
  146. package/node_modules/axios/lib/env/classes/FormData.js +2 -0
  147. package/node_modules/axios/lib/env/data.js +1 -0
  148. package/node_modules/axios/lib/helpers/AxiosTransformStream.js +191 -0
  149. package/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +58 -0
  150. package/node_modules/axios/lib/helpers/HttpStatusCode.js +71 -0
  151. package/node_modules/axios/lib/helpers/README.md +7 -0
  152. package/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +28 -0
  153. package/node_modules/axios/lib/helpers/bind.js +7 -0
  154. package/node_modules/axios/lib/helpers/buildURL.js +63 -0
  155. package/node_modules/axios/lib/helpers/callbackify.js +16 -0
  156. package/node_modules/axios/lib/helpers/combineURLs.js +15 -0
  157. package/node_modules/axios/lib/helpers/cookies.js +42 -0
  158. package/node_modules/axios/lib/helpers/deprecatedMethod.js +26 -0
  159. package/node_modules/axios/lib/helpers/formDataToJSON.js +95 -0
  160. package/node_modules/axios/lib/helpers/formDataToStream.js +111 -0
  161. package/node_modules/axios/lib/helpers/fromDataURI.js +53 -0
  162. package/node_modules/axios/lib/helpers/isAbsoluteURL.js +15 -0
  163. package/node_modules/axios/lib/helpers/isAxiosError.js +14 -0
  164. package/node_modules/axios/lib/helpers/isURLSameOrigin.js +67 -0
  165. package/node_modules/axios/lib/helpers/null.js +2 -0
  166. package/node_modules/axios/lib/helpers/parseHeaders.js +55 -0
  167. package/node_modules/axios/lib/helpers/parseProtocol.js +6 -0
  168. package/node_modules/axios/lib/helpers/readBlob.js +15 -0
  169. package/node_modules/axios/lib/helpers/speedometer.js +55 -0
  170. package/node_modules/axios/lib/helpers/spread.js +28 -0
  171. package/node_modules/axios/lib/helpers/throttle.js +33 -0
  172. package/node_modules/axios/lib/helpers/toFormData.js +219 -0
  173. package/node_modules/axios/lib/helpers/toURLEncodedForm.js +18 -0
  174. package/node_modules/axios/lib/helpers/validator.js +91 -0
  175. package/node_modules/axios/lib/platform/browser/classes/Blob.js +3 -0
  176. package/node_modules/axios/lib/platform/browser/classes/FormData.js +3 -0
  177. package/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +4 -0
  178. package/node_modules/axios/lib/platform/browser/index.js +13 -0
  179. package/node_modules/axios/lib/platform/common/utils.js +47 -0
  180. package/node_modules/axios/lib/platform/index.js +7 -0
  181. package/node_modules/axios/lib/platform/node/classes/FormData.js +3 -0
  182. package/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +4 -0
  183. package/node_modules/axios/lib/platform/node/index.js +12 -0
  184. package/node_modules/axios/lib/utils.js +723 -0
  185. package/node_modules/axios/package.json +218 -0
  186. package/node_modules/combined-stream/License +19 -0
  187. package/node_modules/combined-stream/Readme.md +138 -0
  188. package/node_modules/combined-stream/lib/combined_stream.js +208 -0
  189. package/node_modules/combined-stream/package.json +25 -0
  190. package/node_modules/delayed-stream/.npmignore +1 -0
  191. package/node_modules/delayed-stream/License +19 -0
  192. package/node_modules/delayed-stream/Makefile +7 -0
  193. package/node_modules/delayed-stream/Readme.md +141 -0
  194. package/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  195. package/node_modules/delayed-stream/package.json +27 -0
  196. package/node_modules/dotenv/CHANGELOG.md +475 -0
  197. package/node_modules/dotenv/LICENSE +23 -0
  198. package/node_modules/dotenv/README-es.md +448 -0
  199. package/node_modules/dotenv/README.md +728 -0
  200. package/node_modules/dotenv/config.d.ts +1 -0
  201. package/node_modules/dotenv/config.js +9 -0
  202. package/node_modules/dotenv/lib/cli-options.js +11 -0
  203. package/node_modules/dotenv/lib/env-options.js +24 -0
  204. package/node_modules/dotenv/lib/main.d.ts +153 -0
  205. package/node_modules/dotenv/lib/main.js +361 -0
  206. package/node_modules/dotenv/package.json +65 -0
  207. package/node_modules/follow-redirects/LICENSE +18 -0
  208. package/node_modules/follow-redirects/README.md +155 -0
  209. package/node_modules/follow-redirects/debug.js +15 -0
  210. package/node_modules/follow-redirects/http.js +1 -0
  211. package/node_modules/follow-redirects/https.js +1 -0
  212. package/node_modules/follow-redirects/index.js +672 -0
  213. package/node_modules/follow-redirects/package.json +58 -0
  214. package/node_modules/form-data/License +19 -0
  215. package/node_modules/form-data/README.md.bak +358 -0
  216. package/node_modules/form-data/Readme.md +358 -0
  217. package/node_modules/form-data/index.d.ts +62 -0
  218. package/node_modules/form-data/lib/browser.js +2 -0
  219. package/node_modules/form-data/lib/form_data.js +501 -0
  220. package/node_modules/form-data/lib/populate.js +10 -0
  221. package/node_modules/form-data/package.json +68 -0
  222. package/node_modules/mime-db/HISTORY.md +507 -0
  223. package/node_modules/mime-db/LICENSE +23 -0
  224. package/node_modules/mime-db/README.md +100 -0
  225. package/node_modules/mime-db/db.json +8519 -0
  226. package/node_modules/mime-db/index.js +12 -0
  227. package/node_modules/mime-db/package.json +60 -0
  228. package/node_modules/mime-types/HISTORY.md +397 -0
  229. package/node_modules/mime-types/LICENSE +23 -0
  230. package/node_modules/mime-types/README.md +113 -0
  231. package/node_modules/mime-types/index.js +188 -0
  232. package/node_modules/mime-types/package.json +44 -0
  233. package/node_modules/proxy-from-env/.eslintrc +29 -0
  234. package/node_modules/proxy-from-env/.travis.yml +10 -0
  235. package/node_modules/proxy-from-env/LICENSE +20 -0
  236. package/node_modules/proxy-from-env/README.md +131 -0
  237. package/node_modules/proxy-from-env/index.js +108 -0
  238. package/node_modules/proxy-from-env/package.json +34 -0
  239. package/node_modules/proxy-from-env/test.js +483 -0
  240. package/package.json +48 -0
  241. package/src/base.fireberrySDK.ts +7 -0
  242. package/src/context/context.record.test.ts +47 -0
  243. package/src/context/context.ts +28 -0
  244. package/src/context/index.ts +6 -0
  245. package/src/context/record.ts +22 -0
  246. package/src/context/user.ts +15 -0
  247. package/src/fireberry.sdk.ts +14 -0
  248. package/src/fireberryAPI/fireberryV2Api.test.ts +57 -0
  249. package/src/fireberryAPI/fireberryV2Api.ts +61 -0
  250. package/src/fireberryAPI/index.ts +2 -0
  251. package/src/fireberryAPI/types.ts +10 -0
  252. package/src/fireberrySDK.client.ts +10 -0
  253. package/src/fireberrySDK.server.ts +8 -0
  254. package/src/index.ts +9 -0
  255. package/src/utils/axios.util.ts +20 -0
  256. package/src/utils/index.ts +2 -0
  257. package/src/utils/queryParam.util.ts +8 -0
  258. package/tsconfig.json +123 -0
@@ -0,0 +1,141 @@
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
+ }
@@ -0,0 +1,29 @@
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
+ }
@@ -0,0 +1,63 @@
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
+ }
@@ -0,0 +1,43 @@
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
+ }
@@ -0,0 +1,17 @@
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
+ }
@@ -0,0 +1,75 @@
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 = serialOrdered;
8
+ // sorting helpers
9
+ module.exports.ascending = ascending;
10
+ module.exports.descending = descending;
11
+
12
+ /**
13
+ * Runs iterator over provided sorted array elements in series
14
+ *
15
+ * @param {array|object} list - array or object (named list) to iterate over
16
+ * @param {function} iterator - iterator to run
17
+ * @param {function} sortMethod - custom sort function
18
+ * @param {function} callback - invoked when all elements processed
19
+ * @returns {function} - jobs terminator
20
+ */
21
+ function serialOrdered(list, iterator, sortMethod, callback)
22
+ {
23
+ var state = initState(list, sortMethod);
24
+
25
+ iterate(list, iterator, state, function iteratorHandler(error, result)
26
+ {
27
+ if (error)
28
+ {
29
+ callback(error, result);
30
+ return;
31
+ }
32
+
33
+ state.index++;
34
+
35
+ // are we there yet?
36
+ if (state.index < (state['keyedList'] || list).length)
37
+ {
38
+ iterate(list, iterator, state, iteratorHandler);
39
+ return;
40
+ }
41
+
42
+ // done here
43
+ callback(null, state.results);
44
+ });
45
+
46
+ return terminator.bind(state, callback);
47
+ }
48
+
49
+ /*
50
+ * -- Sort methods
51
+ */
52
+
53
+ /**
54
+ * sort helper to sort array elements in ascending order
55
+ *
56
+ * @param {mixed} a - an item to compare
57
+ * @param {mixed} b - an item to compare
58
+ * @returns {number} - comparison result
59
+ */
60
+ function ascending(a, b)
61
+ {
62
+ return a < b ? -1 : a > b ? 1 : 0;
63
+ }
64
+
65
+ /**
66
+ * sort helper to sort array elements in descending order
67
+ *
68
+ * @param {mixed} a - an item to compare
69
+ * @param {mixed} b - an item to compare
70
+ * @returns {number} - comparison result
71
+ */
72
+ function descending(a, b)
73
+ {
74
+ return -1 * ascending(a, b);
75
+ }
@@ -0,0 +1,21 @@
1
+ var inherits = require('util').inherits
2
+ , Readable = require('stream').Readable
3
+ , ReadableAsyncKit = require('./lib/readable_asynckit.js')
4
+ , ReadableParallel = require('./lib/readable_parallel.js')
5
+ , ReadableSerial = require('./lib/readable_serial.js')
6
+ , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js')
7
+ ;
8
+
9
+ // API
10
+ module.exports =
11
+ {
12
+ parallel : ReadableParallel,
13
+ serial : ReadableSerial,
14
+ serialOrdered : ReadableSerialOrdered,
15
+ };
16
+
17
+ inherits(ReadableAsyncKit, Readable);
18
+
19
+ inherits(ReadableParallel, ReadableAsyncKit);
20
+ inherits(ReadableSerial, ReadableAsyncKit);
21
+ inherits(ReadableSerialOrdered, ReadableAsyncKit);