postdoc 0.1.2 → 0.2.0.beta4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/pdf.js +27 -0
- data/lib/postdoc.rb +3 -7
- data/node_modules/agent-base/History.md +113 -0
- data/node_modules/agent-base/README.md +145 -0
- data/node_modules/agent-base/index.js +160 -0
- data/node_modules/agent-base/package.json +35 -0
- data/node_modules/agent-base/patch-core.js +37 -0
- data/node_modules/agent-base/test/ssl-cert-snakeoil.key +15 -0
- data/node_modules/agent-base/test/ssl-cert-snakeoil.pem +12 -0
- data/node_modules/agent-base/test/test.js +673 -0
- data/node_modules/async-limiter/LICENSE +8 -0
- data/node_modules/async-limiter/coverage/coverage.json +1 -0
- data/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html +73 -0
- data/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html +246 -0
- data/node_modules/async-limiter/coverage/lcov-report/base.css +182 -0
- data/node_modules/async-limiter/coverage/lcov-report/index.html +73 -0
- data/node_modules/async-limiter/coverage/lcov-report/prettify.css +1 -0
- data/node_modules/async-limiter/coverage/lcov-report/prettify.js +1 -0
- data/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- data/node_modules/async-limiter/coverage/lcov-report/sorter.js +156 -0
- data/node_modules/async-limiter/coverage/lcov.info +74 -0
- data/node_modules/async-limiter/index.js +67 -0
- data/node_modules/async-limiter/package.json +35 -0
- data/node_modules/async-limiter/readme.md +132 -0
- data/node_modules/balanced-match/LICENSE.md +21 -0
- data/node_modules/balanced-match/README.md +91 -0
- data/node_modules/balanced-match/index.js +59 -0
- data/node_modules/balanced-match/package.json +49 -0
- data/node_modules/brace-expansion/LICENSE +21 -0
- data/node_modules/brace-expansion/README.md +129 -0
- data/node_modules/brace-expansion/index.js +201 -0
- data/node_modules/brace-expansion/package.json +47 -0
- data/node_modules/buffer-from/index.js +69 -0
- data/node_modules/buffer-from/package.json +16 -0
- data/node_modules/buffer-from/readme.md +69 -0
- data/node_modules/buffer-from/test.js +12 -0
- data/node_modules/concat-map/LICENSE +18 -0
- data/node_modules/concat-map/README.markdown +62 -0
- data/node_modules/concat-map/example/map.js +6 -0
- data/node_modules/concat-map/index.js +13 -0
- data/node_modules/concat-map/package.json +43 -0
- data/node_modules/concat-map/test/map.js +39 -0
- data/node_modules/concat-stream/LICENSE +24 -0
- data/node_modules/concat-stream/index.js +144 -0
- data/node_modules/concat-stream/package.json +55 -0
- data/node_modules/concat-stream/readme.md +102 -0
- data/node_modules/core-util-is/LICENSE +19 -0
- data/node_modules/core-util-is/README.md +3 -0
- data/node_modules/core-util-is/float.patch +604 -0
- data/node_modules/core-util-is/lib/util.js +107 -0
- data/node_modules/core-util-is/package.json +32 -0
- data/node_modules/core-util-is/test.js +68 -0
- data/node_modules/debug/CHANGELOG.md +395 -0
- data/node_modules/debug/LICENSE +19 -0
- data/node_modules/debug/Makefile +58 -0
- data/node_modules/debug/README.md +368 -0
- data/node_modules/debug/karma.conf.js +70 -0
- data/node_modules/debug/node.js +1 -0
- data/node_modules/debug/package.json +43 -0
- data/node_modules/debug/src/browser.js +195 -0
- data/node_modules/debug/src/debug.js +225 -0
- data/node_modules/debug/src/index.js +10 -0
- data/node_modules/debug/src/node.js +186 -0
- data/node_modules/es6-promise/CHANGELOG.md +151 -0
- data/node_modules/es6-promise/LICENSE +19 -0
- data/node_modules/es6-promise/README.md +97 -0
- data/node_modules/es6-promise/auto.js +4 -0
- data/node_modules/es6-promise/dist/es6-promise.auto.js +1181 -0
- data/node_modules/es6-promise/dist/es6-promise.auto.map +1 -0
- data/node_modules/es6-promise/dist/es6-promise.auto.min.js +1 -0
- data/node_modules/es6-promise/dist/es6-promise.auto.min.map +1 -0
- data/node_modules/es6-promise/dist/es6-promise.js +1179 -0
- data/node_modules/es6-promise/dist/es6-promise.map +1 -0
- data/node_modules/es6-promise/dist/es6-promise.min.js +1 -0
- data/node_modules/es6-promise/dist/es6-promise.min.map +1 -0
- data/node_modules/es6-promise/es6-promise.d.ts +81 -0
- data/node_modules/es6-promise/lib/es6-promise/-internal.js +266 -0
- data/node_modules/es6-promise/lib/es6-promise/asap.js +119 -0
- data/node_modules/es6-promise/lib/es6-promise/enumerator.js +113 -0
- data/node_modules/es6-promise/lib/es6-promise/polyfill.js +35 -0
- data/node_modules/es6-promise/lib/es6-promise/promise/all.js +52 -0
- data/node_modules/es6-promise/lib/es6-promise/promise/race.js +84 -0
- data/node_modules/es6-promise/lib/es6-promise/promise/reject.js +46 -0
- data/node_modules/es6-promise/lib/es6-promise/promise/resolve.js +48 -0
- data/node_modules/es6-promise/lib/es6-promise/promise.js +427 -0
- data/node_modules/es6-promise/lib/es6-promise/then.js +32 -0
- data/node_modules/es6-promise/lib/es6-promise/utils.js +21 -0
- data/node_modules/es6-promise/lib/es6-promise.auto.js +3 -0
- data/node_modules/es6-promise/lib/es6-promise.js +7 -0
- data/node_modules/es6-promise/package.json +75 -0
- data/node_modules/es6-promisify/README.md +89 -0
- data/node_modules/es6-promisify/dist/promise.js +73 -0
- data/node_modules/es6-promisify/dist/promisify.js +85 -0
- data/node_modules/es6-promisify/package.json +41 -0
- data/node_modules/extract-zip/CONTRIBUTING.md +1 -0
- data/node_modules/extract-zip/LICENSE +23 -0
- data/node_modules/extract-zip/cli.js +20 -0
- data/node_modules/extract-zip/index.js +205 -0
- data/node_modules/extract-zip/node_modules/debug/CHANGELOG.md +362 -0
- data/node_modules/extract-zip/node_modules/debug/LICENSE +19 -0
- data/node_modules/extract-zip/node_modules/debug/Makefile +50 -0
- data/node_modules/extract-zip/node_modules/debug/README.md +312 -0
- data/node_modules/extract-zip/node_modules/debug/component.json +19 -0
- data/node_modules/extract-zip/node_modules/debug/karma.conf.js +70 -0
- data/node_modules/extract-zip/node_modules/debug/node.js +1 -0
- data/node_modules/extract-zip/node_modules/debug/package.json +49 -0
- data/node_modules/extract-zip/node_modules/debug/src/browser.js +185 -0
- data/node_modules/extract-zip/node_modules/debug/src/debug.js +202 -0
- data/node_modules/extract-zip/node_modules/debug/src/index.js +10 -0
- data/node_modules/extract-zip/node_modules/debug/src/inspector-log.js +15 -0
- data/node_modules/extract-zip/node_modules/debug/src/node.js +248 -0
- data/node_modules/extract-zip/package.json +35 -0
- data/node_modules/extract-zip/readme.md +49 -0
- data/node_modules/fd-slicer/CHANGELOG.md +49 -0
- data/node_modules/fd-slicer/LICENSE +21 -0
- data/node_modules/fd-slicer/README.md +189 -0
- data/node_modules/fd-slicer/index.js +277 -0
- data/node_modules/fd-slicer/package.json +36 -0
- data/node_modules/fd-slicer/test/test.js +350 -0
- data/node_modules/fs.realpath/LICENSE +43 -0
- data/node_modules/fs.realpath/README.md +33 -0
- data/node_modules/fs.realpath/index.js +66 -0
- data/node_modules/fs.realpath/old.js +303 -0
- data/node_modules/fs.realpath/package.json +26 -0
- data/node_modules/glob/LICENSE +15 -0
- data/node_modules/glob/README.md +368 -0
- data/node_modules/glob/changelog.md +67 -0
- data/node_modules/glob/common.js +240 -0
- data/node_modules/glob/glob.js +790 -0
- data/node_modules/glob/package.json +43 -0
- data/node_modules/glob/sync.js +486 -0
- data/node_modules/https-proxy-agent/History.md +124 -0
- data/node_modules/https-proxy-agent/README.md +137 -0
- data/node_modules/https-proxy-agent/index.js +229 -0
- data/node_modules/https-proxy-agent/package.json +35 -0
- data/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.key +15 -0
- data/node_modules/https-proxy-agent/test/ssl-cert-snakeoil.pem +12 -0
- data/node_modules/https-proxy-agent/test/test.js +342 -0
- data/node_modules/inflight/LICENSE +15 -0
- data/node_modules/inflight/README.md +37 -0
- data/node_modules/inflight/inflight.js +54 -0
- data/node_modules/inflight/package.json +29 -0
- data/node_modules/inherits/LICENSE +16 -0
- data/node_modules/inherits/README.md +42 -0
- data/node_modules/inherits/inherits.js +7 -0
- data/node_modules/inherits/inherits_browser.js +23 -0
- data/node_modules/inherits/package.json +29 -0
- data/node_modules/isarray/Makefile +6 -0
- data/node_modules/isarray/README.md +60 -0
- data/node_modules/isarray/component.json +19 -0
- data/node_modules/isarray/index.js +5 -0
- data/node_modules/isarray/package.json +45 -0
- data/node_modules/isarray/test.js +20 -0
- data/node_modules/mime/CHANGELOG.md +225 -0
- data/node_modules/mime/CONTRIBUTING.md +5 -0
- data/node_modules/mime/LICENSE +21 -0
- data/node_modules/mime/Mime.js +89 -0
- data/node_modules/mime/README.md +188 -0
- data/node_modules/mime/cli.js +10 -0
- data/node_modules/mime/index.js +4 -0
- data/node_modules/mime/lite.js +4 -0
- data/node_modules/mime/package.json +43 -0
- data/node_modules/mime/src/README_js.md +179 -0
- data/node_modules/mime/src/build.js +71 -0
- data/node_modules/mime/src/test.js +257 -0
- data/node_modules/mime/types/other.json +1 -0
- data/node_modules/mime/types/standard.json +1 -0
- data/node_modules/minimatch/LICENSE +15 -0
- data/node_modules/minimatch/README.md +209 -0
- data/node_modules/minimatch/minimatch.js +923 -0
- data/node_modules/minimatch/package.json +30 -0
- data/node_modules/minimist/LICENSE +18 -0
- data/node_modules/minimist/example/parse.js +2 -0
- data/node_modules/minimist/index.js +187 -0
- data/node_modules/minimist/package.json +40 -0
- data/node_modules/minimist/readme.markdown +73 -0
- data/node_modules/minimist/test/dash.js +24 -0
- data/node_modules/minimist/test/default_bool.js +20 -0
- data/node_modules/minimist/test/dotted.js +16 -0
- data/node_modules/minimist/test/long.js +31 -0
- data/node_modules/minimist/test/parse.js +318 -0
- data/node_modules/minimist/test/parse_modified.js +9 -0
- data/node_modules/minimist/test/short.js +67 -0
- data/node_modules/minimist/test/whitespace.js +8 -0
- data/node_modules/mkdirp/LICENSE +21 -0
- data/node_modules/mkdirp/bin/cmd.js +33 -0
- data/node_modules/mkdirp/bin/usage.txt +12 -0
- data/node_modules/mkdirp/examples/pow.js +6 -0
- data/node_modules/mkdirp/index.js +98 -0
- data/node_modules/mkdirp/package.json +27 -0
- data/node_modules/mkdirp/readme.markdown +100 -0
- data/node_modules/mkdirp/test/chmod.js +41 -0
- data/node_modules/mkdirp/test/clobber.js +38 -0
- data/node_modules/mkdirp/test/mkdirp.js +28 -0
- data/node_modules/mkdirp/test/opts_fs.js +29 -0
- data/node_modules/mkdirp/test/opts_fs_sync.js +27 -0
- data/node_modules/mkdirp/test/perm.js +32 -0
- data/node_modules/mkdirp/test/perm_sync.js +36 -0
- data/node_modules/mkdirp/test/race.js +37 -0
- data/node_modules/mkdirp/test/rel.js +32 -0
- data/node_modules/mkdirp/test/return.js +25 -0
- data/node_modules/mkdirp/test/return_sync.js +24 -0
- data/node_modules/mkdirp/test/root.js +19 -0
- data/node_modules/mkdirp/test/sync.js +32 -0
- data/node_modules/mkdirp/test/umask.js +28 -0
- data/node_modules/mkdirp/test/umask_sync.js +32 -0
- data/node_modules/ms/index.js +152 -0
- data/node_modules/ms/license.md +21 -0
- data/node_modules/ms/package.json +37 -0
- data/node_modules/ms/readme.md +51 -0
- data/node_modules/once/LICENSE +15 -0
- data/node_modules/once/README.md +79 -0
- data/node_modules/once/once.js +42 -0
- data/node_modules/once/package.json +33 -0
- data/node_modules/path-is-absolute/index.js +20 -0
- data/node_modules/path-is-absolute/license +21 -0
- data/node_modules/path-is-absolute/package.json +43 -0
- data/node_modules/path-is-absolute/readme.md +59 -0
- data/node_modules/pend/LICENSE +23 -0
- data/node_modules/pend/README.md +41 -0
- data/node_modules/pend/index.js +55 -0
- data/node_modules/pend/package.json +18 -0
- data/node_modules/pend/test.js +137 -0
- data/node_modules/process-nextick-args/index.js +44 -0
- data/node_modules/process-nextick-args/license.md +19 -0
- data/node_modules/process-nextick-args/package.json +25 -0
- data/node_modules/process-nextick-args/readme.md +18 -0
- data/node_modules/progress/CHANGELOG.md +115 -0
- data/node_modules/progress/LICENSE +22 -0
- data/node_modules/progress/Makefile +8 -0
- data/node_modules/progress/README.md +146 -0
- data/node_modules/progress/index.js +1 -0
- data/node_modules/progress/lib/node-progress.js +231 -0
- data/node_modules/progress/package.json +25 -0
- data/node_modules/proxy-from-env/README.md +131 -0
- data/node_modules/proxy-from-env/index.js +103 -0
- data/node_modules/proxy-from-env/package.json +35 -0
- data/node_modules/proxy-from-env/test.js +393 -0
- data/node_modules/puppeteer/CONTRIBUTING.md +206 -0
- data/node_modules/puppeteer/DeviceDescriptors.js +704 -0
- data/node_modules/puppeteer/LICENSE +202 -0
- data/node_modules/puppeteer/README.md +306 -0
- data/node_modules/puppeteer/index.js +28 -0
- data/node_modules/puppeteer/install.js +122 -0
- data/node_modules/puppeteer/lib/Browser.js +186 -0
- data/node_modules/puppeteer/lib/BrowserFetcher.js +279 -0
- data/node_modules/puppeteer/lib/Connection.js +246 -0
- data/node_modules/puppeteer/lib/Coverage.js +301 -0
- data/node_modules/puppeteer/lib/Dialog.js +84 -0
- data/node_modules/puppeteer/lib/ElementHandle.js +328 -0
- data/node_modules/puppeteer/lib/EmulationManager.js +89 -0
- data/node_modules/puppeteer/lib/ExecutionContext.js +232 -0
- data/node_modules/puppeteer/lib/FrameManager.js +997 -0
- data/node_modules/puppeteer/lib/Input.js +309 -0
- data/node_modules/puppeteer/lib/Launcher.js +310 -0
- data/node_modules/puppeteer/lib/Multimap.js +95 -0
- data/node_modules/puppeteer/lib/NavigatorWatcher.js +137 -0
- data/node_modules/puppeteer/lib/NetworkManager.js +796 -0
- data/node_modules/puppeteer/lib/Page.js +1098 -0
- data/node_modules/puppeteer/lib/Pipe.js +69 -0
- data/node_modules/puppeteer/lib/Puppeteer.js +60 -0
- data/node_modules/puppeteer/lib/Target.js +88 -0
- data/node_modules/puppeteer/lib/TaskQueue.js +17 -0
- data/node_modules/puppeteer/lib/Tracing.js +99 -0
- data/node_modules/puppeteer/lib/USKeyboardLayout.js +281 -0
- data/node_modules/puppeteer/lib/helper.js +248 -0
- data/node_modules/puppeteer/node6/lib/Browser.js +394 -0
- data/node_modules/puppeteer/node6/lib/BrowserFetcher.js +357 -0
- data/node_modules/puppeteer/node6/lib/Connection.js +350 -0
- data/node_modules/puppeteer/node6/lib/Coverage.js +561 -0
- data/node_modules/puppeteer/node6/lib/Dialog.js +136 -0
- data/node_modules/puppeteer/node6/lib/ElementHandle.js +796 -0
- data/node_modules/puppeteer/node6/lib/EmulationManager.js +115 -0
- data/node_modules/puppeteer/node6/lib/ExecutionContext.js +414 -0
- data/node_modules/puppeteer/node6/lib/FrameManager.js +1621 -0
- data/node_modules/puppeteer/node6/lib/Input.js +569 -0
- data/node_modules/puppeteer/node6/lib/Launcher.js +362 -0
- data/node_modules/puppeteer/node6/lib/Multimap.js +95 -0
- data/node_modules/puppeteer/node6/lib/NavigatorWatcher.js +163 -0
- data/node_modules/puppeteer/node6/lib/NetworkManager.js +1108 -0
- data/node_modules/puppeteer/node6/lib/Page.js +2242 -0
- data/node_modules/puppeteer/node6/lib/Pipe.js +69 -0
- data/node_modules/puppeteer/node6/lib/Puppeteer.js +60 -0
- data/node_modules/puppeteer/node6/lib/Target.js +114 -0
- data/node_modules/puppeteer/node6/lib/TaskQueue.js +17 -0
- data/node_modules/puppeteer/node6/lib/Tracing.js +177 -0
- data/node_modules/puppeteer/node6/lib/USKeyboardLayout.js +281 -0
- data/node_modules/puppeteer/node6/lib/helper.js +274 -0
- data/node_modules/puppeteer/package.json +61 -0
- data/node_modules/readable-stream/CONTRIBUTING.md +38 -0
- data/node_modules/readable-stream/GOVERNANCE.md +136 -0
- data/node_modules/readable-stream/LICENSE +47 -0
- data/node_modules/readable-stream/README.md +58 -0
- data/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
- data/node_modules/readable-stream/duplex-browser.js +1 -0
- data/node_modules/readable-stream/duplex.js +1 -0
- data/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
- data/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
- data/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
- data/node_modules/readable-stream/lib/_stream_transform.js +214 -0
- data/node_modules/readable-stream/lib/_stream_writable.js +687 -0
- data/node_modules/readable-stream/lib/internal/streams/BufferList.js +79 -0
- data/node_modules/readable-stream/lib/internal/streams/destroy.js +74 -0
- data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- data/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- data/node_modules/readable-stream/package.json +52 -0
- data/node_modules/readable-stream/passthrough.js +1 -0
- data/node_modules/readable-stream/readable-browser.js +7 -0
- data/node_modules/readable-stream/readable.js +19 -0
- data/node_modules/readable-stream/transform.js +1 -0
- data/node_modules/readable-stream/writable-browser.js +1 -0
- data/node_modules/readable-stream/writable.js +8 -0
- data/node_modules/rimraf/LICENSE +15 -0
- data/node_modules/rimraf/README.md +101 -0
- data/node_modules/rimraf/bin.js +50 -0
- data/node_modules/rimraf/package.json +26 -0
- data/node_modules/rimraf/rimraf.js +364 -0
- data/node_modules/safe-buffer/LICENSE +21 -0
- data/node_modules/safe-buffer/README.md +584 -0
- data/node_modules/safe-buffer/index.d.ts +187 -0
- data/node_modules/safe-buffer/index.js +62 -0
- data/node_modules/safe-buffer/package.json +37 -0
- data/node_modules/string_decoder/LICENSE +48 -0
- data/node_modules/string_decoder/README.md +47 -0
- data/node_modules/string_decoder/lib/string_decoder.js +296 -0
- data/node_modules/string_decoder/package.json +31 -0
- data/node_modules/typedarray/LICENSE +35 -0
- data/node_modules/typedarray/example/tarray.js +4 -0
- data/node_modules/typedarray/index.js +630 -0
- data/node_modules/typedarray/package.json +55 -0
- data/node_modules/typedarray/readme.markdown +61 -0
- data/node_modules/typedarray/test/server/undef_globals.js +19 -0
- data/node_modules/typedarray/test/tarray.js +10 -0
- data/node_modules/ultron/LICENSE +22 -0
- data/node_modules/ultron/README.md +113 -0
- data/node_modules/ultron/index.js +136 -0
- data/node_modules/ultron/package.json +41 -0
- data/node_modules/util-deprecate/History.md +16 -0
- data/node_modules/util-deprecate/LICENSE +24 -0
- data/node_modules/util-deprecate/README.md +53 -0
- data/node_modules/util-deprecate/browser.js +67 -0
- data/node_modules/util-deprecate/node.js +6 -0
- data/node_modules/util-deprecate/package.json +27 -0
- data/node_modules/wrappy/LICENSE +15 -0
- data/node_modules/wrappy/README.md +36 -0
- data/node_modules/wrappy/package.json +29 -0
- data/node_modules/wrappy/wrappy.js +33 -0
- data/node_modules/ws/LICENSE +21 -0
- data/node_modules/ws/README.md +341 -0
- data/node_modules/ws/index.js +15 -0
- data/node_modules/ws/lib/BufferUtil.js +71 -0
- data/node_modules/ws/lib/Constants.js +10 -0
- data/node_modules/ws/lib/ErrorCodes.js +28 -0
- data/node_modules/ws/lib/EventTarget.js +151 -0
- data/node_modules/ws/lib/Extensions.js +203 -0
- data/node_modules/ws/lib/PerMessageDeflate.js +507 -0
- data/node_modules/ws/lib/Receiver.js +553 -0
- data/node_modules/ws/lib/Sender.js +412 -0
- data/node_modules/ws/lib/Validation.js +17 -0
- data/node_modules/ws/lib/WebSocket.js +717 -0
- data/node_modules/ws/lib/WebSocketServer.js +326 -0
- data/node_modules/ws/package.json +46 -0
- data/node_modules/yauzl/LICENSE +21 -0
- data/node_modules/yauzl/README.md +467 -0
- data/node_modules/yauzl/index.js +626 -0
- data/node_modules/yauzl/package.json +36 -0
- data/package.json +5 -0
- data/yarn.lock +240 -0
- metadata +372 -7
- data/app/assets/stylesheets/default.css +0 -4
- data/lib/postdoc/postdoc_view_helper.rb +0 -22
@@ -0,0 +1,119 @@
|
|
1
|
+
let len = 0;
|
2
|
+
let vertxNext;
|
3
|
+
let customSchedulerFn;
|
4
|
+
|
5
|
+
export var asap = function asap(callback, arg) {
|
6
|
+
queue[len] = callback;
|
7
|
+
queue[len + 1] = arg;
|
8
|
+
len += 2;
|
9
|
+
if (len === 2) {
|
10
|
+
// If len is 2, that means that we need to schedule an async flush.
|
11
|
+
// If additional callbacks are queued before the queue is flushed, they
|
12
|
+
// will be processed by this flush that we are scheduling.
|
13
|
+
if (customSchedulerFn) {
|
14
|
+
customSchedulerFn(flush);
|
15
|
+
} else {
|
16
|
+
scheduleFlush();
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
export function setScheduler(scheduleFn) {
|
22
|
+
customSchedulerFn = scheduleFn;
|
23
|
+
}
|
24
|
+
|
25
|
+
export function setAsap(asapFn) {
|
26
|
+
asap = asapFn;
|
27
|
+
}
|
28
|
+
|
29
|
+
const browserWindow = (typeof window !== 'undefined') ? window : undefined;
|
30
|
+
const browserGlobal = browserWindow || {};
|
31
|
+
const BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
|
32
|
+
const isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
33
|
+
|
34
|
+
// test for web worker but not in IE10
|
35
|
+
const isWorker = typeof Uint8ClampedArray !== 'undefined' &&
|
36
|
+
typeof importScripts !== 'undefined' &&
|
37
|
+
typeof MessageChannel !== 'undefined';
|
38
|
+
|
39
|
+
// node
|
40
|
+
function useNextTick() {
|
41
|
+
// node version 0.10.x displays a deprecation warning when nextTick is used recursively
|
42
|
+
// see https://github.com/cujojs/when/issues/410 for details
|
43
|
+
return () => process.nextTick(flush);
|
44
|
+
}
|
45
|
+
|
46
|
+
// vertx
|
47
|
+
function useVertxTimer() {
|
48
|
+
if (typeof vertxNext !== 'undefined') {
|
49
|
+
return function() {
|
50
|
+
vertxNext(flush);
|
51
|
+
};
|
52
|
+
}
|
53
|
+
|
54
|
+
return useSetTimeout();
|
55
|
+
}
|
56
|
+
|
57
|
+
function useMutationObserver() {
|
58
|
+
let iterations = 0;
|
59
|
+
const observer = new BrowserMutationObserver(flush);
|
60
|
+
const node = document.createTextNode('');
|
61
|
+
observer.observe(node, { characterData: true });
|
62
|
+
|
63
|
+
return () => {
|
64
|
+
node.data = (iterations = ++iterations % 2);
|
65
|
+
};
|
66
|
+
}
|
67
|
+
|
68
|
+
// web worker
|
69
|
+
function useMessageChannel() {
|
70
|
+
const channel = new MessageChannel();
|
71
|
+
channel.port1.onmessage = flush;
|
72
|
+
return () => channel.port2.postMessage(0);
|
73
|
+
}
|
74
|
+
|
75
|
+
function useSetTimeout() {
|
76
|
+
// Store setTimeout reference so es6-promise will be unaffected by
|
77
|
+
// other code modifying setTimeout (like sinon.useFakeTimers())
|
78
|
+
const globalSetTimeout = setTimeout;
|
79
|
+
return () => globalSetTimeout(flush, 1);
|
80
|
+
}
|
81
|
+
|
82
|
+
const queue = new Array(1000);
|
83
|
+
function flush() {
|
84
|
+
for (let i = 0; i < len; i+=2) {
|
85
|
+
let callback = queue[i];
|
86
|
+
let arg = queue[i+1];
|
87
|
+
|
88
|
+
callback(arg);
|
89
|
+
|
90
|
+
queue[i] = undefined;
|
91
|
+
queue[i+1] = undefined;
|
92
|
+
}
|
93
|
+
|
94
|
+
len = 0;
|
95
|
+
}
|
96
|
+
|
97
|
+
function attemptVertx() {
|
98
|
+
try {
|
99
|
+
const vertx = Function('return this')().require('vertx');
|
100
|
+
vertxNext = vertx.runOnLoop || vertx.runOnContext;
|
101
|
+
return useVertxTimer();
|
102
|
+
} catch(e) {
|
103
|
+
return useSetTimeout();
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
let scheduleFlush;
|
108
|
+
// Decide what async method to use to triggering processing of queued callbacks:
|
109
|
+
if (isNode) {
|
110
|
+
scheduleFlush = useNextTick();
|
111
|
+
} else if (BrowserMutationObserver) {
|
112
|
+
scheduleFlush = useMutationObserver();
|
113
|
+
} else if (isWorker) {
|
114
|
+
scheduleFlush = useMessageChannel();
|
115
|
+
} else if (browserWindow === undefined && typeof require === 'function') {
|
116
|
+
scheduleFlush = attemptVertx();
|
117
|
+
} else {
|
118
|
+
scheduleFlush = useSetTimeout();
|
119
|
+
}
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import {
|
2
|
+
isArray,
|
3
|
+
isMaybeThenable
|
4
|
+
} from './utils';
|
5
|
+
import {
|
6
|
+
noop,
|
7
|
+
reject,
|
8
|
+
fulfill,
|
9
|
+
subscribe,
|
10
|
+
FULFILLED,
|
11
|
+
REJECTED,
|
12
|
+
PENDING,
|
13
|
+
getThen,
|
14
|
+
handleMaybeThenable
|
15
|
+
} from './-internal';
|
16
|
+
|
17
|
+
import then from './then';
|
18
|
+
import Promise from './promise';
|
19
|
+
import originalResolve from './promise/resolve';
|
20
|
+
import originalThen from './then';
|
21
|
+
import { makePromise, PROMISE_ID } from './-internal';
|
22
|
+
|
23
|
+
function validationError() {
|
24
|
+
return new Error('Array Methods must be provided an Array');
|
25
|
+
};
|
26
|
+
|
27
|
+
export default class Enumerator {
|
28
|
+
constructor(Constructor, input) {
|
29
|
+
this._instanceConstructor = Constructor;
|
30
|
+
this.promise = new Constructor(noop);
|
31
|
+
|
32
|
+
if (!this.promise[PROMISE_ID]) {
|
33
|
+
makePromise(this.promise);
|
34
|
+
}
|
35
|
+
|
36
|
+
if (isArray(input)) {
|
37
|
+
this.length = input.length;
|
38
|
+
this._remaining = input.length;
|
39
|
+
|
40
|
+
this._result = new Array(this.length);
|
41
|
+
|
42
|
+
if (this.length === 0) {
|
43
|
+
fulfill(this.promise, this._result);
|
44
|
+
} else {
|
45
|
+
this.length = this.length || 0;
|
46
|
+
this._enumerate(input);
|
47
|
+
if (this._remaining === 0) {
|
48
|
+
fulfill(this.promise, this._result);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
} else {
|
52
|
+
reject(this.promise, validationError());
|
53
|
+
}
|
54
|
+
}
|
55
|
+
_enumerate(input) {
|
56
|
+
for (let i = 0; this._state === PENDING && i < input.length; i++) {
|
57
|
+
this._eachEntry(input[i], i);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
_eachEntry(entry, i) {
|
62
|
+
let c = this._instanceConstructor;
|
63
|
+
let { resolve } = c;
|
64
|
+
|
65
|
+
if (resolve === originalResolve) {
|
66
|
+
let then = getThen(entry);
|
67
|
+
|
68
|
+
if (then === originalThen &&
|
69
|
+
entry._state !== PENDING) {
|
70
|
+
this._settledAt(entry._state, i, entry._result);
|
71
|
+
} else if (typeof then !== 'function') {
|
72
|
+
this._remaining--;
|
73
|
+
this._result[i] = entry;
|
74
|
+
} else if (c === Promise) {
|
75
|
+
let promise = new c(noop);
|
76
|
+
handleMaybeThenable(promise, entry, then);
|
77
|
+
this._willSettleAt(promise, i);
|
78
|
+
} else {
|
79
|
+
this._willSettleAt(new c(resolve => resolve(entry)), i);
|
80
|
+
}
|
81
|
+
} else {
|
82
|
+
this._willSettleAt(resolve(entry), i);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
_settledAt(state, i, value) {
|
87
|
+
let { promise } = this;
|
88
|
+
|
89
|
+
if (promise._state === PENDING) {
|
90
|
+
this._remaining--;
|
91
|
+
|
92
|
+
if (state === REJECTED) {
|
93
|
+
reject(promise, value);
|
94
|
+
} else {
|
95
|
+
this._result[i] = value;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
if (this._remaining === 0) {
|
100
|
+
fulfill(promise, this._result);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
_willSettleAt(promise, i) {
|
105
|
+
let enumerator = this;
|
106
|
+
|
107
|
+
subscribe(
|
108
|
+
promise, undefined,
|
109
|
+
value => enumerator._settledAt(FULFILLED, i, value),
|
110
|
+
reason => enumerator._settledAt(REJECTED, i, reason)
|
111
|
+
);
|
112
|
+
}
|
113
|
+
};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/*global self*/
|
2
|
+
import Promise from './promise';
|
3
|
+
|
4
|
+
export default function polyfill() {
|
5
|
+
let local;
|
6
|
+
|
7
|
+
if (typeof global !== 'undefined') {
|
8
|
+
local = global;
|
9
|
+
} else if (typeof self !== 'undefined') {
|
10
|
+
local = self;
|
11
|
+
} else {
|
12
|
+
try {
|
13
|
+
local = Function('return this')();
|
14
|
+
} catch (e) {
|
15
|
+
throw new Error('polyfill failed because global object is unavailable in this environment');
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
let P = local.Promise;
|
20
|
+
|
21
|
+
if (P) {
|
22
|
+
var promiseToString = null;
|
23
|
+
try {
|
24
|
+
promiseToString = Object.prototype.toString.call(P.resolve());
|
25
|
+
} catch(e) {
|
26
|
+
// silently ignored
|
27
|
+
}
|
28
|
+
|
29
|
+
if (promiseToString === '[object Promise]' && !P.cast){
|
30
|
+
return;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
local.Promise = Promise;
|
35
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import Enumerator from '../enumerator';
|
2
|
+
|
3
|
+
/**
|
4
|
+
`Promise.all` accepts an array of promises, and returns a new promise which
|
5
|
+
is fulfilled with an array of fulfillment values for the passed promises, or
|
6
|
+
rejected with the reason of the first passed promise to be rejected. It casts all
|
7
|
+
elements of the passed iterable to promises as it runs this algorithm.
|
8
|
+
|
9
|
+
Example:
|
10
|
+
|
11
|
+
```javascript
|
12
|
+
let promise1 = resolve(1);
|
13
|
+
let promise2 = resolve(2);
|
14
|
+
let promise3 = resolve(3);
|
15
|
+
let promises = [ promise1, promise2, promise3 ];
|
16
|
+
|
17
|
+
Promise.all(promises).then(function(array){
|
18
|
+
// The array here would be [ 1, 2, 3 ];
|
19
|
+
});
|
20
|
+
```
|
21
|
+
|
22
|
+
If any of the `promises` given to `all` are rejected, the first promise
|
23
|
+
that is rejected will be given as an argument to the returned promises's
|
24
|
+
rejection handler. For example:
|
25
|
+
|
26
|
+
Example:
|
27
|
+
|
28
|
+
```javascript
|
29
|
+
let promise1 = resolve(1);
|
30
|
+
let promise2 = reject(new Error("2"));
|
31
|
+
let promise3 = reject(new Error("3"));
|
32
|
+
let promises = [ promise1, promise2, promise3 ];
|
33
|
+
|
34
|
+
Promise.all(promises).then(function(array){
|
35
|
+
// Code here never runs because there are rejected promises!
|
36
|
+
}, function(error) {
|
37
|
+
// error.message === "2"
|
38
|
+
});
|
39
|
+
```
|
40
|
+
|
41
|
+
@method all
|
42
|
+
@static
|
43
|
+
@param {Array} entries array of promises
|
44
|
+
@param {String} label optional string for labeling the promise.
|
45
|
+
Useful for tooling.
|
46
|
+
@return {Promise} promise that is fulfilled when all `promises` have been
|
47
|
+
fulfilled, or rejected if any of them become rejected.
|
48
|
+
@static
|
49
|
+
*/
|
50
|
+
export default function all(entries) {
|
51
|
+
return new Enumerator(this, entries).promise;
|
52
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import {
|
2
|
+
isArray
|
3
|
+
} from "../utils";
|
4
|
+
|
5
|
+
/**
|
6
|
+
`Promise.race` returns a new promise which is settled in the same way as the
|
7
|
+
first passed promise to settle.
|
8
|
+
|
9
|
+
Example:
|
10
|
+
|
11
|
+
```javascript
|
12
|
+
let promise1 = new Promise(function(resolve, reject){
|
13
|
+
setTimeout(function(){
|
14
|
+
resolve('promise 1');
|
15
|
+
}, 200);
|
16
|
+
});
|
17
|
+
|
18
|
+
let promise2 = new Promise(function(resolve, reject){
|
19
|
+
setTimeout(function(){
|
20
|
+
resolve('promise 2');
|
21
|
+
}, 100);
|
22
|
+
});
|
23
|
+
|
24
|
+
Promise.race([promise1, promise2]).then(function(result){
|
25
|
+
// result === 'promise 2' because it was resolved before promise1
|
26
|
+
// was resolved.
|
27
|
+
});
|
28
|
+
```
|
29
|
+
|
30
|
+
`Promise.race` is deterministic in that only the state of the first
|
31
|
+
settled promise matters. For example, even if other promises given to the
|
32
|
+
`promises` array argument are resolved, but the first settled promise has
|
33
|
+
become rejected before the other promises became fulfilled, the returned
|
34
|
+
promise will become rejected:
|
35
|
+
|
36
|
+
```javascript
|
37
|
+
let promise1 = new Promise(function(resolve, reject){
|
38
|
+
setTimeout(function(){
|
39
|
+
resolve('promise 1');
|
40
|
+
}, 200);
|
41
|
+
});
|
42
|
+
|
43
|
+
let promise2 = new Promise(function(resolve, reject){
|
44
|
+
setTimeout(function(){
|
45
|
+
reject(new Error('promise 2'));
|
46
|
+
}, 100);
|
47
|
+
});
|
48
|
+
|
49
|
+
Promise.race([promise1, promise2]).then(function(result){
|
50
|
+
// Code here never runs
|
51
|
+
}, function(reason){
|
52
|
+
// reason.message === 'promise 2' because promise 2 became rejected before
|
53
|
+
// promise 1 became fulfilled
|
54
|
+
});
|
55
|
+
```
|
56
|
+
|
57
|
+
An example real-world use case is implementing timeouts:
|
58
|
+
|
59
|
+
```javascript
|
60
|
+
Promise.race([ajax('foo.json'), timeout(5000)])
|
61
|
+
```
|
62
|
+
|
63
|
+
@method race
|
64
|
+
@static
|
65
|
+
@param {Array} promises array of promises to observe
|
66
|
+
Useful for tooling.
|
67
|
+
@return {Promise} a promise which settles in the same way as the first passed
|
68
|
+
promise to settle.
|
69
|
+
*/
|
70
|
+
export default function race(entries) {
|
71
|
+
/*jshint validthis:true */
|
72
|
+
let Constructor = this;
|
73
|
+
|
74
|
+
if (!isArray(entries)) {
|
75
|
+
return new Constructor((_, reject) => reject(new TypeError('You must pass an array to race.')));
|
76
|
+
} else {
|
77
|
+
return new Constructor((resolve, reject) => {
|
78
|
+
let length = entries.length;
|
79
|
+
for (let i = 0; i < length; i++) {
|
80
|
+
Constructor.resolve(entries[i]).then(resolve, reject);
|
81
|
+
}
|
82
|
+
});
|
83
|
+
}
|
84
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import {
|
2
|
+
noop,
|
3
|
+
reject as _reject
|
4
|
+
} from '../-internal';
|
5
|
+
|
6
|
+
/**
|
7
|
+
`Promise.reject` returns a promise rejected with the passed `reason`.
|
8
|
+
It is shorthand for the following:
|
9
|
+
|
10
|
+
```javascript
|
11
|
+
let promise = new Promise(function(resolve, reject){
|
12
|
+
reject(new Error('WHOOPS'));
|
13
|
+
});
|
14
|
+
|
15
|
+
promise.then(function(value){
|
16
|
+
// Code here doesn't run because the promise is rejected!
|
17
|
+
}, function(reason){
|
18
|
+
// reason.message === 'WHOOPS'
|
19
|
+
});
|
20
|
+
```
|
21
|
+
|
22
|
+
Instead of writing the above, your code now simply becomes the following:
|
23
|
+
|
24
|
+
```javascript
|
25
|
+
let promise = Promise.reject(new Error('WHOOPS'));
|
26
|
+
|
27
|
+
promise.then(function(value){
|
28
|
+
// Code here doesn't run because the promise is rejected!
|
29
|
+
}, function(reason){
|
30
|
+
// reason.message === 'WHOOPS'
|
31
|
+
});
|
32
|
+
```
|
33
|
+
|
34
|
+
@method reject
|
35
|
+
@static
|
36
|
+
@param {Any} reason value that the returned promise will be rejected with.
|
37
|
+
Useful for tooling.
|
38
|
+
@return {Promise} a promise rejected with the given `reason`.
|
39
|
+
*/
|
40
|
+
export default function reject(reason) {
|
41
|
+
/*jshint validthis:true */
|
42
|
+
let Constructor = this;
|
43
|
+
let promise = new Constructor(noop);
|
44
|
+
_reject(promise, reason);
|
45
|
+
return promise;
|
46
|
+
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import {
|
2
|
+
noop,
|
3
|
+
resolve as _resolve
|
4
|
+
} from '../-internal';
|
5
|
+
|
6
|
+
/**
|
7
|
+
`Promise.resolve` returns a promise that will become resolved with the
|
8
|
+
passed `value`. It is shorthand for the following:
|
9
|
+
|
10
|
+
```javascript
|
11
|
+
let promise = new Promise(function(resolve, reject){
|
12
|
+
resolve(1);
|
13
|
+
});
|
14
|
+
|
15
|
+
promise.then(function(value){
|
16
|
+
// value === 1
|
17
|
+
});
|
18
|
+
```
|
19
|
+
|
20
|
+
Instead of writing the above, your code now simply becomes the following:
|
21
|
+
|
22
|
+
```javascript
|
23
|
+
let promise = Promise.resolve(1);
|
24
|
+
|
25
|
+
promise.then(function(value){
|
26
|
+
// value === 1
|
27
|
+
});
|
28
|
+
```
|
29
|
+
|
30
|
+
@method resolve
|
31
|
+
@static
|
32
|
+
@param {Any} value value that the returned promise will be resolved with
|
33
|
+
Useful for tooling.
|
34
|
+
@return {Promise} a promise that will become fulfilled with the given
|
35
|
+
`value`
|
36
|
+
*/
|
37
|
+
export default function resolve(object) {
|
38
|
+
/*jshint validthis:true */
|
39
|
+
let Constructor = this;
|
40
|
+
|
41
|
+
if (object && typeof object === 'object' && object.constructor === Constructor) {
|
42
|
+
return object;
|
43
|
+
}
|
44
|
+
|
45
|
+
let promise = new Constructor(noop);
|
46
|
+
_resolve(promise, object);
|
47
|
+
return promise;
|
48
|
+
}
|