zousan-plus 4.0.0 → 4.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.
- package/LICENSE +0 -0
- package/README.adoc +18 -0
- package/README.md +14 -1
- package/moreInfo.adoc +0 -0
- package/package.json +4 -2
- package/rollup.config.js +3 -1
- package/src/zousan-plus.js +0 -0
- package/test/test.js +0 -0
- package/test/testAMD.html +0 -0
- package/test.js +11 -0
- package/zousan-plus-min.js +1 -1
- package/zousan-plus-min.js.map +1 -1
- package/yarn-error.log +0 -960
- package/yarn.lock +0 -891
package/LICENSE
CHANGED
|
File without changes
|
package/README.adoc
CHANGED
|
@@ -4,6 +4,24 @@ A small collection of super useful utility functions for managing complex async
|
|
|
4
4
|
|
|
5
5
|
:toc:
|
|
6
6
|
|
|
7
|
+
== Deprecated
|
|
8
|
+
|
|
9
|
+
Zousan-plus is no longer under development. The repository and published package will remain available so existing users are not broken.
|
|
10
|
+
|
|
11
|
+
Zousan 4.3.0 includes the maintained workflow helpers as side-effect-free imports:
|
|
12
|
+
|
|
13
|
+
[source,javascript]
|
|
14
|
+
----
|
|
15
|
+
import { evaluate, evaluateResults } from "zousan/evaluate"
|
|
16
|
+
import { series } from "zousan/series"
|
|
17
|
+
----
|
|
18
|
+
|
|
19
|
+
Use `evaluate` when the workflow should resolve to its final value. Use `evaluateResults` when it should resolve to an object containing every named result.
|
|
20
|
+
|
|
21
|
+
The other Zousan-plus helpers, `map`, `namedAll`, `promisify`, `promisifyFn`, and `tSeries`, have no direct replacement in Zousan. Use the standard Promise API or a focused library if you still need that behavior.
|
|
22
|
+
|
|
23
|
+
The legacy documentation below remains available for existing users.
|
|
24
|
+
|
|
7
25
|
== Introduction
|
|
8
26
|
|
|
9
27
|
Extensions for https://github.com/bluejava/zousan[Zousan 🐘].
|
package/README.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
# Zousan-plus 🐘➕
|
|
3
3
|
A small collection of super useful utility functions for managing complex async behavior with promises
|
|
4
4
|
|
|
5
|
+
## Deprecated
|
|
6
|
+
|
|
7
|
+
Zousan-plus is no longer under development. The repository and published package will remain available so existing users are not broken.
|
|
8
|
+
|
|
9
|
+
Zousan 4.3.0 includes the maintained workflow helpers as side-effect-free imports:
|
|
10
|
+
|
|
11
|
+
```javascript
|
|
12
|
+
import { evaluate, evaluateResults } from "zousan/evaluate"
|
|
13
|
+
import { series } from "zousan/series"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`map`, `namedAll`, `promisify`, `promisifyFn`, and `tSeries` have no direct replacement in Zousan. Use the standard Promise API or a focused library if you still need that behavior.
|
|
17
|
+
|
|
5
18
|
---
|
|
6
19
|
|
|
7
|
-
|
|
20
|
+
The legacy documentation remains available at https://github.com/bluejava/zousan-plus.
|
package/moreInfo.adoc
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zousan-plus",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Extensions for Zousan Promises",
|
|
5
5
|
"main": "zousan-plus-min.js",
|
|
6
6
|
"module": "src/zousan-plus.js",
|
|
@@ -27,12 +27,14 @@
|
|
|
27
27
|
"author": "Glenn Crownover <glenn@bluejava.com> (http://www.bluejava.com)",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"zousan": "^3.0.
|
|
30
|
+
"zousan": "^3.0.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
+
"esm": "^3.2.25",
|
|
33
34
|
"requirejs": "^2.3.2",
|
|
34
35
|
"rollup": "^1.12.2",
|
|
35
36
|
"rollup-plugin-node-resolve": "^5.0.0",
|
|
37
|
+
"rollup-plugin-terser": "^5.0.0",
|
|
36
38
|
"rollup-plugin-uglify": "^6.0.2",
|
|
37
39
|
"tarsy": "latest"
|
|
38
40
|
},
|
package/rollup.config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import resolve from 'rollup-plugin-node-resolve'
|
|
2
2
|
import { uglify } from "rollup-plugin-uglify"
|
|
3
|
+
import { terser } from "rollup-plugin-terser"
|
|
3
4
|
|
|
4
5
|
export default {
|
|
5
6
|
input: 'src/zousan-plus.js',
|
|
@@ -11,6 +12,7 @@ export default {
|
|
|
11
12
|
},
|
|
12
13
|
plugins: [
|
|
13
14
|
resolve(),
|
|
14
|
-
uglify()
|
|
15
|
+
// uglify(),
|
|
16
|
+
terser()
|
|
15
17
|
]
|
|
16
18
|
}
|
package/src/zousan-plus.js
CHANGED
|
File without changes
|
package/test/test.js
CHANGED
|
File without changes
|
package/test/testAMD.html
CHANGED
|
File without changes
|
package/test.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Zousan from "."
|
|
2
|
+
|
|
3
|
+
const getc = (a,b) => Zousan.reject("Boo!")
|
|
4
|
+
|
|
5
|
+
Zousan.evaluate(
|
|
6
|
+
{ name: "a", value: 1 },
|
|
7
|
+
{ name: "b", value: 2 },
|
|
8
|
+
{ name: "c", deps: [ "a", "b"], value: getc }
|
|
9
|
+
)
|
|
10
|
+
.then(o => console.log("Evaluated and success with ", o))
|
|
11
|
+
.catch(console.error)
|
package/zousan-plus-min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Zousan=n()}(this,function(){"use strict";
|
|
1
|
+
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Zousan=n()}(this,function(){"use strict";const t=void 0,n=t,e=(()=>{const n=[],e=1024;let o=0;function i(){for(;n.length-o;){try{n[o]()}catch(t){r.error(t)}n[o++]=t,o==e&&(n.splice(0,e),o=0)}}const c=(()=>{if("undefined"!=typeof MutationObserver){const t=document.createElement("div");return new MutationObserver(i).observe(t,{attributes:!0}),function(){t.setAttribute("a",0)}}return"undefined"!=typeof process&&"function"==typeof process.nextTick?function(){process.nextTick(i)}:"undefined"!=typeof setImmediate?function(){setImmediate(i)}:function(){setTimeout(i,0)}})();return t=>{n.push(t),n.length-o==1&&c()}})();function r(t){if(!(this instanceof r))throw new TypeError("Zousan must be created with the new keyword");if("function"==typeof t){const n=this;try{t(t=>n.resolve(t),t=>n.reject(t))}catch(t){n.reject(t)}}else if(arguments.length>0)throw new TypeError("Zousan resolver "+t+" is not a function")}function o(n,e){if("function"==typeof n.y)try{const r=n.y.call(t,e);n.p.resolve(r)}catch(e){n.p.reject(e)}else n.p.resolve(e)}function i(n,e){if("function"==typeof n.n)try{const r=n.n.call(t,e);n.p.resolve(r)}catch(e){n.p.reject(e)}else n.p.reject(e)}r.prototype={resolve:function(t){if(this.state!==n)return;if(t===this)return this.reject(new TypeError("Attempt to resolve promise with self"));const r=this;if(t&&("function"==typeof t||"object"==typeof t)){let n=!0;try{const e=t.then;if("function"==typeof e)return void e.call(t,function(t){n&&(n=!1,r.resolve(t))},function(t){n&&(n=!1,r.reject(t))})}catch(t){return void(n&&this.reject(t))}}this.state="fulfilled",this.v=t,r.c&&e(function(){for(let n=0,e=r.c.length;n<e;n++)o(r.c[n],t)})},reject:function(t){if(this.state!==n)return;const o=this;this.state="rejected",this.v=t;const c=this.c;e(c?function(){for(let n=0,e=c.length;n<e;n++)i(c[n],t)}:function(){o.handled||r.suppressUncaughtRejectionError||r.warn("You upset Zousan. Please catch rejections: ",t,t?t.stack:null)})},then:function(t,c){const u=new r,f={y:t,n:c,p:u};if(this.state===n)this.c?this.c.push(f):this.c=[f];else{const t=this.state,n=this.v;this.handled=!0,e(function(){"fulfilled"===t?o(f,n):i(f,n)})}return u},catch:function(t){return this.then(null,t)},finally:function(t){return this.then(t,t)},timeout:function(t,n){n=n||"Timeout";const e=this;return new r(function(r,o){setTimeout(function(){o(Error(n))},t),e.then(function(t){r(t)},function(t){o(t)})})}},r.resolve=t=>new r(n=>n(t)),r.reject=function(t){const n=new r;return n.c=[],n.reject(t),n},r.all=function(t){const n=[],e=new r;let o=0;function i(i,c){i&&"function"==typeof i.then||(i=r.resolve(i)),i.then(function(r){n[c]=r,++o==t.length&&e.resolve(n)},function(t){e.reject(t)})}for(let n=0;n<t.length;n++)i(t[n],n);return t.length||e.resolve(n),e};const c=()=>{};function u(t,n,e,r){return e[n]=r,n++,t.length>n?f(t,n,e,r):r}function f(t,n,e,r){var o=t[n];return"function"==typeof o&&(o=o.call(null,r)),o&&o.then?o.then(function(r){return u(t,n,e,r)}):u(t,n,e,o)}function s(t){if(t){(arguments.length>1||!Array.isArray(t))&&(t=Array.prototype.slice.call(arguments));var n=new r,e=[];return r.soon(function(){try{n.resolve(f(t,0,e))}catch(t){n.reject(t)}}),{prom:n,res:e}}}r.warn="undefined"!=typeof console?console.warn:c,r.error="undefined"!=typeof console?console.error:c,r.soon=e;var l=["cb","callback","done","callback_"];function a(t,n){if(n.promisifyAll)return!0;if(n.fnNames)return n.fnNames.indexOf(t.name)>=0;var e=n.cbArgNames||l,r=function(t){var n=t.toString().match(/function\s.*?\(([^)]*)\)/);return!n||n.length<2?null:n[1].replace(/\/\*.*\*\//,"").split(",").map(h)}(t);if(r&&r.length){var o=r[r.length-1];if(e.indexOf(o)>=0)return!0}return!1}function p(t){return function(){var n=Array.prototype.splice.call(arguments,0),e=this;return new r(function(r,o){n.push(function(t,n){t?o(t):r(n)}),t.apply(e,n)})}}function h(t){return t.trim()}return r.PROMISIFY_FN_EXTENSION="Prom",r.evaluate=function(t){Array.isArray(t)||(t=Array.prototype.slice.call(arguments));var n={};t.forEach(function(t,e){n[t.name||"_p"+e]=r.all((t.deps||[]).map(function(t){return"string"==typeof t&&t in n?n[t]:t})).then(function(n){var e=t.value;return"function"==typeof e&&(e=e.apply(null,n)),e})});var e=Object.keys(n),o=e.map(function(t){return n[t]});return r.all(o).then(function(t){var n={};return e.forEach(function(e,r){n[e]=t[r]}),n})},r.map=function t(n,e){if(n.then)return n.then(function(n){return t(n,e)});if(n.map)return function(t,n){return r.all(t.map(function(t){return t.then?t.then(n):n(t)}))}(n,e);throw Error("first argument must be a promise or an iterable")},r.namedAll=function(t){var n=Object.keys(t),e=n.map(function(n){return"function"==typeof t[n]?t[n].apply(null):t[n]});return r.all(e).then(function(t){var e={};return n.forEach(function(n,r){e[n]=t[r]}),e})},r.promisify=function(t,n){if(n=n||{},"function"==typeof t)return p(t);for(var e in t)"function"==typeof t[e]&&a(t[e],n)&&(t[e+r.PROMISIFY_FN_EXTENSION]=p(t[e]));return t},r.promisifyFn=p,r.series=function(){return s.apply(null,arguments).prom},r.tSeries=s,r});
|
|
2
2
|
//# sourceMappingURL=zousan-plus-min.js.map
|
package/zousan-plus-min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zousan-plus-min.js","sources":["node_modules/zousan/zousan-esm-min.js","src/zousan-plus.js"],"sourcesContent":["var STATE_PENDING,_undefined,STATE_FULFILLED=\"fulfilled\",STATE_REJECTED=\"rejected\",_undefinedString=\"undefined\",soon=function(){var e=[],t=0,n=1024;function o(){for(;e.length-t;){try{e[t]()}catch(e){global.console&&global.console.error(e)}e[t++]=_undefined,t==n&&(e.splice(0,n),t=0)}}var r=function(){if(typeof MutationObserver!==_undefinedString){var e=document.createElement(\"div\");return new MutationObserver(o).observe(e,{attributes:!0}),function(){e.setAttribute(\"a\",0)}}return typeof process!==_undefinedString&&\"function\"==typeof process.nextTick?function(){process.nextTick(o)}:typeof setImmediate!==_undefinedString?function(){setImmediate(o)}:function(){setTimeout(o,0)}}();return function(n){e.push(n),e.length-t==1&&r()}}();function Zousan(e){if(!(this instanceof Zousan))throw new TypeError(\"Zousan must be created with the new keyword\");if(\"function\"==typeof e){var t=this;try{e(function(e){t.resolve(e)},function(e){t.reject(e)})}catch(e){t.reject(e)}}else if(arguments.length>0)throw new TypeError(\"Zousan resolver \"+e+\" is not a function\")}function resolveClient(e,t){if(\"function\"==typeof e.y)try{var n=e.y.call(_undefined,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.resolve(t)}function rejectClient(e,t){if(\"function\"==typeof e.n)try{var n=e.n.call(_undefined,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.reject(t)}Zousan.prototype={resolve:function(e){if(this.state===STATE_PENDING){if(e===this)return this.reject(new TypeError(\"Attempt to resolve promise with self\"));var t=this;if(e&&(\"function\"==typeof e||\"object\"==typeof e))try{var n=!0,o=e.then;if(\"function\"==typeof o)return void o.call(e,function(e){n&&(n=!1,t.resolve(e))},function(e){n&&(n=!1,t.reject(e))})}catch(e){return void(n&&this.reject(e))}this.state=STATE_FULFILLED,this.v=e,t.c&&soon(function(){for(var n=0,o=t.c.length;n<o;n++)resolveClient(t.c[n],e)})}},reject:function(e){if(this.state===STATE_PENDING){var t=this;this.state=STATE_REJECTED,this.v=e;var n=this.c;soon(n?function(){for(var t=0,o=n.length;t<o;t++)rejectClient(n[t],e)}:function(){t.handled||!Zousan.suppressUncaughtRejectionError&&global.console&&Zousan.warn(\"You upset Zousan. Please catch rejections: \",e,e?e.stack:null)})}},then:function(e,t){var n=new Zousan,o={y:e,n:t,p:n};if(this.state===STATE_PENDING)this.c?this.c.push(o):this.c=[o];else{var r=this.state,i=this.v;this.handled=!0,soon(function(){r===STATE_FULFILLED?resolveClient(o,i):rejectClient(o,i)})}return n},catch:function(e){return this.then(null,e)},finally:function(e){return this.then(e,e)},timeout:function(e,t){t=t||\"Timeout\";var n=this;return new Zousan(function(o,r){setTimeout(function(){r(Error(t))},e),n.then(function(e){o(e)},function(e){r(e)})})}},Zousan.resolve=function(e){var t=new Zousan;return t.resolve(e),t},Zousan.reject=function(e){var t=new Zousan;return t.c=[],t.reject(e),t},Zousan.all=function(e){var t=[],n=0,o=new Zousan;function r(r,i){r&&\"function\"==typeof r.then||(r=Zousan.resolve(r)),r.then(function(r){t[i]=r,++n==e.length&&o.resolve(t)},function(e){o.reject(e)})}for(var i=0;i<e.length;i++)r(e[i],i);return e.length||o.resolve(t),o},Zousan.warn=console.warn,Zousan.soon=soon;export default Zousan;\n","// zousan-plus : Extensions for Zousan Promises\n// Home: https://github.com/bluejava/zousan-plus\n// Author: Glenn Crownover <glenn@bluejava.com> (http://www.bluejava.com)\n// License: MIT\n\nimport Zousan from \"zousan\"\n\n/* ==== map ==== */\n\nfunction map(iter, fn) {\n\n\t\tif(iter.then)\n\t\t\treturn iter.then(function(iterResolved) {\n\t\t\t\t\treturn map(iterResolved, fn)\n\t\t\t\t})\n\t\telse\n\t\t\tif(iter.map)\n\t\t\t\treturn map2(iter, fn)\n\t\t\telse\n\t\t\t\tthrow Error(\"first argument must be a promise or an iterable\")\n\t}\n\nfunction map2(iter, fn)\n{\n\treturn Zousan.all(\n\t\t\titer.map(function(item) {\n\t\t\t\t\treturn item.then ? item.then(fn) : fn(item)\n\t\t\t\t})\n\t)\n}\n\n/* ==== END map ==== */\n\n/* ====== Series ====== */\n\n// Handles the results of the evaluation of an item in the series\nfunction processSeriesResult(ar, i, results, val)\n{\n\tresults[i] = val\n\ti++\n\tif(ar.length > i)\n\t\treturn processSeriesItem(ar, i, results, val)\n\telse\n\t\treturn val\n}\n\n// Handles the evaluation of an item in the series.\nfunction processSeriesItem(ar, i, results, inval)\n{\n\tvar nextVal = ar[i]\n\n\tif(typeof nextVal === \"function\")\n\t\tnextVal = nextVal.call(null, inval) // eslint-disable-line no-useless-call\n\n\tif(nextVal && nextVal.then)\n\t\treturn nextVal.then(function(resVal) {\n\t\t\t\treturn processSeriesResult(ar, i, results, resVal)\n\t\t\t})\n\n\treturn processSeriesResult(ar, i, results, nextVal)\n}\n\n/*\n\tTracking Series\n\n\tEvaluates each item in a series, tracking each result in an array that is returned\n\talong with the final promise of the series completion.\n\n\tExample:\n\n\tvar ts = tSeries(1,2,3,add6,add3Later)\n\tts.prom.then(function(final) {\n\t\t\t// ts.res[0] = 1\n\t\t\t// ts.res[3] = 9\n\t\t\t// ts.res[4] = 12\n\t\t\t// final = 12\n\t\t})\n*/\n\n\nfunction tSeries(ar)\n{\n\t// We accept either an array or items specified as individual arguments...\n\tif(!ar) return undefined\n\n\t// ...but we convert the series into an array either way\n\tif(arguments.length > 1 || !Array.isArray(ar))\n\t\tar = Array.prototype.slice.call(arguments)\n\n\tvar z = new Zousan(),\n\t\tresults = [ ]\n\n\t// throw the processing on the microtask queue to allow items in the\n\t// series reference the results (i.e. return from this function before processing)\n\tZousan.soon(function() {\n\t\t\ttry\n\t\t\t{\n\t\t\t\tz.resolve(processSeriesItem(ar, 0, results))\n\t\t\t}\n\t\t\tcatch(er) { z.reject(er) }\n\t\t})\n\n\treturn { prom: z, res: results } // return promise and results in \"prom\" and \"res\" properties\n}\n\n// The series utility is simply a tracking series that ignores the results tracking and returns\n// a promise directly\nfunction series()\n{\n\treturn tSeries.apply(null, arguments).prom\n}\n\n/* ===== END series / tSeries ====== */\n\n\n/*\n\n\t==== promisify ====\n\n\tUsage:\n\tvar fs = Zousan.promisify(require(\"fs\"))\n\tfs.readFileProm(name, { encoding: \"utf-8\"})\n\t\t.then(function(contents) {\n\t\t\t\t// contents of file available here\n\t\t\t})\n\t\t.catch(function(err) {\n\t\t\t\t// handle errors here\n\t\t\t})\n\n*/\n\nvar defaultCBArgNames = [ \"cb\", \"callback\", \"done\", \"callback_\" ]\nfunction shouldPromisify(ob, conf)\n{\n\t// no need for argument inspection if promisifyAll is specified\n\tif(conf.promisifyAll)\n\t\treturn true\n\n\tif(conf.fnNames)\n\t\treturn conf.fnNames.indexOf(ob.name) >= 0\n\n\tvar cbArgNames = conf.cbArgNames || defaultCBArgNames\n\n\tvar args = getArgs(ob)\n\tif(args && args.length)\n\t{\n\t\tvar lastArg = args[args.length - 1]\n\t\tif(cbArgNames.indexOf(lastArg) >= 0)\n\t\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunction promisifyFn(fn)\n{\n\treturn function() {\n\t\t\tvar ca = Array.prototype.splice.call(arguments, 0),\n\t\t\t\tme = this\n\t\t\treturn new Zousan(function(resolve, reject) {\n\t\t\t\t\tca.push(function(er, val) {\n\t\t\t\t\t\t\tif(er)\n\t\t\t\t\t\t\t\treject(er)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tresolve(val)\n\t\t\t\t\t\t})\n\t\t\t\t\t\tfn.apply(me, ca)\n\t\t\t\t})\n\t\t}\n}\n\nfunction promisify(ob, conf)\n{\n\tconf = conf || {}\n\n\tif(typeof ob === \"function\")\n\t\treturn promisifyFn(ob)\n\n\tfor(var n in ob)\n\t\tif(typeof ob[n] === \"function\")\n\t\t\tif(shouldPromisify(ob[n], conf))\n\t\t\t\tob[n + Zousan.PROMISIFY_FN_EXTENSION] = promisifyFn(ob[n])\n\n\treturn ob\n}\n\n// extracts the argument names of a function into an array of strings\n// any commented-out arguments are ignored.\n// i.e. if myFunc = function(a,b,c) { ... }\n// getArgs(myFunc) --> [ \"a\",\"b\",\"c\" ]\nfunction getArgs(func)\n{\n\tvar args = func.toString().match(/function\\s.*?\\(([^)]*)\\)/)\n\treturn (!args || args.length < 2)\n\t\t? null\n\t\t: args[1]\n\t\t\t.replace(/\\/\\*.*\\*\\//, \"\")\n\t\t\t.split(\",\")\n\t\t\t.map(trim)\n}\n\nfunction trim(s) { return s.trim() }\n\n// The extension for all promisified versions of functions. Change to \"\" to replace originals (not recommended)\nZousan.PROMISIFY_FN_EXTENSION = \"Prom\"\n\n\n/*\n\n\t\tnamedAll(valuesObject) -> Promise - just like Promise.all except each item is a name/value pair and the resolved value is\n\t\t\tan object with name/value pairs with the resolved values. A mix of values, functions, and promises\n\t\t\tcan be used as values. Promises and functions that return promises are first resolved before assigned.\n\n\t\tExample:\n\t\t\treturn Zousan.namedAll({\n\t\t\t\t\tid: userId, // Integer\n\t\t\t\t\tpb: startProgressBar, // function whose return is ignored\n\t\t\t\t\tuser: getUser(userId), // returns a promise\n\t\t\t\t\titems: getUserItemList(userId) // returns a promise\n\t\t\t\t})\n\t\t\t\t.then(function(ob) {\n\t\t\t\t\t\t// Here ob contains the following:\n\t\t\t\t\t\t// { id: userId, pb: <??>, user: userObject <from resolved promise>, items: itemList <from promise> }\n\t\t\t\t\t\tendProgressBar()\n\t\t\t\t\t})\n\t\t\t\t.catch(function(err) {\n\t\t\t\t\t\t// lets hope this doesn't happen!\n\t\t\t\t\t})\n\n\t\tNote: With function values, you can put the parens in (execute immediately) or not. If you do, it is executed BEFORE calling\n\t\tZousan.namedAll and its result (which can be a promise) is assigned (or resolved and assigned). If you do not, namedAll will\n\t\tdetect its a function and call it (with no arguments)\n\n*/\n\nfunction namedAll(ob)\n{\n\t// First gather ordered lists of keys and values respectively. While we are at it,\n\t// \tevaluate any functions, since Promise.all does not offer that.\n\tvar keys = Object.keys(ob),\n\t\tvalues = keys.map(function(key) {\n\t\t\t\tif(typeof ob[key] === \"function\")\n\t\t\t\t\treturn ob[key].apply(null)\n\t\t\t\telse\n\t\t\t\t\treturn ob[key]\n\t\t\t})\n\n\t// Zousan.all expects an array of values (mixed promises/non-promises ok)\n\treturn Zousan.all(values)\n\t\t.then(function(ret) {\n\t\t\t\t// Once all promises are resolved, we match them up with their keys\n\t\t\t\t// based on the ordering\n\t\t\t\tvar retOb = { }\n\t\t\t\tkeys.forEach(function(name, i) {\n\t\t\t\t\t\tretOb[name] = ret[i]\n\t\t\t\t\t})\n\t\t\t\treturn retOb\n\t\t\t})\n}\n\n\nfunction evaluate(ar) // eslint-disable-line no-shadow-restricted-names\n{\n\t// We accept either an array or items specified as individual arguments...\n\t// ...but we convert the series into an array either way\n\tif(!Array.isArray(ar))\n\t\tar = Array.prototype.slice.call(arguments)\n\n\tvar items = { } // map names to items\n\n\t// This forEach is where it all happens - we evaluate each item within the eval array.\n\t// If there are dependencies, those are first resolved.\n\t// Its the mother of all promise workflows is just 10 lines!\n\tar.forEach(function(zex, i) {\n\t\titems[zex.name || (\"_p\" + i)] =\n\t\t\tZousan.all((zex.deps || []).map(function(arg) {\n\t\t\t\t\t\t// even if items[arg] is undefined, using \"arg in items\" is true when the property exists\n\t\t\t\t\t\tif(typeof arg === \"string\" && arg in items)\n\t\t\t\t\t\t\treturn items[arg]\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn arg\n\t\t\t\t\t}))\n\t\t\t\t.then(function(dResults) {\n\t\t\t\t\t\tvar value = zex.value\n\t\t\t\t\t\tif(typeof value === \"function\")\n\t\t\t\t\t\t\tvalue = value.apply(null, dResults)\n\t\t\t\t\t\treturn value\n\t\t\t\t\t})\n\t\t})\n\n\t// Now we just wait for each promise to complete - then assign the resolved value to its named property\n\tvar names = Object.keys(items),\n\t\titemVals = names.map(function(name) { return items[name] }) // Object.values()\n\n\treturn Zousan.all(itemVals)\n\t\t.then(function(paResults) {\n\t\t\t\tvar results = { }\n\t\t\t\tnames.forEach(function(name, i) {\n\t\t\t\t\t\tresults[name] = paResults[i]\n\t\t\t\t\t})\n\t\t\t\treturn results\n\t\t\t})\n}\n\n\nZousan.evaluate = evaluate\nZousan.map = map\nZousan.namedAll = namedAll\nZousan.promisify = promisify\nZousan.promisifyFn = promisifyFn\nZousan.series = series\nZousan.tSeries = tSeries\n\nexport default Zousan\n"],"names":["STATE_PENDING","_undefined","e","t","r","STATE_FULFILLED","_undefinedString","soon","MutationObserver","process","nextTick","o","setImmediate","setTimeout","document","createElement","observe","attributes","setAttribute","n","push","length","global","console","error","splice","Zousan","this","TypeError","resolve","reject","arguments","resolveClient","y","call","p","rejectClient","processSeriesResult","ar","i","results","val","processSeriesItem","inval","nextVal","then","resVal","tSeries","Array","isArray","prototype","slice","z","er","prom","res","state","v","c","handled","suppressUncaughtRejectionError","warn","stack","catch","finally","timeout","Error","all","defaultCBArgNames","shouldPromisify","ob","conf","promisifyAll","fnNames","indexOf","name","cbArgNames","args","func","toString","match","replace","split","map","trim","getArgs","lastArg","promisifyFn","fn","ca","me","apply","s","PROMISIFY_FN_EXTENSION","evaluate","items","forEach","zex","deps","arg","dResults","value","names","Object","keys","itemVals","paResults","iter","iterResolved","item","map2","namedAll","values","key","ret","retOb","promisify","series"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zousan-plus-min.js","sources":["node_modules/zousan/zousan-esm-min.js","src/zousan-plus.js"],"sourcesContent":["const _undefined=void 0,STATE_PENDING=_undefined,STATE_FULFILLED=\"fulfilled\",STATE_REJECTED=\"rejected\",_undefinedString=\"undefined\",soon=(()=>{const e=[],t=1024;let n=0;function o(){for(;e.length-n;){try{e[n]()}catch(e){Zousan.error(e)}e[n++]=_undefined,n==t&&(e.splice(0,t),n=0)}}const s=(()=>{if(\"undefined\"!=typeof MutationObserver){const e=document.createElement(\"div\");return new MutationObserver(o).observe(e,{attributes:!0}),function(){e.setAttribute(\"a\",0)}}return\"undefined\"!=typeof process&&\"function\"==typeof process.nextTick?function(){process.nextTick(o)}:\"undefined\"!=typeof setImmediate?function(){setImmediate(o)}:function(){setTimeout(o,0)}})();return t=>{e.push(t),e.length-n==1&&s()}})();function Zousan(e){if(!(this instanceof Zousan))throw new TypeError(\"Zousan must be created with the new keyword\");if(\"function\"==typeof e){const t=this;try{e(e=>t.resolve(e),e=>t.reject(e))}catch(e){t.reject(e)}}else if(arguments.length>0)throw new TypeError(\"Zousan resolver \"+e+\" is not a function\")}function resolveClient(e,t){if(\"function\"==typeof e.y)try{const n=e.y.call(_undefined,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.resolve(t)}function rejectClient(e,t){if(\"function\"==typeof e.n)try{const n=e.n.call(_undefined,t);e.p.resolve(n)}catch(t){e.p.reject(t)}else e.p.reject(t)}Zousan.prototype={resolve:function(e){if(this.state!==STATE_PENDING)return;if(e===this)return this.reject(new TypeError(\"Attempt to resolve promise with self\"));const t=this;if(e&&(\"function\"==typeof e||\"object\"==typeof e)){let n=!0;try{const o=e.then;if(\"function\"==typeof o)return void o.call(e,function(e){n&&(n=!1,t.resolve(e))},function(e){n&&(n=!1,t.reject(e))})}catch(e){return void(n&&this.reject(e))}}this.state=\"fulfilled\",this.v=e,t.c&&soon(function(){for(let n=0,o=t.c.length;n<o;n++)resolveClient(t.c[n],e)})},reject:function(e){if(this.state!==STATE_PENDING)return;const t=this;this.state=\"rejected\",this.v=e;const n=this.c;soon(n?function(){for(let t=0,o=n.length;t<o;t++)rejectClient(n[t],e)}:function(){t.handled||Zousan.suppressUncaughtRejectionError||Zousan.warn(\"You upset Zousan. Please catch rejections: \",e,e?e.stack:null)})},then:function(e,t){const n=new Zousan,o={y:e,n:t,p:n};if(this.state===STATE_PENDING)this.c?this.c.push(o):this.c=[o];else{const e=this.state,t=this.v;this.handled=!0,soon(function(){\"fulfilled\"===e?resolveClient(o,t):rejectClient(o,t)})}return n},catch:function(e){return this.then(null,e)},finally:function(e){return this.then(e,e)},timeout:function(e,t){t=t||\"Timeout\";const n=this;return new Zousan(function(o,s){setTimeout(function(){s(Error(t))},e),n.then(function(e){o(e)},function(e){s(e)})})}},Zousan.resolve=(e=>new Zousan(t=>t(e))),Zousan.reject=function(e){const t=new Zousan;return t.c=[],t.reject(e),t},Zousan.all=function(e){const t=[],n=new Zousan;let o=0;function s(s,i){s&&\"function\"==typeof s.then||(s=Zousan.resolve(s)),s.then(function(s){t[i]=s,++o==e.length&&n.resolve(t)},function(e){n.reject(e)})}for(let t=0;t<e.length;t++)s(e[t],t);return e.length||n.resolve(t),n};const nop=()=>{};Zousan.warn=\"undefined\"!=typeof console?console.warn:nop,Zousan.error=\"undefined\"!=typeof console?console.error:nop,Zousan.soon=soon;export default Zousan;\n","// zousan-plus : Extensions for Zousan Promises\n// Home: https://github.com/bluejava/zousan-plus\n// Author: Glenn Crownover <glenn@bluejava.com> (http://www.bluejava.com)\n// License: MIT\n\nimport Zousan from \"zousan\"\n\n/* ==== map ==== */\n\nfunction map(iter, fn) {\n\n\t\tif(iter.then)\n\t\t\treturn iter.then(function(iterResolved) {\n\t\t\t\t\treturn map(iterResolved, fn)\n\t\t\t\t})\n\t\telse\n\t\t\tif(iter.map)\n\t\t\t\treturn map2(iter, fn)\n\t\t\telse\n\t\t\t\tthrow Error(\"first argument must be a promise or an iterable\")\n\t}\n\nfunction map2(iter, fn)\n{\n\treturn Zousan.all(\n\t\t\titer.map(function(item) {\n\t\t\t\t\treturn item.then ? item.then(fn) : fn(item)\n\t\t\t\t})\n\t)\n}\n\n/* ==== END map ==== */\n\n/* ====== Series ====== */\n\n// Handles the results of the evaluation of an item in the series\nfunction processSeriesResult(ar, i, results, val)\n{\n\tresults[i] = val\n\ti++\n\tif(ar.length > i)\n\t\treturn processSeriesItem(ar, i, results, val)\n\telse\n\t\treturn val\n}\n\n// Handles the evaluation of an item in the series.\nfunction processSeriesItem(ar, i, results, inval)\n{\n\tvar nextVal = ar[i]\n\n\tif(typeof nextVal === \"function\")\n\t\tnextVal = nextVal.call(null, inval) // eslint-disable-line no-useless-call\n\n\tif(nextVal && nextVal.then)\n\t\treturn nextVal.then(function(resVal) {\n\t\t\t\treturn processSeriesResult(ar, i, results, resVal)\n\t\t\t})\n\n\treturn processSeriesResult(ar, i, results, nextVal)\n}\n\n/*\n\tTracking Series\n\n\tEvaluates each item in a series, tracking each result in an array that is returned\n\talong with the final promise of the series completion.\n\n\tExample:\n\n\tvar ts = tSeries(1,2,3,add6,add3Later)\n\tts.prom.then(function(final) {\n\t\t\t// ts.res[0] = 1\n\t\t\t// ts.res[3] = 9\n\t\t\t// ts.res[4] = 12\n\t\t\t// final = 12\n\t\t})\n*/\n\n\nfunction tSeries(ar)\n{\n\t// We accept either an array or items specified as individual arguments...\n\tif(!ar) return undefined\n\n\t// ...but we convert the series into an array either way\n\tif(arguments.length > 1 || !Array.isArray(ar))\n\t\tar = Array.prototype.slice.call(arguments)\n\n\tvar z = new Zousan(),\n\t\tresults = [ ]\n\n\t// throw the processing on the microtask queue to allow items in the\n\t// series reference the results (i.e. return from this function before processing)\n\tZousan.soon(function() {\n\t\t\ttry\n\t\t\t{\n\t\t\t\tz.resolve(processSeriesItem(ar, 0, results))\n\t\t\t}\n\t\t\tcatch(er) { z.reject(er) }\n\t\t})\n\n\treturn { prom: z, res: results } // return promise and results in \"prom\" and \"res\" properties\n}\n\n// The series utility is simply a tracking series that ignores the results tracking and returns\n// a promise directly\nfunction series()\n{\n\treturn tSeries.apply(null, arguments).prom\n}\n\n/* ===== END series / tSeries ====== */\n\n\n/*\n\n\t==== promisify ====\n\n\tUsage:\n\tvar fs = Zousan.promisify(require(\"fs\"))\n\tfs.readFileProm(name, { encoding: \"utf-8\"})\n\t\t.then(function(contents) {\n\t\t\t\t// contents of file available here\n\t\t\t})\n\t\t.catch(function(err) {\n\t\t\t\t// handle errors here\n\t\t\t})\n\n*/\n\nvar defaultCBArgNames = [ \"cb\", \"callback\", \"done\", \"callback_\" ]\nfunction shouldPromisify(ob, conf)\n{\n\t// no need for argument inspection if promisifyAll is specified\n\tif(conf.promisifyAll)\n\t\treturn true\n\n\tif(conf.fnNames)\n\t\treturn conf.fnNames.indexOf(ob.name) >= 0\n\n\tvar cbArgNames = conf.cbArgNames || defaultCBArgNames\n\n\tvar args = getArgs(ob)\n\tif(args && args.length)\n\t{\n\t\tvar lastArg = args[args.length - 1]\n\t\tif(cbArgNames.indexOf(lastArg) >= 0)\n\t\t\treturn true\n\t}\n\n\treturn false\n}\n\nfunction promisifyFn(fn)\n{\n\treturn function() {\n\t\t\tvar ca = Array.prototype.splice.call(arguments, 0),\n\t\t\t\tme = this\n\t\t\treturn new Zousan(function(resolve, reject) {\n\t\t\t\t\tca.push(function(er, val) {\n\t\t\t\t\t\t\tif(er)\n\t\t\t\t\t\t\t\treject(er)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tresolve(val)\n\t\t\t\t\t\t})\n\t\t\t\t\t\tfn.apply(me, ca)\n\t\t\t\t})\n\t\t}\n}\n\nfunction promisify(ob, conf)\n{\n\tconf = conf || {}\n\n\tif(typeof ob === \"function\")\n\t\treturn promisifyFn(ob)\n\n\tfor(var n in ob)\n\t\tif(typeof ob[n] === \"function\")\n\t\t\tif(shouldPromisify(ob[n], conf))\n\t\t\t\tob[n + Zousan.PROMISIFY_FN_EXTENSION] = promisifyFn(ob[n])\n\n\treturn ob\n}\n\n// extracts the argument names of a function into an array of strings\n// any commented-out arguments are ignored.\n// i.e. if myFunc = function(a,b,c) { ... }\n// getArgs(myFunc) --> [ \"a\",\"b\",\"c\" ]\nfunction getArgs(func)\n{\n\tvar args = func.toString().match(/function\\s.*?\\(([^)]*)\\)/)\n\treturn (!args || args.length < 2)\n\t\t? null\n\t\t: args[1]\n\t\t\t.replace(/\\/\\*.*\\*\\//, \"\")\n\t\t\t.split(\",\")\n\t\t\t.map(trim)\n}\n\nfunction trim(s) { return s.trim() }\n\n// The extension for all promisified versions of functions. Change to \"\" to replace originals (not recommended)\nZousan.PROMISIFY_FN_EXTENSION = \"Prom\"\n\n\n/*\n\n\t\tnamedAll(valuesObject) -> Promise - just like Promise.all except each item is a name/value pair and the resolved value is\n\t\t\tan object with name/value pairs with the resolved values. A mix of values, functions, and promises\n\t\t\tcan be used as values. Promises and functions that return promises are first resolved before assigned.\n\n\t\tExample:\n\t\t\treturn Zousan.namedAll({\n\t\t\t\t\tid: userId, // Integer\n\t\t\t\t\tpb: startProgressBar, // function whose return is ignored\n\t\t\t\t\tuser: getUser(userId), // returns a promise\n\t\t\t\t\titems: getUserItemList(userId) // returns a promise\n\t\t\t\t})\n\t\t\t\t.then(function(ob) {\n\t\t\t\t\t\t// Here ob contains the following:\n\t\t\t\t\t\t// { id: userId, pb: <??>, user: userObject <from resolved promise>, items: itemList <from promise> }\n\t\t\t\t\t\tendProgressBar()\n\t\t\t\t\t})\n\t\t\t\t.catch(function(err) {\n\t\t\t\t\t\t// lets hope this doesn't happen!\n\t\t\t\t\t})\n\n\t\tNote: With function values, you can put the parens in (execute immediately) or not. If you do, it is executed BEFORE calling\n\t\tZousan.namedAll and its result (which can be a promise) is assigned (or resolved and assigned). If you do not, namedAll will\n\t\tdetect its a function and call it (with no arguments)\n\n*/\n\nfunction namedAll(ob)\n{\n\t// First gather ordered lists of keys and values respectively. While we are at it,\n\t// \tevaluate any functions, since Promise.all does not offer that.\n\tvar keys = Object.keys(ob),\n\t\tvalues = keys.map(function(key) {\n\t\t\t\tif(typeof ob[key] === \"function\")\n\t\t\t\t\treturn ob[key].apply(null)\n\t\t\t\telse\n\t\t\t\t\treturn ob[key]\n\t\t\t})\n\n\t// Zousan.all expects an array of values (mixed promises/non-promises ok)\n\treturn Zousan.all(values)\n\t\t.then(function(ret) {\n\t\t\t\t// Once all promises are resolved, we match them up with their keys\n\t\t\t\t// based on the ordering\n\t\t\t\tvar retOb = { }\n\t\t\t\tkeys.forEach(function(name, i) {\n\t\t\t\t\t\tretOb[name] = ret[i]\n\t\t\t\t\t})\n\t\t\t\treturn retOb\n\t\t\t})\n}\n\n\nfunction evaluate(ar) // eslint-disable-line no-shadow-restricted-names\n{\n\t// We accept either an array or items specified as individual arguments...\n\t// ...but we convert the series into an array either way\n\tif(!Array.isArray(ar))\n\t\tar = Array.prototype.slice.call(arguments)\n\n\tvar items = { } // map names to items\n\n\t// This forEach is where it all happens - we evaluate each item within the eval array.\n\t// If there are dependencies, those are first resolved.\n\t// Its the mother of all promise workflows is just 10 lines!\n\tar.forEach(function(zex, i) {\n\t\titems[zex.name || (\"_p\" + i)] =\n\t\t\tZousan.all((zex.deps || []).map(function(arg) {\n\t\t\t\t\t\t// even if items[arg] is undefined, using \"arg in items\" is true when the property exists\n\t\t\t\t\t\tif(typeof arg === \"string\" && arg in items)\n\t\t\t\t\t\t\treturn items[arg]\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn arg\n\t\t\t\t\t}))\n\t\t\t\t.then(function(dResults) {\n\t\t\t\t\t\tvar value = zex.value\n\t\t\t\t\t\tif(typeof value === \"function\")\n\t\t\t\t\t\t\tvalue = value.apply(null, dResults)\n\t\t\t\t\t\treturn value\n\t\t\t\t\t})\n\t\t})\n\n\t// Now we just wait for each promise to complete - then assign the resolved value to its named property\n\tvar names = Object.keys(items),\n\t\titemVals = names.map(function(name) { return items[name] }) // Object.values()\n\n\treturn Zousan.all(itemVals)\n\t\t.then(function(paResults) {\n\t\t\t\tvar results = { }\n\t\t\t\tnames.forEach(function(name, i) {\n\t\t\t\t\t\tresults[name] = paResults[i]\n\t\t\t\t\t})\n\t\t\t\treturn results\n\t\t\t})\n}\n\n\nZousan.evaluate = evaluate\nZousan.map = map\nZousan.namedAll = namedAll\nZousan.promisify = promisify\nZousan.promisifyFn = promisifyFn\nZousan.series = series\nZousan.tSeries = tSeries\n\nexport default Zousan\n"],"names":["_undefined","STATE_PENDING","soon","e","t","n","o","length","Zousan","error","splice","s","MutationObserver","document","createElement","observe","attributes","setAttribute","process","nextTick","setImmediate","setTimeout","push","this","TypeError","resolve","reject","arguments","resolveClient","y","call","p","rejectClient","prototype","state","then","v","c","handled","suppressUncaughtRejectionError","warn","stack","catch","finally","timeout","Error","all","i","nop","processSeriesResult","ar","results","val","processSeriesItem","inval","nextVal","resVal","tSeries","Array","isArray","slice","z","er","prom","res","console","defaultCBArgNames","shouldPromisify","ob","conf","promisifyAll","fnNames","indexOf","name","cbArgNames","args","func","toString","match","replace","split","map","trim","getArgs","lastArg","promisifyFn","fn","ca","me","apply","PROMISIFY_FN_EXTENSION","evaluate","items","forEach","zex","deps","arg","dResults","value","names","Object","keys","itemVals","paResults","iter","iterResolved","item","map2","namedAll","values","key","ret","retOb","promisify","series"],"mappings":"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"}
|