From 6009063cb6c53fc4f53dd3e11381ea52671e5c73 Mon Sep 17 00:00:00 2001 From: XinYao Date: Fri, 12 Oct 2018 14:13:25 +0800 Subject: [PATCH 01/41] Add files via upload --- img/simpo_code1.pdf | Bin 0 -> 205968 bytes img/simpo_table3_functions.pdf | Bin 0 -> 43800 bytes img/simpo_table5_apis.pdf | Bin 0 -> 252266 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/simpo_code1.pdf create mode 100644 img/simpo_table3_functions.pdf create mode 100644 img/simpo_table5_apis.pdf diff --git a/img/simpo_code1.pdf b/img/simpo_code1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..964ab9ab6e3fcac4052c7eed68997cd8a48e5f89 GIT binary patch literal 205968 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 R0+BdFd+CzW4dpYm{|_VkYAyf( literal 0 HcmV?d00001 diff --git a/img/simpo_table5_apis.pdf b/img/simpo_table5_apis.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0bacdfacb1e473df62f1361ced61ae8e40a2f06d GIT binary patch literal 252266 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
-

Welcome to Xin YAO's blog

+

Welcome to ShiJie Xu's blog


    From 522e9f7e257231c11504f51990f0ea25cf97a1d2 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sun, 21 Oct 2018 07:10:32 +0800 Subject: [PATCH 04/41] rename rename --- _posts/2018-09-25-Markdown-Beginner.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2018-09-25-Markdown-Beginner.md b/_posts/2018-09-25-Markdown-Beginner.md index 8214b446..00cdbf05 100644 --- a/_posts/2018-09-25-Markdown-Beginner.md +++ b/_posts/2018-09-25-Markdown-Beginner.md @@ -117,7 +117,7 @@ Github Pages - (If you have one) ## 本身就是链接 - + ## 分割线 *** From 02a49e771cc22ebe2bafe27746cbbec18983ed83 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sun, 21 Oct 2018 07:29:09 +0800 Subject: [PATCH 05/41] markdown markdown --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 526ebf49..f6a226c9 100644 --- a/_config.yml +++ b/_config.yml @@ -60,7 +60,7 @@ markdown: kramdown kramdown: input: GFM - syntax_highlighter: rouge + syntax_highlighter: pygments # port # port: 1234 From e0fef290c287623718020ce83fdf5964d2c33674 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sun, 21 Oct 2018 11:45:16 +0800 Subject: [PATCH 06/41] test test --- LICENSE | 0 README-zh-cn.md | 3 + README.md | 3 + _config.yml | 54 +- _drafts/ES2015-note.md | 0 _drafts/WebSocket.md | 0 _drafts/threeJS-light-shadow.md | 0 _includes/backToTop.html | 0 _includes/category.html | 0 _includes/comments.html | 0 _includes/footer.html | 2 +- _includes/head.html | 0 _includes/header.html | 0 _includes/previousAndNext.html | 0 _includes/tag.html | 0 _layouts/default.html | 0 _layouts/demo.html | 0 _layouts/page.html | 0 _layouts/post.html | 48 +- _posts/2015-02-10-welcome-to-jekyll.markdown | 38 + .../2015-02-12-create-my-blog-with-jekyll.md | 156 + .../2015-03-21-teach-girlfriend-html-css.md | 39 + _posts/2015-03-26-sublimeLinter.md | 208 + _posts/2015-04-06-arrays-similar.md | 287 + _posts/2015-04-12-Syncing-a-fork.md | 94 + _posts/2015-04-15-baidu-ife-1.md | 847 ++ _posts/2015-04-22-baidu-ife-2-javascript.md | 1586 ++++ _posts/2015-05-18-front-end-tools.md | 135 + _posts/2015-05-20-scope.md | 258 + .../2015-06-01-lenovo-front-end-interview.md | 139 + _posts/2015-06-11-JavaScript-function.md | 328 + _posts/2015-06-12-JavaScript-this.md | 189 + _posts/2015-06-14-JavaScript-closure.md | 147 + .../2015-06-15-JavaScript-Object-Oriented.md | 424 + _posts/2015-06-17-web-app.md | 645 ++ _posts/2015-06-18-weinre.md | 169 + _posts/2015-07-09-JavaScript-Net.md | 14 + ...2015-07-24-low-IE-click-empty-block-bug.md | 32 + _posts/2015-12-31-History-API.md | 167 + _posts/2016-03-12-jekyll-theme-version-2.0.md | 222 + _posts/2016-05-06-regular-expression-group.md | 50 + .../2016-06-07-JavaScript-good-parts-note1.md | 569 ++ .../2016-06-08-JavaScript-good-parts-note2.md | 219 + .../2016-06-10-JavaScript-good-parts-note3.md | 73 + _posts/2016-06-14-how-to-use-babel.md | 181 + .../2016-07-07-git-clone-not-master-branch.md | 104 + _posts/2016-10-16-shuffle-algorithm.md | 107 + .../2016-11-22-js-create-file-and-download.md | 87 + .../2016-11-25-how-to-write-a-count-down.md | 102 + _posts/2018-06-01-animation.md | 142 + _posts/2018-09-10-lottie.md | 241 + .../2018-09-24-Open-Github-Pages-for-blogs.md | 38 - _posts/2018-09-25-Git-Beginner.md | 243 - _posts/2018-09-25-Markdown-Beginner.md | 194 - _posts/2018-10-10-vscode-plugin-schedule.md | 84 + _sass/_backToTop.scss | 0 _sass/_demo.scss | 0 _sass/_footer.scss | 0 _sass/_header.scss | 0 _sass/_index.scss | 0 _sass/_layout.scss | 0 _sass/_page.scss | 0 _sass/_post-old.scss | 0 _sass/_post.scss | 0 _sass/_reset.scss | 4 +- _sass/_scrollbar.scss | 0 _sass/_syntax-highlighting.scss | 0 css/main.scss | 0 favicon.ico | Bin 1150 -> 318 bytes feed.xml | 0 img/Anna as the Reference.png | Bin 120469 -> 0 bytes img/simpo_code1.pdf | Bin 205968 -> 0 bytes img/simpo_table3_functions.pdf | Bin 43800 -> 0 bytes img/simpo_table5_apis.pdf | Bin 252266 -> 0 bytes index.html | 4 +- js/main.js | 0 js/masonry.pkgd.min.js | 0 js/pageContent.js | 0 js/smooth-scroll.min.js | 0 js/waterfall.js | 0 node_modules/.bin/mime | 15 - node_modules/.bin/mime.cmd | 7 - node_modules/accepts/HISTORY.md | 218 - node_modules/accepts/LICENSE | 23 - node_modules/accepts/README.md | 143 - node_modules/accepts/index.js | 238 - node_modules/accepts/package.json | 85 - node_modules/ansi-regex/index.js | 4 - node_modules/ansi-regex/license | 21 - node_modules/ansi-regex/package.json | 109 - node_modules/ansi-regex/readme.md | 39 - node_modules/ansi-styles/index.js | 65 - node_modules/ansi-styles/license | 21 - node_modules/ansi-styles/package.json | 90 - node_modules/ansi-styles/readme.md | 86 - node_modules/basic-auth/HISTORY.md | 47 - node_modules/basic-auth/LICENSE | 24 - node_modules/basic-auth/README.md | 99 - node_modules/basic-auth/index.js | 133 - node_modules/basic-auth/package.json | 73 - node_modules/bluebird/LICENSE | 21 - node_modules/bluebird/README.md | 52 - node_modules/bluebird/changelog.md | 1 - .../bluebird/js/browser/bluebird.core.js | 3781 --------- .../bluebird/js/browser/bluebird.core.min.js | 31 - node_modules/bluebird/js/browser/bluebird.js | 5623 ------------- .../bluebird/js/browser/bluebird.min.js | 31 - node_modules/bluebird/js/release/any.js | 21 - node_modules/bluebird/js/release/assert.js | 55 - node_modules/bluebird/js/release/async.js | 161 - node_modules/bluebird/js/release/bind.js | 67 - node_modules/bluebird/js/release/bluebird.js | 11 - node_modules/bluebird/js/release/call_get.js | 123 - node_modules/bluebird/js/release/cancel.js | 129 - .../bluebird/js/release/catch_filter.js | 42 - node_modules/bluebird/js/release/context.js | 69 - .../bluebird/js/release/debuggability.js | 919 --- .../bluebird/js/release/direct_resolve.js | 46 - node_modules/bluebird/js/release/each.js | 30 - node_modules/bluebird/js/release/errors.js | 116 - node_modules/bluebird/js/release/es5.js | 80 - node_modules/bluebird/js/release/filter.js | 12 - node_modules/bluebird/js/release/finally.js | 146 - .../bluebird/js/release/generators.js | 223 - node_modules/bluebird/js/release/join.js | 168 - node_modules/bluebird/js/release/map.js | 168 - node_modules/bluebird/js/release/method.js | 55 - node_modules/bluebird/js/release/nodeback.js | 51 - node_modules/bluebird/js/release/nodeify.js | 58 - node_modules/bluebird/js/release/promise.js | 775 -- .../bluebird/js/release/promise_array.js | 185 - node_modules/bluebird/js/release/promisify.js | 314 - node_modules/bluebird/js/release/props.js | 118 - node_modules/bluebird/js/release/queue.js | 73 - node_modules/bluebird/js/release/race.js | 49 - node_modules/bluebird/js/release/reduce.js | 172 - node_modules/bluebird/js/release/schedule.js | 61 - node_modules/bluebird/js/release/settle.js | 43 - node_modules/bluebird/js/release/some.js | 148 - .../js/release/synchronous_inspection.js | 103 - node_modules/bluebird/js/release/thenables.js | 86 - node_modules/bluebird/js/release/timers.js | 93 - node_modules/bluebird/js/release/using.js | 226 - node_modules/bluebird/js/release/util.js | 380 - node_modules/bluebird/package.json | 101 - node_modules/bytes/History.md | 82 - node_modules/bytes/LICENSE | 23 - node_modules/bytes/Readme.md | 125 - node_modules/bytes/index.js | 159 - node_modules/bytes/package.json | 81 - node_modules/chalk/index.js | 116 - node_modules/chalk/license | 21 - node_modules/chalk/package.json | 114 - node_modules/chalk/readme.md | 213 - node_modules/compressible/HISTORY.md | 77 - node_modules/compressible/LICENSE | 24 - node_modules/compressible/README.md | 62 - node_modules/compressible/index.js | 58 - node_modules/compressible/package.json | 90 - node_modules/compression/HISTORY.md | 281 - node_modules/compression/LICENSE | 23 - node_modules/compression/README.md | 243 - node_modules/compression/index.js | 277 - node_modules/compression/package.json | 85 - node_modules/connect/HISTORY.md | 2484 ------ node_modules/connect/LICENSE | 25 - node_modules/connect/README.md | 295 - node_modules/connect/SECURITY.md | 43 - node_modules/connect/index.js | 283 - node_modules/connect/package.json | 93 - node_modules/debug/.coveralls.yml | 1 - node_modules/debug/.eslintrc | 11 - node_modules/debug/.npmignore | 9 - node_modules/debug/.travis.yml | 14 - node_modules/debug/CHANGELOG.md | 362 - node_modules/debug/LICENSE | 19 - node_modules/debug/Makefile | 50 - node_modules/debug/README.md | 312 - node_modules/debug/component.json | 19 - node_modules/debug/karma.conf.js | 70 - node_modules/debug/node.js | 1 - node_modules/debug/package.json | 92 - node_modules/debug/src/browser.js | 185 - node_modules/debug/src/debug.js | 202 - node_modules/debug/src/index.js | 10 - node_modules/debug/src/inspector-log.js | 15 - node_modules/debug/src/node.js | 248 - node_modules/depd/History.md | 90 - node_modules/depd/LICENSE | 22 - node_modules/depd/Readme.md | 283 - node_modules/depd/index.js | 520 -- node_modules/depd/lib/browser/index.js | 77 - .../depd/lib/compat/callsite-tostring.js | 103 - .../depd/lib/compat/event-listener-count.js | 22 - node_modules/depd/lib/compat/index.js | 79 - node_modules/depd/package.json | 78 - node_modules/destroy/LICENSE | 22 - node_modules/destroy/README.md | 60 - node_modules/destroy/index.js | 75 - node_modules/destroy/package.json | 71 - node_modules/ee-first/LICENSE | 22 - node_modules/ee-first/README.md | 80 - node_modules/ee-first/index.js | 95 - node_modules/ee-first/package.json | 63 - node_modules/encodeurl/HISTORY.md | 9 - node_modules/encodeurl/LICENSE | 22 - node_modules/encodeurl/README.md | 124 - node_modules/encodeurl/index.js | 60 - node_modules/encodeurl/package.json | 75 - node_modules/escape-html/LICENSE | 24 - node_modules/escape-html/Readme.md | 43 - node_modules/escape-html/index.js | 78 - node_modules/escape-html/package.json | 58 - node_modules/escape-string-regexp/index.js | 11 - node_modules/escape-string-regexp/license | 21 - .../escape-string-regexp/package.json | 81 - node_modules/escape-string-regexp/readme.md | 27 - node_modules/etag/HISTORY.md | 83 - node_modules/etag/LICENSE | 22 - node_modules/etag/README.md | 159 - node_modules/etag/index.js | 131 - node_modules/etag/package.json | 85 - node_modules/finalhandler/HISTORY.md | 167 - node_modules/finalhandler/LICENSE | 22 - node_modules/finalhandler/README.md | 148 - node_modules/finalhandler/index.js | 300 - node_modules/finalhandler/package.json | 80 - node_modules/fresh/HISTORY.md | 70 - node_modules/fresh/LICENSE | 23 - node_modules/fresh/README.md | 119 - node_modules/fresh/index.js | 137 - node_modules/fresh/package.json | 89 - node_modules/has-ansi/index.js | 4 - node_modules/has-ansi/license | 21 - node_modules/has-ansi/package.json | 95 - node_modules/has-ansi/readme.md | 36 - node_modules/hexo-server/.eslintignore | 3 - node_modules/hexo-server/.eslintrc | 4 - node_modules/hexo-server/.jscsrc | 4 - node_modules/hexo-server/.npmignore | 9 - node_modules/hexo-server/LICENSE | 7 - node_modules/hexo-server/README.md | 48 - node_modules/hexo-server/index.js | 31 - .../hexo-server/lib/middlewares/gzip.js | 10 - .../hexo-server/lib/middlewares/header.js | 11 - .../hexo-server/lib/middlewares/logger.js | 14 - .../hexo-server/lib/middlewares/redirect.js | 15 - .../hexo-server/lib/middlewares/route.js | 41 - .../hexo-server/lib/middlewares/static.js | 7 - node_modules/hexo-server/lib/server.js | 89 - node_modules/hexo-server/package.json | 93 - node_modules/http-errors/HISTORY.md | 124 - node_modules/http-errors/LICENSE | 23 - node_modules/http-errors/README.md | 135 - node_modules/http-errors/index.js | 260 - node_modules/http-errors/package.json | 90 - node_modules/inherits/LICENSE | 16 - node_modules/inherits/README.md | 42 - node_modules/inherits/inherits.js | 7 - node_modules/inherits/inherits_browser.js | 23 - node_modules/inherits/package.json | 61 - node_modules/mime-db/HISTORY.md | 343 - node_modules/mime-db/LICENSE | 22 - node_modules/mime-db/README.md | 94 - node_modules/mime-db/db.json | 6966 ----------------- node_modules/mime-db/index.js | 11 - node_modules/mime-db/package.json | 101 - node_modules/mime-types/HISTORY.md | 247 - node_modules/mime-types/LICENSE | 23 - node_modules/mime-types/README.md | 108 - node_modules/mime-types/index.js | 188 - node_modules/mime-types/package.json | 86 - node_modules/mime/.npmignore | 0 node_modules/mime/CHANGELOG.md | 164 - node_modules/mime/LICENSE | 21 - node_modules/mime/README.md | 90 - node_modules/mime/cli.js | 8 - node_modules/mime/mime.js | 108 - node_modules/mime/package.json | 73 - node_modules/mime/src/build.js | 53 - node_modules/mime/src/test.js | 60 - node_modules/mime/types.json | 1 - node_modules/morgan/HISTORY.md | 195 - node_modules/morgan/LICENSE | 23 - node_modules/morgan/README.md | 415 - node_modules/morgan/index.js | 522 -- node_modules/morgan/package.json | 91 - node_modules/ms/index.js | 152 - node_modules/ms/license.md | 21 - node_modules/ms/package.json | 70 - node_modules/ms/readme.md | 51 - node_modules/negotiator/HISTORY.md | 98 - node_modules/negotiator/LICENSE | 24 - node_modules/negotiator/README.md | 203 - node_modules/negotiator/index.js | 124 - node_modules/negotiator/lib/charset.js | 169 - node_modules/negotiator/lib/encoding.js | 184 - node_modules/negotiator/lib/language.js | 179 - node_modules/negotiator/lib/mediaType.js | 294 - node_modules/negotiator/package.json | 81 - node_modules/object-assign/index.js | 90 - node_modules/object-assign/license | 21 - node_modules/object-assign/package.json | 75 - node_modules/object-assign/readme.md | 61 - node_modules/on-finished/HISTORY.md | 88 - node_modules/on-finished/LICENSE | 23 - node_modules/on-finished/README.md | 154 - node_modules/on-finished/index.js | 196 - node_modules/on-finished/package.json | 72 - node_modules/on-headers/HISTORY.md | 16 - node_modules/on-headers/LICENSE | 22 - node_modules/on-headers/README.md | 76 - node_modules/on-headers/index.js | 93 - node_modules/on-headers/package.json | 70 - node_modules/opn/index.js | 95 - node_modules/opn/license | 21 - node_modules/opn/package.json | 89 - node_modules/opn/readme.md | 89 - node_modules/opn/xdg-open | 861 -- node_modules/parseurl/HISTORY.md | 53 - node_modules/parseurl/LICENSE | 24 - node_modules/parseurl/README.md | 124 - node_modules/parseurl/index.js | 154 - node_modules/parseurl/package.json | 81 - node_modules/pinkie-promise/index.js | 3 - node_modules/pinkie-promise/license | 21 - node_modules/pinkie-promise/package.json | 67 - node_modules/pinkie-promise/readme.md | 28 - node_modules/pinkie/index.js | 292 - node_modules/pinkie/license | 21 - node_modules/pinkie/package.json | 68 - node_modules/pinkie/readme.md | 83 - node_modules/range-parser/HISTORY.md | 51 - node_modules/range-parser/LICENSE | 23 - node_modules/range-parser/README.md | 75 - node_modules/range-parser/index.js | 158 - node_modules/range-parser/package.json | 86 - node_modules/safe-buffer/.travis.yml | 7 - node_modules/safe-buffer/LICENSE | 21 - node_modules/safe-buffer/README.md | 584 -- node_modules/safe-buffer/index.js | 62 - node_modules/safe-buffer/package.json | 63 - node_modules/safe-buffer/test.js | 101 - node_modules/send/HISTORY.md | 452 -- node_modules/send/LICENSE | 23 - node_modules/send/README.md | 309 - node_modules/send/index.js | 1130 --- node_modules/send/node_modules/.bin/mime | 15 - node_modules/send/node_modules/.bin/mime.cmd | 7 - node_modules/send/node_modules/mime/LICENSE | 21 - node_modules/send/node_modules/mime/README.md | 90 - .../send/node_modules/mime/build/build.js | 11 - .../send/node_modules/mime/build/test.js | 60 - node_modules/send/node_modules/mime/cli.js | 8 - node_modules/send/node_modules/mime/mime.js | 108 - .../send/node_modules/mime/package.json | 67 - .../send/node_modules/mime/types.json | 1 - node_modules/send/package.json | 105 - node_modules/serve-static/HISTORY.md | 422 - node_modules/serve-static/LICENSE | 25 - node_modules/serve-static/README.md | 261 - node_modules/serve-static/index.js | 209 - node_modules/serve-static/package.json | 75 - node_modules/setprototypeof/LICENSE | 13 - node_modules/setprototypeof/README.md | 21 - node_modules/setprototypeof/index.js | 15 - node_modules/setprototypeof/package.json | 51 - node_modules/statuses/HISTORY.md | 55 - node_modules/statuses/LICENSE | 23 - node_modules/statuses/README.md | 103 - node_modules/statuses/codes.json | 65 - node_modules/statuses/index.js | 110 - node_modules/statuses/package.json | 85 - node_modules/strip-ansi/index.js | 6 - node_modules/strip-ansi/license | 21 - node_modules/strip-ansi/package.json | 101 - node_modules/strip-ansi/readme.md | 33 - node_modules/supports-color/index.js | 50 - node_modules/supports-color/license | 21 - node_modules/supports-color/package.json | 89 - node_modules/supports-color/readme.md | 36 - node_modules/unpipe/HISTORY.md | 4 - node_modules/unpipe/LICENSE | 22 - node_modules/unpipe/README.md | 43 - node_modules/unpipe/index.js | 69 - node_modules/unpipe/package.json | 62 - node_modules/utils-merge/.npmignore | 9 - node_modules/utils-merge/LICENSE | 20 - node_modules/utils-merge/README.md | 34 - node_modules/utils-merge/index.js | 23 - node_modules/utils-merge/package.json | 66 - node_modules/vary/HISTORY.md | 39 - node_modules/vary/LICENSE | 22 - node_modules/vary/README.md | 101 - node_modules/vary/index.js | 149 - node_modules/vary/package.json | 78 - package-lock.json | 361 - page/0archives.html | 0 page/1category.html | 0 page/2tags.html | 0 page/3collections.md | 295 + page/3demo.html | 31 + page/4about.md | 101 + 403 files changed, 8564 insertions(+), 51170 deletions(-) mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README-zh-cn.md mode change 100644 => 100755 README.md mode change 100644 => 100755 _config.yml mode change 100644 => 100755 _drafts/ES2015-note.md mode change 100644 => 100755 _drafts/WebSocket.md mode change 100644 => 100755 _drafts/threeJS-light-shadow.md mode change 100644 => 100755 _includes/backToTop.html mode change 100644 => 100755 _includes/category.html mode change 100644 => 100755 _includes/comments.html mode change 100644 => 100755 _includes/footer.html mode change 100644 => 100755 _includes/head.html mode change 100644 => 100755 _includes/header.html mode change 100644 => 100755 _includes/previousAndNext.html mode change 100644 => 100755 _includes/tag.html mode change 100644 => 100755 _layouts/default.html mode change 100644 => 100755 _layouts/demo.html mode change 100644 => 100755 _layouts/page.html mode change 100644 => 100755 _layouts/post.html create mode 100755 _posts/2015-02-10-welcome-to-jekyll.markdown create mode 100755 _posts/2015-02-12-create-my-blog-with-jekyll.md create mode 100755 _posts/2015-03-21-teach-girlfriend-html-css.md create mode 100755 _posts/2015-03-26-sublimeLinter.md create mode 100755 _posts/2015-04-06-arrays-similar.md create mode 100755 _posts/2015-04-12-Syncing-a-fork.md create mode 100755 _posts/2015-04-15-baidu-ife-1.md create mode 100755 _posts/2015-04-22-baidu-ife-2-javascript.md create mode 100755 _posts/2015-05-18-front-end-tools.md create mode 100755 _posts/2015-05-20-scope.md create mode 100755 _posts/2015-06-01-lenovo-front-end-interview.md create mode 100755 _posts/2015-06-11-JavaScript-function.md create mode 100755 _posts/2015-06-12-JavaScript-this.md create mode 100755 _posts/2015-06-14-JavaScript-closure.md create mode 100755 _posts/2015-06-15-JavaScript-Object-Oriented.md create mode 100755 _posts/2015-06-17-web-app.md create mode 100755 _posts/2015-06-18-weinre.md create mode 100755 _posts/2015-07-09-JavaScript-Net.md create mode 100755 _posts/2015-07-24-low-IE-click-empty-block-bug.md create mode 100755 _posts/2015-12-31-History-API.md create mode 100755 _posts/2016-03-12-jekyll-theme-version-2.0.md create mode 100755 _posts/2016-05-06-regular-expression-group.md create mode 100755 _posts/2016-06-07-JavaScript-good-parts-note1.md create mode 100755 _posts/2016-06-08-JavaScript-good-parts-note2.md create mode 100755 _posts/2016-06-10-JavaScript-good-parts-note3.md create mode 100755 _posts/2016-06-14-how-to-use-babel.md create mode 100755 _posts/2016-07-07-git-clone-not-master-branch.md create mode 100755 _posts/2016-10-16-shuffle-algorithm.md create mode 100755 _posts/2016-11-22-js-create-file-and-download.md create mode 100755 _posts/2016-11-25-how-to-write-a-count-down.md create mode 100755 _posts/2018-06-01-animation.md create mode 100755 _posts/2018-09-10-lottie.md delete mode 100644 _posts/2018-09-24-Open-Github-Pages-for-blogs.md delete mode 100644 _posts/2018-09-25-Git-Beginner.md delete mode 100644 _posts/2018-09-25-Markdown-Beginner.md create mode 100755 _posts/2018-10-10-vscode-plugin-schedule.md mode change 100644 => 100755 _sass/_backToTop.scss mode change 100644 => 100755 _sass/_demo.scss mode change 100644 => 100755 _sass/_footer.scss mode change 100644 => 100755 _sass/_header.scss mode change 100644 => 100755 _sass/_index.scss mode change 100644 => 100755 _sass/_layout.scss mode change 100644 => 100755 _sass/_page.scss mode change 100644 => 100755 _sass/_post-old.scss mode change 100644 => 100755 _sass/_post.scss mode change 100644 => 100755 _sass/_reset.scss mode change 100644 => 100755 _sass/_scrollbar.scss mode change 100644 => 100755 _sass/_syntax-highlighting.scss mode change 100644 => 100755 css/main.scss mode change 100644 => 100755 favicon.ico mode change 100644 => 100755 feed.xml delete mode 100644 img/Anna as the Reference.png delete mode 100644 img/simpo_code1.pdf delete mode 100644 img/simpo_table3_functions.pdf delete mode 100644 img/simpo_table5_apis.pdf mode change 100644 => 100755 index.html mode change 100644 => 100755 js/main.js mode change 100644 => 100755 js/masonry.pkgd.min.js mode change 100644 => 100755 js/pageContent.js mode change 100644 => 100755 js/smooth-scroll.min.js mode change 100644 => 100755 js/waterfall.js delete mode 100644 node_modules/.bin/mime delete mode 100644 node_modules/.bin/mime.cmd delete mode 100644 node_modules/accepts/HISTORY.md delete mode 100644 node_modules/accepts/LICENSE delete mode 100644 node_modules/accepts/README.md delete mode 100644 node_modules/accepts/index.js delete mode 100644 node_modules/accepts/package.json delete mode 100644 node_modules/ansi-regex/index.js delete mode 100644 node_modules/ansi-regex/license delete mode 100644 node_modules/ansi-regex/package.json delete mode 100644 node_modules/ansi-regex/readme.md delete mode 100644 node_modules/ansi-styles/index.js delete mode 100644 node_modules/ansi-styles/license delete mode 100644 node_modules/ansi-styles/package.json delete mode 100644 node_modules/ansi-styles/readme.md delete mode 100644 node_modules/basic-auth/HISTORY.md delete mode 100644 node_modules/basic-auth/LICENSE delete mode 100644 node_modules/basic-auth/README.md delete mode 100644 node_modules/basic-auth/index.js delete mode 100644 node_modules/basic-auth/package.json delete mode 100644 node_modules/bluebird/LICENSE delete mode 100644 node_modules/bluebird/README.md delete mode 100644 node_modules/bluebird/changelog.md delete mode 100644 node_modules/bluebird/js/browser/bluebird.core.js delete mode 100644 node_modules/bluebird/js/browser/bluebird.core.min.js delete mode 100644 node_modules/bluebird/js/browser/bluebird.js delete mode 100644 node_modules/bluebird/js/browser/bluebird.min.js delete mode 100644 node_modules/bluebird/js/release/any.js delete mode 100644 node_modules/bluebird/js/release/assert.js delete mode 100644 node_modules/bluebird/js/release/async.js delete mode 100644 node_modules/bluebird/js/release/bind.js delete mode 100644 node_modules/bluebird/js/release/bluebird.js delete mode 100644 node_modules/bluebird/js/release/call_get.js delete mode 100644 node_modules/bluebird/js/release/cancel.js delete mode 100644 node_modules/bluebird/js/release/catch_filter.js delete mode 100644 node_modules/bluebird/js/release/context.js delete mode 100644 node_modules/bluebird/js/release/debuggability.js delete mode 100644 node_modules/bluebird/js/release/direct_resolve.js delete mode 100644 node_modules/bluebird/js/release/each.js delete mode 100644 node_modules/bluebird/js/release/errors.js delete mode 100644 node_modules/bluebird/js/release/es5.js delete mode 100644 node_modules/bluebird/js/release/filter.js delete mode 100644 node_modules/bluebird/js/release/finally.js delete mode 100644 node_modules/bluebird/js/release/generators.js delete mode 100644 node_modules/bluebird/js/release/join.js delete mode 100644 node_modules/bluebird/js/release/map.js delete mode 100644 node_modules/bluebird/js/release/method.js delete mode 100644 node_modules/bluebird/js/release/nodeback.js delete mode 100644 node_modules/bluebird/js/release/nodeify.js delete mode 100644 node_modules/bluebird/js/release/promise.js delete mode 100644 node_modules/bluebird/js/release/promise_array.js delete mode 100644 node_modules/bluebird/js/release/promisify.js delete mode 100644 node_modules/bluebird/js/release/props.js delete mode 100644 node_modules/bluebird/js/release/queue.js delete mode 100644 node_modules/bluebird/js/release/race.js delete mode 100644 node_modules/bluebird/js/release/reduce.js delete mode 100644 node_modules/bluebird/js/release/schedule.js delete mode 100644 node_modules/bluebird/js/release/settle.js delete mode 100644 node_modules/bluebird/js/release/some.js delete mode 100644 node_modules/bluebird/js/release/synchronous_inspection.js delete mode 100644 node_modules/bluebird/js/release/thenables.js delete mode 100644 node_modules/bluebird/js/release/timers.js delete mode 100644 node_modules/bluebird/js/release/using.js delete mode 100644 node_modules/bluebird/js/release/util.js delete mode 100644 node_modules/bluebird/package.json delete mode 100644 node_modules/bytes/History.md delete mode 100644 node_modules/bytes/LICENSE delete mode 100644 node_modules/bytes/Readme.md delete mode 100644 node_modules/bytes/index.js delete mode 100644 node_modules/bytes/package.json delete mode 100644 node_modules/chalk/index.js delete mode 100644 node_modules/chalk/license delete mode 100644 node_modules/chalk/package.json delete mode 100644 node_modules/chalk/readme.md delete mode 100644 node_modules/compressible/HISTORY.md delete mode 100644 node_modules/compressible/LICENSE delete mode 100644 node_modules/compressible/README.md delete mode 100644 node_modules/compressible/index.js delete mode 100644 node_modules/compressible/package.json delete mode 100644 node_modules/compression/HISTORY.md delete mode 100644 node_modules/compression/LICENSE delete mode 100644 node_modules/compression/README.md delete mode 100644 node_modules/compression/index.js delete mode 100644 node_modules/compression/package.json delete mode 100644 node_modules/connect/HISTORY.md delete mode 100644 node_modules/connect/LICENSE delete mode 100644 node_modules/connect/README.md delete mode 100644 node_modules/connect/SECURITY.md delete mode 100644 node_modules/connect/index.js delete mode 100644 node_modules/connect/package.json delete mode 100644 node_modules/debug/.coveralls.yml delete mode 100644 node_modules/debug/.eslintrc delete mode 100644 node_modules/debug/.npmignore delete mode 100644 node_modules/debug/.travis.yml delete mode 100644 node_modules/debug/CHANGELOG.md delete mode 100644 node_modules/debug/LICENSE delete mode 100644 node_modules/debug/Makefile delete mode 100644 node_modules/debug/README.md delete mode 100644 node_modules/debug/component.json delete mode 100644 node_modules/debug/karma.conf.js delete mode 100644 node_modules/debug/node.js delete mode 100644 node_modules/debug/package.json delete mode 100644 node_modules/debug/src/browser.js delete mode 100644 node_modules/debug/src/debug.js delete mode 100644 node_modules/debug/src/index.js delete mode 100644 node_modules/debug/src/inspector-log.js delete mode 100644 node_modules/debug/src/node.js delete mode 100644 node_modules/depd/History.md delete mode 100644 node_modules/depd/LICENSE delete mode 100644 node_modules/depd/Readme.md delete mode 100644 node_modules/depd/index.js delete mode 100644 node_modules/depd/lib/browser/index.js delete mode 100644 node_modules/depd/lib/compat/callsite-tostring.js delete mode 100644 node_modules/depd/lib/compat/event-listener-count.js delete mode 100644 node_modules/depd/lib/compat/index.js delete mode 100644 node_modules/depd/package.json delete mode 100644 node_modules/destroy/LICENSE delete mode 100644 node_modules/destroy/README.md delete mode 100644 node_modules/destroy/index.js delete mode 100644 node_modules/destroy/package.json delete mode 100644 node_modules/ee-first/LICENSE delete mode 100644 node_modules/ee-first/README.md delete mode 100644 node_modules/ee-first/index.js delete mode 100644 node_modules/ee-first/package.json delete mode 100644 node_modules/encodeurl/HISTORY.md delete mode 100644 node_modules/encodeurl/LICENSE delete mode 100644 node_modules/encodeurl/README.md delete mode 100644 node_modules/encodeurl/index.js delete mode 100644 node_modules/encodeurl/package.json delete mode 100644 node_modules/escape-html/LICENSE delete mode 100644 node_modules/escape-html/Readme.md delete mode 100644 node_modules/escape-html/index.js delete mode 100644 node_modules/escape-html/package.json delete mode 100644 node_modules/escape-string-regexp/index.js delete mode 100644 node_modules/escape-string-regexp/license delete mode 100644 node_modules/escape-string-regexp/package.json delete mode 100644 node_modules/escape-string-regexp/readme.md delete mode 100644 node_modules/etag/HISTORY.md delete mode 100644 node_modules/etag/LICENSE delete mode 100644 node_modules/etag/README.md delete mode 100644 node_modules/etag/index.js delete mode 100644 node_modules/etag/package.json delete mode 100644 node_modules/finalhandler/HISTORY.md delete mode 100644 node_modules/finalhandler/LICENSE delete mode 100644 node_modules/finalhandler/README.md delete mode 100644 node_modules/finalhandler/index.js delete mode 100644 node_modules/finalhandler/package.json delete mode 100644 node_modules/fresh/HISTORY.md delete mode 100644 node_modules/fresh/LICENSE delete mode 100644 node_modules/fresh/README.md delete mode 100644 node_modules/fresh/index.js delete mode 100644 node_modules/fresh/package.json delete mode 100644 node_modules/has-ansi/index.js delete mode 100644 node_modules/has-ansi/license delete mode 100644 node_modules/has-ansi/package.json delete mode 100644 node_modules/has-ansi/readme.md delete mode 100644 node_modules/hexo-server/.eslintignore delete mode 100644 node_modules/hexo-server/.eslintrc delete mode 100644 node_modules/hexo-server/.jscsrc delete mode 100644 node_modules/hexo-server/.npmignore delete mode 100644 node_modules/hexo-server/LICENSE delete mode 100644 node_modules/hexo-server/README.md delete mode 100644 node_modules/hexo-server/index.js delete mode 100644 node_modules/hexo-server/lib/middlewares/gzip.js delete mode 100644 node_modules/hexo-server/lib/middlewares/header.js delete mode 100644 node_modules/hexo-server/lib/middlewares/logger.js delete mode 100644 node_modules/hexo-server/lib/middlewares/redirect.js delete mode 100644 node_modules/hexo-server/lib/middlewares/route.js delete mode 100644 node_modules/hexo-server/lib/middlewares/static.js delete mode 100644 node_modules/hexo-server/lib/server.js delete mode 100644 node_modules/hexo-server/package.json delete mode 100644 node_modules/http-errors/HISTORY.md delete mode 100644 node_modules/http-errors/LICENSE delete mode 100644 node_modules/http-errors/README.md delete mode 100644 node_modules/http-errors/index.js delete mode 100644 node_modules/http-errors/package.json delete mode 100644 node_modules/inherits/LICENSE delete mode 100644 node_modules/inherits/README.md delete mode 100644 node_modules/inherits/inherits.js delete mode 100644 node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/inherits/package.json delete mode 100644 node_modules/mime-db/HISTORY.md delete mode 100644 node_modules/mime-db/LICENSE delete mode 100644 node_modules/mime-db/README.md delete mode 100644 node_modules/mime-db/db.json delete mode 100644 node_modules/mime-db/index.js delete mode 100644 node_modules/mime-db/package.json delete mode 100644 node_modules/mime-types/HISTORY.md delete mode 100644 node_modules/mime-types/LICENSE delete mode 100644 node_modules/mime-types/README.md delete mode 100644 node_modules/mime-types/index.js delete mode 100644 node_modules/mime-types/package.json delete mode 100644 node_modules/mime/.npmignore delete mode 100644 node_modules/mime/CHANGELOG.md delete mode 100644 node_modules/mime/LICENSE delete mode 100644 node_modules/mime/README.md delete mode 100644 node_modules/mime/cli.js delete mode 100644 node_modules/mime/mime.js delete mode 100644 node_modules/mime/package.json delete mode 100644 node_modules/mime/src/build.js delete mode 100644 node_modules/mime/src/test.js delete mode 100644 node_modules/mime/types.json delete mode 100644 node_modules/morgan/HISTORY.md delete mode 100644 node_modules/morgan/LICENSE delete mode 100644 node_modules/morgan/README.md delete mode 100644 node_modules/morgan/index.js delete mode 100644 node_modules/morgan/package.json delete mode 100644 node_modules/ms/index.js delete mode 100644 node_modules/ms/license.md delete mode 100644 node_modules/ms/package.json delete mode 100644 node_modules/ms/readme.md delete mode 100644 node_modules/negotiator/HISTORY.md delete mode 100644 node_modules/negotiator/LICENSE delete mode 100644 node_modules/negotiator/README.md delete mode 100644 node_modules/negotiator/index.js delete mode 100644 node_modules/negotiator/lib/charset.js delete mode 100644 node_modules/negotiator/lib/encoding.js delete mode 100644 node_modules/negotiator/lib/language.js delete mode 100644 node_modules/negotiator/lib/mediaType.js delete mode 100644 node_modules/negotiator/package.json delete mode 100644 node_modules/object-assign/index.js delete mode 100644 node_modules/object-assign/license delete mode 100644 node_modules/object-assign/package.json delete mode 100644 node_modules/object-assign/readme.md delete mode 100644 node_modules/on-finished/HISTORY.md delete mode 100644 node_modules/on-finished/LICENSE delete mode 100644 node_modules/on-finished/README.md delete mode 100644 node_modules/on-finished/index.js delete mode 100644 node_modules/on-finished/package.json delete mode 100644 node_modules/on-headers/HISTORY.md delete mode 100644 node_modules/on-headers/LICENSE delete mode 100644 node_modules/on-headers/README.md delete mode 100644 node_modules/on-headers/index.js delete mode 100644 node_modules/on-headers/package.json delete mode 100644 node_modules/opn/index.js delete mode 100644 node_modules/opn/license delete mode 100644 node_modules/opn/package.json delete mode 100644 node_modules/opn/readme.md delete mode 100644 node_modules/opn/xdg-open delete mode 100644 node_modules/parseurl/HISTORY.md delete mode 100644 node_modules/parseurl/LICENSE delete mode 100644 node_modules/parseurl/README.md delete mode 100644 node_modules/parseurl/index.js delete mode 100644 node_modules/parseurl/package.json delete mode 100644 node_modules/pinkie-promise/index.js delete mode 100644 node_modules/pinkie-promise/license delete mode 100644 node_modules/pinkie-promise/package.json delete mode 100644 node_modules/pinkie-promise/readme.md delete mode 100644 node_modules/pinkie/index.js delete mode 100644 node_modules/pinkie/license delete mode 100644 node_modules/pinkie/package.json delete mode 100644 node_modules/pinkie/readme.md delete mode 100644 node_modules/range-parser/HISTORY.md delete mode 100644 node_modules/range-parser/LICENSE delete mode 100644 node_modules/range-parser/README.md delete mode 100644 node_modules/range-parser/index.js delete mode 100644 node_modules/range-parser/package.json delete mode 100644 node_modules/safe-buffer/.travis.yml delete mode 100644 node_modules/safe-buffer/LICENSE delete mode 100644 node_modules/safe-buffer/README.md delete mode 100644 node_modules/safe-buffer/index.js delete mode 100644 node_modules/safe-buffer/package.json delete mode 100644 node_modules/safe-buffer/test.js delete mode 100644 node_modules/send/HISTORY.md delete mode 100644 node_modules/send/LICENSE delete mode 100644 node_modules/send/README.md delete mode 100644 node_modules/send/index.js delete mode 100644 node_modules/send/node_modules/.bin/mime delete mode 100644 node_modules/send/node_modules/.bin/mime.cmd delete mode 100644 node_modules/send/node_modules/mime/LICENSE delete mode 100644 node_modules/send/node_modules/mime/README.md delete mode 100644 node_modules/send/node_modules/mime/build/build.js delete mode 100644 node_modules/send/node_modules/mime/build/test.js delete mode 100644 node_modules/send/node_modules/mime/cli.js delete mode 100644 node_modules/send/node_modules/mime/mime.js delete mode 100644 node_modules/send/node_modules/mime/package.json delete mode 100644 node_modules/send/node_modules/mime/types.json delete mode 100644 node_modules/send/package.json delete mode 100644 node_modules/serve-static/HISTORY.md delete mode 100644 node_modules/serve-static/LICENSE delete mode 100644 node_modules/serve-static/README.md delete mode 100644 node_modules/serve-static/index.js delete mode 100644 node_modules/serve-static/package.json delete mode 100644 node_modules/setprototypeof/LICENSE delete mode 100644 node_modules/setprototypeof/README.md delete mode 100644 node_modules/setprototypeof/index.js delete mode 100644 node_modules/setprototypeof/package.json delete mode 100644 node_modules/statuses/HISTORY.md delete mode 100644 node_modules/statuses/LICENSE delete mode 100644 node_modules/statuses/README.md delete mode 100644 node_modules/statuses/codes.json delete mode 100644 node_modules/statuses/index.js delete mode 100644 node_modules/statuses/package.json delete mode 100644 node_modules/strip-ansi/index.js delete mode 100644 node_modules/strip-ansi/license delete mode 100644 node_modules/strip-ansi/package.json delete mode 100644 node_modules/strip-ansi/readme.md delete mode 100644 node_modules/supports-color/index.js delete mode 100644 node_modules/supports-color/license delete mode 100644 node_modules/supports-color/package.json delete mode 100644 node_modules/supports-color/readme.md delete mode 100644 node_modules/unpipe/HISTORY.md delete mode 100644 node_modules/unpipe/LICENSE delete mode 100644 node_modules/unpipe/README.md delete mode 100644 node_modules/unpipe/index.js delete mode 100644 node_modules/unpipe/package.json delete mode 100644 node_modules/utils-merge/.npmignore delete mode 100644 node_modules/utils-merge/LICENSE delete mode 100644 node_modules/utils-merge/README.md delete mode 100644 node_modules/utils-merge/index.js delete mode 100644 node_modules/utils-merge/package.json delete mode 100644 node_modules/vary/HISTORY.md delete mode 100644 node_modules/vary/LICENSE delete mode 100644 node_modules/vary/README.md delete mode 100644 node_modules/vary/index.js delete mode 100644 node_modules/vary/package.json delete mode 100644 package-lock.json mode change 100644 => 100755 page/0archives.html mode change 100644 => 100755 page/1category.html mode change 100644 => 100755 page/2tags.html mode change 100644 => 100755 page/3collections.md create mode 100755 page/3demo.html mode change 100644 => 100755 page/4about.md diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README-zh-cn.md b/README-zh-cn.md old mode 100644 new mode 100755 index a6cb2782..dc90a5b7 --- a/README-zh-cn.md +++ b/README-zh-cn.md @@ -323,6 +323,9 @@ Configuration file: E:/GitWorkSpace/blog/_config.yml 感谢捐赠的小伙伴!!! +* 2017.07.02 收到 微信用户 ¥9.99 +* 2017.06.20 收到 微信用户 ¥2.22 +* 2017.06.19 收到 微信用户 ¥6.66 * 2017.05.25 收到 微信用户 ¥1.00 * 2017.05.19 收到 风之筝 ¥6.66 * 2017.05.16 收到 张驰 ¥6.00 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 3bb3b28c..bf8fe500 --- a/README.md +++ b/README.md @@ -312,6 +312,9 @@ You can also donate me for a coffee, and I'll do better. Thanks. Thanks these friends!!! +* 2017.07.02 received Wechat user ¥9.99 +* 2017.06.20 received Wechat user ¥2.22 +* 2017.06.19 received Wechat user ¥6.66 * 2017.05.25 received Wechat user ¥1.00 * 2017.05.19 received 风之筝 ¥6.66 * 2017.05.16 received 张驰 ¥6.00 diff --git a/_config.yml b/_config.yml old mode 100644 new mode 100755 index f6a226c9..365d819b --- a/_config.yml +++ b/_config.yml @@ -6,61 +6,44 @@ # 'jekyll serve'. If you change this file, please restart the server process. # Site settings -title: "徐士杰的技术专栏" -brief-intro: "System Research" +title: HyG +brief-intro: Front-end Dev Engineer baseurl: "" # the subpath of your site, e.g. /blog -url: "https://xushijie10086.github.io" # the base hostname & protocol for your site +url: "https://gaohaoyang.github.io" # the base hostname & protocol for your site permalink: /:year/:month/:day/:title/ # other links -twitter_username: #gaohaoyang126 -facebook_username: #gaohaoyang.water -github_username: xushijie10086 -email: shijie10086@163.com -weibo_username: none -zhihu_username: 徐士杰 -linkedIn_username: none -dribbble_username: none +twitter_username: gaohaoyang126 +facebook_username: gaohaoyang.water +github_username: Gaohaoyang +email: gaohaoyang126@126.com +weibo_username: 3115521wh +zhihu_username: gaohaoyang +linkedIn_username: gaohaoyang +dribbble_username: -description_footer: 来自徐士杰的个人专栏! +description_footer: 本站记录我前端之旅的沿途风景! # comments # two ways to comment, only choose one, and use your own short name # 两种评论插件,选一个就好了,使用自己的 short_name -# duoshuo_shortname: xyao #hygblog -# disqus_shortname: #gaohaoyang -# using Gitalk -gitalk: - enable: true #是否开启Gitalk评论 - clientID: 52bbb620d9680fd85254 #生成的clientID - clientSecret: d92cec378527800b0816d1bdd26dc71eb5dd0ccd #生成的clientSecret - repo: xushijie10086.github.io #仓库名称 - owner: xushijie10086 #github用户名 - admin: xushijie10086 - distractionFreeMode: true #是否启用类似FB的阴影遮罩 +duoshuo_shortname: #hygblog +disqus_shortname: gaohaoyang # statistic analysis 统计代码 # 百度统计 id,将统计代码替换为自己的百度统计id,即 # hm.src = "//hm.baidu.com/hm.js?xxxxxxxxxxxx"; # xxxxx字符串 -# baidu_tongji_id: 1cc1fc4b4b456bf7c99ce80aec5bf009 -google_analytics_id: UA-126298955-1 # google 分析追踪id -ga_domain: auto - -friends: [ - { - title: "Linkedin - Shijie Xu", - href: "https://www.linkedin.com/in/%E4%BF%A1-%E5%A7%9A-947492167/" - } -] +baidu_tongji_id: cf8506e0ef223e57ff6239944e5d46a4 +google_analytics_id: UA-72449510-4 # google 分析追踪id # Build settings markdown: kramdown kramdown: input: GFM - syntax_highlighter: pygments + syntax_highlighter: rouge # port # port: 1234 @@ -73,6 +56,5 @@ tag_dir: tag/ excerpt_separator: "\n\n\n\n" # paginate -plugins: [jekyll-paginate] +gems: [jekyll-paginate] paginate: 6 -port: 4001 diff --git a/_drafts/ES2015-note.md b/_drafts/ES2015-note.md old mode 100644 new mode 100755 diff --git a/_drafts/WebSocket.md b/_drafts/WebSocket.md old mode 100644 new mode 100755 diff --git a/_drafts/threeJS-light-shadow.md b/_drafts/threeJS-light-shadow.md old mode 100644 new mode 100755 diff --git a/_includes/backToTop.html b/_includes/backToTop.html old mode 100644 new mode 100755 diff --git a/_includes/category.html b/_includes/category.html old mode 100644 new mode 100755 diff --git a/_includes/comments.html b/_includes/comments.html old mode 100644 new mode 100755 diff --git a/_includes/footer.html b/_includes/footer.html old mode 100644 new mode 100755 index 3677ef0a..2a2ce79e --- a/_includes/footer.html +++ b/_includes/footer.html @@ -30,4 +30,4 @@

- + diff --git a/_includes/head.html b/_includes/head.html old mode 100644 new mode 100755 diff --git a/_includes/header.html b/_includes/header.html old mode 100644 new mode 100755 diff --git a/_includes/previousAndNext.html b/_includes/previousAndNext.html old mode 100644 new mode 100755 diff --git a/_includes/tag.html b/_includes/tag.html old mode 100644 new mode 100755 diff --git a/_layouts/default.html b/_layouts/default.html old mode 100644 new mode 100755 diff --git a/_layouts/demo.html b/_layouts/demo.html old mode 100644 new mode 100755 diff --git a/_layouts/page.html b/_layouts/page.html old mode 100644 new mode 100755 diff --git a/_layouts/post.html b/_layouts/post.html old mode 100644 new mode 100755 index 011f589a..a8ea8f68 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -15,9 +15,7 @@

{{page.title}}

{% if page.author %}{{ page.author }} {% endif %}
-
-

阅读:

-
+
{% if page.meta %}{{ page.meta }} {% endif %}
@@ -65,27 +63,31 @@

Similar Posts

{% endif %} {% include previousAndNext.html %} - - {% if site.gitalk.enable %} - - - -
- - {% endif %} - +

Comments

+ {% include comments.html %} + + + + +
+ + + +``` + +其中 testData.js 是测试用例,代码如下 + +```js +var result = function() { + //以下为多组测试数据 + var cases = [{ + arr1: [1, true, null], + arr2: [null, false, 100], + expect: true + }, { + arr1: [ + function() {}, + 100 + ], + arr2: [100, {}], + expect: false + }, { + arr1: [null, 999], + arr2: [{}, + 444 + ], + expect: false + }, { + arr1: [window, 1, true, new Date(), "hahaha", (function() {}), undefined], + arr2: [undefined, (function() {}), "okokok", new Date(), false, 2, window], + expect: true + }, { + arr1: [new Date()], + arr2: [{}], + expect: false + }, { + arr1: [window], + arr2: [{}], + expect: false + }, { + arr1: [undefined, 1], + arr2: [null, 2], + expect: false + }, { + arr1: [new Object, new Object, new Object], + arr2: [{}, {}, + null + ], + expect: false + }, { + arr1: null, + arr2: null, + expect: false + }, { + arr1: [], + arr2: undefined, + expect: false + }, { + arr1: "abc", + arr2: "cba", + expect: false + }]; + + //使用for循环, 通过arraysSimilar函数验证以上数据是否相似,如相似显示“通过”,否则"不通过",所以大家要完成arraysSimilar函数,具体要求,详见任务要求。 + for (var i = 0; i < cases.length; i++) { + if (arraysSimilar(cases[i].arr1, cases[i].arr2) !== cases[i].expect) { + document.write("不通过!case" + (i + 1) + "不正确!arr1=" + JSON.stringify(cases[i].arr1) + ", arr2=" + JSON.stringify(cases[i].arr2) + " 的判断结果不是" + cases[i].expect); + return false; + } + } + return true; + +}(); +document.write("判定结果:" + (result ? "通过" : "不通过")); +``` + +--- + +## 解答 + +各位读者在看解答前也可以自己考虑一下,看看咱们的想法是否一致,期待您在本文的留言。 + +--- + +### 思路 + +通过观察测试用例,可以发现,最后三个用例有不是数组的。所以我们可以先判断传入的参数是否是数组。 +又因为题目中要求数组长度必须一致,这也是第二个限制条件。 +最后再区分具体的类型。 + +理清思路我们可以分为以下步骤: + +1. 判断传入的参数是否为数组 (使用 `instanceof` 方法) +2. 检查两个数组长度是否一致 +3. 分别判断数组内元素的基本数据类型 (使用 `typeof` 方法) +4. 因为 `typeof` 只能检查基本数据类型,对于 `null`, `Date`, `window` 返回的都是 `object`,所以使用 `Object.prototype.toString.apply()` 来检查这些对象类型,其返回值为:`'[object Null]'`, `'[object Date]'`, `'[object global]'` +5. 分别比较每个数组内元素的各种类型的个数,如果都相等,那么这两个数组是相似的。 + +### 具体实现代码 + +JavaScript代码如下 + +```js +/** + * ===================================================== + * 请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似。具体需求: + * 1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。 + * 2. 数组的长度一致。 + * 3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window. + * + * 当以上全部满足,则返回"判定结果:通过",否则返回"判定结果:不通过"。 + * ===================================================== + */ + +/* +* param1 Array +* param2 Array +* return true or false +*/ +function arraysSimilar(arr1, arr2){ + if (arr1 instanceof Array && arr2 instanceof Array ) { //先判断传入的是否是数组 + if (arr1.length == arr2.length) { //判断数组长度 + console.log("same-length"); + console.log(arr1); + console.log(arr2); + //开始判断数组内部是否相似 + return sameLengthArraysSimilar(arr1, arr2); + } else{ + //两个数组长度不同返回false + return false; + } + } else { + //传入的参数不是数组返回false + return false; + } +} + +/** + * 判断两个等长的数组内部是否相似 + * 遍历数组 + * arr1中元素各种类型出现的个数是否和arr2中元素各种类型出现的个数相同 + * @param {Array} arr1 数组1 + * @param {Array} arr2 数组2 + * @return {true,false} + */ +function sameLengthArraysSimilar(arr1,arr2) { + var numInArr1 = 0; + var numInArr2 = 0; + var booleanInArr1 = 0; + var booleanInArr2 = 0; + var funInArr1 = 0; + var funInArr2 = 0; + var undefinedInArr1 = 0; + var undefinedInArr2 = 0; + var stringInArr1 = 0; + var stringInArr2 = 0; + var nullInArr1 = 0; + var nullInArr2 = 0; + var dateInArr1 = 0; + var dateInArr2 = 0; + var windowInArr1 = 0; + var windowInArr2 = 0; + + for (var i = 0; i < arr1.length; i++) { + if(typeof arr1[i] === 'number' ){ + numInArr1 ++; + } else if(typeof arr1[i] === 'boolean'){ + booleanInArr1 ++; + } else if(typeof arr1[i] === 'function'){ + funInArr1 ++; + } else if(typeof arr1[i] === 'undefined'){ + undefinedInArr1 ++; + } else if(typeof arr1[i] === 'string'){ + stringInArr1 ++; + } else if(typeof arr1[i] ==='object'){ + if(Object.prototype.toString.apply(arr1[i]) === '[object Null]'){ + nullInArr1 ++; + } else if(Object.prototype.toString.apply(arr1[i]) === '[object Date]'){ + dateInArr1 ++; + } else if(Object.prototype.toString.apply(arr1[i]) === '[object global]'){ + windowInArr1 ++; + } + } + + if(typeof arr2[i] === 'number'){ + numInArr2 ++; + } else if(typeof arr2[i] === 'boolean'){ + booleanInArr2 ++; + } else if(typeof arr2[i] === 'function'){ + funInArr2 ++; + } else if(typeof arr2[i] === 'undefined'){ + undefinedInArr2 ++; + } else if(typeof arr2[i] === 'string'){ + stringInArr2 ++; + } else if(typeof arr2[i] ==='object'){ + if(Object.prototype.toString.apply(arr2[i]) === '[object Null]'){ + nullInArr2 ++; + } else if(Object.prototype.toString.apply(arr2[i]) === '[object Date]'){ + dateInArr2 ++; + } else if(Object.prototype.toString.apply(arr2[i]) === '[object global]'){ + windowInArr2 ++; + } + } + } + + console.log("num---"+numInArr1); + console.log("num---"+numInArr2); + console.log("boo---"+booleanInArr1); + console.log("boo---"+booleanInArr2); + console.log("null---"+nullInArr1); + console.log("null---"+nullInArr2); + console.log("window---"+windowInArr1); + console.log("window---"+windowInArr2); + console.log("date---"+dateInArr1); + console.log("date---"+dateInArr2); + console.log("string---"+stringInArr1); + console.log("string---"+stringInArr2); + console.log("fun---"+funInArr1); + console.log("fun---"+funInArr2); + console.log("undefined---"+undefinedInArr1); + console.log("undefined---"+undefinedInArr2); + + if(numInArr1 == numInArr2 && booleanInArr1==booleanInArr2 && funInArr1==funInArr2 && undefinedInArr1==undefinedInArr2 && stringInArr1==stringInArr2 && nullInArr1==nullInArr2 && dateInArr1==dateInArr2 && windowInArr1==windowInArr2){ + console.log('================================true'); + return true; + }else{ + console.log('================================false'); + return false; + } +} +``` + +## 总结 + +* 上述代码完美的跑完所有的测试用例,读者 [点击这里查看结果](http://gaohaoyang.github.io/javascript-test/arraysSimilar/),并且可以按 `f12` 看 Console 信息, 里面有代码的执行过程。 +* 当然你也可以复制本文的 JavaScript 代码,在 [慕课网的习题](http://imooc.com/code/5760) 下跑一下,也可以看到 `判定结果:通过` 的结果 +* 完整源代码在我的 GitHub [javascript-test/arraysSimilar/](https://github.com/Gaohaoyang/javascript-test/tree/master/arraysSimilar) 仓库中 +* 其实我的代码逻辑并不复杂,有点**空间换时间**的感觉,执行效率应该是较高的。没有用 JavaScript 封装的任何函数,完全是自己写的。其实代码除去 `console.log()` 也并没有多少行。 +* 各位读者有什么好的想法欢迎留言交流! diff --git a/_posts/2015-04-12-Syncing-a-fork.md b/_posts/2015-04-12-Syncing-a-fork.md new file mode 100755 index 00000000..b202d64e --- /dev/null +++ b/_posts/2015-04-12-Syncing-a-fork.md @@ -0,0 +1,94 @@ +--- +layout: post +title: "同步一个 fork" +date: 2015-04-12 15:14:54 +categories: GitHub +tags: GitHub 同步 fork +--- + +* content +{:toc} + +fork 了别人的仓库后,原作者又更新了仓库,如何将自己的代码和原仓库保持一致?本文将给你解答。 + + + + + +## 如何使用搜索引擎 + +其实这个问题并不难,我又被坑了。百度搜的东西不靠谱啊,以后这种问题一定要用**英文**在 [Google](http://www.google.com) 或者 [Bing](http://cn.bing.com/) 上搜索,这样才能搜到原汁原味的答案。就当是一个教训吧。 + +搜索 fork sync,就可以看到 GitHub 自己的帮助文档 [Syncing a fork](https://help.github.com/articles/syncing-a-fork/) 点进去看这篇的时候,注意到有一个 Tip: Before you can sync your fork with an upstream repository, you must [configure a remote that points to the upstream repository](https://help.github.com/articles/configuring-a-remote-for-a-fork/) in Git. + +根据这两篇文章,问题迎刃而解! + +## 具体方法 + +### Configuring a remote for a fork + +* 给 fork 配置一个 remote + +* 主要使用 `git remote -v` 查看远程状态。 + +``` +git remote -v +# origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) +# origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) +``` + +* 添加一个将被同步给 fork 远程的上游仓库 + +``` +git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git +``` + + +* 再次查看状态确认是否配置成功。 + +``` +git remote -v +# origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) +# origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) +# upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) +# upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push) +``` + +### Syncing a fork + +* 从上游仓库 fetch 分支和提交点,传送到本地,并会被存储在一个本地分支 upstream/master +`git fetch upstream` + +``` +git fetch upstream +# remote: Counting objects: 75, done. +# remote: Compressing objects: 100% (53/53), done. +# remote: Total 62 (delta 27), reused 44 (delta 9) +# Unpacking objects: 100% (62/62), done. +# From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY +# * [new branch] master -> upstream/master +``` + +* 切换到本地主分支(如果不在的话) +`git checkout master` + +``` +git checkout master +# Switched to branch 'master' +``` + +* 把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。 +`git merge upstream/master` + +``` +git merge upstream/master +# Updating a422352..5fdff0f +# Fast-forward +# README | 9 ------- +# README.md | 7 ++++++ +# 2 files changed, 7 insertions(+), 9 deletions(-) +# delete mode 100644 README +# create mode 100644 README.md +``` + +* 如果想更新到 GitHub 的 fork 上,直接 `git push origin master` 就好了。 diff --git a/_posts/2015-04-15-baidu-ife-1.md b/_posts/2015-04-15-baidu-ife-1.md new file mode 100755 index 00000000..c16211b1 --- /dev/null +++ b/_posts/2015-04-15-baidu-ife-1.md @@ -0,0 +1,847 @@ +--- +layout: post +title: "百度Web前端技术学院(1)-HTML, CSS基础" +date: 2015-04-15 19:06:05 +categories: HTML CSS +tags: Baidu ife HTML CSS task +--- + +* content +{:toc} + +百度前端学院的第一次任务笔记,HTML、CSS 基础。主要有 CSS 工作原理,选择器的使用,常用属性,行高属性,盒模型与定位,最后根据设计图实现4个页面。 + + + + +## 任务 + +**任务:** [HTML、CSS基础](https://github.com/Gaohaoyang/ife/tree/master/task/task0001) + +有人问到提交作业 fork 同步的问题,真心觉得官方 GitHub 的帮助文档讲的很好,我上一篇博客 [同步一个 fork](http://gaohaoyang.github.io/2015/04/12/Syncing-a-fork/) 就是翻译的这个官方文档,如果懒得看英文可以参考我的博客。 + + +写点东西记录一下我的做题过程吧。 + + +## CSS 如何工作 + +[CSS 如何工作](https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_started/How_CSS_works) Mozilla 的开发者文档讲的很好。 + +> 浏览器在展现一个文档的时候,必须要把文档内容和相应的样式信息结合起来展示。 这个处理过程一般分两个阶段: +> +> 1. 浏览器先将标记语言和 CSS 转换成 DOM (文档对象模型)结构。 这时 DOM 就代表了电脑内存中的相应文档,因为它已经融合了文档内容和相应的样式表。 +> 2. 最后浏览器把 DOM 的内容展示出来。 + + +## 层叠和继承 + +[参考资料: 层叠和继承](https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance) + +> 对于层叠来说,共有三种主要的样式来源: +> +> * 浏览器对HTML定义的默认样式。 +> * 用户定义的样式。 +> * 开发者定义的样式,可以有三种形式: +> +> * 定义在外部文件(外链样式):本教程中案例主要是通过这种形式定义样式。 +> * 在页面的头部定义(内联样式):通过这种形式定义的样式只在本页面内生效。 +> * 定义在特定的元素身上(行内样式):这种形式多用于测试,可维护性较差。 +> +> 用户定义的样式表会覆盖浏览器定义的默认样式,然后网页开发者定义的样式又会覆盖用户样式。 +> +> 再来看看优先级,从高到低依次为:网页开发者定义的样式、网页阅读者定义的样式、浏览器的默认样式。 +> +> 对继承的元素来说,子元素自身的样式优先级高于从父级继承来的样式。 +> +> > 更多细节 +> > CSS 另外提供了一个 !important 关键字,用户可以通过使用这个关键字使自己定义的样式覆盖掉开发者定义的样式。 +> > 这就意味着,作为开发者,你很难准确的预知页面最终在用户电脑上的显示效果。 + + +## 选择器 + +[参考资料:选择器(Selectors)](https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_Started/Selectors) + + +### 标签选择器 + + +### 类选择器(Class selectors) + +> 通过设置元素的 class 属性,可以为元素指定类名。类名由开发者自己指定。 文档中的多个元素可以拥有同一个类名。 +> +> 在写样式表时,类选择器是以英文句号(.)开头的。 + + +### ID选择器(ID selectors) + +> 通过设置元素的 id 属性为该元素制定ID。ID名由开发者指定。每个ID在文档中必须是唯一的。 +> +> 在写样式表时,ID选择器是以#开头的。 + + +### 优先级 + +> * 如果多余一个规则指定了相同的属性值都应用到一个元素上,CSS规定拥有更高确定度的选择器优先级更高。ID选择器比类选择器更具确定度, 而类选择器比标签选择器(tag selector)更具确定度。 +> * 如果样式中包含冲突的规则,且它们具有相同的确定度。那么,后出现的规则优先级高。 +> * 如果你遇到规则冲突,你可以增加其中一条的确定度或将之移到后面以使它具有更高优先级。 + + +### 伪类选择器(Pseudo-classes selectors) + + +### 基于关系的选择器 + +选择器 |选择的元素 +A E |任何是元素A的后代元素E (后代节点指A的子节点,子节点的子节点,以此类推) +A > E |任何元素A的子元素 +E:first-child |任何元素的第一个子元素E +B + E |任何元素B的下一个兄弟元素E + + +## 其他属性 + +### `text-indent` + +**定义和用法** +text-indent 属性规定文本块中首行文本的缩进。 +注释:允许使用负值。如果使用负值,那么首行会被缩进到左边。 + +**可能的值** + +值 |描述 +length |定义固定的缩进。默认值:0。 +% |定义基于父元素宽度的百分比的缩进。 +inherit |规定应该从父元素继承 text-indent 属性的值。 + + +### `text-transform` + +**定义和用法** +text-transform 属性控制文本的大小写。 + +**说明** +这个属性会改变元素中的字母大小写,而不论源文档中文本的大小写。如果值为 capitalize,则要对某些字母大写,但是并没有明确定义如何确定哪些字母要大写,这取决于用户代理如何识别出各个“词”。 + +**可能的值** + +值 |描述 +none |默认。定义带有小写字母和大写字母的标准的文本。 +capitalize |文本中的每个单词以大写字母开头。 +uppercase |定义仅有大写字母。 +lowercase |定义无大写字母,仅有小写字母。 +inherit |规定应该从父元素继承 text-transform 属性的值。 + + +### `text-decoration` + +**定义和用法** +text-decoration 属性规定添加到文本的修饰。 +注释:修饰的颜色由 "color" 属性设置。 +注释:IE、Chrome 或 Safari 不支持 "blink" 属性值。 + +**说明** +这个属性允许对文本设置某种效果,如加下划线。如果后代元素没有自己的装饰,祖先元素上设置的装饰会“延伸”到后代元素中。不要求用户代理支持 blink。 + + +### `text-align` + +**定义和用法** +text-align 属性规定元素中的文本的水平对齐方式。 +该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。通过允许用户代理调整行内容中字母和字之间的间隔,可以支持值 justify;不同用户代理可能会得到不同的结果。 + +**可能的值** + +值 |描述 +left |把文本排列到左边。默认值:由浏览器决定。 +right |把文本排列到右边。 +center |把文本排列到中间。 +justify |实现两端对齐文本效果。 +inherit |规定应该从父元素继承 text-align 属性的值。 + + +### `word-spacing` + +**定义** +word-spacing 属性增加或减少单词间的空白(即字间隔)。 +该属性定义元素中字之间插入多少空白符。针对这个属性,“字” 定义为由空白符包围的一个字符串。如果指定为长度值,会调整字之间的通常间隔;所以,normal 就等同于设置为 0。允许指定负长度值,这会让字之间挤得更紧。 +注释:允许使用负值。 + + +### `white-space` + +**定义和用法** +white-space 属性设置如何处理元素内的空白。 +这个属性声明建立布局过程中如何处理元素中的空白符。值 pre-wrap 和 pre-line 是 CSS 2.1 中新增的。 + +**可能的值** + +值 |描述 +normal |默认。空白会被浏览器忽略。 +pre |空白会被浏览器保留。其行为方式类似 HTML 中的 `
` 标签。
+nowrap    |文本不会换行,文本会在在同一行上继续,直到遇到 `
` 标签为止。 +pre-wrap |保留空白符序列,但是正常地进行换行。 +pre-line |合并空白符序列,但是保留换行符。 +inherit |规定应该从父元素继承 white-space 属性的值。 + + +### `@font-face` + +**CSS3 @font-face 规则** +在 CSS3 之前,web 设计师必须使用已在用户计算机上安装好的字体。 +通过 CSS3,web 设计师可以使用他们喜欢的任意字体。 +当您您找到或购买到希望使用的字体时,可将该字体文件存放到 web 服务器上,它会在需要时被自动下载到用户的计算机上。 +您“自己的”的字体是在 CSS3 @font-face 规则中定义的。 + +注释:Internet Explorer 8 以及更早的版本不支持新的 @font-face 规则。Internet Explorer 9+ 支持新的 @font-face 规则,但是仅支持 .eot 类型的字体 (Embedded OpenType)。 + +**使用您需要的字体** +在新的 @font-face 规则中,您必须首先定义字体的名称(比如 myFirstFont),然后指向该字体文件。 +如需为 HTML 元素使用字体,请通过 font-family 属性来引用字体的名称 (myFirstFont): + +**实例** + +```css +@font-face { + font-family: myFirstFont; + src: url('Sansation_Light.ttf'), + url('Sansation_Light.eot'); /* IE9+ */ +} +div { + font-family: myFirstFont; +} +``` + +**CSS3 字体描述符** + +下面的表格列出了能够在 @font-face 规则中定义的所有字体描述符: + +描述符 |值 |描述 +font-family |name |必需。规定字体的名称。 +src |URL |必需。定义字体文件的 URL。 +font-stretch |normal
condensed
ultra-condensed
extra-condensed
semi-condensed
expanded
semi-expanded
extra-expanded
ultra-expanded|可选。定义如何拉伸字体。默认是 "normal"。 +font-style|ormal
italic
oblique|可选。定义字体的样式。默认是 "normal"。 +font-weight|normal
bold
100
200
300
400
500
600
700
800
900|选。定义字体的粗细。默认是 "normal"。 +unicode-range |unicode-range |可选。定义字体支持的 UNICODE 字符范围。默认是 "U+0-10FFFF"。 + + +## 深入了解行高属性 + +[参考:深入了解css的行高Line Height属性](http://www.cnblogs.com/fengzheng126/archive/2012/05/18/2507632.html) + +一般来说,设置行高为`值:纯数字`是最理想的方式,因为其会随着对应的 `font-size` 而缩放。 + + +## 盒模型及定位 + +### 已知宽度的div居中 + +* 用两种方法来实现一个背景色为红色、宽度为960px的
在浏览器中居中 + +我的方法一: + +使用 `margin:0 auto;` + +html文件 + +```html + + + + + Document + + + +
aaa
+ + +``` + +css文件 + +```css +.center { + width: 960px; + margin: 0 auto; + background-color: red; +} +``` + +方法二: + +绝对定位,左边距离 body 50%,`margin-left: -480px` + +```css +.center { + width: 960px; + background-color: red; + position: absolute; + left: 50%; + margin-left: -480px; +} +``` + +[Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/task0001-2.html) + +#### 对于居中的补充 + +参考自 [学习CSS布局](http://zh.learnlayout.com/)。 + +像下面这样写css代码,使用 `max-width` 替代 `width` 可以使浏览器更好地处理小窗口的情况。这点在移动设备上显得尤为重要。 + +有效的避免了如下问题: +当浏览器窗口比元素的宽度还要窄时,浏览器会显示一个水平滚动条来容纳页面。 + +```css +#main { + max-width: 600px; + margin: 0 auto; +} +``` + +* [CSS布局奇淫技巧之--各种居中](http://www.cnblogs.com/2050/p/3392803.html) + + +### 早期css滑动门 + +* 有的圆角矩形是复杂图案,无法直接用border-radius,请在不使用 border-radius 的情况下实现一个可复用的高度和宽度都自适应的圆角矩形 +示例 ![圆角矩形](http://7q5cdt.com1.z0.glb.clouddn.com/Baidu-Front-end-task0001_7.png) + +这道题我一开始不会做,查阅了资料,发现这就是所谓的 css 滑动门的应用。[妙味云课堂之css:滑动门、圆角、css精灵](http://www.bkjia.com/webzh/759711.html) +使用三层嵌套,或者四层嵌套的 `div`,通过背景图定位等方式可以实现。 + + +### 左侧固定右侧自适应宽度的两列布局 + +* 用两种不同的方法来实现一个两列布局,其中左侧部分宽度固定、右侧部分宽度随浏览器宽度的变化而自适应变化 ![pic](http://7q5cdt.com1.z0.glb.clouddn.com/Baidu-Front-end-task0001_3.jpg) + +我的方法一: + +不使用浮动,使用绝对定位,将左上角的块放好位置,右边的块设置`margin-left` + +html 文件: + +```html + + + + + layout + + + +
+
DIV-A
+
DIV-B
+
+
DIV-C
+ + +``` + +css 文件: + +```css +.row { + position: relative; +} +.left { + width: 100px; + height: 100px; + background-color: red; + position: absolute; + top: 0; + left: 0; +} +.right { + height: 100px; + background-color: blue; + margin-left: 100px; +} +.bottom { + height: 100px; + background-color: yellow; +} +``` + +方法二: + +使用浮动,左边的块使用浮动,右边的块使用`margin-left` + +```css +.left { + width: 100px; + height: 100px; + background-color: red; + float: left; +} +.right { + height: 100px; + background-color: blue; + margin-left: 100px; +} +.bottom { + height: 100px; + background-color: yellow; +} +``` + +[Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/task0001-6-3.html) + + +**补充:** + +看完了后面的 BFC 之后,本题和下一题都可以用另一种方法了 +总之我已经震惊了!太爽了!有没有! + +html + +```html + + + + + 使用 BFC 进行两列布局 + + + +
DIV-A
+
DIV-B
+
DIV-C
+ + +``` + +css + +```css +.left{ + width: 100px; + height: 100px; + background-color: blue; + float: left; +} +.right{ + height: 100px; + background-color: yellow; + overflow: hidden; +} +.bottom{ + height: 100px; + background-color: red; +} +``` + +[Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/two-col-layout-with-BFC.html) + + +### 双飞翼布局 + +* 用两种不同的方式来实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化 + +原题中参考资料 [双飞翼布局](http://www.imooc.com/wenda/detail/254035) + +```html + + + + + Flying Swing Layout + + + +
+
+
+

Flying Swing Layout

+
+
+
+

Flying Swing Layout

+ left +
+
+

Flying Swing Layout

+ right +
+
+ + +``` + +css + +```css +.bd { + + /*padding: 0 190px;*/ +} +.main { + float: left; + width: 100%; + background-color: #aaa; +} +.main-wrap { + margin: 0 190px; +} +.sub { + float: left; + width: 190px; + margin-left: -100%; + background-color: blue; + /*position: relative; + left: -190px;*/ +} +.extra { + float: left; + width: 190px; + margin-left: -190px; + background-color: yellow; + /*position: relative; + right: -190px;*/ +} +``` + +[Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/task0001-6-4.html) + + +**补充:** + +使用 BFC 的另一种方法,我再一次震惊! + +代码超级简单! + +html + +```html + + + + + flying-Swing-BFC + + + +
left
+
right
+
+ flying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.htmlflying-Swing-BFC.html +
+ + + +``` + +css + +```css +.left{ + width: 100px; + background-color: red; + float: left; +} +.right{ + width: 200px; + background-color: blue; + float: right; +} +.main{ + background-color: #eee; + overflow: hidden; +} +``` +[Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/flying-Swing-BFC.html) + + +### 浮动布局 + +* 实现一个浮动布局,红色容器中每一行的蓝色容器数量随着浏览器宽度的变化而变化 ![pic](http://7q5cdt.com1.z0.glb.clouddn.com/Baidu-Front-end-task0001_4.jpg)![pic](http://7q5cdt.com1.z0.glb.clouddn.com/Baidu-Front-end-task0001_5.jpg) + +这个题我觉的直接将每一个块浮动起来就好了,不知我理解的对不对。 + +html文件 + +```html + + + + + Document + + + +
+
+
+
+
+
+
+
+
+ + +``` + +css文件 + +```css +body { + background-color: red; +} +div { + width: 150px; + height: 100px; + margin: 10px; + float: left; + background-color: blue; +} +``` + +[Demo](file:///E:/GitWorkSpace/baidu-ife-practice/task0001/task0001-6-5.html) + + +### 清除浮动/闭合浮动 + +参考自 [那些年我们一起清除过的浮动 by 一丝冰凉](http://www.iyunlu.com/view/css-xhtml/55.html) + +1. 清除浮动:清除对应的单词是 clear,对应CSS中的属性是 clear:left \| right \| both \| none; +2. 闭合浮动:更确切的含义是使浮动元素闭合,从而减少浮动带来的影响。 + +我们想要达到的效果更确切地说是闭合浮动,而不是单纯的清除浮动,设置clear:both清除浮动并不能解决warp高度塌陷的问题。 + +正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为0(**高度塌陷**)。在实际布局中,往往这并不是我们所希望的,所以需要闭合浮动元素,使其包含框表现出正常的高度。 + +最后一丝姐给了两个精益求精方案,我觉得方案一更易于理解,这里实践一下: + +[闭合浮动的Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/close-float.html) + +下面是源码 + +html + +```html + + + + + Document + + + +
+
+

left

+
Content or Something
+
+
right
+
+
Row2
+ + +``` + +css + +```css +.row { + border: 1px solid red; +} +.clearfix:after { + content: "\200B"; + display: block; + height: 0; + clear: both; +} +.clearfix { + *zoom: 1; +} +.left { + width: 200px; + float: left; + background-color: #eee; +} +.right { + width: 200px; + float: right; + background-color: #eee; +} +.row2 { + width: 600px; + height: 50px; + background-color: #aaa; +} +``` + +其中`*zoom: 1`是为了触发`hasLayout` + + +还有另一种解决方案! + +参考自:[清除浮动(clearfix hack)](http://zh.learnlayout.com/clearfix.html) + +直接使用,如下代码即可 + +```css +.clearfix{ + overflow: auto; + zoom: 1; +} +``` + +[Demo](http://gaohaoyang.github.io/baidu-ife-practice/task0001/close-float-2.html) + +(实际上,我看完后面的资料,再翻到这里就明白了!正是使用了BFC原理!!!!!!!) + + +**但是今天遇到一个坑!** + +如果使用了 `over-flow`,在后面如果有元素要绝对布局在父元素的外面的,意思就是出现 `top`, `bottom`, `left`, `right` 的值为负值时,就会出现看不到,或者滚动条的问题! + +若是有这种要求,我觉得还是用一丝姐姐的解决方案比较好。 + +**参考** + +* [清除浮动的几种方法](http://zfengqi.me/?p=87) + + +### `box-sizing` + +当你设置一个元素为 `box-sizing: border-box;` 时,此元素的内边距和边框不再会增加它的宽度。 + +他们的内边距和边框都是向内的挤压的。支持IE8+,需要加浏览器内核。 + +```css +.simple { + width: 500px; + margin: 20px auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +``` + + +### 响应式布局 + +媒体查询 + +* [MDN CSS媒体查询](https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Media_queries) +* [媒体查询-学习CSS布局](http://zh.learnlayout.com/media-queries.html) + + `@media screen and (min-width: 500px) and (max-width: 800px) { ... }` + +* [An Introduction to Meta Viewport and @viewport](https://dev.opera.com/articles/an-introduction-to-meta-viewport-and-viewport/) + + +### 多列布局 + +* [column](http://zh.learnlayout.com/column.html) + + +### BFC 和 IE 的 hasLayout + +* [BFC和IE的hasLayout](http://www.cnblogs.com/pigtail/archive/2013/01/23/2871627.html) +* [Block Formatting Context 的几大用处](http://outofmemory.cn/wr/?u=http%3A%2F%2Fkkeys.me%2Fpost%2F68547473290) + +看完这个资料后我震惊了!竟然可以这么玩儿! +我将本文之前提到的两列布局,双飞翼布局又重新写了一遍!太爽了!代码超级简洁! + +**Block Formatting Context 的几大用处:** + +1. 防止 margin 折叠 +1. 清除float +1. 不会环绕float元素 + +相关资料 + +* [视觉格式化模型(visual formatting model)](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Visual_formatting_model) +* [块格式化上下文(block formatting context)](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Block_formatting_context) + + +### `div` 三列等高 + +[纯CSS实现三列DIV等高布局](http://show.sysu.edu.cn/?action-blogdetail-uid-2383-id-5040) + +最关键的地方有3句: + +最外层div设置一个溢出隐藏 + +```css +#wrap { + overflow:hidden; +} +``` + +每一个子块设置 padding 和 margin + +```css +#left,#center,#right{ + margin-bottom:-10000px; + padding-bottom:10000px; +} +``` + +overflow:hidden; '隐藏溢出。如果内容溢出wrap层,则不显示。 + +margin-bottom:-10000px; '底部边距-10000px。 +padding-bottom:10000px; '底部填充10000px。 +上面这两句能够实现的效果就是,产生10000px的填充,然后用负的边距把它给抵销掉。 + + +### 去除inline-block元素间间距 + +一开始我不知道是因为使用了 `display: inline-block` 会有间距。后来查找资料找到了相关的方案。 + +* [去除inline-block元素间间距的N种方法](http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-%E5%8E%BB%E9%99%A4%E9%97%B4%E8%B7%9D/) +* [Fighting the Space Between Inline Block Elements](https://css-tricks.com/fighting-the-space-between-inline-block-elements/) + +真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距。 +这种表现是符合规范的应该有的表现。 + +解决方法有很多,上述博文中提到的有: + +1. 移除空格 +2. 使用 `margin` 负值 +3. 取消闭合标签 +4. 使用 `font-size: 0` +5. 使用 `letter-spacing` +6. 使用 `word-spacing` +7. 其他 + +我觉得使用 4 `font-size: 0` 比较好,对别的元素影响最小。代码如下:在 `a` 的外层将字体尺寸设为 0,载对内层的 `a` 重新设置字体大小,即可。 + +```css +nav { + font-size: 0; +} +nav a { + font-size: 16px; +} +``` + + +## 最终作品 + +* [在线Demo](http://gaohaoyang.github.io/ife/task/task0001/work/Gaohaoyang/index.html) +* [源代码](https://github.com/Gaohaoyang/ife/tree/master/task/task0001/work/Gaohaoyang) + + +## 参考资料 + +* [HTML、CSS的代码规范](https://github.com/ecomfe/spec) 自己要试着改变一些代码风格了,规范化! +* [顾轶灵:Web语义化](http://www.zhihu.com/question/20455165) +我看他回答最后的举例的Sildes做的非常好,可以经常看看。[Semantic HTML](http://justineo.github.io/slideshows/semantic-html/)。他的其他Slides也做的非常好,很喜欢这种风格! +* [CSS命名规范@W3C Funs](http://www.w3cfuns.com/blog-5445898-5398950.html) 起名不再困难! +* [点击阅读: CSS浏览器兼容性列表-维基百科](点击阅读: CSS浏览器兼容性列表) 类似的我想到了 [Can I Use](http://caniuse.com/),Can I Use 包含的更多,包括 HTML5, CSS SVG, JS API 等。 + + +* [学习CSS布局](http://zh.learnlayout.com/) +* [Media Queries](http://mediaqueri.es/) +* [使用CSS渐变](https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Using_CSS_gradients) +* [CSS3 Gradient](http://www.w3cplus.com/content/css3-gradient) +* [CSS渐变生成器](http://www.colorzilla.com/gradient-editor/) diff --git a/_posts/2015-04-22-baidu-ife-2-javascript.md b/_posts/2015-04-22-baidu-ife-2-javascript.md new file mode 100755 index 00000000..5f50a982 --- /dev/null +++ b/_posts/2015-04-22-baidu-ife-2-javascript.md @@ -0,0 +1,1586 @@ +--- +layout: post +title: "百度Web前端技术学院(2)-JavaScript 基础" +date: 2015-04-22 19:06:05 +categories: JavaScript +tags: Baidu ife JavaScript 正则 Regular +--- + +* content +{:toc} + +百度前端学院的第二次任务笔记,JavaScript 基础。主要有JavaScript的定义,数据类型,对象,数组,字符串,正则表达式,DOM,事件,BOM,Ajax 等知识。 + + + + + +## 任务 + +掌握JavaScript基础知识,能够使用JavaScript编写一些复杂度不大的交互功能。 + +**任务:** [JavaScript基础](https://github.com/Gaohaoyang/ife/tree/master/task/task0002) + +做完任务一的时候深深地感觉到自己的基础非常的薄弱,在这里再次感谢一下百度前端技术学院,做任务的时候深刻理解了自己平时掌握不牢固的内容,比如浮动、BFC、等高布局等。继续加油吧! + + +像上一篇文章一样,写些东西记录一下。 + + +## 第一个页面交互 + +按照任务中的代码,在IE8下提示:`对象不支持“addEventListener”属性或方法` +我猜是IE8浏览器没有这个方法吧。 + +参考资料:[JavaScript 指南-MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide) + +### 了解JavaScript是什么 + +[来自MDN的解释](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/JavaScript_Overview#What_is_JavaScript.3F) + +> JavaScript 是一种跨平台,面向对象的脚本语言。作为一种小巧且轻量级的语言,JavaScript 无意于独立运行,而是被设计为可以轻易嵌入到其它的产品和应用中,比如 Web 浏览器。在宿主环境中,JavaScript 可以被连接到环境中的对象之上,以提供对其的编程控制。 +> +> 核心的 JavaScript 中包含有一组核心的对象,包括 Array,Date 和 Math,以及一组核心的语言要素,包括操作符,控制结构和语句。出于多种目的,可以通过为其增补附加的对象,对核心 JavaScript 加以扩展;例如: +> +> * 客户端 JavaScript 提供了用于控制浏览器(Navigator 或者其它浏览器)以及其中的文档对象模型(DOM)的对象,从而扩展了核心 JavaScript。例如,客户端扩展允许应用程序在 HTML 的表单中加入元素,以便响应用户事件,比如鼠标点击,表单输入和页面导航。 +> * 服务器端 JavaScript 提供了服务于在服务器上运行 JavaScript 的对象,从而扩展了核心 JavaScript。例如,服务器端扩展可以允许应用程序访问关系型数据库,在应用程序的不同调用间提供信息的连续性,甚至于处理服务器之上的文件。 +> +>借由 JavaScript 的 LiveConnect 功能,您可以让 Java 和 JavaScript 间实现通讯。从 JavaScript 中,您可以创建 Java 对象并访问它们的公共方法和域。从 Java 中,也可以访问 JavaScript 的对象,属性和方法。 +> +>Netscape 发明了 JavaScript 并将 JavaScript 首先用于 Netscape 浏览器中。 + + +### 如何在 HTML 页面加载 JavaScript 代码 + +使用 ` + + + + +``` + +在支持 defer 属性的浏览器上,弹出的顺序则是:"script"、"defer"、"load"。请注意,带有 defer 属性的 ` + + 这里要说明一下,要把上面的 localhost 换为本机的 ip 地址。 + + 我们可以在命令行中 使用 `ipconfig` 得到 ip 地址,如下(当然你的可能和我的不一样): + + IPv4 地址 . . . . . . . . . . . . : 192.168.1.107 + + 即插入如下代码: + + + +4. 进入调试页面 + + PC 端访问这个地址: + + debug client user interface: http://localhost:8081/client/#anonymous + + 此时 target 为 none,如下图: + + ![target-none](http://7q5cdt.com1.z0.glb.clouddn.com/blog-target-none.png) + + 现在我们要用手机访问同一个局域网下的这个目标页面。我们可以把要调试的页面放到这个路径下: + + C:\Users\haoyang\AppData\Roaming\npm\node_modules\weinre\web + + 通过 http://192.168.1.107:8081/FILE_NAME 在手机上访问,就可以看到了。当然前提是同一个局域网。 + + 但是这样可能不太灵活,每次都要把目标页面放到指定的目录下。所以我们可以另外开一个服务器。 + + 我使用了基于 node.js 的 http-server 工具。将要调试的页面发布。这样我就能通过 ip 地址加端口号在手机上访问到了。 + + 我在手机上访问 http://192.168.1.107:8080 打开要调试的页面,此时 debug client user interface 中自动检测到 target。就可以进行调试了! + + 如下图: + + ![target](http://7q5cdt.com1.z0.glb.clouddn.com/blog-target.png) + + ![phone](http://7q5cdt.com1.z0.glb.clouddn.com/blog-1954958440_meitu_2.jpg) + +--- + +## 参考 + +* [Web移动应用调试工具——Weinre](http://blog.csdn.net/dojotoolkit/article/details/6280924) +* [weinre - WEb INspector REmote](http://muellerware.org/papers/weinre/manual.html) +* [webapp开发调试环境--weinre配置](http://blog.csdn.net/smy_yu/article/details/38922315) diff --git a/_posts/2015-07-09-JavaScript-Net.md b/_posts/2015-07-09-JavaScript-Net.md new file mode 100755 index 00000000..02a72c71 --- /dev/null +++ b/_posts/2015-07-09-JavaScript-Net.md @@ -0,0 +1,14 @@ +--- +layout: post +title: "JavaScript 阶段总结" +date: 2015-07-09 00:06:05 +categories: JavaScript +tags: JavaScript HTML CSS 思维导图 技能树 +--- + +做了一张思维导图。总结这几个月对 JavaScript 的学习吧,也是一个复习。也是我目前的技能树。 + + + + +![JavaScriptNet](http://7q5cdt.com1.z0.glb.clouddn.com/blog-JavaScriptNet2.png) diff --git a/_posts/2015-07-24-low-IE-click-empty-block-bug.md b/_posts/2015-07-24-low-IE-click-empty-block-bug.md new file mode 100755 index 00000000..cc5cd8ab --- /dev/null +++ b/_posts/2015-07-24-low-IE-click-empty-block-bug.md @@ -0,0 +1,32 @@ +--- +layout: post +title: "在低版本 IE 中点击空 block 元素的问题" +date: 2015-07-24 00:06:05 +categories: CSS +tags: IE CSS 兼容性 HTML +--- + +* content +{:toc} + +## 问题描述 + +当我们点击一个空的、没有任何内容的 div 或者其他块级元素时。在 IE11 以下,是没有反应的。 + + + + + +## 使用场景 + +这类问题使用场景还是很普遍的。比如 UI 给了一张大图,要点击图上的某一块位置的时候。可以用一个空的 div 定位到相应的位置,然后对它进行绑定事件。 + +--- + +## 解决办法 + +解决方法很简单,即给这个块级元素填充任意颜色,然后将其透明度设置为0。代码如下: + + background-color: #fff; + opacity: 0; + filter:alpha(opacity=0); diff --git a/_posts/2015-12-31-History-API.md b/_posts/2015-12-31-History-API.md new file mode 100755 index 00000000..308f11b8 --- /dev/null +++ b/_posts/2015-12-31-History-API.md @@ -0,0 +1,167 @@ +--- +layout: post +title: "前端处理动态 url 和 pushStatus 的使用" +date: 2015-12-31 23:06:05 +categories: JavaScript +tags: JavaScript Ajax URL HistoryApi pushState pjax +--- + +* content +{:toc} + +## 起因 + +起因是这样的,在尝试前后端分离的这条道路上,我自己也在不断摸索,感觉要把大部分的坑都踩踩了。目前我用的技术是: + +* webpack 自动构建 +* AMD 模块化 js +* Sass 预处理 CSS +* 使用前端模板引擎 handlebars 解决动态操作将 html 拼接在 js 中的问题 + +但最近写了一个项目类似知乎这样的多页网站。前端 url 的处理让我觉得不够优雅。我使用的是 hash 的方式处理动态 url 的,为此我专门在知乎上提了一个问题:[前端如何处理动态url?](https://www.zhihu.com/question/38802932) + + + + +这里我将问题描述如下: + +> 前后端彻底分离的情况下,页面跳转页全部由前端控制。那么如何更好的处理动态url地址? +> 例如本问题的url为 +> https://www.zhihu.com/question/38802932 +> 这肯定是用后台路由处理的url +> +> 纯前端怎么处理?用hash吗,如下: +> https://www.zhihu.com/question#38802932 +> 那如果本页跳转,只改变hash的话,页面不会刷新。 +> 使用`location.reload()`倒是可以解决。 +> +> **但总觉得这样处理不够优雅。大家在工作中是如何处理此类场景的?还是用传统的后台路由来提供动态url?** + + +感谢郑海波和剧中人的热心回答。都提到了`history`对象中的`pushState`,这是我第一次接触到这方面的内容(顿时觉得自己真是才疏学浅)。 + +同时也有人提到了`pjax`,这个就是`pushState`+`Ajax`的封装,也很有意思。 + +下面就来研究和实践一下吧。 + +## History + +`window`对象通过`history`对象提供对浏览器历史记录的访问能力。它暴露了一些非常有用的方法和属性,让你在历史记录中自由前进和后退,而在 HTML5 中,更可以操纵历史记录中的数据。 + +### `back()`, `forward()`, `go()`, `length` + +浏览器的历史记录就好像一个栈,最新的在最上面,较早之前看过的在下面。 + +如下图,Chrome的历史记录: + +![chrome history](http://ww2.sinaimg.cn/large/7011d6cfjw1ezb16fn2bfj20k008htan.jpg) + +下面介绍怎么在这些历史记录中跳转,但要**注意**,上图中的浏览器历史记录和本文说的 history 还不太同。 + +* `back()` + + 在历史记录中后退 + + history.back(); + +* `forward()` + + 在历史记录中前进 + + history.forward(); + +* `go()` + + 移动到指定的历史记录点 + + history.go(-1); + + 通过指定一个相对于当前页面位置的数值,你可以使用go()方法从当前会话的历史记录中加载页面(当前页面位置索引值为0,上一页就是-1,下一页为1)。 + + **go()不填参数或参数为go(0)时,页面会刷新,即`history.go()`或`history.go(0)`相当于`location.reload()`** + +* `length` + + `length`为history的属性,显示history长度。 + +本节在线demo见:[History & pjax demo](http://gaohaoyang.github.io/history-pjax-demo/) 源代码:[]() + +**经过亲自测试,`history`对象只记录同一个 tab 页内的历史。如果是在新窗口打开的,则无效。如:在a标签中添加`target="_blank"`,或按住`ctrl`点击,这类场景下,在新的tab页中,`history`对象也是新的。** + +**且`history`对象记录的信息与是否同源也无关,所以唯一要满足的就是同一个标签页。** + +### `pushState()`, `replaceState()` + +HTML5 引进了`history.pushState()`方法和`history.replaceState()`方法,它们允许你逐条地添加和修改历史记录条目,能够在不加载新页面的情况下没改变浏览器的URL。这些方法可以协同`window.onpopstate`事件一起工作。 + +使用`history.pushState()`会改变`referrer`的值,而在你调用方法后创建的 XMLHttpRequest 对象会在 HTTP 请求头中使用这个值。`referrer的`值则是创建 XMLHttpRequest 对象时所处的窗口的 URL。 + +* `pushState(any data, string title, [string url])` + + 第一个参数为`history`对象的`state`属性值,可以放任意数据,记录历史状态。第二个参数是新状态的标题,目前浏览器基本不支持。第三个参数为可选的相对url。 + + 执行`pushState`后,可以在不加载新页面的情况下,更改url。同时`history`栈中新增一条数据。 + + 例如,我们有这样一段代码: + + + + document.querySelector('#push1').addEventListener('click', function() { + history.pushState('abc','pushStatePageTitle','pushState.html'); + document.querySelector('#length').innerHTML = history.length;//重新读取历史长度 + }); + + 当点击按钮的时候,页面不会刷新,但`url`地址的最后已经变为`pushState.html`。这一点非常像`hash`的作用,但比`hash`更优雅。 + + +* `replaceState(any data, string title, [string url])` + + 与`pushState()`类似,只是在`history`栈中不是新增记录,而是替换一条记录。 + +**需要注意的是:**`pushState()`和`replaceState()`方法存在安全方面的限制,本地测试是无效的,会报错,可以简单放到任何服务端测试,或者使用`http-server`开启简单服务器,通过访问`localhost`来查看效果。 + +本节demo见:[History & pjax demo - pushState](http://gaohaoyang.github.io/history-pjax-demo/index.html) + +## pjax + +现在再看本文一开始提出的问题,如何让前端优雅的控制 url,这里就可以考虑 pjax 技术了。我们把 pushState + ajax 进行封装,合起来简称为 pjax。虽然不是什么新的技术,但概念已然不同。 + +如果不使用 pjax。我们依然可以使用`hash`来实现文本开始的需求。但会不利于 SEO,看着也不够优雅。 + +Pjax的原理十分简单。 + +1. 拦截 a 标签的默认跳转动作或某些按钮的点击事件。 +2. 使用 Ajax 请求新页面。 +3. 将返回的 Html 替换到页面中。 +4. 使用 HTML5 的`pushState()`修改Url。 + +个人理解3中也可以仅仅请求数据,再由浏览器渲染。 + +每当同一个文档的浏览历史(即history对象)出现变化时,会触发`window.onpopstate`事件。 + + window.onpopstate = function(event) { + console.log(event.state); + console.log(location); + }; + +这样在用户点击前进后退时也可以很好的监听url,来做相应的页面渲染。 + +若用户刷新了页面,但没有相应的页面资源,这时页面就会显示不存在。所以我认为较好的方法是在写`pushState()`第三个参数的时候,写为`?a=1`这样的参数形式。[History.js](https://github.com/browserstate/history.js) 也是这么写的。但是这样应该会多一次请求。也许使用 nodeJS 作为中间层会好一些吧。 + +对于上述的探索,不知道是不是我还不够深入,总觉得还是不够完美。 + +## 参考 + +* [MDN History](https://developer.mozilla.org/en-US/docs/Web/API/History) +* [MDN 操纵浏览器的历史记录](https://developer.mozilla.org/zh-CN/docs/DOM/Manipulating_the_browser_history) +* [pjax 是如何工作的? 知乎](https://www.zhihu.com/question/20289254) +* [PJAX的实现与应用 小胡子哥](http://www.cnblogs.com/hustskyking/p/history-api-in-html5.html) +* [URL的井号-阮一峰](http://www.ruanyifeng.com/blog/2011/03/url_hash.html) +* [history对象 JavaScript 标准参考教程(alpha) 阮一峰](http://javascript.ruanyifeng.com/bom/history.html) +* [Pjax(pushState and Ajax) 黯羽轻扬](http://www.ayqy.net/blog/pjaxpushstate-and-ajax/) +* [操纵历史,利用HTML5 History API实现无刷新跳转 蓝飞](http://www.clanfei.com/2012/09/1646.html) +* [前端:将网站打造成单页面应用SPA(一) Coffce](http://segmentfault.com/a/1190000002920768) +* [coffce-pjax](https://github.com/Coffcer/coffce-pjax) +* [History.js](https://github.com/browserstate/history.js) +* [defunkt/jquery-pjax GitHub](https://github.com/defunkt/jquery-pjax) +* [welefen/pjax](https://github.com/welefen/pjax) diff --git a/_posts/2016-03-12-jekyll-theme-version-2.0.md b/_posts/2016-03-12-jekyll-theme-version-2.0.md new file mode 100755 index 00000000..e0ab5b0f --- /dev/null +++ b/_posts/2016-03-12-jekyll-theme-version-2.0.md @@ -0,0 +1,222 @@ +--- +layout: post +title: "对这个 jekyll 博客主题的改版和重构" +date: 2016-03-12 11:40:18 +0800 +categories: jekyll +tags: jekyll 端口 markdown Foxit RubyGems HTML CSS +author: Haoyang Gao +--- + +* content +{:toc} + +本文主要说明对这个博客主题的改版和代码重构的过程。这个简洁高雅的博客主题受到了很多朋友的喜欢。在写第一版界面时,我对前端并不是很熟悉,对`Jekyll`也不熟悉。现在距离当时也一年了,对自己当时写的代码也不太满意了,同时`Jekyll`如今也已经升级了,目前最新版为3.1.2。因此我在临近毕业尚未入职前做一下博客主题的代码重构和改版吧。 + +主要想做这些事情有:添加归档,添加标签,添加分类页面,主页显示文章摘要,代码去除 jQuery 和 BootStrap,优化移动端显示,将所有变量写入配置文件`_config.yml`中等。再优化一些细节吧。希望更多人会喜欢。 + + + + + + +## 改版重构说明 + +* **使用 GitHub 风格的代码块 Markdown 写法 (Fenced code blocks)。** + + 即 GFM(github flavored markdown) 的方式。 + + Jekyll 已经升级至 3.1.2(2016-03),其中有一些新的要注意的地方,比如官网上说使用了 `Rouge` 去做代码高亮而不是默认的 `Pygments`,因为 `Jekyll` 本身是基于 Ruby 的,因此我看到官方说希望不再使用基于 Python 的 `Pygments` 了,而是都使用基于 Ruby 的代码。详情见官网升级说明 [syntax-highlighter-changed](https://jekyllrb.com/docs/upgrading/2-to-3/#syntax-highlighter-changed)。 +* **首页中添加摘要** + + 摘要可以在每一篇 md 文件头中使用 excerpt 属性写出来。也可以在正文中,4个换行符来分割,这个设置见配置文件`_config.yml`。 +* **添加归档** + + 上一版中没有归档,现在专门做了一个归档页面,当文章很多时方便根据年份快速查阅。 +* **添加标签** + + 标签还是很有必要添加的,上一版中也没有这个功能。现在也可以根据标签查找文章了。同时标签还有一个重要的作用是,用来获取相似文章的。 +* **添加分类页** + + 之前的分类就是在首页中直接完成的,现在和标签和归档类似,我将分类单独制作为一页,方便查阅。 +* **去掉 jQuery 和 BootStrap** + + 我觉得太重了,没必要使用这两个库,使用原生 JavaScript 和 CSS就可以做到一样的效果,代码量大大减轻,载入速度略有提高。 + +* **重写了demo页的瀑布流布局** + + 改变数据写死的方式,将数据用 json 格式录入,由 JavaScript 拼接为 HTML 代码。同时,使用 [Masonry](http://masonry.desandro.com/),重写了瀑布流布局。 + +* **简化评论配置,支持 多说 和 disqus** + + 在`_config.yml`中评论配置直接添加自己的`short_name`,评论就能正常使用了。 + +下面列举一些可能遇到的问题,至少我是遇到了: + +## RubyGems 无法访问,SSL 证书问题 + +以前我使用的是 RubyGems 的淘宝镜像[https://ruby.taobao.org/](https://ruby.taobao.org/)。现在这个镜像已经不再维护了,作者 [huacnlee (李华顺)](https://ruby-china.org/huacnlee) 转到 [Ruby China](https://ruby-china.org/) 中继续维护了,详情见 [RubyGems 镜像- Ruby China](https://gems.ruby-china.org/)。 + +### 错误呈现 + +在执行任何`gem`命令的时候出现以下错误: + +``` +ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) + SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://gems.ruby-china.org/specs.4.8.gz) +``` + +### 解决方法 + +根据 [https://gems.ruby-china.org/](https://gems.ruby-china.org/) 页面最下方提供的 GitHub Issue 地址。 + +可以进入这个 issue:[https://github.com/ruby-china/rubygems-mirror/issues/3](https://github.com/ruby-china/rubygems-mirror/issues/3) + +其中 sanlengjingvv 给出了一个链接地址 [https://gist.github.com/fnichol/867550](https://gist.github.com/fnichol/867550) 里面提供了方法。我就是采用这里面的方法解决的。 + +我使用的是 [The Manual Way](https://gist.github.com/fnichol/867550#the-manual-way-boring),因为 [The Ruby Way](https://gist.github.com/fnichol/867550#the-ruby-way-fun) 我没有成功,不知道什么原因,有兴趣的朋友可以试试。下面说说我的具体操作吧。 + +首先从 [https://curl.haxx.se/ca/cacert.pem](https://curl.haxx.se/ca/cacert.pem) 将文件`cacert.pem`下载至 `C:\RailsInstaller\cacert.pem` + +然后执行 + +``` +set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem +``` + +就成功了,不会再出现 SSL 错误了。 + +最后原文中说,为了长久设置,将这个目录存入控制面板中。我没理解是什么意思,是指环境变量吗?有朋友知道的话,欢迎留言告知我。 + +我存入环境变量后,还是会出现 SSL 错误,这时再次执行上面那条命令即可。 + +## jekyll-paginate 依赖缺失 + +因为 jekyll 3 中默认安装已经没有这个分页组件了,官方把这个分页组件插件化了,因此要独立安装。详情见 [https://jekyllrb.com/docs/pagination/](https://jekyllrb.com/docs/pagination/)。 + +### 错误呈现 + +在启动 jekyll 服务的时候出现以下错误: + +``` +jekyll serve +Configuration file: c:/gitWorkSpace/blog-based-on-jekyll-3/_config.yml + Dependency Error: Yikes! It looks like you don't have jekyll-paginate or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'cannot load such file -- jekyll-paginate' If you run into trouble, you can find helpful resources at http://jekyllrb.com/help/! +jekyll 3.1.2 | Error: jekyll-paginate +``` + +### 解决方法 + +我们安装这个插件到本地即可。 + +``` +gem install jekyll-paginate +Fetching: jekyll-paginate-1.1.0.gem (100%) +Successfully installed jekyll-paginate-1.1.0 +Parsing documentation for jekyll-paginate-1.1.0 +Installing ri documentation for jekyll-paginate-1.1.0 +Done installing documentation for jekyll-paginate after 3 seconds +1 gem installed +``` + +## 被 Foxit pdf reader 占用4000端口 + +### 错误呈现 + +在本地使用命令 + +``` +jekyll serve +``` + +出现错误,如下 + +``` +jekyll serve +Configuration file: E:/GitWorkSpace/blog/_config.yml + Source: E:/GitWorkSpace/blog + Destination: E:/GitWorkSpace/blog/_site +Incremental build: disabled. Enable with --incremental + Generating... + done in 0.547 seconds. + Please add the following to your Gemfile to avoid polling for changes: + gem 'wdm', '>= 0.1.0' if Gem.win_platform? +Auto-regeneration: enabled for 'E:/GitWorkSpace/blog' +Configuration file: E:/GitWorkSpace/blog/_config.yml +jekyll 3.1.1 | Error: Permission denied - bind(2) for 127.0.0.1:4000 +``` + +网上查阅后,这篇博文解决了我的问题。[谁占了我的端口 for Windows --By Liu Xia, ThoughtWorks Senior Consultant. .NET Expert](http://lxconan.github.io/2016/01/07/who-is-using-my-port/) + +上述报错主要原因是,jekyll 启动使用的4000端口被福昕pdf阅读器的自动更新进程占用了,关掉这个进程,jekyll在本地调试启动服务时就没有问题了。 + +### 解决方法 + +简单的解决方法是: + +输入命令,查看各端口被占用情况 + +``` +netstat -ano +``` + +找到4000端口被占用的`PID` + +我的结果如下: + +``` +协议 本地地址 外部地址 状态 PID +TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 +TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 836 +TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 +TCP 0.0.0.0:1801 0.0.0.0:0 LISTENING 2312 +TCP 0.0.0.0:2103 0.0.0.0:0 LISTENING 2312 +TCP 0.0.0.0:2105 0.0.0.0:0 LISTENING 2312 +TCP 0.0.0.0:2107 0.0.0.0:0 LISTENING 2312 +TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2404 +TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1172 +TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 584 +TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING 1072 +TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING 460 +TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING 1000 +TCP 0.0.0.0:49670 0.0.0.0:0 LISTENING 696 +TCP 0.0.0.0:49678 0.0.0.0:0 LISTENING 2312 +TCP 0.0.0.0:49692 0.0.0.0:0 LISTENING 688 +TCP 127.0.0.1:4000 0.0.0.0:0 LISTENING 2476 +TCP 127.0.0.1:4000 127.0.0.1:55160 ESTABLISHED 2476 +TCP 127.0.0.1:4012 0.0.0.0:0 LISTENING 12724 +``` + +可以看到4000端口的PID是2476。下面查看是什么进程,命令行中输入: + +``` +tasklist /svc /FI "PID eq 2476" +``` + +得到结果: + +``` +映像名称 PID 服务 +========================= ======== ============================================ +FoxitProtect.exe 2476 FxService +``` + +可以看到正是福昕阅读器。下面关掉这个服务就好了。在 win10 中进入任务管理器,选择服务选项卡,关闭这个服务就好了,如下图: + +![](http://ww4.sinaimg.cn/large/7011d6cfjw1f1ty28wwj4j20g00aiju7.jpg) + +当然也可以在启动jekyll服务的时候指定端口号,如下: + +``` +jekyll serve --port 3000 +``` + +这样在浏览器中输入 http://localhost:3000/ 就可以访问了。 + +还可以在配置文件`_config.yml`中添加端口号设置(参考[官网文档-Serve Command OptionsPermalink](https://jekyllrb.com/docs/configuration/#serve-command-options)),如下: + +``` +# port +port: 1234 +``` + +此时,启动jekyll服务后,访问 http://localhost:1234/ 即可 diff --git a/_posts/2016-05-06-regular-expression-group.md b/_posts/2016-05-06-regular-expression-group.md new file mode 100755 index 00000000..572d53bc --- /dev/null +++ b/_posts/2016-05-06-regular-expression-group.md @@ -0,0 +1,50 @@ +--- +layout: post +title: "浅谈正则表达式中的分组和引用" +date: 2016-05-06 11:40:18 +0800 +categories: JavaScript +tags: 正则 分组 Regular +--- + +* content +{:toc} + +由正则表达式如何匹配相同字符出发,讲讲正则表达式中的选择、分组和引用。 + +## 问题 + +在外刊君读者群中看到有人提出这样的一个需求: + +> 把字符串切成连续相同字符的正则怎么写?比如`abbcccdddd`切成`a,bb,ccc,dddd` + +之前我对正则表达式也是略有研究,想尝试一下。其实我对正则表达式的学习基本完全来源于犀牛书的第10章,真正看懂这一章,我觉得操作正则表达式应该不在话下。 + + + + + +## 我的答案 + +先给出我的答案吧: + +```js +'abbccddd'.match(/(\w)\1*/g) // ["a", "bb", "cc", "ddd"] +``` + +## 说明 + + +拿到这个问题,首先要匹配字符`[a-zA-Z0-9]`,这里直接使用`\w`。然后是全局匹配,在最后加上`g`。难点在于怎么判断重复。 + +翻看了犀牛书后,又读了一遍分组和引用的部分。使用小括号`()`将字符作为一个最小单元,同时小括号还能记忆这个组合相匹配的字符串。再使用反斜杠`\`引用前面分组的表达式,数字1表示第一个小括号。这时完成了2个字符重复的要求。最后再使用`*`来匹配出现0次或n次。这个正则表达式就写完了。 + +下面详细说说分组和引用。 + +**正则表达式的选择、分组和引用字符表** + +字符 | 含义 +--- | --- +`|` | 选择,匹配的是该符号左边的子表达式或右边的子表达式 +`(...)` | 组合,将几个项组合为一个单元,这个单元可通过`*` `+` `?` `|` 等符号加以修饰,**而且可以记住和这个组合相匹配的字符串以提供伺候的引用使用** +`(?:...)` | 只组合,把项组合到一个段元,但不记忆与该组相匹配的字符 +`\n` | 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套的),组索引是从左到右的左括号数,`(?:`形式的分组不编码 diff --git a/_posts/2016-06-07-JavaScript-good-parts-note1.md b/_posts/2016-06-07-JavaScript-good-parts-note1.md new file mode 100755 index 00000000..75a45257 --- /dev/null +++ b/_posts/2016-06-07-JavaScript-good-parts-note1.md @@ -0,0 +1,569 @@ +--- +layout: post +title: "JavaScript 语言精粹笔记1-语法、对象、函数" +categories: JavaScript +tags: 对象 函数 this 闭包 面向对象 作用域 +--- + +* content +{:toc} + +记录一下阅读蝴蝶书的笔记,本篇为第一部分包含书中前三章内容:语法、对象和函数。 + + + + +![](https://img3.doubanio.com/lpic/s3651235.jpg) + +原书中第一章为精华,做了一些周边介绍,略去。 + +## 语法 + +### 空白 + +这里说一下JavaScript的注释,一种是 `/* */` 包围的块注释,另一种是 `//` 开头的行注释。 + +因为块注释的字符可能是JavaScript中正则表达式字面量,因此不是很安全,如: + +```js +/* + var rm_a = /a*/.match(s) +*/ +``` + +### 标识符 + +标识符由一个字母开头,后面可选择性的加上一个或多个字母、数字或下划线。要避免保留字。 + +标识符被用于语句、变量、参数、属性名、运算符和标记。 + +### 数字 + +可以存在指数部分,100和1e2完全相等 + +```js +100 === 1e2 // true +``` + +使用`isNaN`来检测`NaN`。 + +### 字符串 + +当年 JavaScript 被创建的时候,Unicode 是16位字符集,因此 JavaScript 字符串是16位的。 + +用双引号或单引号包裹。 + +重点说一下转义字符`\` + +反斜杠后面可以跟`"`, `'`, `\`, `/`, `b` (backspace), `f` (formfeed), `n`, `r` (carriage return), `t`, `u1234` + +```js +'A' === '\u0041' // true +``` + +### 语句 + +每个` +``` + +或 npm 包 [lottie-web](https://www.npmjs.com/package/lottie-web) 引用 + +``` bash +npm i -S lottie-web +``` + +``` js +import lottie from 'lottie-web' +``` + +调用 loadAnimation() + +``` js +const myLottie = lottie.loadAnimation({ + container: document.querySelector('.img-area'), + renderer: 'svg', + name: 'myLottieAnim', + loop: true, + autoplay: true, + path: './assets/cycle_animation.json', +}) +``` + +### 参数/api/事件 + +loadAnimation 的参数 + +名称 | 描述 +--- | --- +container | 用于渲染的容器,一般使用一个 div 即可 +renderer | 渲染器,可以选择 'svg' / 'canvas' / 'html',个人测试发现 svg 效果和兼容性最好 +name | 动画名称,用于 reference +loop | 循环 +autoplay | 自动播放 +path | json 路径,页面会通过一个 http 请求获取 json +animationData | json 动画数据,与 path 互斥,建议使用 path,因为 animationData 会将数据打包进来,会使得 js bundle 过大 + +获取到 lottie 实例后,可以调用 api 控制动画,例如上述代码中可以使用 + +``` js +myLottie.pause() +``` + +相关 api + +名称 | 参数 | 描述 +--- | --- | --- +stop | 无 | 停止动画 +play | 无 | 播放动画 +pause | 无 | 暂停 +setSpeed | Number | 设置播放速度,1 表示1倍速度,0.5 表示 0.5倍速度 +setDirection | Number | 正反向播放,1 表示 正向,-1 表示反向 +goToAndStop | Number, [Boolean] | 跳到某一帧或某一秒停止,第二个参数 iFrame 为是否基于帧模式还是时间,默认为 false +goToAndPlay | Number, [Boolean] | 跳到某一帧或某一秒开始,第二个参数 iFrame 为是否基于帧模式还是时间,默认为 false +playSegments | Array, [Boolean] | 播放片段,参数1为数组,两个元素为开始帧和结束帧;参数2为,是否立即播放片段,还是等之前的动画播放完成 +destroy | 无 | 销毁 + +事件 + +- onComplete +- onLoopComplete +- onEnterFrame +- onSegmentStart + +也可以使用 addEventListener 监听以下事件 + +- complete +- loopComplete +- enterFrame +- segmentStart +- config_ready (when initial config is done) +- data_ready (when all parts of the animation have been loaded) +- data_failed (when part of the animation can not be loaded) +- loaded_images (when all image loads have either succeeded or errored) +- DOMLoaded (when elements have been added to the DOM) +- destroy + +具体也可以查看[组件文档](https://github.com/airbnb/lottie-web/) + +### 优化建议 + +- 使用压缩混淆过的 js,毕竟目前 lottie-web 还是有点大,gzip 后大概 57k +- 尽量使用简单小巧的 json,其实也是需要在 AE 中做一些优化,这需要前端和设计一起配合完成,例如 + - 避免使用很大的形状,但是用很小的 mask 切出来 + - 太多的节点也会影响性能 + +## weex/rax 中使用 lottie + +weex/rax 已经提供了 lottie 组件,由于是内部文档,暂不放链接。 + +api 支持没有 airbnb 官方完整,投入生产环境时还需要严格测试一下 + +[vue-weex demo](http://dotwe.org/vue/946e8283f5cf31cfab2f923ec8cea07c) + +![](https://gw.alicdn.com/tfs/TB1h65XuCMmBKNjSZTEXXasKpXa-256-256.png) + + +使用[@ali/rax-lottie](http://web.npm.alibaba-inc.com/package/@ali/rax-lottie) 的 [rax demo](https://market.m.taobao.com/app/tmall-wireless/rax-life-progress/pages/my-lottie?wh_weex=true) 如下 + +[![](https://gw.alicdn.com/tfs/TB16qbPuBjTBKNjSZFwXXcG4XXa-200-200.png)](https://market.m.taobao.com/app/tmall-wireless/rax-life-progress/pages/my-lottie?wh_weex=true) + + + + + +## 小结 + +在我看来,追求更精细完美的动画体验一直是设计师和前端开发的使命。lottie 的出现可以替代传统的 gif,并且提供的 api 可以更好的控制动画。lottie 可能不适合用于过于复杂的大场景动画,但是局部的小动画,再适合不过了。 + +lottie 应该是一个发展趋势,甚至未来浏览器说不定就原生直接支持了这种 json 动画,设计和开发之间的壁垒也会越来越小。 \ No newline at end of file diff --git a/_posts/2018-09-24-Open-Github-Pages-for-blogs.md b/_posts/2018-09-24-Open-Github-Pages-for-blogs.md deleted file mode 100644 index e85bb67a..00000000 --- a/_posts/2018-09-24-Open-Github-Pages-for-blogs.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: post -title: Open Github Pages for blogs -subtitle: Others -date: 2018-09-24 -author: Shijie Xu -catalog: true -tags: - - git - - Markdown ---- - -# Organization -_config.yml :全局配置文件 - -posts :放文章的文件夹 - -img 存放图片的文件夹 - -# Settings (mainly on _config.yml) - -# Sidebar settings -sidebar: true - -sidebar-about-description: - -sidebar-avatar: - - -# Reference - -*[BY Blogs](https://www.jianshu.com/p/e68fba58f75c) - -*[xudailong Blogs](https://blog.csdn.net/xudailong_blog/article/details/78762262) - -*[jekyll](https://www.jekyll.com.cn/) - -*[gitalk](http://qiubaiying.top/2017/12/19/%E4%B8%BA%E5%8D%9A%E5%AE%A2%E6%B7%BB%E5%8A%A0-Gitalk-%E8%AF%84%E8%AE%BA%E6%8F%92%E4%BB%B6/) diff --git a/_posts/2018-09-25-Git-Beginner.md b/_posts/2018-09-25-Git-Beginner.md deleted file mode 100644 index 660d4d6a..00000000 --- a/_posts/2018-09-25-Git-Beginner.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -layout: post -title: Git Beginner -subtitle: History Blogs @ 2015/10/1 -date: 2018-09-25 -author: Shijie Xu -catalog: true -tags: - - git ---- - - - -- [What is a git](#what-is-a-git) -- [Preparation](#preparation) - - [History](#history) - - [Install](#install) - - [configuration](#configuration) -- [Begin](#begin) - - [init the git](#init-the-git) - - [stream](#stream) -- [File Operations](#file-operations) - - [Add \(git status to check\)](#add-git-status-to-check) - - [Remove\(git status to check\)](#removegit-status-to-check) - - [Rename\(git status to check\)](#renamegit-status-to-check) -- [Rollback](#rollback) - - [git diff to check to change](#git-diff-to-check-to-change) - - [Warning](#git reset) - - [.gitignore](#gitignore) - - [.gitkeep](#gitkeep) - - [Other options](#other-options) -- [Branch](#branch) - - [branch is needed, cheap, try](#branch-is-needed-cheap-try) - - [operations](#operations) - - [Merge](#merge) - - [stash](#stash) -- [Remote \(link to the github or others\)](#remote-link-to-the-github-or-others) - - [Set up a github account](#set-up-a-github-account) - - [password caching](#password-caching) - - - - - -## What is a git - git 帮助我们进行代码的版本控制,我于2015/10/1花费一天时间学习一个关于git的视频,然后再参考几篇博客,将git的使用方法全部弄清楚。let's begin! - - -##Preparation - - -### History -1. *SCCS Source Code Control System * - * 1972, closed source, free with Unix -2. *RCS Revision Control System * - * 1982, open source. -3. *CVS Concurrent Versions System * - * 1986 - 1990, open source -4. *SVN * - * 2000, open source -5. *BitKeeper SCM* - * distributed version -6. *GIT * - * github come out - -### Install ->参考官网的安装方法 —— [git web] - -1. download the tar.gz or some package[your linux] -2. tar zxvf *.tar.gz -3. /configure -4. make && make install -5. finish. -or you can try: -* apt-get install git -* yum install -y git -* pacman -S git - -###configuration -1. git config --global user.name [your name] -2. git config --global user.email [your email] -3. git config --global core.editor "vim" -4. git config --global color.ui true -5. use bash config - * wget https://github.com/git/git/raw/master/contrib/completion/git-completion.bash - * ls - * mv git-completion.bash ~/.git-completion.bash - * add to .bashrc that if exist this bash, source it. -6. help - -## Begin - -### init the git -1. mkdir dir1 -2. cd dir1 -3. git init -4. add one file (make change) -5. git add . (add change) -6. git commit -m "some word" (commit change) -7. git log -n/ --since/ --until/ --grep - -### stream -working -add file- staging index -commit- repositiry - - -## File Operations - -### Add (git status to check) - * git add . - * git commit -m "" - * git diff - * git commit -ma "" - -### Remove(git status to check) -* git rm filename -* git commit -m "" - -### Rename(git status to check) -* git add file -* git rm file -* git commit -m "" -* or you can use git mv file1 file2 - -## Rollback - -### git diff to check to change -1. git checkout -- file(before add) - it can return the status of the workspace. -2. git reset HEAD file (after add) - * unstage the file -> before add - * git checkout -- file -3. git (after commit) - * find the Hash value of commit - * git comment --amend append to the same commit - * git diff --staged - * return the commit status - > git checkout [commit hash] -- file - - -### Warning [git reset] -1. --soft not change staging index & workspace -2. --mixed(default) change staging & not workspace -3. --hard change staging & change workspace - > usage : git reset --soft [commit hash] -git reset HEAD file --n try to do -f force to do - -### .gitignore -it can help us to ignore some file or dir -> reference : - 1. help.github.com/articles/ignoring-files - 2. github.com/github/gitignore -git config --global core.excludesfile pathtofile -* git rm --cached file - -### .gitkeep -git log --oneline/ --graph/ --all/ --decorate - -### Other options -* git show [hash] -* git diff [hash] & git diff [hash1]..[hash2] - -## Branch - -### branch is needed, cheap, try -1. try new ideas -2. isolate the workspace -3. fast context switching - -### operations -> * git branch -> * **create** -> git branch new_branch_name -> * **switch** -> git checkout branch_name -> * git checkout -b new_branch_name -> * git diff [branch1]..[branch2] (use --color-words) -> * git branch --merged -> * git branch -m old_name new_name (--move) -> * git barnch -d(--delete) name (-D to delete a non-empty branch) -> * prompt -> 1. export PS1='\$(__git_ps1 "(%s)") > ' -> 2. export PS1='\W\$(__git_ps1 "(%s)") > ' -> 3. export PS1=\$PS1'\$(__git_ps1 "(%s)") > ' (it's cool !) - -Attantion: barnch is a stack mode, current branch can't be delete - -### Merge -> * git merge exist_branch -> * git branch --merged -> * conflict -> * 1. change by yourselt -> * 2. git log --graph --oneline --all --decorate -> * 3. git mergetool --tool= - -Attention: -* keep lines short -* commits small focused -* merge often - -### stash -1. git stash save "changed mission ..." -2. git stash list -3. git stash show stash@{0} (you may use -p option) -4. git stash apply -5. git stash pop -6. git stash drop stash@{0} - -## Remote (link to the github or others) -![Remote Git](http://img.blog.csdn.net/20151001194223393) -Easily, this can be changed to -![Remote Git now](http://img.blog.csdn.net/20151001194446158) - -### Set up a github account -1. you set up a account -2. Create a repository -3. look at the code following -``` -echo # >> README.md -git init -git add README.md -git commit -m "first commit" -git remote add origin https://github.com/[User account]/[project name].git -git push -u origin master -``` -* you can easy use - git remote rm origin -* git branch -a/-r -* git push -f -* git fetch - * fetch before work - * fetch before push - * fetch often -* git pull = git fetch + git merge -* git push origin :your branch -* git push origin [--delete] branch -> [远程分支的使用] -> git checkout -b [new_branch] -> (make some change) -> git commit -am "word" -> git push [远程仓库名] [远程分支名(new_branch)] - -### password caching -[Password Caching](https://help.github.com/articles/caching-your-github-password-in-git/) -or save the ssh key. diff --git a/_posts/2018-09-25-Markdown-Beginner.md b/_posts/2018-09-25-Markdown-Beginner.md deleted file mode 100644 index 00cdbf05..00000000 --- a/_posts/2018-09-25-Markdown-Beginner.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -layout: post -title: Markdown Beginner -subtitle: -date: 2018-09-25 -author: Shijie Xu -catalog: true -tags: - - Markdown ---- - - -- [前言](#%E5%89%8D%E8%A8%80) - - [Tools](#tools) -- [Markdown: Syntax](#markdown-syntax) - - [目录](#%E7%9B%AE%E5%BD%95) - - [标题](#%E6%A0%87%E9%A2%98) - - [列表](#%E5%88%97%E8%A1%A8) - - [无序](#%E6%97%A0%E5%BA%8F) - - [有序](#%E6%9C%89%E5%BA%8F) - - [嵌套列表](#%E5%B5%8C%E5%A5%97%E5%88%97%E8%A1%A8) - - [引用](#%E5%BC%95%E7%94%A8) - - [图片](#%E5%9B%BE%E7%89%87) - - [链接](#%E9%93%BE%E6%8E%A5) - - [索引链接](#%E7%B4%A2%E5%BC%95%E9%93%BE%E6%8E%A5) - - [本身就是链接](#%E6%9C%AC%E8%BA%AB%E5%B0%B1%E6%98%AF%E9%93%BE%E6%8E%A5) - - [分割线](#%E5%88%86%E5%89%B2%E7%BA%BF) - - [表格](#%E8%A1%A8%E6%A0%BC) - - [代码块](#%E4%BB%A3%E7%A0%81%E5%9D%97) - - [转义](#%E8%BD%AC%E4%B9%89) - - [Others](#others) - - [粗体](#%E7%B2%97%E4%BD%93) - - [斜体](#%E6%96%9C%E4%BD%93) - - [字体, 字号, 和颜色](#%E5%AD%97%E4%BD%93-%E5%AD%97%E5%8F%B7-%E5%92%8C%E9%A2%9C%E8%89%B2) -- [Reference](#reference) - - - -# 前言 -阶段性总结有利于精确自己的目标, 以及为后续的想法开辟空间. - -因此开始有必要整理记录. - -但是因为没必要像写paper那样规范使用latex, 因此就选择了Markdown. - - -## Tools -Windows - [MarkdownPad](http://www.markdownpad.com/) - -Github Pages - (If you have one) - -# Markdown: Syntax -## 目录 - [TOC] - -由于github不支持显示TOC, 因此需要先用**markdown-toc**[4]进行预处理 -也可以使用sublime里的**markdown-toc**[5]插件. - -## 标题 - # content - ## content - ### content - ...... - -一共可以设置六级标题 - -## 列表 -### 无序 - * 1 - * 2 - * 3 -* 1 -* 2 -* 3 - -### 有序 - 1. 1 - 2. 2 - 3. 3 -1. 1 -2. 2 -3. 3 - -### 嵌套列表 - - AAA - + A - - a - 1. contentA - 2. contentB - -- AAA - + A - - a - 1. contentA - 2. contentB - -## 引用 - > contentA - >> contentB - -> contentA - >> contentB - -之后的文本内容需要插入空行 - -## 图片 - ![icon](link to the picture) - -## 链接 - [content](link to the content) - -## 索引链接 - [content][1] - [1]:Url -[content][1] -[1]:Url - -## 本身就是链接 - - - -## 分割线 - *** - --- - -## 表格 - | Tables | Are | Cool | - | ------------- |:-------------:| -----:| - | col 3 is | right-aligned | $1600 | - | col 2 is | centered | $12 | - | zebra stripes | are neat | $1 | - -| Tables | Are | Cool | -| ------------- |:-------------:| -----:| -| col 3 is | right-aligned | $1600 | -| col 2 is | centered | $12 | -| zebra stripes | are neat | $1 | - -## 代码块 - ``` [python] - @requires_authorization - def add(a, b): # add a and b - return a+b - class TA: - ``` - -``` [python] -@requires_authorization -def add(a, b): # add a and b - return a+b -class TA: -``` - -or 每行文字前加4个空格或者1个Tab - -## 转义 - - -## Others -### 粗体 - **content** -**content** - - __content__ -__content__ - -### 斜体 - *content* -*content* - - _content_ -_content_ - -### 字体, 字号, 和颜色 - 我是黑体字 - 我是微软雅黑 - I like Verdana format - -我是黑体字 - -我是微软雅黑 - -I like Verdana format - -# Reference -[1]:[Markdown: Syntax](https://daringfireball.net/projects/markdown/syntax) - -[2]:[认识与入门 Markdown](https://sspai.com/post/25137) - -[3]:[Markdown 语法大全](https://blog.csdn.net/qcx321/article/details/53780672) - -[4]:[markdown toc](https://github.com/houbb/markdown-toc) - -[5]:[sublime with markdown-toc](https://www.cnblogs.com/Sinte-Beuve/p/5148108.html) diff --git a/_posts/2018-10-10-vscode-plugin-schedule.md b/_posts/2018-10-10-vscode-plugin-schedule.md new file mode 100755 index 00000000..1b2e1afe --- /dev/null +++ b/_posts/2018-10-10-vscode-plugin-schedule.md @@ -0,0 +1,84 @@ +--- +layout: post +title: "vscode 插件 markdown-schedule-snippet" +categories: JavaScript +tags: 效率 vscode markdown +author: HyG +--- + +* content +{:toc} + +## 起因 + +不知道大家是怎样安排自己的日常计划的,我习惯是建立一个仓库,按照年/周记录在 markdown 里,平时这个仓库也写点简单的 demo,目录类似如下: + +``` bash +week +├── 2016 +├── 2017 +├── 2018 +│ ├── 20180102.md +│ ├── 20180108.md +│ ├── 20180115.md +│ ├── 20180122.md +│ ├── 20180126.md +│ ├── ... +│ ├── ... +│ ├── ... +│ ├── 20181007.md +│ ├── pixi.md +│ ├── schedule.md +│ ├── temp.css +│ ├── temp.html +│ ├── temp.js +│ ├── temp.json +│ └── temp.md +├── package.json +└── yarn.lock +``` + + + + + +当然每个人有自己习惯的方式记录着日常工作与生活。我平时是使用这种方式,当然这个记录里涉及了很多工作上的信息,目前仅在内部的 gitlab 上托管着。 + +对于每一个 md 文件内部,我习惯按照星期几来记录,类似如下: + +![](https://user-gold-cdn.xitu.io/2018/10/10/1665ccd109702abc?w=903&h=893&f=png&s=151884) + +## markdown-schedule-snippet + +可以看到每次写这些星期几的缩略都很麻烦,于是开发了一个简单的 vscode 插件 markdown-schedule-snippet,正是本文的标题,输入 `we` 自动生成如下代码 + +插件地址 [https://marketplace.visualstudio.com/items?itemName=HyG.schedule](https://marketplace.visualstudio.com/items?itemName=HyG.schedule) + +``` markdown + +## Mon. + +## Tue. + +## Wed. + +## Thur. + +## Fri. + +## Sat. + +## Sun. + +``` + +还有我自己设计的 logo,哈哈哈 + + +![](https://user-gold-cdn.xitu.io/2018/10/10/1665d564192bc6bb?w=256&h=256&f=png&s=51734) + +这个插件仓库地址 [https://github.com/Gaohaoyang/markdown-schedule-snippet](https://github.com/Gaohaoyang/markdown-schedule-snippet) + +欢迎大家使用,同时也欢迎小伙伴们为这个仓库贡献一些其他有趣的 markdown snippet,欢迎你的 pr。 + +Enjoy it! diff --git a/_sass/_backToTop.scss b/_sass/_backToTop.scss old mode 100644 new mode 100755 diff --git a/_sass/_demo.scss b/_sass/_demo.scss old mode 100644 new mode 100755 diff --git a/_sass/_footer.scss b/_sass/_footer.scss old mode 100644 new mode 100755 diff --git a/_sass/_header.scss b/_sass/_header.scss old mode 100644 new mode 100755 diff --git a/_sass/_index.scss b/_sass/_index.scss old mode 100644 new mode 100755 diff --git a/_sass/_layout.scss b/_sass/_layout.scss old mode 100644 new mode 100755 diff --git a/_sass/_page.scss b/_sass/_page.scss old mode 100644 new mode 100755 diff --git a/_sass/_post-old.scss b/_sass/_post-old.scss old mode 100644 new mode 100755 diff --git a/_sass/_post.scss b/_sass/_post.scss old mode 100644 new mode 100755 diff --git a/_sass/_reset.scss b/_sass/_reset.scss old mode 100644 new mode 100755 index b044b283..933d1730 --- a/_sass/_reset.scss +++ b/_sass/_reset.scss @@ -29,7 +29,7 @@ html { body { font-family: 'Helvetica Neue',Helvetica,Arial,'Microsoft YaHei',sans-serif; color: #333; - background-image: url(https://ooo.0o0.ooo/2016/06/20/5768c606cf9cb.jpg); + background-image: url(https://gw.alicdn.com/tfs/TB1xzbUumBYBeNjy0FeXXbnmFXa-125-121.png); position: relative; min-height: 100%; padding-bottom: 190px; @@ -112,7 +112,7 @@ table { } } p { - margin: 0 0 10px; + margin: 0 0 14px; } img { max-width: 100%; diff --git a/_sass/_scrollbar.scss b/_sass/_scrollbar.scss old mode 100644 new mode 100755 diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss old mode 100644 new mode 100755 diff --git a/css/main.scss b/css/main.scss old mode 100644 new mode 100755 diff --git a/favicon.ico b/favicon.ico old mode 100644 new mode 100755 index 0561caf668e4eb6a9e624d3999f7ad056d859622..d2be0d19f338e88156dbd584efbb473646b0621f GIT binary patch literal 318 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 diff --git a/img/simpo_code1.pdf b/img/simpo_code1.pdf deleted file mode 100644 index 964ab9ab6e3fcac4052c7eed68997cd8a48e5f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205968 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 R0+BdFd+CzW4dpYm{|_VkYAyf( diff --git a/img/simpo_table5_apis.pdf b/img/simpo_table5_apis.pdf deleted file mode 100644 index 0bacdfacb1e473df62f1361ced61ae8e40a2f06d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252266 zcmaI6V|XT8*De~{w(UHzt&VNmPRCZqwr$(CI_}suJL;VDTJJvZKKuIisXsMq;vV-< zRn2Qmas^RwdS(U=c=Emd*#&qQ4k9KZdm}4&US38SOFL6TCreLL6C!3t86p510Km@9 zC{M)2C`JTe|u&^7F%++L`1OB$n?1|XF=qWMEnA(}USbT~9 zhm705TCy`L+1tAiasD$y`O7v$>|Bg09uB6A8cL>SjOyCVL@Y$iU+O!%IGGyS!oyf> z85x-vAQ>1K85ndxkYL;PUC0w9oFj!l+(N`}$qN>xV#k?003aGEgT{^G!p(`pFRj2y zurY!pk38!v0Ypmms5WN!;VPfdX0>4Pcftm2@I*@OFjEX5=@c_CYM>}DZ}=8~xsZiE z3Kk{=k2?X-#0ejNAW$HuAha5Im@g;%hsl53;p}4QPHz55xXf@&AO!|Kt)PW@eWE*KkZMjLJkToc|wN7#PGE7#K`^8N-18XxJYHDD77MtNO<2A?t#xe?RCLJl1(;AzRw&BA%%F!I-|Aiduh!(Xm_+}B*8dxASyLB76GIn6BIbX5s9PG+#PZK7B9?!`g^1;E=6rSj6BO8`$rZLE8y>w?pKuCxtQ900WtsE&-_n65%b@)P$FXf7oGWEbmo82ng2y+{s;XF z!O7l1*xp^6m6d^wgN^MgHn|wM*jb2JS=bo>U-Vcx*%>%k*mW6Yzp}{i@65kMzIur` z08F}!U+MNG|36wQnL69MIvJb(C;#l7lpPF>P5&mNGV>SUUrt{MDCX`Wq3rUNeP06- z%3s7;|DpNS{*wBy`6QIT1pk{m63T2utp8B{n!xcT_&+G(Uz&dbh%+-0vHfd*aR3q9 zzewUNL~Q>q5oaZ0|Hp8Q;$K<$4+BPVE+Y1Su)nw{IN2L3o4RN-e!aUGRZQJo7^Q5# z+$j9-P2}I3)R&rHRx)*RvHV9hSrHZ@_J8pCzpk$|{;LcT)4$34Hwymi@h^7&e^D-O z>E!J4*W~{z(gEyj>|d`!7S?~kkHbf?SPL8TP z_(^z@$OTD!mjP9c%TQ_8g(eD354Q^mcrpqDJ2z^Km*9?}9BpLRCYg!g*xx=dPRS?| z&YZWEdIos?8?kFieRmuNp*Foq-_bHuaTew>OfvXJ5DO>Q`kflTTPtC&tK_7DmXnf@hoje06lAVb*9M^-uk4 zmmz`-AMXx9si?Umq;S=*tL8;Tye}O>hh%=4U)?5Y9Xe*v@JM_!(@Zd}3s(QJ1W0I_ z=p&&Rf8VEmoIqu(?L^~tc7T#JGSp5EC4+Uqs!dc0EiFWyAEM$cg8s3fRknlrBz0<% z!2Rsvk|fs^W=y-PH-O1{LXuSU^rPwZ)}`XzeT#SERa6s!NP_^OCQAlCF_xhTgT?$-RrAsI$m$~tA>@l3?r&sRP2_G6K|&Gwhr@*L$Ku* zy)-jhMAAc%+x4c?T=oN9QIm>ncnhVWy2d(}v@b>Dbt1LIVn9mSEl|4tD{DA3G%%A)8?$fG-kC?A{CVOt)n1@W~d@%Ta5#?2VXVj2lyvJTpI2-ldueE#9-t z<8r&N=EV`(tu`mzHcqjzq0#=i!=fa*6j_FodYEW=Dh#wN_0_lQT z?dgJ6sCa@+APtB_J7T2s=wKH@%9L{p#G-a0(p*W72=%ii;yf{$`8;e}p8Isy#u*wx zZqNDmvQ(ESug4rb3UiCmJxfP6UE~=Z>=vx9wsTtg&IBB(f_kKvOO|#=49(gb@v2t( z8A+cnE2ftmxXxCl66u=uGfpcNIUbyy*H+H5wmg_P&FQYxJvo>q8)?*hrQy3{M>nI`Ti)PodwpZd-L5Q_7wogxs7+7i^D8N`| z?&5Kifv~J(rygOuoj(X+ zD^o#`^s4v8fly<#2p*%(^nLI|xgsCY!&;+-cn3r?wlT?P_3Bn?lhY4?u>#@jFu2&d zjAy#aR9CzGU(m5Z0A3E7BN5uhwEL!GO-z>oE;x@Re?)utZPp`W&|bBkTLPnt_xKvx*bhZP%=;RyaS2j>wrkPt;nwy@oYGY+O|LB*%u zbKsEKyKU|!zMYiHd^N>2iO4h{4vUcT;GEbpHJ+>mI zp`B2VI0sjVMSYjX+P2yj+%d;O-w;2*IUelh%-ysxyh=m+jZP02R{8naLMtAot%a3z zh=NphuA~dRYy?Z%m`mGyt#Q4lu(e_fr+@DU+!H(KLeOxB7zj~PFAvnkJ!&mt!}8lE zJ|_B*SYYe6j*uy{*u8WBzdABAJNj4v6}!ffXlV!|bT=)mmVkP~%rQGc+4ls59<4N} zjepRSpwRhz@G=@?3iJtIDfNfL)T>tqMoGX6`W!6VhM+>?=Da3dKQ(|RHeh3dc&>0% zz|VY(g`>_8yXO1?^kxniQl=GA@0$W&WLbKUXKnlg-u#7sBExTfFacZ14ul%<9d3-x z=n{Tm)Xum=i6N;GO^Z8Ux8F{2JQMVkk8Hy!Ks0s|mj_`I zmn-PRBECXOwSPn2r(u~{6@?=%754iclZ185i;qfv4md1fF|hOrW>oRw&i z;fnKSekRw+0S-7BiQK}h~X>|fj(gNxg}2e{*P+GX|g~| z2w3{s(Bu=;;8I6BU^uZ336>ttHI=D;1y!x95>=DO0w-)`yP|=mC&gEt#@BVVv3jznkF2s@fKkRq@*;xGF_i6uYYs&>- zV)^fXs^pIg^~o5WQTWYg^^Ib*yxNGW?U1YQ4PG zReOD~mU-!Wvm$HC-+K76 z5$t`hGi~L!36J7_TVX|yZx{dj_N5cPY{dYd0!)2d~+?<*OfS0osn?Q8!$ z?6+R~5ivjAo^`H3=lX(Zw*OW;==^x(SYN;l+vdaH^8WL@(3{ii^||nLG}-F$c5&a@ z)H=UK25a+1YE!k`;x~B5c=K5sR{NMAHT{%y|0KKi2M&AtkJC-g^IqMe4I`5Ka;nao zn)T)a)q3Zk`W$jb(DBYLga;3w{>*!(+H6?i<=|b)a|%xjfuYa$xbnm3^PXj-d!+lz zqV8*i?aw2pxu5ix#t+lD2zcC zAvw;qyu@w{G(tA?u?IHRvx=Dv8M6ncb#lCZlGfS@C4~0g-y0jFJ)iLX_IVj0AcJx3 zIHcBGZSK7{i|7-4+eas^jO|8so>Dy9YIb3Nn-l?^g)Jy8_1oH7vraO?AV+?V^zboW zf_D&`e~b)Ztnga-`IbMEzH1M+^-(!omUZq5f2zlROz0ZhG8Xo;wLEXsRItp0ABKWc z#HMBtHePQ)KFHy1!Q5Sm*S8Q+7Ug#@z9awXX2GEuWPa}6$l!&avDYSen|ch`3%k(n zrb1rUwEo_R%V-T5*n!sdFl_uMJN0`eC`wJm%lLS2c;YcXKnF0Xr=Gtem)V)GG9Aezv2VxQ_eAVgypA@^2fpMXLlHvE-}5tR`mW<^pOs`x9m&(R_X@N zGtOkt&n=j!?hN>xP}T6QGrTt zkXB(>(T>o^3)JTpE|sM@R;#?+AJeQ0e}HnLe7v`m~2$&3R9kAPQMJFTRbbz8g zvj8@#kZmCRJRXH(<%5*dWw2On1UUk-hRG4!=tCsdmD5O*+0Qg5&v0vGwP}0j?exNd zDWzb?19pisYM7@klGo-YldgpjCsUSAJhhI^ArpBv5L7@HFsMy#06CHRf76u$PcIKO^HfR5irS#BA#bgs)bi06BJ#Wqk>!p_jl0E{aS7HAWh5 zrheS#<3c5(RtzOXJhjVU9;|eaRM-h+4DI9(rg83iNy^wh?rkLrKoKWVwXLXNd#qxr z>?5LRA|}a>tio3Xvf>+6wJMfSLRpxD6Y^j?)NpUuF^kveDiB+^bC>E%D|x?7pH0F` z*WkoRW&7r-J&ugyQ+51)2esNjR-u(Xu$K0!(E!QdIn)k~X&nZc5i!aA+?5~^(jv!rPLYiL@e^u7Wjvj&mW`GK6~)4Mx#I%JunH~;wSn51ONVIj7@G&GzG{d*8J%d5 zO>)oBS~gwfxIhE@ehoNHquoNd93{8L2eJa;&gN@t;j~Iorxq_w^G#4%d6pGt%1wz8 zZ7zUwFNHi@*p(XfR4VMAekf%cHqDA6q7KeA89T)!)gx^)ZmlD0P1<<{z2Qj({XNPF zW-6)?)<3=y5(rEmY_6muYiX#{%7fGYv5cM))y+wEiTkuus_dXm5?Mu(Ibmu@X{p^P zlKN?5ui^&G7Pi+S2Y93VhYdxW`t(9uQwgC#6_}>;!_ki10TisNW)Zgq?wyrn!$g}> z;ITY*pJHfHSFRTlIBBAsE*SV|I|Y-IO`H-y@OMQV-<}@Xig$%;q-y1>`_J)WHN%No z^-ftRgz=Fp>_KRnk;W4vZPu3WWTQlFGO_Y;Rgp6Hc^Vp=9gAXC?uLM06(~}N)ua)FMlLIPMi;Qm8|VH}z03S}HUNBK|Qgqd)W~mU2S9 zOSumX#^t5%A@uMauaPD_EJWFuy5i#@(Y^MbOUm7e`cy%&UBx1??z^T2g+sw;V4grq zfO6pR#r^A4C(0%ohVDQYXi2A^{Atg4R=NzkcOPUN>I!FkTt>1M{CP8V+Nd9@&}Y0F zX~FcCE?HffNED8AV2=!9l+ZG58spAG%vk6_5iJ=KL`i+2eLx_`3KEL_FcJ#S zfo2H2Yhq}3&mu7aj6#R@mi1^g2&z4O7HYd3o1yiL5kBs!Zw=4|ic33(Q)K^8PnG$D6(NyddQ4jEU_ z;V}ymt4xLJ8SPlof(B}TI}lvLO9o|SGijv%#lF%dZWgOI&`J}3;<(-*s@ksrdnbGr z#pSRDLb(v{EU%}kJV-BR5f3EdTOA)6N#it_JVP6=X6r2URuU(Ya+n)n$8@e)1dXR! zYUb(^%o;0Z)nR_#S|ycNUgIyBylN;BtfpTZ2wj$D&GSR9Aex0(h&>CoR-^lB!mae@ z=1ggOmA>1J>ubtsZ zzLBA-jhieY6U$@o*dgO)yiMI*A7Msux>fi;31>!c&g{gjJ-8~MXYlMIwkr^-RgHW5 zSua$wrnT1#K7qIO`;BF`-uxEl+uf^d=B3*!&eu{GtItKf_|*vnEA2GnVg$d1TB^xP zYgozBmsLzH6HG^cUUGp8d;JVfe^RLj#mfj_+-vx3WSkgwpGmz13Gw5z^y;cz?A|^U z?$N<6(#hd-QFXeOM^&D@z7i?%YLVz^xw%+T)4O===yjpLl*OZT4~h-ydfDgAKI>40 z^z~uT-Y{>O_mGD0#%Qvg9kqGvMC?3xY~y>%89?xne_8Jz-M4jU_u?X`wWT7daLe!H z=ypc*>C?Kp_OPFx4KI?~M2OZaW~mM-7N$Eogz}6nBu6>YSt8{-O~zUwUn%Ji0<;KB zbn5ocBAgWEF}7fw&I)6Uoqmf!RW0oN=B%^)eEG+)T&I>F3Ls$HWh(tso zjiom(iqF%7@KO-Q*eQ*9`rQG*t|p!QP!^#|Jq1pnfk?SeZFoQ5MT`-ecxyL~NQnx~ zNP$Xm`c0G&G7;H}Kh1k!GA#;eFK9fLi9(=Z>&JB3lt!JkjChJ0b9!y{oxvUSO3?V4 z6HgkRQM4;ldSi500+(A_Us4pG6<3n?z>`wL9y{STwbiGf@t9wcdb53Kd2=vE!W10vIVJDCMhYDi!pxOvRHn3^;QPas`X(C4S z#LiKaWF%(3!TB$e$}EhBzIEx~lkRQl_Ddf9>9$3l<6KGUYX^8vSd4(e%{!6|Z)Bc~Lz& zR$p-*l-awv*Z25*yT7J%Qh!G_lO5)$P-QjU79jNf^Ad-TOHfL3uZ2akJgrt0-fNgr z8(#I{2RKs{jXkK^cd<>dhUyV>CjM@C7lHDKzMCO410RpdW;2dWEY07BzYl|LT!%G? zf|0@Q>6<(K*wd)?(Y>Mf;X6^}$c~IzebLyT232+l^)! zzd}xWB{_D25cgbtftN4lsavPBg=lB>?PL_!^SjnQP0EZ7z!DPMTpqi!H>DHRgcKV zV+tc}f0*{@EeO!tp1TyMW{vS?ITGRW(`T9X^2A%bZ|%rj3a?`-YaUMaYR5?DYQ#!p z6cxpujE6N9I)rBHXwe%jbj+nzJAIOgG(>9;oU{h4(iP-<*c#s%tDE)2!?)RIVK*<@ zefub{+4Pk!ttB7Gzm-iBi$pWTKqKoZ;uG7m(&dDLwUfpC96?`YZFV!oGO{zrt!nNN zQK+V#9vEjeT0a|7+L`tMNX$A3(24aNuc4Qfo~0~JxU0zzta_toT><24uidXpG<7L# zjc%4pB}J|IkVlZ0=d>Kh2+?wX1&^r^&5BpD)qU@E97F_2y_hXJCB~KxMI1`&s_5Nc z^-WcsR8%bH6+3@BxBgVKpsY6n6VPd?hanoHu<<9)-4^!Ib0DL=VQ~yeB>rRCIi6K$ zqz=%}5|$=Iwu?LZ{;Rg<3-icWFs-^=;z$#VzIzJ&cbYs{Q4*QvQ<4~a?5 z8ZV71q+C8z&?YFRGvPn{sSg*C6;aYuN2ph}390O$WzTc5cSr?-m5-SpP#mT?EADhI ztU_7d+KmV>4{gmf;j0fdZ0ct?49~; z%rz5s9v~x?DH<(Y6AN}?yl#)Gtqy5bffBeRU`NSiPc*q`zqbUhFWoR7JIp=2j9g(R z?iC+;^SGC{)8iR!l{+ZDni?;mXK-ensY;DZj!rFbu`@H{3Pif4CfO4+9TnH`Zax%c z@UActJ9we}5)e&$jGU3O4yqO73zID{m-PyRiI~BcsPbew{t+WtI;R@kACYC#MiQV;h7=J?|8hb&4zM#)jgvrzc5%XdDVUr+#Hd}Mvc5;N+Xb!Ld~cx6Qz?3ey8>$ zaG3<2?7N!IGn>ljo?Ec}Lv&4K*WzKo2TM-fTaoWo%<)VPTU$!`zz^xTWYt5(A!eyK z^rvOc+5IPXiK=!}A`VLJ3j-dzR%aaAUze2txbj$~Kfm&?JSGt`i-&jBvBO%eQavV( zj2K59Y;QN)5}65-_gbHLkws!%O6Wc7nNkRV?TV`PL16AhMRb>2mqpQD7m$)sRKa7$ ziUQjX)e;y46`G<;v|8lBlql#vl?7=UNub+{*2W;wrh!I0s%VOXsG#4bG)m4sM&r{Cv2D-{qcD6(D`4_}!-7oXAnrCCcA zCi5MLcGBJo0R8X=ts0l#&5AQbQn>S)Kb4_^%c-PfH!S10TJW(Wptk^BFn+~tA;zCxSfKdO*vyzk=x+Xs&^gOw?V}0Xy7K)nV3;DF|cNtnc z3hV{y?yP&V)Mso{$uTwh!Lm_?nc-EN*w*5Ko@(CWz}&aZnMx}@=U6*cc3tfX!pGOk zzaO>)_xF&?g6e`!?U=({M1fE56HrV(u-vJC;ZZgo|GrH=M8 zhmwN)3s@x0p(@V6jHLUj%KKaQhuazq0__)HX#FkvGQ`^}BOKKR>uU|%a-$Rg!$(9G z`Y6HfpreV+q4il86?8`fQsSpDb?8?4w3f-ppL`t96AOU`PGd?)6{8BI7@_(Jb#__byGbK^+K#PXF4Pe^nVC2t51QsAO!&S0 zSW12aAxZsqpvBO3LWEUNWF-pfLMjn0>QLTKw?N7tY~A{29S$7JtK^?&qypI2Jg?~R zN+IL}xMp)kPjIQPQKt)lyP)WP?KGyGJE;8Qw6*>2-vRo;$SG>gYo1z5*@jWtQ^3KurpLzBV{xf4aqJzCTN)Q-`eV@+~q{wFHpSnPU_<= zWkWFNOh+nUVfs}@D&Rfu3lV7TJud11qn7Qgx?-k8)Vz}s&MY9?jdzNW;L*Y#4pd_9`E!9xgjQ4Zjy-spvyIt3f+0jj|p{XxXL+&ldo-D}w-N z_TKJ{M=Hiem1p9B@YYq8)JEE!kwabG*>~c>X)XC^&jGJFaE8p~{NW<0q z($;Ze?`T3_e*14*Z+7{YRv?OlKKS@)4GhBKE??XXEK4SI`P*RKAAy@qaCZ6A8Kpw& z83aDMp#~jgI_u5bX=_`ff}DOlRfr?eTdRb-blw5wsYcqSmSp(oGU-v3t`j zE-?^1TId5(Mf%m5fTXd6oG9okv7KK2j4YBw$x=ny8tK!jtz^*{^n*DiGdl6rH~(2 zP*)>_DWhcNKq){+!6b^>v>Dw}+=L|V!EqZ?0an~QqyclS5R?cR;>P@}(mt2brXS<= zBmF0fu9u9GLfljxdUmm>q1l@TWw{Yl;eZKFI$V7}!0poiAk>wf#JV6E9!iW)c*Y4M zwrC>+R(IBx*;CB~N}=^Pg0wHn$QCiiwS=7)Q~^Om%%wfJUe2cK@)NHtT9Zbtqbi-H z?S^%ZZ1QMdv!zMZfvuNbMwbuQUFN#m9-hlcNc?vl*=q@TY9_Ed*gAbIm z9S9&4VHVEGFs_rZ==rBie5J))Ku2U8n+Za_JQCndAVKPfeZydujDKG>0WRna8Okyu z%A!kU z`2(}UZNISteEC3R-yaFwdqnriO68z?Ug%fFMA3ICU|MK*0)iB@tca$Cg%mp%*d1MX zXCMTZL`q2XqIG$eD`wcy3s}uRY>L+0ny3}F&zGzF+|E}=)~aI@AEz0zV9UFH*=S8+ zyC6SqQLTcz0b%l_4wzVyQ?T$B3ybhxjG*7~opefqpu{R5PiYcGw&3Ljd&epTLS*08 z=adN7%TqD?tB|5Wx#EBBmzO)Span%X>KK9)ICT$z*{~BO%<^HGe zpq@nf)BFAH?!(b3j^2LTQQz5@>U016GR}=dmnYA%R)o7?b9+{@%z-GVL~!B;4ncVu zoq_1B?OLFBe$j+EcD7!1e{^U2^EG#J_AO!rUIVU%--Ctr8^mW9iv%#}~`h)dn7x0WU9UwizZy?BDs^f9n3|{S>=< zJIsfff5QEVjxtfkT%EtK9pLux`&hV_A5UNReMd-3``Cm;$?K1|rK#UhIcDsoF^giw zCT!}tip!64kxzR*Z)1`O{1qGbRs#l|0N;KH3zW^0I2 zr6)AM@%+UPZ;gywI5U?A~1pxW?;<*Deu?qF(Zr{l69|^tVvS>= z-q=UygaaRmz(^t(eIynd+pw_WyFiG~ll>XW{k;<{Gdl#ncrrw^_GDj))px+9!P`t0gy zH}!ZlEx2~n3c7)R7r0wQ+u9q(W8jeeDmZGboIQvjJRRa)w${43&->X|ee)>_p_dx; zJ&rvGCf>;XDn=RVV%LY(-Qc;*!-bm#+!=wpDrfqKvNQOiVey?~9bG)`#1kSAYLP7riIk39Rm1|(ZZ6hW=Z$w5NIH5))pH4*bqT*GjH6+vtWx)Q``}-TBFkb; zG6d-JyA!8{*(N<=r|CSVT)O+RDF=8R?0BS}PBhFeGwc|nO0t``{2U`6LN*jN_q^`c zHnKY&&_iCt*gZdR3VSJ~G$GVyEMBG}#)84t)0&BSfM{qz_k(S$yf=tZ&aU@4BTnr4Z5~FGClX4;S@V-OZj! zf4Zn9DLa_yWBQZULJ9^;0=1MgaIoDLYuQ285lp)PEGbvu_%J{8o69-$iy~=6qsUn5 z5nUO2mC(Is(q+ zey>mtAb%;Bv^O}r>F%y>rvIT;kCX^&d%r{V?)MGd9?V@b?v}1K+~>-8eaQ<-LGgyc z0%mWiIyRojCK+H=M_2#e_s}od$hQ;mnmgOI`@6mYXS_eglmFRhsvP3r7s{S&skwFO z7LPP>c)lIwQh)ePTi%Fql^|UjD1I@O+%L6md)JKVCRV};DM_YreWlzX;6``J96#<| zy;q=S$kC;bKm~nogURTLZT^p`E&_UZE|S-Z)YPuWn8!Q7d6rE{Weg)nY6K4&10#p# z6M^|-z3R)<&yoRsSKN^v+NYS(frexf$EGOT>u2CWm?A7*AoE;n0 z4hUG#mV&gUC*H7#LSzwXsgiz#hr{xsbnIc>&e3F!-|mW@@?>xGcq21XhAY*pdLMG|7?zrO4=*0pi9CM zghFpLbcM}H$KF}m$_5qTu1IGc^wOU0zAw_--*aNzt@=h0YQOGWNrPo2Bwa#q-lv?H zB_nZ`lcK7;hoPS)=TF~@aBNh-z|qxaN@8jYtN12CJgS%C2jMwTW#3QZ1n1LSUPxMG zOPTalj;odZW>8TBlq7UjN4mE-R=(p;!}h@4Pm=ZqVrw$!vFwR|tzG?xo4H`CHl#|P zhZFy)2^qK2YS0<9@5G}Q5@1A+g81EidoC;<79ps&sAu)F2svS7MG!uZy-s@(0lUmh zcR04onZ&lZ`ua=?!0+pg&>VXo^z^5BIA2P-*Y02|le6wx)(=999{+Sht#k8&*R|IMKKPDElBGNU6!e&EvjKY738Q7+YQ&Gk zir}b2JdV}L76?hVib16e)8RN$R0*?X2(61~w5;YUY^H?x>Ik!^B&FExFEi%{7RRIP z79}VXp=)I*WG6zvj7wxFIM3t9r5GnoK%~4U4j?rs1nM@UHv#FhD4i+e!9Qzdj#k`w z0bHjU08NVLq;VjxtEBO+b#E0wEj*?M`2r!m5;>)9?Kcd2>k5;fZbdTe=Cv{iG}9^E z*amvVQO7;&$rD8CA>t4jaDsNyOe^5~ zdx}&34=H3UIhe`etoNXF8K_!p_r=^w?Du_Xv35tTYaIjWW=U?zEOBhj$t*ifU3o4L z+>hVPH|7Bg^XVR(dsfG1>15ze8if33>C{HHNtKg)iLdGPtB>e&GN{&0G#28lHU4Hz z#~$FUo{ucQOw(gbD6YK`9$Bc*l&f;33=rX#XUDH41S3qDCoF8MhPBGCso*nDEexC2=A}%t#OE%UVMcRerU!1=M`T6+5kvg zwmte-+*BrPH(hH$aQ&$4dTs5R$E!7WG@I|Lw2E~eicBku6$zJmamJb-eba-{ybS0) zFp;=<6p7r4hU{>btQXDUap#l+f zsbK?c=2UJ~rQ0t($2!AXXGh+mN8^Ase)GtTuDx=0jYz|nf^W%WmRL>Lkdd4yj!2F* zX6iu}!e5*n>+-~HViTrdXuEGC0(tARM89NZN&d_YtWbXbIpMZ|k-MTY4(?nwZ*E$u ztLarq0hzT<7O#-DO3&t1?#8y{*>+iHx#)ZFqj?dOGP`LNyominM-1x{tgwR&yCASN)!XJ5#?n zi@<5t;`*LTw=+~{t+@Y9Ly3g@+z_kwhHz;qB~z*rbh|O)S6>tmXy{|q!#OY6n;)NR zz?D53^(l;tu{U+<%3`a-I3Wo^V>(H>=**0w_5Ak!5pwIpoM>u;LThQ1G0+8Ox;0n* zdsS50AwSFJ>fH6WVzjEky&r^5$A3h+v53K0Pt*B5%9*h*EwkyDbc@n5JpnAiTzD6e z^Ozgx7iT!ZtMNYt;$QbYT0AiwC+vuB(sm@i<41G|B>aNhEghL0&Sv}S*rW_Q4sNUp7oZN*c%NJj4ie>6-<4v zVvkEB8S03W{OFis>xiMS+@1@Q=VGW8XCW#P?ECaUa-fTJvEt!W!f3nZ3`L9}XWiXn z4U&mKE;)1wqD_g+)n1u)68N(RE3Q3Szp^k$(H#MP0PPx61!pBf#!#L0&VEi|(EM|z zmriWYbzNPa;uJx&7jvqW<%o)tTP_*svZMCpBvsaZN@H~j2R~Db zEYJdlN0V2hduCf2RlpCAp24CyD5j2W5U3YEk34FB%j)#}It!SRC#Qp=sj8b3?jeJ6 zfcdoSJdNtsMOxi{NQ6kKz1Hu$L2&#)*RYPMY9)z3@gxtcdfd%zo5C;mL34aljpbyo zy}`NWsH4w|$@b$I+s4=WcpPg+(tLf74#M2>$3S$`BXHS3*Uy5Qv#MmU=zD6xIUWl@7!dk@pcFwBcJ9B9yo3zSKOuh==E@IS%h{+;I?(G27~Od{ z3y6|7&CJ5D8gnR)%n!#_XCv4kpusegFIS3b4z#P4Jg@AVG^lGvtJUasmV3$0kO~XT zsS_=>n&>pgOr{LabhFtrRK^oziyg_4?N^I1QKIVeGdc>GZQ6%eGTR$*1NsBB^=})! z=U#=D?qX5X1tsm}!=m8DUQ5b0!o>4a-U8h^hC#UuP|6066v%Q6a-5JSWlyldzpFOt zp@tPv`m3UIz^BVRcm;EhCDCVt8YL=Yy;7UepTT!2A-B%Uw%MqbmSyK;R_Yr7%C5C6 z*EGm9IIZqDo5PA76IV|xdlV8EWf$VmC zdwbl*l*ALb!5^WK`##zJen0H@>FtQ1lSRzA=Id9!kJJK7x=0t{rHpy=&iSBM=4a*N zth}3@L2#%KLjrm+fX-T!)to;*I_o_3Y#qK@@k};ymyyRcv}}mmc@TH`z@DF>Sq^t< z?|@Omhdk&(B=eHp!59xz3h+N5Bs!eyY+i?bpC>V!aG7lb+E|c+06QLrs%7@zxj>%l zQF;YlJt@Dg8m)Sxv)ryY4{kP24!Op=3bK2N1 zYQXL5_p|r|m7xgE4U$UM0rqJ;LeK~X9$mE9;>|W-mftS!takLZxCYj_dxYV|e9GB$ z=zGj4Zczj$6f>{f{e@+sxaVus{>%8tT&4iBcjbD>M^yRX?H+h9^yOEXZRt;y=^1G` z9`@fd+w;n&3K|h(=vSFdWVRU}(~m{qykU;^ac2tgefI5r4~;auVU-p*c4FDLuY#9R z)6CvP-VM<%=tF4~7R z@2;Au{WxcBbzmyilMpH;62PWm$LwObEh41bxKupq9|HdT35P{4$8 zCe8)7ek-jRIC{LuhX(NdsOA$Y`Zl+;h)cU*f9~}FoBJev zOAY2Zo*P~9XL$6r+3%Tp)Y`hN@~Q>hopW(4$+lx!4~e=w$rg~ z+qP{x9ox3;8{4++bZmBbgHH1LpS{5wyy;nIRD-kX)ZY6m&mxK>XtR5+UiS`%11NKy zhA|QF_!YoAcq=mJTv=Rdk<9vnh62ab4OsV;h%W|-)6g#e>$563AyI^ErH_Q&=Ss#5 z?P~RAYH%q*AVW~o0gu;a3Bv?1zj0q37<
-

Welcome to ShiJie Xu's blog

- +

Welcome to HyG's Blog!

+ 这里记录着我的前端学习之路
    {% for post in paginator.posts %} diff --git a/js/main.js b/js/main.js old mode 100644 new mode 100755 diff --git a/js/masonry.pkgd.min.js b/js/masonry.pkgd.min.js old mode 100644 new mode 100755 diff --git a/js/pageContent.js b/js/pageContent.js old mode 100644 new mode 100755 diff --git a/js/smooth-scroll.min.js b/js/smooth-scroll.min.js old mode 100644 new mode 100755 diff --git a/js/waterfall.js b/js/waterfall.js old mode 100644 new mode 100755 diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime deleted file mode 100644 index 0dbddf07..00000000 --- a/node_modules/.bin/mime +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../mime/cli.js" "$@" - ret=$? -else - node "$basedir/../mime/cli.js" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/.bin/mime.cmd b/node_modules/.bin/mime.cmd deleted file mode 100644 index 81695620..00000000 --- a/node_modules/.bin/mime.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\mime\cli.js" %* -) ELSE ( - @SETLOCAL - @SET PATHEXT=%PATHEXT:;.JS;=;% - node "%~dp0\..\mime\cli.js" %* -) \ No newline at end of file diff --git a/node_modules/accepts/HISTORY.md b/node_modules/accepts/HISTORY.md deleted file mode 100644 index aaf52817..00000000 --- a/node_modules/accepts/HISTORY.md +++ /dev/null @@ -1,218 +0,0 @@ -1.3.4 / 2017-08-22 -================== - - * deps: mime-types@~2.1.16 - - deps: mime-db@~1.29.0 - -1.3.3 / 2016-05-02 -================== - - * deps: mime-types@~2.1.11 - - deps: mime-db@~1.23.0 - * deps: negotiator@0.6.1 - - perf: improve `Accept` parsing speed - - perf: improve `Accept-Charset` parsing speed - - perf: improve `Accept-Encoding` parsing speed - - perf: improve `Accept-Language` parsing speed - -1.3.2 / 2016-03-08 -================== - - * deps: mime-types@~2.1.10 - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - - deps: mime-db@~1.22.0 - -1.3.1 / 2016-01-19 -================== - - * deps: mime-types@~2.1.9 - - deps: mime-db@~1.21.0 - -1.3.0 / 2015-09-29 -================== - - * deps: mime-types@~2.1.7 - - deps: mime-db@~1.19.0 - * deps: negotiator@0.6.0 - - Fix including type extensions in parameters in `Accept` parsing - - Fix parsing `Accept` parameters with quoted equals - - Fix parsing `Accept` parameters with quoted semicolons - - Lazy-load modules from main entry point - - perf: delay type concatenation until needed - - perf: enable strict mode - - perf: hoist regular expressions - - perf: remove closures getting spec properties - - perf: remove a closure from media type parsing - - perf: remove property delete from media type parsing - -1.2.13 / 2015-09-06 -=================== - - * deps: mime-types@~2.1.6 - - deps: mime-db@~1.18.0 - -1.2.12 / 2015-07-30 -=================== - - * deps: mime-types@~2.1.4 - - deps: mime-db@~1.16.0 - -1.2.11 / 2015-07-16 -=================== - - * deps: mime-types@~2.1.3 - - deps: mime-db@~1.15.0 - -1.2.10 / 2015-07-01 -=================== - - * deps: mime-types@~2.1.2 - - deps: mime-db@~1.14.0 - -1.2.9 / 2015-06-08 -================== - - * deps: mime-types@~2.1.1 - - perf: fix deopt during mapping - -1.2.8 / 2015-06-07 -================== - - * deps: mime-types@~2.1.0 - - deps: mime-db@~1.13.0 - * perf: avoid argument reassignment & argument slice - * perf: avoid negotiator recursive construction - * perf: enable strict mode - * perf: remove unnecessary bitwise operator - -1.2.7 / 2015-05-10 -================== - - * deps: negotiator@0.5.3 - - Fix media type parameter matching to be case-insensitive - -1.2.6 / 2015-05-07 -================== - - * deps: mime-types@~2.0.11 - - deps: mime-db@~1.9.1 - * deps: negotiator@0.5.2 - - Fix comparing media types with quoted values - - Fix splitting media types with quoted commas - -1.2.5 / 2015-03-13 -================== - - * deps: mime-types@~2.0.10 - - deps: mime-db@~1.8.0 - -1.2.4 / 2015-02-14 -================== - - * Support Node.js 0.6 - * deps: mime-types@~2.0.9 - - deps: mime-db@~1.7.0 - * deps: negotiator@0.5.1 - - Fix preference sorting to be stable for long acceptable lists - -1.2.3 / 2015-01-31 -================== - - * deps: mime-types@~2.0.8 - - deps: mime-db@~1.6.0 - -1.2.2 / 2014-12-30 -================== - - * deps: mime-types@~2.0.7 - - deps: mime-db@~1.5.0 - -1.2.1 / 2014-12-30 -================== - - * deps: mime-types@~2.0.5 - - deps: mime-db@~1.3.1 - -1.2.0 / 2014-12-19 -================== - - * deps: negotiator@0.5.0 - - Fix list return order when large accepted list - - Fix missing identity encoding when q=0 exists - - Remove dynamic building of Negotiator class - -1.1.4 / 2014-12-10 -================== - - * deps: mime-types@~2.0.4 - - deps: mime-db@~1.3.0 - -1.1.3 / 2014-11-09 -================== - - * deps: mime-types@~2.0.3 - - deps: mime-db@~1.2.0 - -1.1.2 / 2014-10-14 -================== - - * deps: negotiator@0.4.9 - - Fix error when media type has invalid parameter - -1.1.1 / 2014-09-28 -================== - - * deps: mime-types@~2.0.2 - - deps: mime-db@~1.1.0 - * deps: negotiator@0.4.8 - - Fix all negotiations to be case-insensitive - - Stable sort preferences of same quality according to client order - -1.1.0 / 2014-09-02 -================== - - * update `mime-types` - -1.0.7 / 2014-07-04 -================== - - * Fix wrong type returned from `type` when match after unknown extension - -1.0.6 / 2014-06-24 -================== - - * deps: negotiator@0.4.7 - -1.0.5 / 2014-06-20 -================== - - * fix crash when unknown extension given - -1.0.4 / 2014-06-19 -================== - - * use `mime-types` - -1.0.3 / 2014-06-11 -================== - - * deps: negotiator@0.4.6 - - Order by specificity when quality is the same - -1.0.2 / 2014-05-29 -================== - - * Fix interpretation when header not in request - * deps: pin negotiator@0.4.5 - -1.0.1 / 2014-01-18 -================== - - * Identity encoding isn't always acceptable - * deps: negotiator@~0.4.0 - -1.0.0 / 2013-12-27 -================== - - * Genesis diff --git a/node_modules/accepts/LICENSE b/node_modules/accepts/LICENSE deleted file mode 100644 index 06166077..00000000 --- a/node_modules/accepts/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/accepts/README.md b/node_modules/accepts/README.md deleted file mode 100644 index 6a2749a1..00000000 --- a/node_modules/accepts/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# accepts - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). -Extracted from [koa](https://www.npmjs.com/package/koa) for general use. - -In addition to negotiator, it allows: - -- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` - as well as `('text/html', 'application/json')`. -- Allows type shorthands such as `json`. -- Returns `false` when no types match -- Treats non-existent headers as `*` - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install accepts -``` - -## API - - - -```js -var accepts = require('accepts') -``` - -### accepts(req) - -Create a new `Accepts` object for the given `req`. - -#### .charset(charsets) - -Return the first accepted charset. If nothing in `charsets` is accepted, -then `false` is returned. - -#### .charsets() - -Return the charsets that the request accepts, in the order of the client's -preference (most preferred first). - -#### .encoding(encodings) - -Return the first accepted encoding. If nothing in `encodings` is accepted, -then `false` is returned. - -#### .encodings() - -Return the encodings that the request accepts, in the order of the client's -preference (most preferred first). - -#### .language(languages) - -Return the first accepted language. If nothing in `languages` is accepted, -then `false` is returned. - -#### .languages() - -Return the languages that the request accepts, in the order of the client's -preference (most preferred first). - -#### .type(types) - -Return the first accepted type (and it is returned as the same text as what -appears in the `types` array). If nothing in `types` is accepted, then `false` -is returned. - -The `types` array can contain full MIME types or file extensions. Any value -that is not a full MIME types is passed to `require('mime-types').lookup`. - -#### .types() - -Return the types that the request accepts, in the order of the client's -preference (most preferred first). - -## Examples - -### Simple type negotiation - -This simple example shows how to use `accepts` to return a different typed -respond body based on what the client wants to accept. The server lists it's -preferences in order and will get back the best match between the client and -server. - -```js -var accepts = require('accepts') -var http = require('http') - -function app (req, res) { - var accept = accepts(req) - - // the order of this list is significant; should be server preferred order - switch (accept.type(['json', 'html'])) { - case 'json': - res.setHeader('Content-Type', 'application/json') - res.write('{"hello":"world!"}') - break - case 'html': - res.setHeader('Content-Type', 'text/html') - res.write('hello, world!') - break - default: - // the fallback is text/plain, so no need to specify it above - res.setHeader('Content-Type', 'text/plain') - res.write('hello, world!') - break - } - - res.end() -} - -http.createServer(app).listen(3000) -``` - -You can test this out with the cURL program: -```sh -curl -I -H'Accept: text/html' http://localhost:3000/ -``` - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/accepts.svg -[npm-url]: https://npmjs.org/package/accepts -[node-version-image]: https://img.shields.io/node/v/accepts.svg -[node-version-url]: https://nodejs.org/en/download/ -[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg -[travis-url]: https://travis-ci.org/jshttp/accepts -[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/accepts -[downloads-image]: https://img.shields.io/npm/dm/accepts.svg -[downloads-url]: https://npmjs.org/package/accepts diff --git a/node_modules/accepts/index.js b/node_modules/accepts/index.js deleted file mode 100644 index e9b2f63f..00000000 --- a/node_modules/accepts/index.js +++ /dev/null @@ -1,238 +0,0 @@ -/*! - * accepts - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var Negotiator = require('negotiator') -var mime = require('mime-types') - -/** - * Module exports. - * @public - */ - -module.exports = Accepts - -/** - * Create a new Accepts object for the given req. - * - * @param {object} req - * @public - */ - -function Accepts (req) { - if (!(this instanceof Accepts)) { - return new Accepts(req) - } - - this.headers = req.headers - this.negotiator = new Negotiator(req) -} - -/** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json" or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * this.types('html'); - * // => "html" - * - * // Accept: text/*, application/json - * this.types('html'); - * // => "html" - * this.types('text/html'); - * // => "text/html" - * this.types('json', 'text'); - * // => "json" - * this.types('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * this.types('image/png'); - * this.types('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * this.types(['html', 'json']); - * this.types('html', 'json'); - * // => "json" - * - * @param {String|Array} types... - * @return {String|Array|Boolean} - * @public - */ - -Accepts.prototype.type = -Accepts.prototype.types = function (types_) { - var types = types_ - - // support flattened arguments - if (types && !Array.isArray(types)) { - types = new Array(arguments.length) - for (var i = 0; i < types.length; i++) { - types[i] = arguments[i] - } - } - - // no types, return all requested types - if (!types || types.length === 0) { - return this.negotiator.mediaTypes() - } - - // no accept header, return first given type - if (!this.headers.accept) { - return types[0] - } - - var mimes = types.map(extToMime) - var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) - var first = accepts[0] - - return first - ? types[mimes.indexOf(first)] - : false -} - -/** - * Return accepted encodings or best fit based on `encodings`. - * - * Given `Accept-Encoding: gzip, deflate` - * an array sorted by quality is returned: - * - * ['gzip', 'deflate'] - * - * @param {String|Array} encodings... - * @return {String|Array} - * @public - */ - -Accepts.prototype.encoding = -Accepts.prototype.encodings = function (encodings_) { - var encodings = encodings_ - - // support flattened arguments - if (encodings && !Array.isArray(encodings)) { - encodings = new Array(arguments.length) - for (var i = 0; i < encodings.length; i++) { - encodings[i] = arguments[i] - } - } - - // no encodings, return all requested encodings - if (!encodings || encodings.length === 0) { - return this.negotiator.encodings() - } - - return this.negotiator.encodings(encodings)[0] || false -} - -/** - * Return accepted charsets or best fit based on `charsets`. - * - * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` - * an array sorted by quality is returned: - * - * ['utf-8', 'utf-7', 'iso-8859-1'] - * - * @param {String|Array} charsets... - * @return {String|Array} - * @public - */ - -Accepts.prototype.charset = -Accepts.prototype.charsets = function (charsets_) { - var charsets = charsets_ - - // support flattened arguments - if (charsets && !Array.isArray(charsets)) { - charsets = new Array(arguments.length) - for (var i = 0; i < charsets.length; i++) { - charsets[i] = arguments[i] - } - } - - // no charsets, return all requested charsets - if (!charsets || charsets.length === 0) { - return this.negotiator.charsets() - } - - return this.negotiator.charsets(charsets)[0] || false -} - -/** - * Return accepted languages or best fit based on `langs`. - * - * Given `Accept-Language: en;q=0.8, es, pt` - * an array sorted by quality is returned: - * - * ['es', 'pt', 'en'] - * - * @param {String|Array} langs... - * @return {Array|String} - * @public - */ - -Accepts.prototype.lang = -Accepts.prototype.langs = -Accepts.prototype.language = -Accepts.prototype.languages = function (languages_) { - var languages = languages_ - - // support flattened arguments - if (languages && !Array.isArray(languages)) { - languages = new Array(arguments.length) - for (var i = 0; i < languages.length; i++) { - languages[i] = arguments[i] - } - } - - // no languages, return all requested languages - if (!languages || languages.length === 0) { - return this.negotiator.languages() - } - - return this.negotiator.languages(languages)[0] || false -} - -/** - * Convert extnames to mime. - * - * @param {String} type - * @return {String} - * @private - */ - -function extToMime (type) { - return type.indexOf('/') === -1 - ? mime.lookup(type) - : type -} - -/** - * Check if mime is valid. - * - * @param {String} type - * @return {String} - * @private - */ - -function validMime (type) { - return typeof type === 'string' -} diff --git a/node_modules/accepts/package.json b/node_modules/accepts/package.json deleted file mode 100644 index 5af33db2..00000000 --- a/node_modules/accepts/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_from": "accepts@~1.3.4", - "_id": "accepts@1.3.4", - "_inBundle": false, - "_integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "_location": "/accepts", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "accepts@~1.3.4", - "name": "accepts", - "escapedName": "accepts", - "rawSpec": "~1.3.4", - "saveSpec": null, - "fetchSpec": "~1.3.4" - }, - "_requiredBy": [ - "/compression" - ], - "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "_shasum": "86246758c7dd6d21a6474ff084a4740ec05eb21f", - "_spec": "accepts@~1.3.4", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\compression", - "bugs": { - "url": "https://github.com/jshttp/accepts/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "dependencies": { - "mime-types": "~2.1.16", - "negotiator": "0.6.1" - }, - "deprecated": false, - "description": "Higher-level content negotiation", - "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-markdown": "1.0.0-beta.6", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "~1.21.5" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "homepage": "https://github.com/jshttp/accepts#readme", - "keywords": [ - "content", - "negotiation", - "accept", - "accepts" - ], - "license": "MIT", - "name": "accepts", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/accepts.git" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "version": "1.3.4" -} diff --git a/node_modules/ansi-regex/index.js b/node_modules/ansi-regex/index.js deleted file mode 100644 index b9574ed7..00000000 --- a/node_modules/ansi-regex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function () { - return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g; -}; diff --git a/node_modules/ansi-regex/license b/node_modules/ansi-regex/license deleted file mode 100644 index 654d0bfe..00000000 --- a/node_modules/ansi-regex/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-regex/package.json b/node_modules/ansi-regex/package.json deleted file mode 100644 index f94cbdbd..00000000 --- a/node_modules/ansi-regex/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_from": "ansi-regex@^2.0.0", - "_id": "ansi-regex@2.1.1", - "_inBundle": false, - "_integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "_location": "/ansi-regex", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-regex@^2.0.0", - "name": "ansi-regex", - "escapedName": "ansi-regex", - "rawSpec": "^2.0.0", - "saveSpec": null, - "fetchSpec": "^2.0.0" - }, - "_requiredBy": [ - "/has-ansi", - "/strip-ansi" - ], - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "_shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df", - "_spec": "ansi-regex@^2.0.0", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\has-ansi", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/chalk/ansi-regex/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Regular expression for matching ANSI escape codes", - "devDependencies": { - "ava": "0.17.0", - "xo": "0.16.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/chalk/ansi-regex#readme", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "license": "MIT", - "maintainers": [ - { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - { - "name": "Joshua Appelman", - "email": "jappelman@xebia.com", - "url": "jbnicolai.com" - }, - { - "name": "JD Ballard", - "email": "i.am.qix@gmail.com", - "url": "github.com/qix-" - } - ], - "name": "ansi-regex", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/ansi-regex.git" - }, - "scripts": { - "test": "xo && ava --verbose", - "view-supported": "node fixtures/view-codes.js" - }, - "version": "2.1.1", - "xo": { - "rules": { - "guard-for-in": 0, - "no-loop-func": 0 - } - } -} diff --git a/node_modules/ansi-regex/readme.md b/node_modules/ansi-regex/readme.md deleted file mode 100644 index 6a928edf..00000000 --- a/node_modules/ansi-regex/readme.md +++ /dev/null @@ -1,39 +0,0 @@ -# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex) - -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -``` -$ npm install --save ansi-regex -``` - - -## Usage - -```js -const ansiRegex = require('ansi-regex'); - -ansiRegex().test('\u001b[4mcake\u001b[0m'); -//=> true - -ansiRegex().test('cake'); -//=> false - -'\u001b[4mcake\u001b[0m'.match(ansiRegex()); -//=> ['\u001b[4m', '\u001b[0m'] -``` - -## FAQ - -### Why do you test for codes not in the ECMA 48 standard? - -Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. If I recall correctly, we test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them. - -On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js deleted file mode 100644 index 78945278..00000000 --- a/node_modules/ansi-styles/index.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -function assembleStyles () { - var styles = { - modifiers: { - reset: [0, 0], - bold: [1, 22], // 21 isn't widely supported and 22 does the same thing - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - colors: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39] - }, - bgColors: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] - } - }; - - // fix humans - styles.colors.grey = styles.colors.gray; - - Object.keys(styles).forEach(function (groupName) { - var group = styles[groupName]; - - Object.keys(group).forEach(function (styleName) { - var style = group[styleName]; - - styles[styleName] = group[styleName] = { - open: '\u001b[' + style[0] + 'm', - close: '\u001b[' + style[1] + 'm' - }; - }); - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - }); - - return styles; -} - -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license deleted file mode 100644 index 654d0bfe..00000000 --- a/node_modules/ansi-styles/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/ansi-styles/package.json b/node_modules/ansi-styles/package.json deleted file mode 100644 index 74090e11..00000000 --- a/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_from": "ansi-styles@^2.2.1", - "_id": "ansi-styles@2.2.1", - "_inBundle": false, - "_integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "_location": "/ansi-styles", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "ansi-styles@^2.2.1", - "name": "ansi-styles", - "escapedName": "ansi-styles", - "rawSpec": "^2.2.1", - "saveSpec": null, - "fetchSpec": "^2.2.1" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe", - "_spec": "ansi-styles@^2.2.1", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\chalk", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/chalk/ansi-styles/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "ANSI escape codes for styling strings in the terminal", - "devDependencies": { - "mocha": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/chalk/ansi-styles#readme", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "maintainers": [ - { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - { - "name": "Joshua Appelman", - "email": "jappelman@xebia.com", - "url": "jbnicolai.com" - } - ], - "name": "ansi-styles", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.2.1" -} diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md deleted file mode 100644 index 3f933f61..00000000 --- a/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,86 +0,0 @@ -# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal - -You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. - -![](screenshot.png) - - -## Install - -``` -$ npm install --save ansi-styles -``` - - -## Usage - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### Modifiers - -- `reset` -- `bold` -- `dim` -- `italic` *(not widely supported)* -- `underline` -- `inverse` -- `hidden` -- `strikethrough` *(not widely supported)* - -### Colors - -- `black` -- `red` -- `green` -- `yellow` -- `blue` -- `magenta` -- `cyan` -- `white` -- `gray` - -### Background colors - -- `bgBlack` -- `bgRed` -- `bgGreen` -- `bgYellow` -- `bgBlue` -- `bgMagenta` -- `bgCyan` -- `bgWhite` - - -## Advanced usage - -By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. - -- `ansi.modifiers` -- `ansi.colors` -- `ansi.bgColors` - - -###### Example - -```js -console.log(ansi.colors.green.open); -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/basic-auth/HISTORY.md b/node_modules/basic-auth/HISTORY.md deleted file mode 100644 index 11e2b923..00000000 --- a/node_modules/basic-auth/HISTORY.md +++ /dev/null @@ -1,47 +0,0 @@ -2.0.0 / 2017-09-12 -================== - - * Drop support for Node.js below 0.8 - * Remove `auth(ctx)` signature -- pass in header or `auth(ctx.req)` - * Use `safe-buffer` for improved Buffer API - -1.1.0 / 2016-11-18 -================== - - * Add `auth.parse` for low-level string parsing - -1.0.4 / 2016-05-10 -================== - - * Improve error message when `req` argument is not an object - * Improve error message when `req` missing `headers` property - -1.0.3 / 2015-07-01 -================== - - * Fix regression accepting a Koa context - -1.0.2 / 2015-06-12 -================== - - * Improve error message when `req` argument missing - * perf: enable strict mode - * perf: hoist regular expression - * perf: parse with regular expressions - * perf: remove argument reassignment - -1.0.1 / 2015-05-04 -================== - - * Update readme - -1.0.0 / 2014-07-01 -================== - - * Support empty password - * Support empty username - -0.0.1 / 2013-11-30 -================== - - * Initial release diff --git a/node_modules/basic-auth/LICENSE b/node_modules/basic-auth/LICENSE deleted file mode 100644 index 89041f61..00000000 --- a/node_modules/basic-auth/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2013 TJ Holowaychuk -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015-2016 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/basic-auth/README.md b/node_modules/basic-auth/README.md deleted file mode 100644 index 48d9ee49..00000000 --- a/node_modules/basic-auth/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# basic-auth - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Generic basic auth Authorization header field parser for whatever. - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -``` -$ npm install basic-auth -``` - -## API - - - -```js -var auth = require('basic-auth') -``` - -### auth(req) - -Get the basic auth credentials from the given request. The `Authorization` -header is parsed and if the header is invalid, `undefined` is returned, -otherwise an object with `name` and `pass` properties. - -### auth.parse(string) - -Parse a basic auth authorization header string. This will return an object -with `name` and `pass` properties, or `undefined` if the string is invalid. - -## Example - -Pass a Node.js request object to the module export. If parsing fails -`undefined` is returned, otherwise an object with `.name` and `.pass`. - - - -```js -var auth = require('basic-auth') -var user = auth(req) -// => { name: 'something', pass: 'whatever' } -``` - -A header string from any other location can also be parsed with -`auth.parse`, for example a `Proxy-Authorization` header: - - - -```js -var auth = require('basic-auth') -var user = auth.parse(req.getHeader('Proxy-Authorization')) -``` - -### With vanilla node.js http server - -```js -var http = require('http') -var auth = require('basic-auth') - -// Create server -var server = http.createServer(function (req, res) { - var credentials = auth(req) - - if (!credentials || credentials.name !== 'john' || credentials.pass !== 'secret') { - res.statusCode = 401 - res.setHeader('WWW-Authenticate', 'Basic realm="example"') - res.end('Access denied') - } else { - res.end('Access granted') - } -}) - -// Listen -server.listen(3000) -``` - -# License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/basic-auth.svg -[npm-url]: https://npmjs.org/package/basic-auth -[node-version-image]: https://img.shields.io/node/v/basic-auth.svg -[node-version-url]: https://nodejs.org/en/download -[travis-image]: https://img.shields.io/travis/jshttp/basic-auth/master.svg -[travis-url]: https://travis-ci.org/jshttp/basic-auth -[coveralls-image]: https://img.shields.io/coveralls/jshttp/basic-auth/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/basic-auth?branch=master -[downloads-image]: https://img.shields.io/npm/dm/basic-auth.svg -[downloads-url]: https://npmjs.org/package/basic-auth diff --git a/node_modules/basic-auth/index.js b/node_modules/basic-auth/index.js deleted file mode 100644 index 9106e646..00000000 --- a/node_modules/basic-auth/index.js +++ /dev/null @@ -1,133 +0,0 @@ -/*! - * basic-auth - * Copyright(c) 2013 TJ Holowaychuk - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var Buffer = require('safe-buffer').Buffer - -/** - * Module exports. - * @public - */ - -module.exports = auth -module.exports.parse = parse - -/** - * RegExp for basic auth credentials - * - * credentials = auth-scheme 1*SP token68 - * auth-scheme = "Basic" ; case insensitive - * token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"=" - * @private - */ - -var CREDENTIALS_REGEXP = /^ *(?:[Bb][Aa][Ss][Ii][Cc]) +([A-Za-z0-9._~+/-]+=*) *$/ - -/** - * RegExp for basic auth user/pass - * - * user-pass = userid ":" password - * userid = * - * password = *TEXT - * @private - */ - -var USER_PASS_REGEXP = /^([^:]*):(.*)$/ - -/** - * Parse the Authorization header field of a request. - * - * @param {object} req - * @return {object} with .name and .pass - * @public - */ - -function auth (req) { - if (!req) { - throw new TypeError('argument req is required') - } - - if (typeof req !== 'object') { - throw new TypeError('argument req is required to be an object') - } - - // get header - var header = getAuthorization(req) - - // parse header - return parse(header) -} - -/** - * Decode base64 string. - * @private - */ - -function decodeBase64 (str) { - return Buffer.from(str, 'base64').toString() -} - -/** - * Get the Authorization header from request object. - * @private - */ - -function getAuthorization (req) { - if (!req.headers || typeof req.headers !== 'object') { - throw new TypeError('argument req is required to have headers property') - } - - return req.headers.authorization -} - -/** - * Parse basic auth to object. - * - * @param {string} string - * @return {object} - * @public - */ - -function parse (string) { - if (typeof string !== 'string') { - return undefined - } - - // parse header - var match = CREDENTIALS_REGEXP.exec(string) - - if (!match) { - return undefined - } - - // decode user pass - var userPass = USER_PASS_REGEXP.exec(decodeBase64(match[1])) - - if (!userPass) { - return undefined - } - - // return credentials object - return new Credentials(userPass[1], userPass[2]) -} - -/** - * Object to represent user credentials. - * @private - */ - -function Credentials (name, pass) { - this.name = name - this.pass = pass -} diff --git a/node_modules/basic-auth/package.json b/node_modules/basic-auth/package.json deleted file mode 100644 index faaad7c7..00000000 --- a/node_modules/basic-auth/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_from": "basic-auth@~2.0.0", - "_id": "basic-auth@2.0.0", - "_inBundle": false, - "_integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", - "_location": "/basic-auth", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "basic-auth@~2.0.0", - "name": "basic-auth", - "escapedName": "basic-auth", - "rawSpec": "~2.0.0", - "saveSpec": null, - "fetchSpec": "~2.0.0" - }, - "_requiredBy": [ - "/morgan" - ], - "_resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "_shasum": "015db3f353e02e56377755f962742e8981e7bbba", - "_spec": "basic-auth@~2.0.0", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\morgan", - "bugs": { - "url": "https://github.com/jshttp/basic-auth/issues" - }, - "bundleDependencies": false, - "dependencies": { - "safe-buffer": "5.1.1" - }, - "deprecated": false, - "description": "node.js basic auth parser", - "devDependencies": { - "eslint": "3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-plugin-import": "2.7.0", - "eslint-plugin-markdown": "1.0.0-beta.6", - "eslint-plugin-node": "5.1.1", - "eslint-plugin-promise": "3.5.0", - "eslint-plugin-standard": "3.0.1", - "istanbul": "0.4.5", - "mocha": "2.5.3" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "homepage": "https://github.com/jshttp/basic-auth#readme", - "keywords": [ - "basic", - "auth", - "authorization", - "basicauth" - ], - "license": "MIT", - "name": "basic-auth", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/basic-auth.git" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --check-leaks --reporter spec --bail", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "version": "2.0.0" -} diff --git a/node_modules/bluebird/LICENSE b/node_modules/bluebird/LICENSE deleted file mode 100644 index ae732d52..00000000 --- a/node_modules/bluebird/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2017 Petka Antonov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/bluebird/README.md b/node_modules/bluebird/README.md deleted file mode 100644 index ba82f73e..00000000 --- a/node_modules/bluebird/README.md +++ /dev/null @@ -1,52 +0,0 @@ - - Promises/A+ logo - - -[![Build Status](https://travis-ci.org/petkaantonov/bluebird.svg?branch=master)](https://travis-ci.org/petkaantonov/bluebird) -[![coverage-98%](https://img.shields.io/badge/coverage-98%25-brightgreen.svg?style=flat)](http://petkaantonov.github.io/bluebird/coverage/debug/index.html) - -**Got a question?** Join us on [stackoverflow](http://stackoverflow.com/questions/tagged/bluebird), the [mailing list](https://groups.google.com/forum/#!forum/bluebird-js) or chat on [IRC](https://webchat.freenode.net/?channels=#promises) - -# Introduction - -Bluebird is a fully featured promise library with focus on innovative features and performance - -See the [**bluebird website**](http://bluebirdjs.com/docs/getting-started.html) for further documentation, references and instructions. See the [**API reference**](http://bluebirdjs.com/docs/api-reference.html) here. - -For bluebird 2.x documentation and files, see the [2.x tree](https://github.com/petkaantonov/bluebird/tree/2.x). - -# Questions and issues - -The [github issue tracker](https://github.com/petkaantonov/bluebird/issues) is **_only_** for bug reports and feature requests. Anything else, such as questions for help in using the library, should be posted in [StackOverflow](http://stackoverflow.com/questions/tagged/bluebird) under tags `promise` and `bluebird`. - - - -## Thanks - -Thanks to BrowserStack for providing us with a free account which lets us support old browsers like IE8. - -# License - -The MIT License (MIT) - -Copyright (c) 2013-2017 Petka Antonov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/node_modules/bluebird/changelog.md b/node_modules/bluebird/changelog.md deleted file mode 100644 index 73b2eb6c..00000000 --- a/node_modules/bluebird/changelog.md +++ /dev/null @@ -1 +0,0 @@ -[http://bluebirdjs.com/docs/changelog.html](http://bluebirdjs.com/docs/changelog.html) diff --git a/node_modules/bluebird/js/browser/bluebird.core.js b/node_modules/bluebird/js/browser/bluebird.core.js deleted file mode 100644 index 85b77913..00000000 --- a/node_modules/bluebird/js/browser/bluebird.core.js +++ /dev/null @@ -1,3781 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2017 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.5.1 - * Features enabled: core - * Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o 0) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - continue; - } - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -}; - -Async.prototype._drainQueues = function () { - this._drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - this._drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; - -},{"./queue":17,"./schedule":18,"./util":21}],2:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; - -},{}],3:[function(_dereq_,module,exports){ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = _dereq_("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; - -},{"./promise":15}],4:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise._isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent._isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - promise._setWillBeCancelled(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this._isCancellable()) return; - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype._isCancellable = function() { - return this.isPending() && !this._isCancelled(); -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this._isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; - -},{"./util":21}],5:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = _dereq_("./util"); -var getKeys = _dereq_("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; - -},{"./es5":10,"./util":21}],6:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; - -},{}],7:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, Context) { -var getDomain = Promise._getDomain; -var async = Promise._async; -var Warning = _dereq_("./errors").Warning; -var util = _dereq_("./util"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; -var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (true || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); - -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); - -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && - (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 524288); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 524288) !== 0) return; - this._setRejectionIsUnhandled(); - var self = this; - setTimeout(function() { - self._notifyUnhandledRejection(); - }, 1); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._setReturnedNonUndefined = function() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._returnedNonUndefined = function() { - return (this._bitField & 268435456) !== 0; -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var domain = getDomain(); - possiblyUnhandledRejection = - typeof fn === "function" ? (domain === null ? - fn : util.domainBind(domain, fn)) - : undefined; -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var domain = getDomain(); - unhandledRejectionHandled = - typeof fn === "function" ? (domain === null ? - fn : util.domainBind(domain, fn)) - : undefined; -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Context.deactivateLongStackTraces(); - async.enableTrampoline(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Context.activateLongStackTraces(); - async.disableTrampolineIfNecessary(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - -var fireDomEvent = (function() { - try { - if (typeof CustomEvent === "function") { - var event = new CustomEvent("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = new CustomEvent(name.toLowerCase(), { - detail: event, - cancelable: true - }); - return !util.global.dispatchEvent(domEvent); - }; - } else if (typeof Event === "function") { - var event = new Event("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = new Event(name.toLowerCase(), { - cancelable: true - }); - domEvent.detail = event; - return !util.global.dispatchEvent(domEvent); - }; - } else { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = document.createEvent("CustomEvent"); - domEvent.initCustomEvent(name.toLowerCase(), false, true, - event); - return !util.global.dispatchEvent(domEvent); - }; - } - } catch (e) {} - return function() { - return false; - }; -})(); - -var fireGlobalEvent = (function() { - if (util.isNode) { - return function() { - return process.emit.apply(process, arguments); - }; - } else { - if (!util.global) { - return function() { - return false; - }; - } - return function(name) { - var methodName = "on" + name.toLowerCase(); - var method = util.global[methodName]; - if (!method) return false; - method.apply(util.global, [].slice.call(arguments, 1)); - return true; - }; - } -})(); - -function generatePromiseLifecycleEventObject(name, promise) { - return {promise: promise}; -} - -var eventToObjectGenerator = { - promiseCreated: generatePromiseLifecycleEventObject, - promiseFulfilled: generatePromiseLifecycleEventObject, - promiseRejected: generatePromiseLifecycleEventObject, - promiseResolved: generatePromiseLifecycleEventObject, - promiseCancelled: generatePromiseLifecycleEventObject, - promiseChained: function(name, promise, child) { - return {promise: promise, child: child}; - }, - warning: function(name, warning) { - return {warning: warning}; - }, - unhandledRejection: function (name, reason, promise) { - return {reason: reason, promise: promise}; - }, - rejectionHandled: generatePromiseLifecycleEventObject -}; - -var activeFireEvent = function (name) { - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent.apply(null, arguments); - } catch (e) { - async.throwLater(e); - globalEventFired = true; - } - - var domEventFired = false; - try { - domEventFired = fireDomEvent(name, - eventToObjectGenerator[name].apply(null, arguments)); - } catch (e) { - async.throwLater(e); - domEventFired = true; - } - - return domEventFired || globalEventFired; -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - var warningsOption = opts.warnings; - config.warnings = !!warningsOption; - wForgottenReturn = config.warnings; - - if (util.isObject(warningsOption)) { - if ("wForgottenReturn" in warningsOption) { - wForgottenReturn = !!warningsOption.wForgottenReturn; - } - } - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } - if ("monitoring" in opts) { - if (opts.monitoring && !config.monitoring) { - config.monitoring = true; - Promise.prototype._fireEvent = activeFireEvent; - } else if (!opts.monitoring && config.monitoring) { - config.monitoring = false; - Promise.prototype._fireEvent = defaultFireEvent; - } - } - return Promise; -}; - -function defaultFireEvent() { return false; } - -Promise.prototype._fireEvent = defaultFireEvent; -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this._isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise, - parent) { - if (returnValue === undefined && promiseCreated !== null && - wForgottenReturn) { - if (parent !== undefined && parent._returnedNonUndefined()) return; - if ((promise._bitField & 65535) === 0) return; - - if (name) name = name + " "; - var handlerLine = ""; - var creatorLine = ""; - if (promiseCreated._trace) { - var traceLines = promiseCreated._trace.stack.split("\n"); - var stack = cleanStack(traceLines); - for (var i = stack.length - 1; i >= 0; --i) { - var line = stack[i]; - if (!nodeFramePattern.test(line)) { - var lineMatches = line.match(parseLinePattern); - if (lineMatches) { - handlerLine = "at " + lineMatches[1] + - ":" + lineMatches[2] + ":" + lineMatches[3] + " "; - } - break; - } - } - - if (stack.length > 0) { - var firstUserLine = stack[0]; - for (var i = 0; i < traceLines.length; ++i) { - - if (traceLines[i] === firstUserLine) { - if (i > 0) { - creatorLine = "\n" + traceLines[i - 1]; - } - break; - } - } - - } - } - var msg = "a promise was created in a " + name + - "handler " + handlerLine + "but was not returned from it, " + - "see http://goo.gl/rRqMUw" + - creatorLine; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - - if (!activeFireEvent("warning", warning)) { - formatAndLogError(warning, "", true); - } -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0 && error.name != "SyntaxError") { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: error.name == "SyntaxError" ? stack : cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - if (name === "unhandledRejection") { - if (!activeFireEvent(name, reason, promise) && !localEventFired) { - formatAndLogError(reason, "Unhandled rejection "); - } - } else { - activeFireEvent(name, promise); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = firstLineError.stack.split("\n"); - var lastStackLines = lastLineError.stack.split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false, - monitoring: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - monitoring: function() { - return config.monitoring; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace, - fireDomEvent: fireDomEvent, - fireGlobalEvent: fireGlobalEvent -}; -}; - -},{"./errors":9,"./util":21}],8:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; - -},{}],9:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var Objectfreeze = es5.freeze; -var util = _dereq_("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - es5.defineProperty(Error, "__BluebirdErrorTypes__", { - value: errorTypes, - writable: false, - enumerable: false, - configurable: false - }); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; - -},{"./es5":10,"./util":21}],10:[function(_dereq_,module,exports){ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} - -},{}],11:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { -var util = _dereq_("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); - -function PassThroughHandlerContext(promise, type, handler) { - this.promise = promise; - this.type = type; - this.handler = handler; - this.called = false; - this.cancelPromise = null; -} - -PassThroughHandlerContext.prototype.isFinallyHandler = function() { - return this.type === 0; -}; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.isFinallyHandler() - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret === NEXT_FILTER) { - return ret; - } else if (ret !== undefined) { - promise._setReturnedNonUndefined(); - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise._isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, - fail, - undefined, - new PassThroughHandlerContext(this, type, handler), - undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -Promise.prototype.tapCatch = function (handlerOrPredicate) { - var len = arguments.length; - if(len === 1) { - return this._passThrough(handlerOrPredicate, - 1, - undefined, - finallyHandler); - } else { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return Promise.reject(new TypeError( - "tapCatch statement predicate: " - + "expecting an object but got " + util.classString(item) - )); - } - } - catchInstances.length = j; - var handler = arguments[i]; - return this._passThrough(catchFilter(catchInstances, handler, this), - 1, - undefined, - finallyHandler); - } - -}; - -return PassThroughHandlerContext; -}; - -},{"./catch_filter":5,"./util":21}],12:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, - getDomain) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!true) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise, async) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.asyncNeeded = true; \n\ - this.now = 0; \n\ - } \n\ - \n\ - [TheName].prototype._callFunction = function(promise) { \n\ - promise._pushContext(); \n\ - var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - if (this.asyncNeeded) { \n\ - async.invoke(this._callFunction, this, promise); \n\ - } else { \n\ - this._callFunction(promise); \n\ - } \n\ - \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise, async); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", "async", code) - (tryCatch, errorObj, Promise, async); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!true) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - holder.asyncNeeded = false; - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - - if (!ret._isFateSealed()) { - if (holder.asyncNeeded) { - var domain = getDomain(); - if (domain !== null) { - holder.fn = util.domainBind(domain, holder.fn); - } - } - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var args = [].slice.call(arguments);; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; - -},{"./util":21}],13:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; - -},{"./util":21}],14:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = _dereq_("./errors"); -var OperationalError = errors.OperationalError; -var es5 = _dereq_("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var args = [].slice.call(arguments, 1);; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; - -},{"./errors":9,"./es5":10,"./util":21}],15:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = _dereq_("./util"); - -var getDomain; -if (util.isNode) { - getDomain = function() { - var ret = process.domain; - if (ret === undefined) ret = null; - return ret; - }; -} else { - getDomain = function() { - return null; - }; -} -util.notEnumerableProp(Promise, "_getDomain", getDomain); - -var es5 = _dereq_("./es5"); -var Async = _dereq_("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = _dereq_("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = _dereq_("./thenables")(Promise, INTERNAL); -var PromiseArray = - _dereq_("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = _dereq_("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; -var debug = _dereq_("./debuggability")(Promise, Context); -var CapturedTrace = debug.CapturedTrace; -var PassThroughHandlerContext = - _dereq_("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = _dereq_("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (self == null || self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - -} - -function Promise(executor) { - if (executor !== INTERNAL) { - check(this, executor); - } - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - this._resolveFromExecutor(executor); - this._promiseCreated(); - this._fireEvent("promiseCreated", this); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("Catch statement predicate: " + - "expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.getNewLibraryCopy = module.exports; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - return async.setScheduler(fn); -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - this._fireEvent("promiseChained", this, promise); - } - - var domain = getDomain(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: domain === null ? handler - : (typeof handler === "function" && - util.domainBind(domain, handler)), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, receiver, domain); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; - this._fireEvent("promiseFulfilled", this); -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; - this._fireEvent("promiseRejected", this); -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; - this._fireEvent("promiseResolved", this); -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; - this._fireEvent("promiseCancelled", this); -}; - -Promise.prototype._setWillBeCancelled = function() { - this._bitField = this._bitField | 8388608; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - if (async.hasCustomScheduler()) return; - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - domain -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = - domain === null ? fulfill : util.domainBind(domain, fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = - domain === null ? reject : util.domainBind(domain, reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - domain === null ? fulfill : util.domainBind(domain, fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - domain === null ? reject : util.domainBind(domain, reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - var promise = maybePromise._target(); - - if (promise === this) { - this._reject(makeSelfResolutionError()); - return; - } - - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(promise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - if (executor === INTERNAL) return; - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj) { - promise._rejectCallback(x.e, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise, this); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (receiver instanceof PassThroughHandlerContext && - receiver.isFinallyHandler()) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - async.settlePromises(this); - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -_dereq_("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -_dereq_("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -_dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug); -_dereq_("./direct_resolve")(Promise); -_dereq_("./synchronous_inspection")(Promise); -_dereq_("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain); -Promise.Promise = Promise; -Promise.version = "3.5.1"; - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; - -},{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21}],16:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = _dereq_("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - case -6: return new Map(); - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise._isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; - -},{"./util":21}],17:[function(_dereq_,module,exports){ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; - -},{}],18:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var NativePromise = util.getNativePromise(); -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if (typeof NativePromise === "function" && - typeof NativePromise.resolve === "function") { - var nativePromise = NativePromise.resolve(); - schedule = function(fn) { - nativePromise.then(fn); - }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - (window.navigator.standalone || window.cordova))) { - schedule = (function() { - var div = document.createElement("div"); - var opts = {attributes: true}; - var toggleScheduled = false; - var div2 = document.createElement("div"); - var o2 = new MutationObserver(function() { - div.classList.toggle("foo"); - toggleScheduled = false; - }); - o2.observe(div2, opts); - - var scheduleToggle = function() { - if (toggleScheduled) return; - toggleScheduled = true; - div2.classList.toggle("foo"); - }; - - return function schedule(fn) { - var o = new MutationObserver(function() { - o.disconnect(); - fn(); - }); - o.observe(div, opts); - scheduleToggle(); - }; - })(); -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; - -},{"./util":21}],19:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = function() { - return (this._bitField & 8454144) !== 0; -}; - -Promise.prototype.__isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype._isCancelled = function() { - return this._target().__isCancelled(); -}; - -Promise.prototype.isCancelled = function() { - return (this._target()._bitField & 8454144) !== 0; -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; - -},{}],20:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - try { - return hasProp.call(obj, "_promise0"); - } catch (e) { - return false; - } -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; - -},{"./util":21}],21:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var l = 8; - while (l--) new FakeConstructor(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if ({}.toString.call(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -function domainBind(self, cb) { - return self.bind(cb); -} - -var ret = { - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - hasDevTools: typeof chrome !== "undefined" && chrome && - typeof chrome.loadTimes === "function", - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - domainBind: domainBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version = process.versions.node.split(".").map(Number); - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - -},{"./es5":10}]},{},[3])(3) -}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } \ No newline at end of file diff --git a/node_modules/bluebird/js/browser/bluebird.core.min.js b/node_modules/bluebird/js/browser/bluebird.core.min.js deleted file mode 100644 index 6aca6aa3..00000000 --- a/node_modules/bluebird/js/browser/bluebird.core.min.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2017 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.5.1 - * Features enabled: core - * Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,n;return function r(t,e,n){function i(a,s){if(!e[a]){if(!t[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=e[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return i(n?n:e)},u,u.exports,r,t,e,n)}return e[a].exports}for(var o="function"==typeof _dereq_&&_dereq_,a=0;a0;){var e=t.shift();if("function"==typeof e){var n=t.shift(),r=t.shift();e.call(n,r)}else e._settlePromises()}},r.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},e.exports=r,e.exports.firstLineError=s},{"./queue":17,"./schedule":18,"./util":21}],2:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},s=function(t,e){0===(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var l=n(o),u=new t(e);u._propagateFrom(this,1);var p=this._target();if(u._setBoundTo(l),l instanceof t){var f={promiseRejectionQueued:!1,promise:u,target:p,bindingPromise:l};p._then(e,a,void 0,u,f),l._then(s,c,void 0,u,f),u._setOnCancel(l)}else u._resolveCallback(p);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152===(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],3:[function(t,e,n){"use strict";function r(){try{Promise===o&&(Promise=i)}catch(t){}return o}var i;"undefined"!=typeof Promise&&(i=Promise);var o=t("./promise")();o.noConflict=r,e.exports=o},{"./promise":15}],4:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=o.tryCatch,s=o.errorObj,c=e._async;e.prototype["break"]=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),this._enoughBranchesHaveCancelled()?(this._invokeOnCancel(),!0):!1)},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n=0?o[t]:void 0}var i=!1,o=[];return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},e.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,o.push(this._trace))},e.prototype._popContext=function(){if(void 0!==this._trace){var t=o.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},e.CapturedTrace=null,e.create=n,e.deactivateLongStackTraces=function(){},e.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;e.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,i=!1},i=!0,t.prototype._pushContext=e.prototype._pushContext,t.prototype._popContext=e.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},e}},{}],7:[function(t,e,n){"use strict";e.exports=function(e,n){function r(t,e){return{promise:e}}function i(){return!1}function o(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+I.toString(t));r._attachCancellationCallback(t)})}catch(i){return i}}function a(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?I.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function s(){return this._onCancelField}function c(t){this._onCancelField=t}function l(){this._cancellationParent=void 0,this._onCancelField=void 0}function u(t,e){if(0!==(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function p(t,e){0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function f(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function h(){this._trace=new x(this._peekContext())}function _(t,e){if(H(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=E(t);I.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),I.notEnumerableProp(t,"__stackCleaned__",!0)}}}function d(t,e,n,r,i){if(void 0===t&&null!==e&&X){if(void 0!==i&&i._returnedNonUndefined())return;if(0===(65535&r._bitField))return;n&&(n+=" ");var o="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=C(s),l=c.length-1;l>=0;--l){var u=c[l];if(!V.test(u)){var p=u.match(Q);p&&(o="at "+p[1]+":"+p[2]+":"+p[3]+" ");break}}if(c.length>0)for(var f=c[0],l=0;l0&&(a="\n"+s[l-1]);break}}var h="a promise was created in a "+n+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}}function v(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),y(n)}function y(t,n,r){if(ot.warnings){var i,o=new U(t);if(n)r._attachExtraTrace(o);else if(ot.longStackTraces&&(i=e._peekContext()))i.attachExtraTrace(o);else{var a=E(o);o.stack=a.message+"\n"+a.stack.join("\n")}tt("warning",o)||k(o,"",!0)}}function g(t,e){for(var n=0;n=0;--s)if(r[s]===o){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[i]!==c)break;e.pop(),i--}e=r}}function C(t){for(var e=[],n=0;n0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}function E(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?w(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:C(e)}}function k(t,e,n){if("undefined"!=typeof console){var r;if(I.isObject(t)){var i=t.stack;r=e+G(i,t)}else r=e+String(t);"function"==typeof N?N(r,n):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}}function j(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(o){B.throwLater(o)}"unhandledRejection"===t?tt(t,n,r)||i||k(n,"Unhandled rejection "):tt(t,r)}function F(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():I.toString(t);var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(e))try{var r=JSON.stringify(t);e=r}catch(i){}0===e.length&&(e="(empty array)")}return"(<"+T(e)+">, no stack trace)"}function T(t){var e=41;return t.lengtha||0>s||!n||!r||n!==r||a>=s||(nt=function(t){if(D.test(t))return!0;var e=R(t);return e&&e.fileName===n&&a<=e.line&&e.line<=s?!0:!1})}}function x(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);it(this,x),e>32&&this.uncycle()}var O,A,N,L=e._getDomain,B=e._async,U=t("./errors").Warning,I=t("./util"),H=I.canAttachTrace,D=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,V=/\((?:timers\.js):\d+:\d+\)/,Q=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,q=null,G=null,M=!1,W=!(0==I.env("BLUEBIRD_DEBUG")||!I.env("BLUEBIRD_DEBUG")&&"development"!==I.env("NODE_ENV")),$=!(0==I.env("BLUEBIRD_WARNINGS")||!W&&!I.env("BLUEBIRD_WARNINGS")),z=!(0==I.env("BLUEBIRD_LONG_STACK_TRACES")||!W&&!I.env("BLUEBIRD_LONG_STACK_TRACES")),X=0!=I.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&($||!!I.env("BLUEBIRD_W_FORGOTTEN_RETURN"));e.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},e.prototype._ensurePossibleRejectionHandled=function(){if(0===(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},e.prototype._notifyUnhandledRejectionIsHandled=function(){j("rejectionHandled",O,void 0,this)},e.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},e.prototype._returnedNonUndefined=function(){return 0!==(268435456&this._bitField)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),j("unhandledRejection",A,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return y(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var e=L();A="function"==typeof t?null===e?t:I.domainBind(e,t):void 0},e.onUnhandledRejectionHandled=function(t){var e=L();O="function"==typeof t?null===e?t:I.domainBind(e,t):void 0};var K=function(){};e.longStackTraces=function(){if(B.haveItemsQueued()&&!ot.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!ot.longStackTraces&&P()){var t=e.prototype._captureStackTrace,r=e.prototype._attachExtraTrace;ot.longStackTraces=!0,K=function(){if(B.haveItemsQueued()&&!ot.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=r,n.deactivateLongStackTraces(),B.enableTrampoline(),ot.longStackTraces=!1},e.prototype._captureStackTrace=h,e.prototype._attachExtraTrace=_,n.activateLongStackTraces(),B.disableTrampolineIfNecessary()}},e.hasLongStackTraces=function(){return ot.longStackTraces&&P()};var J=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return I.global.dispatchEvent(t),function(t,e){var n=new CustomEvent(t.toLowerCase(),{detail:e,cancelable:!0});return!I.global.dispatchEvent(n)}}if("function"==typeof Event){var t=new Event("CustomEvent");return I.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,!I.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),I.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!I.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),Y=function(){return I.isNode?function(){return process.emit.apply(process,arguments)}:I.global?function(t){var e="on"+t.toLowerCase(),n=I.global[e];return n?(n.apply(I.global,[].slice.call(arguments,1)),!0):!1}:function(){return!1}}(),Z={promiseCreated:r,promiseFulfilled:r,promiseRejected:r,promiseResolved:r,promiseCancelled:r,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:r},tt=function(t){var e=!1;try{e=Y.apply(null,arguments)}catch(n){B.throwLater(n),e=!0}var r=!1;try{r=J(t,Z[t].apply(null,arguments))}catch(n){B.throwLater(n),r=!0}return r||e};e.config=function(t){if(t=Object(t),"longStackTraces"in t&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&K()),"warnings"in t){var n=t.warnings;ot.warnings=!!n,X=ot.warnings,I.isObject(n)&&"wForgottenReturn"in n&&(X=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!ot.cancellation){if(B.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=l,e.prototype._propagateFrom=u,e.prototype._onCancel=s,e.prototype._setOnCancel=c,e.prototype._attachCancellationCallback=a,e.prototype._execute=o,et=u,ot.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!ot.monitoring?(ot.monitoring=!0,e.prototype._fireEvent=tt):!t.monitoring&&ot.monitoring&&(ot.monitoring=!1,e.prototype._fireEvent=i)),e},e.prototype._fireEvent=i,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(r){return r}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var et=p,nt=function(){return!1},rt=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;I.inherits(x,Error),n.CapturedTrace=x,x.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;t=this._length=r;for(var r=t-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;t>r;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;t-1>s?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var l=c._length+1,u=r-2;u>=0;--u)e[u]._length=l,l++;return}}}},x.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=E(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(C(i.stack.split("\n"))),i=i._parent;b(r),m(r),I.notEnumerableProp(t,"stack",g(n,r)),I.notEnumerableProp(t,"__stackCleaned__",!0)}};var it=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():F(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,q=t,G=e;var n=Error.captureStackTrace;return nt=function(t){return D.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return q=/@/,G=e,M=!0,function(t){t.stack=(new Error).stack};var i;try{throw new Error}catch(o){i="stack"in o}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(G=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?F(e):e.toString()},null):(q=t,G=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}([]);"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(N=function(t){console.warn(t)},I.isNode&&process.stderr.isTTY?N=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:I.isNode||"string"!=typeof(new Error).stack||(N=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var ot={warnings:$,longStackTraces:!1,cancellation:!1,monitoring:!1};return z&&e.longStackTraces(),{longStackTraces:function(){return ot.longStackTraces},warnings:function(){return ot.warnings},cancellation:function(){return ot.cancellation},monitoring:function(){return ot.monitoring},propagateFromFunction:function(){return et},boundValueFunction:function(){return f},checkForgottenReturns:d,setBounds:S,warn:y,deprecated:v,CapturedTrace:x,fireDomEvent:J,fireGlobalEvent:Y}}},{"./errors":9,"./util":21}],8:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype["return"]=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1],r=function(){throw e};return this.caught(t,r)},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];r instanceof t&&r.suppressUnhandledRejections();var i=function(){return r};return this.caught(n,i)}}},{}],9:[function(t,e,n){"use strict";function r(t,e){function n(r){return this instanceof n?(p(this,"message","string"==typeof r?r:e),p(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return u(n,Error),n}function i(t){return this instanceof i?(p(this,"name","OperationalError"),p(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(p(this,"message",t.message),p(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new i(t)}var o,a,s=t("./es5"),c=s.freeze,l=t("./util"),u=l.inherits,p=l.notEnumerableProp,f=r("Warning","warning"),h=r("CancellationError","cancellation error"),_=r("TimeoutError","timeout error"),d=r("AggregateError","aggregate error");try{o=TypeError,a=RangeError}catch(v){o=r("TypeError","type error"),a=r("RangeError","range error")}for(var y="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),g=0;g1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0):!1}function s(){return l.call(this,this.promise._target()._settledValue())}function c(t){return a(this,t)?void 0:(f.e=t,f)}function l(t){var i=this.promise,l=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?l.call(i._boundValue()):l.call(i._boundValue(),t);if(u===r)return u;if(void 0!==u){i._setReturnedNonUndefined();var h=n(u,i);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var _=new p("late cancellation observer");return i._attachExtraTrace(_),f.e=_,f}h.isPending()&&h._attachCancellationCallback(new o(this))}return h._then(s,c,void 0,this,void 0)}}}return i.isRejected()?(a(this),f.e=t,f):(a(this),t)}var u=t("./util"),p=e.CancellationError,f=u.errorObj,h=t("./catch_filter")(r);return i.prototype.isFinallyHandler=function(){return 0===this.type},o.prototype._resultCancelled=function(){a(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new i(this,e,t),void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThrough(t,0,l,l)},e.prototype.tap=function(t){return this._passThrough(t,1,l)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,l);var r,i=new Array(n-1),o=0;for(r=0;n-1>r;++r){var a=arguments[r];if(!u.isObject(a))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+u.classString(a)));i[o++]=a}i.length=o;var s=arguments[r];return this._passThrough(h(i,s,this),1,void 0,l)},i}},{"./catch_filter":5,"./util":21}],12:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj;e.join=function(){var t,e=arguments.length-1;if(e>0&&"function"==typeof arguments[e]){t=arguments[e];var r}var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":21}],13:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=s(t).apply(this,arguments),a=r._popContext();return o.checkForgottenReturns(i,a,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e["try"]=function(t){if("function"!=typeof t)return i("expecting a function but got "+a.classString(t));var r=new e(n);r._captureStackTrace(),r._pushContext();var c;if(arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var l=arguments[1],u=arguments[2];c=a.isArray(l)?s(t).apply(u,l):s(t).call(u,l)}else c=s(t)();var p=r._popContext();return o.checkForgottenReturns(c,p,"Promise.try",r),r._resolveFromSyncValue(c),r},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":21}],14:[function(t,e,n){"use strict";function r(t){return t instanceof Error&&u.getPrototypeOf(t)===Error.prototype}function i(t){var e;if(r(t)){e=new l(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var n=u.keys(t),i=0;i1){var n,r=new Array(e-1),i=0;for(n=0;e-1>n;++n){var o=arguments[n];if(!h.isObject(o))return p("Catch statement predicate: expecting an object but got "+h.classString(o));r[i++]=o}return r.length=i,t=arguments[n],this.then(void 0,P(r,t,this))}return this.then(void 0,t)},i.prototype.reflect=function(){return this._then(u,u,void 0,this,void 0)},i.prototype.then=function(t,e){if(F.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+h.classString(t);arguments.length>1&&(n+=", "+h.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},i.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},i.prototype.spread=function(t){return"function"!=typeof t?p("expecting a function but got "+h.classString(t)):this.all()._then(t,void 0,void 0,C,void 0); -},i.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},i.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new k(this).promise()},i.prototype.error=function(t){return this.caught(h.originatesFromRejection,t)},i.getNewLibraryCopy=e.exports,i.is=function(t){return t instanceof i},i.fromNode=i.fromCallback=function(t){var e=new i(b);e._captureStackTrace();var n=arguments.length>1?!!Object(arguments[1]).multiArgs:!1,r=x(t)(R(e,n));return r===S&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},i.all=function(t){return new k(t).promise()},i.cast=function(t){var e=E(t);return e instanceof i||(e=new i(b),e._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},i.resolve=i.fulfilled=i.cast,i.reject=i.rejected=function(t){var e=new i(b);return e._captureStackTrace(),e._rejectCallback(t,!0),e},i.setScheduler=function(t){if("function"!=typeof t)throw new g("expecting a function but got "+h.classString(t));return v.setScheduler(t)},i.prototype._then=function(t,e,n,r,o){var a=void 0!==o,s=a?o:new i(b),l=this._target(),u=l._bitField;a||(s._propagateFrom(this,3),s._captureStackTrace(),void 0===r&&0!==(2097152&this._bitField)&&(r=0!==(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,s));var p=c();if(0!==(50397184&u)){var f,_,d=l._settlePromiseCtx;0!==(33554432&u)?(_=l._rejectionHandler0,f=t):0!==(16777216&u)?(_=l._fulfillmentHandler0,f=e,l._unsetRejectionIsUnhandled()):(d=l._settlePromiseLateCancellationObserver,_=new m("late cancellation observer"),l._attachExtraTrace(_),f=e),v.invoke(d,l,{handler:null===p?f:"function"==typeof f&&h.domainBind(p,f),promise:s,receiver:r,value:_})}else l._addCallbacks(t,e,s,r,p);return s},i.prototype._length=function(){return 65535&this._bitField},i.prototype._isFateSealed=function(){return 0!==(117506048&this._bitField)},i.prototype._isFollowing=function(){return 67108864===(67108864&this._bitField)},i.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},i.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},i.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},i.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},i.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},i.prototype._isFinal=function(){return(4194304&this._bitField)>0},i.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},i.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},i.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},i.prototype._setAsyncGuaranteed=function(){v.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},i.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];return e===f?void 0:void 0===e&&this._isBound()?this._boundValue():e},i.prototype._promiseAt=function(t){return this[4*t-4+2]},i.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},i.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},i.prototype._boundValue=function(){},i.prototype._migrateCallback0=function(t){var e=(t._bitField,t._fulfillmentHandler0),n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=f),this._addCallbacks(e,n,r,i,null)},i.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=f),this._addCallbacks(n,r,i,o,null)},i.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:h.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:h.domainBind(i,e));else{var a=4*o-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===i?t:h.domainBind(i,t)),"function"==typeof e&&(this[a+1]=null===i?e:h.domainBind(i,e))}return this._setLength(o+1),o},i.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},i.prototype._resolveCallback=function(t,e){if(0===(117506048&this._bitField)){if(t===this)return this._rejectCallback(l(),!1);var n=E(t,this);if(!(n instanceof i))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r===this)return void this._reject(l());var o=r._bitField;if(0===(50397184&o)){var a=this._length();a>0&&r._migrateCallback0(this);for(var s=1;a>s;++s)r._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(r)}else if(0!==(33554432&o))this._fulfill(r._value());else if(0!==(16777216&o))this._reject(r._reason());else{var c=new m("late cancellation observer");r._attachExtraTrace(c),this._reject(c)}}},i.prototype._rejectCallback=function(t,e,n){var r=h.ensureErrorObject(t),i=r===t;if(!i&&!n&&F.warnings()){var o="a promise was rejected with a non-error: "+h.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,e?i:!1),this._reject(t)},i.prototype._resolveFromExecutor=function(t){if(t!==b){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},i.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0===(65536&i)){r._pushContext();var o;e===C?n&&"number"==typeof n.length?o=x(t).apply(this._boundValue(),n):(o=S,o.e=new g("cannot .spread() a non-array: "+h.classString(n))):o=x(t).call(e,n);var a=r._popContext();i=r._bitField,0===(65536&i)&&(o===w?r._reject(n):o===S?r._rejectCallback(o.e,!1):(F.checkForgottenReturns(o,a,"",r,this),r._resolveCallback(o)))}},i.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},i.prototype._followee=function(){return this._rejectionHandler0},i.prototype._setFollowee=function(t){this._rejectionHandler0=t},i.prototype._settlePromise=function(t,e,r,o){var a=t instanceof i,s=this._bitField,c=0!==(134217728&s);0!==(65536&s)?(a&&t._invokeInternalOnCancel(),r instanceof T&&r.isFinallyHandler()?(r.cancelPromise=t,x(e).call(r,o)===S&&t._reject(S.e)):e===u?t._fulfill(u.call(r)):r instanceof n?r._promiseCancelled(t):a||t instanceof k?t._cancel():r.cancel()):"function"==typeof e?a?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,o,t)):e.call(r,o,t):r instanceof n?r._isResolved()||(0!==(33554432&s)?r._promiseFulfilled(o,t):r._promiseRejected(o,t)):a&&(c&&t._setAsyncGuaranteed(),0!==(33554432&s)?t._fulfill(o):t._reject(o))},i.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof i?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof i&&n._reject(o)},i.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},i.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},i.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},i.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=l();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!==(134217728&e)?this._settlePromises():v.settlePromises(this))}},i.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16))return this._setRejected(),this._fulfillmentHandler0=t,this._isFinal()?v.fatalError(t,h.isNode):void((65535&e)>0?v.settlePromises(this):this._ensurePossibleRejectionHandled())},i.prototype._fulfillPromises=function(t,e){for(var n=1;t>n;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._rejectPromises=function(t,e){for(var n=1;t>n;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!==(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},i.prototype._settledValue=function(){var t=this._bitField;return 0!==(33554432&t)?this._rejectionHandler0:0!==(16777216&t)?this._fulfillmentHandler0:void 0},i.defer=i.pending=function(){F.deprecated("Promise.defer","new Promise");var t=new i(b);return{promise:t,resolve:o,reject:a}},h.notEnumerableProp(i,"_makeSelfResolutionError",l),t("./method")(i,b,E,p,F),t("./bind")(i,b,E,F),t("./cancel")(i,k,p,F),t("./direct_resolve")(i),t("./synchronous_inspection")(i),t("./join")(i,k,E,b,v,c),i.Promise=i,i.version="3.5.1",h.toFastProperties(i),h.toFastProperties(i.prototype),s({a:1}),s({b:2}),s({c:3}),s(1),s(function(){}),s(void 0),s(!1),s(new i(b)),F.setBounds(d.firstLineError,h.lastLineError),i}},{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){function a(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var c=t("./util");c.isArray;return c.inherits(s,o),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function l(t,n){var o=r(this._values,this._promise);if(o instanceof e){o=o._target();var s=o._bitField;if(this._values=o,0===(50397184&s))return this._promise._setAsyncGuaranteed(),o._then(l,this._reject,void 0,this,n);if(0===(33554432&s))return 0!==(16777216&s)?this._reject(o._reason()):this._cancel();o=o._value()}if(o=c.asArray(o),null===o){var u=i("expecting an array or an iterable object but got "+c.classString(o)).reason();return void this._promise._rejectCallback(u,!1)}return 0===o.length?void(-5===n?this._resolveEmptyArray():this._resolve(a(n))):void this._iterate(o)},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,a=null,s=0;n>s;++s){var c=r(t[s],i);c instanceof e?(c=c._target(),a=c._bitField):a=null,o?null!==a&&c.suppressUnhandledRejections():null!==a?0===(50397184&a)?(c._proxy(this,s),this._values[s]=c):o=0!==(33554432&a)?this._promiseFulfilled(c._value(),s):0!==(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):o=this._promiseFulfilled(c,s)}o||i._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;no;++o)n[o+r]=t[o+e],t[o+e]=void 0}function i(t){this._capacity=t,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(t){return this._capacityn;++n)i[n]=t[n];return i[n]=e,i}function l(t,e,n){if(!F.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function u(t,e,n){if(o(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return F.defineProperty(t,e,r),t}function p(t){throw t}function f(t){try{if("function"==typeof t){var e=F.names(t.prototype),n=F.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=A.test(t+"")&&F.names(t).length>0;if(n||r||i)return!0}return!1}catch(o){return!1}}function h(t){function e(){}e.prototype=t;for(var n=8;n--;)new e;return t}function _(t){return N.test(t)}function d(t,e,n){for(var r=new Array(t),i=0;t>i;++i)r[i]=e+i+n;return r}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function g(t){try{u(t,"isOperational",!0)}catch(e){}}function m(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function b(t){return y(t)&&F.propertyIsWritable(t,"stack")}function C(t){return{}.toString.call(t)}function w(t,e,n){for(var r=F.names(t),i=0;i10||t[0]>0}(),D.isNode&&D.toFastProperties(process);try{throw new Error}catch(V){D.lastLineError=V}e.exports=D},{"./es5":10}]},{},[3])(3)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file diff --git a/node_modules/bluebird/js/browser/bluebird.js b/node_modules/bluebird/js/browser/bluebird.js deleted file mode 100644 index 2bc524b5..00000000 --- a/node_modules/bluebird/js/browser/bluebird.js +++ /dev/null @@ -1,5623 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2017 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.5.1 - * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o 0) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - continue; - } - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -}; - -Async.prototype._drainQueues = function () { - this._drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - this._drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; - -},{"./queue":26,"./schedule":29,"./util":36}],3:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; - -},{}],4:[function(_dereq_,module,exports){ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = _dereq_("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; - -},{"./promise":22}],5:[function(_dereq_,module,exports){ -"use strict"; -var cr = Object.create; -if (cr) { - var callerCache = cr(null); - var getterCache = cr(null); - callerCache[" size"] = getterCache[" size"] = 0; -} - -module.exports = function(Promise) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var isIdentifier = util.isIdentifier; - -var getMethodCaller; -var getGetter; -if (!true) { -var makeMethodCaller = function (methodName) { - return new Function("ensureMethod", " \n\ - return function(obj) { \n\ - 'use strict' \n\ - var len = this.length; \n\ - ensureMethod(obj, 'methodName'); \n\ - switch(len) { \n\ - case 1: return obj.methodName(this[0]); \n\ - case 2: return obj.methodName(this[0], this[1]); \n\ - case 3: return obj.methodName(this[0], this[1], this[2]); \n\ - case 0: return obj.methodName(); \n\ - default: \n\ - return obj.methodName.apply(obj, this); \n\ - } \n\ - }; \n\ - ".replace(/methodName/g, methodName))(ensureMethod); -}; - -var makeGetter = function (propertyName) { - return new Function("obj", " \n\ - 'use strict'; \n\ - return obj.propertyName; \n\ - ".replace("propertyName", propertyName)); -}; - -var getCompiled = function(name, compiler, cache) { - var ret = cache[name]; - if (typeof ret !== "function") { - if (!isIdentifier(name)) { - return null; - } - ret = compiler(name); - cache[name] = ret; - cache[" size"]++; - if (cache[" size"] > 512) { - var keys = Object.keys(cache); - for (var i = 0; i < 256; ++i) delete cache[keys[i]]; - cache[" size"] = keys.length - 256; - } - } - return ret; -}; - -getMethodCaller = function(name) { - return getCompiled(name, makeMethodCaller, callerCache); -}; - -getGetter = function(name) { - return getCompiled(name, makeGetter, getterCache); -}; -} - -function ensureMethod(obj, methodName) { - var fn; - if (obj != null) fn = obj[methodName]; - if (typeof fn !== "function") { - var message = "Object " + util.classString(obj) + " has no method '" + - util.toString(methodName) + "'"; - throw new Promise.TypeError(message); - } - return fn; -} - -function caller(obj) { - var methodName = this.pop(); - var fn = ensureMethod(obj, methodName); - return fn.apply(obj, this); -} -Promise.prototype.call = function (methodName) { - var args = [].slice.call(arguments, 1);; - if (!true) { - if (canEvaluate) { - var maybeCaller = getMethodCaller(methodName); - if (maybeCaller !== null) { - return this._then( - maybeCaller, undefined, undefined, args, undefined); - } - } - } - args.push(methodName); - return this._then(caller, undefined, undefined, args, undefined); -}; - -function namedGetter(obj) { - return obj[this]; -} -function indexedGetter(obj) { - var index = +this; - if (index < 0) index = Math.max(0, index + obj.length); - return obj[index]; -} -Promise.prototype.get = function (propertyName) { - var isIndex = (typeof propertyName === "number"); - var getter; - if (!isIndex) { - if (canEvaluate) { - var maybeGetter = getGetter(propertyName); - getter = maybeGetter !== null ? maybeGetter : namedGetter; - } else { - getter = namedGetter; - } - } else { - getter = indexedGetter; - } - return this._then(getter, undefined, undefined, propertyName, undefined); -}; -}; - -},{"./util":36}],6:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise._isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent._isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - promise._setWillBeCancelled(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this._isCancellable()) return; - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype._isCancellable = function() { - return this.isPending() && !this._isCancelled(); -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this._isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; - -},{"./util":36}],7:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = _dereq_("./util"); -var getKeys = _dereq_("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; - -},{"./es5":13,"./util":36}],8:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; - -},{}],9:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, Context) { -var getDomain = Promise._getDomain; -var async = Promise._async; -var Warning = _dereq_("./errors").Warning; -var util = _dereq_("./util"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; -var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (true || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); - -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); - -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && - (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 524288); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 524288) !== 0) return; - this._setRejectionIsUnhandled(); - var self = this; - setTimeout(function() { - self._notifyUnhandledRejection(); - }, 1); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._setReturnedNonUndefined = function() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._returnedNonUndefined = function() { - return (this._bitField & 268435456) !== 0; -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var domain = getDomain(); - possiblyUnhandledRejection = - typeof fn === "function" ? (domain === null ? - fn : util.domainBind(domain, fn)) - : undefined; -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var domain = getDomain(); - unhandledRejectionHandled = - typeof fn === "function" ? (domain === null ? - fn : util.domainBind(domain, fn)) - : undefined; -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Context.deactivateLongStackTraces(); - async.enableTrampoline(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Context.activateLongStackTraces(); - async.disableTrampolineIfNecessary(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - -var fireDomEvent = (function() { - try { - if (typeof CustomEvent === "function") { - var event = new CustomEvent("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = new CustomEvent(name.toLowerCase(), { - detail: event, - cancelable: true - }); - return !util.global.dispatchEvent(domEvent); - }; - } else if (typeof Event === "function") { - var event = new Event("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = new Event(name.toLowerCase(), { - cancelable: true - }); - domEvent.detail = event; - return !util.global.dispatchEvent(domEvent); - }; - } else { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = document.createEvent("CustomEvent"); - domEvent.initCustomEvent(name.toLowerCase(), false, true, - event); - return !util.global.dispatchEvent(domEvent); - }; - } - } catch (e) {} - return function() { - return false; - }; -})(); - -var fireGlobalEvent = (function() { - if (util.isNode) { - return function() { - return process.emit.apply(process, arguments); - }; - } else { - if (!util.global) { - return function() { - return false; - }; - } - return function(name) { - var methodName = "on" + name.toLowerCase(); - var method = util.global[methodName]; - if (!method) return false; - method.apply(util.global, [].slice.call(arguments, 1)); - return true; - }; - } -})(); - -function generatePromiseLifecycleEventObject(name, promise) { - return {promise: promise}; -} - -var eventToObjectGenerator = { - promiseCreated: generatePromiseLifecycleEventObject, - promiseFulfilled: generatePromiseLifecycleEventObject, - promiseRejected: generatePromiseLifecycleEventObject, - promiseResolved: generatePromiseLifecycleEventObject, - promiseCancelled: generatePromiseLifecycleEventObject, - promiseChained: function(name, promise, child) { - return {promise: promise, child: child}; - }, - warning: function(name, warning) { - return {warning: warning}; - }, - unhandledRejection: function (name, reason, promise) { - return {reason: reason, promise: promise}; - }, - rejectionHandled: generatePromiseLifecycleEventObject -}; - -var activeFireEvent = function (name) { - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent.apply(null, arguments); - } catch (e) { - async.throwLater(e); - globalEventFired = true; - } - - var domEventFired = false; - try { - domEventFired = fireDomEvent(name, - eventToObjectGenerator[name].apply(null, arguments)); - } catch (e) { - async.throwLater(e); - domEventFired = true; - } - - return domEventFired || globalEventFired; -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - var warningsOption = opts.warnings; - config.warnings = !!warningsOption; - wForgottenReturn = config.warnings; - - if (util.isObject(warningsOption)) { - if ("wForgottenReturn" in warningsOption) { - wForgottenReturn = !!warningsOption.wForgottenReturn; - } - } - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } - if ("monitoring" in opts) { - if (opts.monitoring && !config.monitoring) { - config.monitoring = true; - Promise.prototype._fireEvent = activeFireEvent; - } else if (!opts.monitoring && config.monitoring) { - config.monitoring = false; - Promise.prototype._fireEvent = defaultFireEvent; - } - } - return Promise; -}; - -function defaultFireEvent() { return false; } - -Promise.prototype._fireEvent = defaultFireEvent; -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this._isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise, - parent) { - if (returnValue === undefined && promiseCreated !== null && - wForgottenReturn) { - if (parent !== undefined && parent._returnedNonUndefined()) return; - if ((promise._bitField & 65535) === 0) return; - - if (name) name = name + " "; - var handlerLine = ""; - var creatorLine = ""; - if (promiseCreated._trace) { - var traceLines = promiseCreated._trace.stack.split("\n"); - var stack = cleanStack(traceLines); - for (var i = stack.length - 1; i >= 0; --i) { - var line = stack[i]; - if (!nodeFramePattern.test(line)) { - var lineMatches = line.match(parseLinePattern); - if (lineMatches) { - handlerLine = "at " + lineMatches[1] + - ":" + lineMatches[2] + ":" + lineMatches[3] + " "; - } - break; - } - } - - if (stack.length > 0) { - var firstUserLine = stack[0]; - for (var i = 0; i < traceLines.length; ++i) { - - if (traceLines[i] === firstUserLine) { - if (i > 0) { - creatorLine = "\n" + traceLines[i - 1]; - } - break; - } - } - - } - } - var msg = "a promise was created in a " + name + - "handler " + handlerLine + "but was not returned from it, " + - "see http://goo.gl/rRqMUw" + - creatorLine; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - - if (!activeFireEvent("warning", warning)) { - formatAndLogError(warning, "", true); - } -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0 && error.name != "SyntaxError") { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: error.name == "SyntaxError" ? stack : cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - if (name === "unhandledRejection") { - if (!activeFireEvent(name, reason, promise) && !localEventFired) { - formatAndLogError(reason, "Unhandled rejection "); - } - } else { - activeFireEvent(name, promise); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = firstLineError.stack.split("\n"); - var lastStackLines = lastLineError.stack.split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false, - monitoring: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - monitoring: function() { - return config.monitoring; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace, - fireDomEvent: fireDomEvent, - fireGlobalEvent: fireGlobalEvent -}; -}; - -},{"./errors":12,"./util":36}],10:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; - -},{}],11:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseReduce = Promise.reduce; -var PromiseAll = Promise.all; - -function promiseAllThis() { - return PromiseAll(this); -} - -function PromiseMapSeries(promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, INTERNAL); -} - -Promise.prototype.each = function (fn) { - return PromiseReduce(this, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, this, undefined); -}; - -Promise.prototype.mapSeries = function (fn) { - return PromiseReduce(this, fn, INTERNAL, INTERNAL); -}; - -Promise.each = function (promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, promises, undefined); -}; - -Promise.mapSeries = PromiseMapSeries; -}; - - -},{}],12:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var Objectfreeze = es5.freeze; -var util = _dereq_("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - es5.defineProperty(Error, "__BluebirdErrorTypes__", { - value: errorTypes, - writable: false, - enumerable: false, - configurable: false - }); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; - -},{"./es5":13,"./util":36}],13:[function(_dereq_,module,exports){ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} - -},{}],14:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseMap = Promise.map; - -Promise.prototype.filter = function (fn, options) { - return PromiseMap(this, fn, options, INTERNAL); -}; - -Promise.filter = function (promises, fn, options) { - return PromiseMap(promises, fn, options, INTERNAL); -}; -}; - -},{}],15:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { -var util = _dereq_("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); - -function PassThroughHandlerContext(promise, type, handler) { - this.promise = promise; - this.type = type; - this.handler = handler; - this.called = false; - this.cancelPromise = null; -} - -PassThroughHandlerContext.prototype.isFinallyHandler = function() { - return this.type === 0; -}; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.isFinallyHandler() - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret === NEXT_FILTER) { - return ret; - } else if (ret !== undefined) { - promise._setReturnedNonUndefined(); - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise._isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, - fail, - undefined, - new PassThroughHandlerContext(this, type, handler), - undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -Promise.prototype.tapCatch = function (handlerOrPredicate) { - var len = arguments.length; - if(len === 1) { - return this._passThrough(handlerOrPredicate, - 1, - undefined, - finallyHandler); - } else { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return Promise.reject(new TypeError( - "tapCatch statement predicate: " - + "expecting an object but got " + util.classString(item) - )); - } - } - catchInstances.length = j; - var handler = arguments[i]; - return this._passThrough(catchFilter(catchInstances, handler, this), - 1, - undefined, - finallyHandler); - } - -}; - -return PassThroughHandlerContext; -}; - -},{"./catch_filter":7,"./util":36}],16:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - apiRejection, - INTERNAL, - tryConvertToPromise, - Proxyable, - debug) { -var errors = _dereq_("./errors"); -var TypeError = errors.TypeError; -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -var yieldHandlers = []; - -function promiseFromYieldHandler(value, yieldHandlers, traceParent) { - for (var i = 0; i < yieldHandlers.length; ++i) { - traceParent._pushContext(); - var result = tryCatch(yieldHandlers[i])(value); - traceParent._popContext(); - if (result === errorObj) { - traceParent._pushContext(); - var ret = Promise.reject(errorObj.e); - traceParent._popContext(); - return ret; - } - var maybePromise = tryConvertToPromise(result, traceParent); - if (maybePromise instanceof Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) { - if (debug.cancellation()) { - var internal = new Promise(INTERNAL); - var _finallyPromise = this._finallyPromise = new Promise(INTERNAL); - this._promise = internal.lastly(function() { - return _finallyPromise; - }); - internal._captureStackTrace(); - internal._setOnCancel(this); - } else { - var promise = this._promise = new Promise(INTERNAL); - promise._captureStackTrace(); - } - this._stack = stack; - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = undefined; - this._yieldHandlers = typeof yieldHandler === "function" - ? [yieldHandler].concat(yieldHandlers) - : yieldHandlers; - this._yieldedPromise = null; - this._cancellationPhase = false; -} -util.inherits(PromiseSpawn, Proxyable); - -PromiseSpawn.prototype._isResolved = function() { - return this._promise === null; -}; - -PromiseSpawn.prototype._cleanup = function() { - this._promise = this._generator = null; - if (debug.cancellation() && this._finallyPromise !== null) { - this._finallyPromise._fulfill(); - this._finallyPromise = null; - } -}; - -PromiseSpawn.prototype._promiseCancelled = function() { - if (this._isResolved()) return; - var implementsReturn = typeof this._generator["return"] !== "undefined"; - - var result; - if (!implementsReturn) { - var reason = new Promise.CancellationError( - "generator .return() sentinel"); - Promise.coroutine.returnSentinel = reason; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - result = tryCatch(this._generator["throw"]).call(this._generator, - reason); - this._promise._popContext(); - } else { - this._promise._pushContext(); - result = tryCatch(this._generator["return"]).call(this._generator, - undefined); - this._promise._popContext(); - } - this._cancellationPhase = true; - this._yieldedPromise = null; - this._continue(result); -}; - -PromiseSpawn.prototype._promiseFulfilled = function(value) { - this._yieldedPromise = null; - this._promise._pushContext(); - var result = tryCatch(this._generator.next).call(this._generator, value); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._promiseRejected = function(reason) { - this._yieldedPromise = null; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - var result = tryCatch(this._generator["throw"]) - .call(this._generator, reason); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._resultCancelled = function() { - if (this._yieldedPromise instanceof Promise) { - var promise = this._yieldedPromise; - this._yieldedPromise = null; - promise.cancel(); - } -}; - -PromiseSpawn.prototype.promise = function () { - return this._promise; -}; - -PromiseSpawn.prototype._run = function () { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = undefined; - this._promiseFulfilled(undefined); -}; - -PromiseSpawn.prototype._continue = function (result) { - var promise = this._promise; - if (result === errorObj) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._rejectCallback(result.e, false); - } - } - - var value = result.value; - if (result.done === true) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._resolveCallback(value); - } - } else { - var maybePromise = tryConvertToPromise(value, this._promise); - if (!(maybePromise instanceof Promise)) { - maybePromise = - promiseFromYieldHandler(maybePromise, - this._yieldHandlers, - this._promise); - if (maybePromise === null) { - this._promiseRejected( - new TypeError( - "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/MqrFmX\u000a\u000a".replace("%s", String(value)) + - "From coroutine:\u000a" + - this._stack.split("\n").slice(1, -7).join("\n") - ) - ); - return; - } - } - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - this._yieldedPromise = maybePromise; - maybePromise._proxy(this, null); - } else if (((bitField & 33554432) !== 0)) { - Promise._async.invoke( - this._promiseFulfilled, this, maybePromise._value() - ); - } else if (((bitField & 16777216) !== 0)) { - Promise._async.invoke( - this._promiseRejected, this, maybePromise._reason() - ); - } else { - this._promiseCancelled(); - } - } -}; - -Promise.coroutine = function (generatorFunction, options) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var yieldHandler = Object(options).yieldHandler; - var PromiseSpawn$ = PromiseSpawn; - var stack = new Error().stack; - return function () { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, - stack); - var ret = spawn.promise(); - spawn._generator = generator; - spawn._promiseFulfilled(undefined); - return ret; - }; -}; - -Promise.coroutine.addYieldHandler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - yieldHandlers.push(fn); -}; - -Promise.spawn = function (generatorFunction) { - debug.deprecated("Promise.spawn()", "Promise.coroutine()"); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var spawn = new PromiseSpawn(generatorFunction, this); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; -}; -}; - -},{"./errors":12,"./util":36}],17:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, - getDomain) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!true) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise, async) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.asyncNeeded = true; \n\ - this.now = 0; \n\ - } \n\ - \n\ - [TheName].prototype._callFunction = function(promise) { \n\ - promise._pushContext(); \n\ - var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - if (this.asyncNeeded) { \n\ - async.invoke(this._callFunction, this, promise); \n\ - } else { \n\ - this._callFunction(promise); \n\ - } \n\ - \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise, async); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", "async", code) - (tryCatch, errorObj, Promise, async); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!true) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - holder.asyncNeeded = false; - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - - if (!ret._isFateSealed()) { - if (holder.asyncNeeded) { - var domain = getDomain(); - if (domain !== null) { - holder.fn = util.domainBind(domain, holder.fn); - } - } - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var args = [].slice.call(arguments);; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; - -},{"./util":36}],18:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -function MappingPromiseArray(promises, fn, limit, _filter) { - this.constructor$(promises); - this._promise._captureStackTrace(); - var domain = getDomain(); - this._callback = domain === null ? fn : util.domainBind(domain, fn); - this._preservedValues = _filter === INTERNAL - ? new Array(this.length()) - : null; - this._limit = limit; - this._inFlight = 0; - this._queue = []; - async.invoke(this._asyncInit, this, undefined); -} -util.inherits(MappingPromiseArray, PromiseArray); - -MappingPromiseArray.prototype._asyncInit = function() { - this._init$(undefined, -2); -}; - -MappingPromiseArray.prototype._init = function () {}; - -MappingPromiseArray.prototype._promiseFulfilled = function (value, index) { - var values = this._values; - var length = this.length(); - var preservedValues = this._preservedValues; - var limit = this._limit; - - if (index < 0) { - index = (index * -1) - 1; - values[index] = value; - if (limit >= 1) { - this._inFlight--; - this._drainQueue(); - if (this._isResolved()) return true; - } - } else { - if (limit >= 1 && this._inFlight >= limit) { - values[index] = value; - this._queue.push(index); - return false; - } - if (preservedValues !== null) preservedValues[index] = value; - - var promise = this._promise; - var callback = this._callback; - var receiver = promise._boundValue(); - promise._pushContext(); - var ret = tryCatch(callback).call(receiver, value, index, length); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - preservedValues !== null ? "Promise.filter" : "Promise.map", - promise - ); - if (ret === errorObj) { - this._reject(ret.e); - return true; - } - - var maybePromise = tryConvertToPromise(ret, this._promise); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - if (limit >= 1) this._inFlight++; - values[index] = maybePromise; - maybePromise._proxy(this, (index + 1) * -1); - return false; - } else if (((bitField & 33554432) !== 0)) { - ret = maybePromise._value(); - } else if (((bitField & 16777216) !== 0)) { - this._reject(maybePromise._reason()); - return true; - } else { - this._cancel(); - return true; - } - } - values[index] = ret; - } - var totalResolved = ++this._totalResolved; - if (totalResolved >= length) { - if (preservedValues !== null) { - this._filter(values, preservedValues); - } else { - this._resolve(values); - } - return true; - } - return false; -}; - -MappingPromiseArray.prototype._drainQueue = function () { - var queue = this._queue; - var limit = this._limit; - var values = this._values; - while (queue.length > 0 && this._inFlight < limit) { - if (this._isResolved()) return; - var index = queue.pop(); - this._promiseFulfilled(values[index], index); - } -}; - -MappingPromiseArray.prototype._filter = function (booleans, values) { - var len = values.length; - var ret = new Array(len); - var j = 0; - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - } - ret.length = j; - this._resolve(ret); -}; - -MappingPromiseArray.prototype.preservedValues = function () { - return this._preservedValues; -}; - -function map(promises, fn, options, _filter) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - - var limit = 0; - if (options !== undefined) { - if (typeof options === "object" && options !== null) { - if (typeof options.concurrency !== "number") { - return Promise.reject( - new TypeError("'concurrency' must be a number but it is " + - util.classString(options.concurrency))); - } - limit = options.concurrency; - } else { - return Promise.reject(new TypeError( - "options argument must be an object but it is " + - util.classString(options))); - } - } - limit = typeof limit === "number" && - isFinite(limit) && limit >= 1 ? limit : 0; - return new MappingPromiseArray(promises, fn, limit, _filter).promise(); -} - -Promise.prototype.map = function (fn, options) { - return map(this, fn, options, null); -}; - -Promise.map = function (promises, fn, options, _filter) { - return map(promises, fn, options, _filter); -}; - - -}; - -},{"./util":36}],19:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; - -},{"./util":36}],20:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = _dereq_("./errors"); -var OperationalError = errors.OperationalError; -var es5 = _dereq_("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var args = [].slice.call(arguments, 1);; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; - -},{"./errors":12,"./es5":13,"./util":36}],21:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var util = _dereq_("./util"); -var async = Promise._async; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function spreadAdapter(val, nodeback) { - var promise = this; - if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback); - var ret = - tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val)); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -function successAdapter(val, nodeback) { - var promise = this; - var receiver = promise._boundValue(); - var ret = val === undefined - ? tryCatch(nodeback).call(receiver, null) - : tryCatch(nodeback).call(receiver, null, val); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} -function errorAdapter(reason, nodeback) { - var promise = this; - if (!reason) { - var newReason = new Error(reason + ""); - newReason.cause = reason; - reason = newReason; - } - var ret = tryCatch(nodeback).call(promise._boundValue(), reason); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, - options) { - if (typeof nodeback == "function") { - var adapter = successAdapter; - if (options !== undefined && Object(options).spread) { - adapter = spreadAdapter; - } - this._then( - adapter, - errorAdapter, - undefined, - this, - nodeback - ); - } - return this; -}; -}; - -},{"./util":36}],22:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = _dereq_("./util"); - -var getDomain; -if (util.isNode) { - getDomain = function() { - var ret = process.domain; - if (ret === undefined) ret = null; - return ret; - }; -} else { - getDomain = function() { - return null; - }; -} -util.notEnumerableProp(Promise, "_getDomain", getDomain); - -var es5 = _dereq_("./es5"); -var Async = _dereq_("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = _dereq_("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = _dereq_("./thenables")(Promise, INTERNAL); -var PromiseArray = - _dereq_("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = _dereq_("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; -var debug = _dereq_("./debuggability")(Promise, Context); -var CapturedTrace = debug.CapturedTrace; -var PassThroughHandlerContext = - _dereq_("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = _dereq_("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (self == null || self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - -} - -function Promise(executor) { - if (executor !== INTERNAL) { - check(this, executor); - } - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - this._resolveFromExecutor(executor); - this._promiseCreated(); - this._fireEvent("promiseCreated", this); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("Catch statement predicate: " + - "expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.getNewLibraryCopy = module.exports; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - return async.setScheduler(fn); -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - this._fireEvent("promiseChained", this, promise); - } - - var domain = getDomain(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: domain === null ? handler - : (typeof handler === "function" && - util.domainBind(domain, handler)), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, receiver, domain); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; - this._fireEvent("promiseFulfilled", this); -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; - this._fireEvent("promiseRejected", this); -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; - this._fireEvent("promiseResolved", this); -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; - this._fireEvent("promiseCancelled", this); -}; - -Promise.prototype._setWillBeCancelled = function() { - this._bitField = this._bitField | 8388608; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - if (async.hasCustomScheduler()) return; - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - domain -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = - domain === null ? fulfill : util.domainBind(domain, fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = - domain === null ? reject : util.domainBind(domain, reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - domain === null ? fulfill : util.domainBind(domain, fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - domain === null ? reject : util.domainBind(domain, reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - var promise = maybePromise._target(); - - if (promise === this) { - this._reject(makeSelfResolutionError()); - return; - } - - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(promise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - if (executor === INTERNAL) return; - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj) { - promise._rejectCallback(x.e, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise, this); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (receiver instanceof PassThroughHandlerContext && - receiver.isFinallyHandler()) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - async.settlePromises(this); - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -_dereq_("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -_dereq_("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -_dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug); -_dereq_("./direct_resolve")(Promise); -_dereq_("./synchronous_inspection")(Promise); -_dereq_("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain); -Promise.Promise = Promise; -Promise.version = "3.5.1"; -_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -_dereq_('./call_get.js')(Promise); -_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug); -_dereq_('./timers.js')(Promise, INTERNAL, debug); -_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug); -_dereq_('./nodeify.js')(Promise); -_dereq_('./promisify.js')(Promise, INTERNAL); -_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection); -_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection); -_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -_dereq_('./settle.js')(Promise, PromiseArray, debug); -_dereq_('./some.js')(Promise, PromiseArray, apiRejection); -_dereq_('./filter.js')(Promise, INTERNAL); -_dereq_('./each.js')(Promise, INTERNAL); -_dereq_('./any.js')(Promise); - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; - -},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = _dereq_("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - case -6: return new Map(); - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise._isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; - -},{"./util":36}],24:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = _dereq_("./util"); -var nodebackForPromise = _dereq_("./nodeback"); -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var TypeError = _dereq_("./errors").TypeError; -var defaultSuffix = "Async"; -var defaultPromisified = {__isPromisified__: true}; -var noCopyProps = [ - "arity", "length", - "name", - "arguments", - "caller", - "callee", - "prototype", - "__isPromisified__" -]; -var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); - -var defaultFilter = function(name) { - return util.isIdentifier(name) && - name.charAt(0) !== "_" && - name !== "constructor"; -}; - -function propsFilter(key) { - return !noCopyPropsPattern.test(key); -} - -function isPromisified(fn) { - try { - return fn.__isPromisified__ === true; - } - catch (e) { - return false; - } -} - -function hasPromisified(obj, key, suffix) { - var val = util.getDataPropertyOrDefault(obj, key + suffix, - defaultPromisified); - return val ? isPromisified(val) : false; -} -function checkValid(ret, suffix, suffixRegexp) { - for (var i = 0; i < ret.length; i += 2) { - var key = ret[i]; - if (suffixRegexp.test(key)) { - var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""); - for (var j = 0; j < ret.length; j += 2) { - if (ret[j] === keyWithoutAsyncSuffix) { - throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/MqrFmX\u000a" - .replace("%s", suffix)); - } - } - } - } -} - -function promisifiableMethods(obj, suffix, suffixRegexp, filter) { - var keys = util.inheritedDataKeys(obj); - var ret = []; - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var value = obj[key]; - var passesDefaultFilter = filter === defaultFilter - ? true : defaultFilter(key, value, obj); - if (typeof value === "function" && - !isPromisified(value) && - !hasPromisified(obj, key, suffix) && - filter(key, value, obj, passesDefaultFilter)) { - ret.push(key, value); - } - } - checkValid(ret, suffix, suffixRegexp); - return ret; -} - -var escapeIdentRegex = function(str) { - return str.replace(/([$])/, "\\$"); -}; - -var makeNodePromisifiedEval; -if (!true) { -var switchCaseArgumentOrder = function(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 3); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 3; ++i) { - ret.push(i); - } - return ret; -}; - -var argumentSequence = function(argumentCount) { - return util.filledRange(argumentCount, "_arg", ""); -}; - -var parameterDeclaration = function(parameterCount) { - return util.filledRange( - Math.max(parameterCount, 3), "_arg", ""); -}; - -var parameterCount = function(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -}; - -makeNodePromisifiedEval = -function(callback, receiver, originalName, fn, _, multiArgs) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - var shouldProxyThis = typeof callback === "string" || receiver === THIS; - - function generateCallForArgumentCount(count) { - var args = argumentSequence(count).join(", "); - var comma = count > 0 ? ", " : ""; - var ret; - if (shouldProxyThis) { - ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; - } else { - ret = receiver === undefined - ? "ret = callback({{args}}, nodeback); break;\n" - : "ret = callback.call(receiver, {{args}}, nodeback); break;\n"; - } - return ret.replace("{{args}}", args).replace(", ", comma); - } - - function generateArgumentSwitchCase() { - var ret = ""; - for (var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - - ret += " \n\ - default: \n\ - var args = new Array(len + 1); \n\ - var i = 0; \n\ - for (var i = 0; i < len; ++i) { \n\ - args[i] = arguments[i]; \n\ - } \n\ - args[i] = nodeback; \n\ - [CodeForCall] \n\ - break; \n\ - ".replace("[CodeForCall]", (shouldProxyThis - ? "ret = callback.apply(this, args);\n" - : "ret = callback.apply(receiver, args);\n")); - return ret; - } - - var getFunctionCode = typeof callback === "string" - ? ("this != null ? this['"+callback+"'] : fn") - : "fn"; - var body = "'use strict'; \n\ - var ret = function (Parameters) { \n\ - 'use strict'; \n\ - var len = arguments.length; \n\ - var promise = new Promise(INTERNAL); \n\ - promise._captureStackTrace(); \n\ - var nodeback = nodebackForPromise(promise, " + multiArgs + "); \n\ - var ret; \n\ - var callback = tryCatch([GetFunctionCode]); \n\ - switch(len) { \n\ - [CodeForSwitchCase] \n\ - } \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\ - } \n\ - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \n\ - return promise; \n\ - }; \n\ - notEnumerableProp(ret, '__isPromisified__', true); \n\ - return ret; \n\ - ".replace("[CodeForSwitchCase]", generateArgumentSwitchCase()) - .replace("[GetFunctionCode]", getFunctionCode); - body = body.replace("Parameters", parameterDeclaration(newParameterCount)); - return new Function("Promise", - "fn", - "receiver", - "withAppended", - "maybeWrapAsError", - "nodebackForPromise", - "tryCatch", - "errorObj", - "notEnumerableProp", - "INTERNAL", - body)( - Promise, - fn, - receiver, - withAppended, - maybeWrapAsError, - nodebackForPromise, - util.tryCatch, - util.errorObj, - util.notEnumerableProp, - INTERNAL); -}; -} - -function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) { - var defaultThis = (function() {return this;})(); - var method = callback; - if (typeof method === "string") { - callback = fn; - } - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - var promise = new Promise(INTERNAL); - promise._captureStackTrace(); - var cb = typeof method === "string" && this !== defaultThis - ? this[method] : callback; - var fn = nodebackForPromise(promise, multiArgs); - try { - cb.apply(_receiver, withAppended(arguments, fn)); - } catch(e) { - promise._rejectCallback(maybeWrapAsError(e), true, true); - } - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); - return promise; - } - util.notEnumerableProp(promisified, "__isPromisified__", true); - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function promisifyAll(obj, suffix, filter, promisifier, multiArgs) { - var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"); - var methods = - promisifiableMethods(obj, suffix, suffixRegexp, filter); - - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var promisifiedKey = key + suffix; - if (promisifier === makeNodePromisified) { - obj[promisifiedKey] = - makeNodePromisified(key, THIS, key, fn, suffix, multiArgs); - } else { - var promisified = promisifier(fn, function() { - return makeNodePromisified(key, THIS, key, - fn, suffix, multiArgs); - }); - util.notEnumerableProp(promisified, "__isPromisified__", true); - obj[promisifiedKey] = promisified; - } - } - util.toFastProperties(obj); - return obj; -} - -function promisify(callback, receiver, multiArgs) { - return makeNodePromisified(callback, receiver, undefined, - callback, null, multiArgs); -} - -Promise.promisify = function (fn, options) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - if (isPromisified(fn)) { - return fn; - } - options = Object(options); - var receiver = options.context === undefined ? THIS : options.context; - var multiArgs = !!options.multiArgs; - var ret = promisify(fn, receiver, multiArgs); - util.copyDescriptors(fn, ret, propsFilter); - return ret; -}; - -Promise.promisifyAll = function (target, options) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - options = Object(options); - var multiArgs = !!options.multiArgs; - var suffix = options.suffix; - if (typeof suffix !== "string") suffix = defaultSuffix; - var filter = options.filter; - if (typeof filter !== "function") filter = defaultFilter; - var promisifier = options.promisifier; - if (typeof promisifier !== "function") promisifier = makeNodePromisified; - - if (!util.isIdentifier(suffix)) { - throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - - var keys = util.inheritedDataKeys(target); - for (var i = 0; i < keys.length; ++i) { - var value = target[keys[i]]; - if (keys[i] !== "constructor" && - util.isClass(value)) { - promisifyAll(value.prototype, suffix, filter, promisifier, - multiArgs); - promisifyAll(value, suffix, filter, promisifier, multiArgs); - } - } - - return promisifyAll(target, suffix, filter, promisifier, multiArgs); -}; -}; - - -},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function( - Promise, PromiseArray, tryConvertToPromise, apiRejection) { -var util = _dereq_("./util"); -var isObject = util.isObject; -var es5 = _dereq_("./es5"); -var Es6Map; -if (typeof Map === "function") Es6Map = Map; - -var mapToEntries = (function() { - var index = 0; - var size = 0; - - function extractEntry(value, key) { - this[index] = value; - this[index + size] = key; - index++; - } - - return function mapToEntries(map) { - size = map.size; - index = 0; - var ret = new Array(map.size * 2); - map.forEach(extractEntry, ret); - return ret; - }; -})(); - -var entriesToMap = function(entries) { - var ret = new Es6Map(); - var length = entries.length / 2 | 0; - for (var i = 0; i < length; ++i) { - var key = entries[length + i]; - var value = entries[i]; - ret.set(key, value); - } - return ret; -}; - -function PropertiesPromiseArray(obj) { - var isMap = false; - var entries; - if (Es6Map !== undefined && obj instanceof Es6Map) { - entries = mapToEntries(obj); - isMap = true; - } else { - var keys = es5.keys(obj); - var len = keys.length; - entries = new Array(len * 2); - for (var i = 0; i < len; ++i) { - var key = keys[i]; - entries[i] = obj[key]; - entries[i + len] = key; - } - } - this.constructor$(entries); - this._isMap = isMap; - this._init$(undefined, isMap ? -6 : -3); -} -util.inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = function () {}; - -PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val; - if (this._isMap) { - val = entriesToMap(this._values); - } else { - val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - } - this._resolve(val); - return true; - } - return false; -}; - -PropertiesPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -PropertiesPromiseArray.prototype.getActualLength = function (len) { - return len >> 1; -}; - -function props(promises) { - var ret; - var castValue = tryConvertToPromise(promises); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } else if (castValue instanceof Promise) { - ret = castValue._then( - Promise.props, undefined, undefined, undefined, undefined); - } else { - ret = new PropertiesPromiseArray(castValue).promise(); - } - - if (castValue instanceof Promise) { - ret._propagateFrom(castValue, 2); - } - return ret; -} - -Promise.prototype.props = function () { - return props(this); -}; - -Promise.props = function (promises) { - return props(promises); -}; -}; - -},{"./es5":13,"./util":36}],26:[function(_dereq_,module,exports){ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; - -},{}],27:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function( - Promise, INTERNAL, tryConvertToPromise, apiRejection) { -var util = _dereq_("./util"); - -var raceLater = function (promise) { - return promise.then(function(array) { - return race(array, promise); - }); -}; - -function race(promises, parent) { - var maybePromise = tryConvertToPromise(promises); - - if (maybePromise instanceof Promise) { - return raceLater(maybePromise); - } else { - promises = util.asArray(promises); - if (promises === null) - return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); - } - - var ret = new Promise(INTERNAL); - if (parent !== undefined) { - ret._propagateFrom(parent, 3); - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === undefined && !(i in promises)) { - continue; - } - - Promise.cast(val)._then(fulfill, reject, undefined, ret, null); - } - return ret; -} - -Promise.race = function (promises) { - return race(promises, undefined); -}; - -Promise.prototype.race = function () { - return race(this, undefined); -}; - -}; - -},{"./util":36}],28:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -function ReductionPromiseArray(promises, fn, initialValue, _each) { - this.constructor$(promises); - var domain = getDomain(); - this._fn = domain === null ? fn : util.domainBind(domain, fn); - if (initialValue !== undefined) { - initialValue = Promise.resolve(initialValue); - initialValue._attachCancellationCallback(this); - } - this._initialValue = initialValue; - this._currentCancellable = null; - if(_each === INTERNAL) { - this._eachValues = Array(this._length); - } else if (_each === 0) { - this._eachValues = null; - } else { - this._eachValues = undefined; - } - this._promise._captureStackTrace(); - this._init$(undefined, -5); -} -util.inherits(ReductionPromiseArray, PromiseArray); - -ReductionPromiseArray.prototype._gotAccum = function(accum) { - if (this._eachValues !== undefined && - this._eachValues !== null && - accum !== INTERNAL) { - this._eachValues.push(accum); - } -}; - -ReductionPromiseArray.prototype._eachComplete = function(value) { - if (this._eachValues !== null) { - this._eachValues.push(value); - } - return this._eachValues; -}; - -ReductionPromiseArray.prototype._init = function() {}; - -ReductionPromiseArray.prototype._resolveEmptyArray = function() { - this._resolve(this._eachValues !== undefined ? this._eachValues - : this._initialValue); -}; - -ReductionPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -ReductionPromiseArray.prototype._resolve = function(value) { - this._promise._resolveCallback(value); - this._values = null; -}; - -ReductionPromiseArray.prototype._resultCancelled = function(sender) { - if (sender === this._initialValue) return this._cancel(); - if (this._isResolved()) return; - this._resultCancelled$(); - if (this._currentCancellable instanceof Promise) { - this._currentCancellable.cancel(); - } - if (this._initialValue instanceof Promise) { - this._initialValue.cancel(); - } -}; - -ReductionPromiseArray.prototype._iterate = function (values) { - this._values = values; - var value; - var i; - var length = values.length; - if (this._initialValue !== undefined) { - value = this._initialValue; - i = 0; - } else { - value = Promise.resolve(values[0]); - i = 1; - } - - this._currentCancellable = value; - - if (!value.isRejected()) { - for (; i < length; ++i) { - var ctx = { - accum: null, - value: values[i], - index: i, - length: length, - array: this - }; - value = value._then(gotAccum, undefined, undefined, ctx, undefined); - } - } - - if (this._eachValues !== undefined) { - value = value - ._then(this._eachComplete, undefined, undefined, this, undefined); - } - value._then(completed, completed, undefined, value, this); -}; - -Promise.prototype.reduce = function (fn, initialValue) { - return reduce(this, fn, initialValue, null); -}; - -Promise.reduce = function (promises, fn, initialValue, _each) { - return reduce(promises, fn, initialValue, _each); -}; - -function completed(valueOrReason, array) { - if (this.isFulfilled()) { - array._resolve(valueOrReason); - } else { - array._reject(valueOrReason); - } -} - -function reduce(promises, fn, initialValue, _each) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var array = new ReductionPromiseArray(promises, fn, initialValue, _each); - return array.promise(); -} - -function gotAccum(accum) { - this.accum = accum; - this.array._gotAccum(accum); - var value = tryConvertToPromise(this.value, this.array._promise); - if (value instanceof Promise) { - this.array._currentCancellable = value; - return value._then(gotValue, undefined, undefined, this, undefined); - } else { - return gotValue.call(this, value); - } -} - -function gotValue(value) { - var array = this.array; - var promise = array._promise; - var fn = tryCatch(array._fn); - promise._pushContext(); - var ret; - if (array._eachValues !== undefined) { - ret = fn.call(promise._boundValue(), value, this.index, this.length); - } else { - ret = fn.call(promise._boundValue(), - this.accum, value, this.index, this.length); - } - if (ret instanceof Promise) { - array._currentCancellable = ret; - } - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - array._eachValues !== undefined ? "Promise.each" : "Promise.reduce", - promise - ); - return ret; -} -}; - -},{"./util":36}],29:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var NativePromise = util.getNativePromise(); -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if (typeof NativePromise === "function" && - typeof NativePromise.resolve === "function") { - var nativePromise = NativePromise.resolve(); - schedule = function(fn) { - nativePromise.then(fn); - }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - (window.navigator.standalone || window.cordova))) { - schedule = (function() { - var div = document.createElement("div"); - var opts = {attributes: true}; - var toggleScheduled = false; - var div2 = document.createElement("div"); - var o2 = new MutationObserver(function() { - div.classList.toggle("foo"); - toggleScheduled = false; - }); - o2.observe(div2, opts); - - var scheduleToggle = function() { - if (toggleScheduled) return; - toggleScheduled = true; - div2.classList.toggle("foo"); - }; - - return function schedule(fn) { - var o = new MutationObserver(function() { - o.disconnect(); - fn(); - }); - o.observe(div, opts); - scheduleToggle(); - }; - })(); -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; - -},{"./util":36}],30:[function(_dereq_,module,exports){ -"use strict"; -module.exports = - function(Promise, PromiseArray, debug) { -var PromiseInspection = Promise.PromiseInspection; -var util = _dereq_("./util"); - -function SettledPromiseArray(values) { - this.constructor$(values); -} -util.inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { - var ret = new PromiseInspection(); - ret._bitField = 33554432; - ret._settledValueField = value; - return this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = function (reason, index) { - var ret = new PromiseInspection(); - ret._bitField = 16777216; - ret._settledValueField = reason; - return this._promiseResolved(index, ret); -}; - -Promise.settle = function (promises) { - debug.deprecated(".settle()", ".reflect()"); - return new SettledPromiseArray(promises).promise(); -}; - -Promise.prototype.settle = function () { - return Promise.settle(this); -}; -}; - -},{"./util":36}],31:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, apiRejection) { -var util = _dereq_("./util"); -var RangeError = _dereq_("./errors").RangeError; -var AggregateError = _dereq_("./errors").AggregateError; -var isArray = util.isArray; -var CANCELLATION = {}; - - -function SomePromiseArray(values) { - this.constructor$(values); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -util.inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function () { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(undefined, -5); - var isArrayResolved = isArray(this._values); - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - this._reject(this._getRangeError(this.length())); - } -}; - -SomePromiseArray.prototype.init = function () { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function () { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function () { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = function (count) { - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = function (value) { - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } else { - this._resolve(this._values); - } - return true; - } - return false; - -}; -SomePromiseArray.prototype._promiseRejected = function (reason) { - this._addRejected(reason); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._promiseCancelled = function () { - if (this._values instanceof Promise || this._values == null) { - return this._cancel(); - } - this._addRejected(CANCELLATION); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._checkOutcome = function() { - if (this.howMany() > this._canPossiblyFulfill()) { - var e = new AggregateError(); - for (var i = this.length(); i < this._values.length; ++i) { - if (this._values[i] !== CANCELLATION) { - e.push(this._values[i]); - } - } - if (e.length > 0) { - this._reject(e); - } else { - this._cancel(); - } - return true; - } - return false; -}; - -SomePromiseArray.prototype._fulfilled = function () { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function () { - return this._values.length - this.length(); -}; - -SomePromiseArray.prototype._addRejected = function (reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = function (value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = function () { - return this.length() - this._rejected(); -}; - -SomePromiseArray.prototype._getRangeError = function (count) { - var message = "Input array must contain at least " + - this._howMany + " items but contains only " + count + " items"; - return new RangeError(message); -}; - -SomePromiseArray.prototype._resolveEmptyArray = function () { - this._reject(this._getRangeError(0)); -}; - -function some(promises, howMany) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(howMany); - ret.init(); - return promise; -} - -Promise.some = function (promises, howMany) { - return some(promises, howMany); -}; - -Promise.prototype.some = function (howMany) { - return some(this, howMany); -}; - -Promise._SomePromiseArray = SomePromiseArray; -}; - -},{"./errors":12,"./util":36}],32:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = function() { - return (this._bitField & 8454144) !== 0; -}; - -Promise.prototype.__isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype._isCancelled = function() { - return this._target().__isCancelled(); -}; - -Promise.prototype.isCancelled = function() { - return (this._target()._bitField & 8454144) !== 0; -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; - -},{}],33:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - try { - return hasProp.call(obj, "_promise0"); - } catch (e) { - return false; - } -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; - -},{"./util":36}],34:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, debug) { -var util = _dereq_("./util"); -var TimeoutError = Promise.TimeoutError; - -function HandleWrapper(handle) { - this.handle = handle; -} - -HandleWrapper.prototype._resultCancelled = function() { - clearTimeout(this.handle); -}; - -var afterValue = function(value) { return delay(+this).thenReturn(value); }; -var delay = Promise.delay = function (ms, value) { - var ret; - var handle; - if (value !== undefined) { - ret = Promise.resolve(value) - ._then(afterValue, null, null, ms, undefined); - if (debug.cancellation() && value instanceof Promise) { - ret._setOnCancel(value); - } - } else { - ret = new Promise(INTERNAL); - handle = setTimeout(function() { ret._fulfill(); }, +ms); - if (debug.cancellation()) { - ret._setOnCancel(new HandleWrapper(handle)); - } - ret._captureStackTrace(); - } - ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.prototype.delay = function (ms) { - return delay(ms, this); -}; - -var afterTimeout = function (promise, message, parent) { - var err; - if (typeof message !== "string") { - if (message instanceof Error) { - err = message; - } else { - err = new TimeoutError("operation timed out"); - } - } else { - err = new TimeoutError(message); - } - util.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._reject(err); - - if (parent != null) { - parent.cancel(); - } -}; - -function successClear(value) { - clearTimeout(this.handle); - return value; -} - -function failureClear(reason) { - clearTimeout(this.handle); - throw reason; -} - -Promise.prototype.timeout = function (ms, message) { - ms = +ms; - var ret, parent; - - var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() { - if (ret.isPending()) { - afterTimeout(ret, message, parent); - } - }, ms)); - - if (debug.cancellation()) { - parent = this.then(); - ret = parent._then(successClear, failureClear, - undefined, handleWrapper, undefined); - ret._setOnCancel(handleWrapper); - } else { - ret = this._then(successClear, failureClear, - undefined, handleWrapper, undefined); - } - - return ret; -}; - -}; - -},{"./util":36}],35:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function (Promise, apiRejection, tryConvertToPromise, - createContext, INTERNAL, debug) { - var util = _dereq_("./util"); - var TypeError = _dereq_("./errors").TypeError; - var inherits = _dereq_("./util").inherits; - var errorObj = util.errorObj; - var tryCatch = util.tryCatch; - var NULL = {}; - - function thrower(e) { - setTimeout(function(){throw e;}, 0); - } - - function castPreservingDisposable(thenable) { - var maybePromise = tryConvertToPromise(thenable); - if (maybePromise !== thenable && - typeof thenable._isDisposable === "function" && - typeof thenable._getDisposer === "function" && - thenable._isDisposable()) { - maybePromise._setDisposable(thenable._getDisposer()); - } - return maybePromise; - } - function dispose(resources, inspection) { - var i = 0; - var len = resources.length; - var ret = new Promise(INTERNAL); - function iterator() { - if (i >= len) return ret._fulfill(); - var maybePromise = castPreservingDisposable(resources[i++]); - if (maybePromise instanceof Promise && - maybePromise._isDisposable()) { - try { - maybePromise = tryConvertToPromise( - maybePromise._getDisposer().tryDispose(inspection), - resources.promise); - } catch (e) { - return thrower(e); - } - if (maybePromise instanceof Promise) { - return maybePromise._then(iterator, thrower, - null, null, null); - } - } - iterator(); - } - iterator(); - return ret; - } - - function Disposer(data, promise, context) { - this._data = data; - this._promise = promise; - this._context = context; - } - - Disposer.prototype.data = function () { - return this._data; - }; - - Disposer.prototype.promise = function () { - return this._promise; - }; - - Disposer.prototype.resource = function () { - if (this.promise().isFulfilled()) { - return this.promise().value(); - } - return NULL; - }; - - Disposer.prototype.tryDispose = function(inspection) { - var resource = this.resource(); - var context = this._context; - if (context !== undefined) context._pushContext(); - var ret = resource !== NULL - ? this.doDispose(resource, inspection) : null; - if (context !== undefined) context._popContext(); - this._promise._unsetDisposable(); - this._data = null; - return ret; - }; - - Disposer.isDisposer = function (d) { - return (d != null && - typeof d.resource === "function" && - typeof d.tryDispose === "function"); - }; - - function FunctionDisposer(fn, promise, context) { - this.constructor$(fn, promise, context); - } - inherits(FunctionDisposer, Disposer); - - FunctionDisposer.prototype.doDispose = function (resource, inspection) { - var fn = this.data(); - return fn.call(resource, resource, inspection); - }; - - function maybeUnwrapDisposer(value) { - if (Disposer.isDisposer(value)) { - this.resources[this.index]._setDisposable(value); - return value.promise(); - } - return value; - } - - function ResourceList(length) { - this.length = length; - this.promise = null; - this[length-1] = null; - } - - ResourceList.prototype._resultCancelled = function() { - var len = this.length; - for (var i = 0; i < len; ++i) { - var item = this[i]; - if (item instanceof Promise) { - item.cancel(); - } - } - }; - - Promise.using = function () { - var len = arguments.length; - if (len < 2) return apiRejection( - "you must pass at least 2 arguments to Promise.using"); - var fn = arguments[len - 1]; - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var input; - var spreadArgs = true; - if (len === 2 && Array.isArray(arguments[0])) { - input = arguments[0]; - len = input.length; - spreadArgs = false; - } else { - input = arguments; - len--; - } - var resources = new ResourceList(len); - for (var i = 0; i < len; ++i) { - var resource = input[i]; - if (Disposer.isDisposer(resource)) { - var disposer = resource; - resource = resource.promise(); - resource._setDisposable(disposer); - } else { - var maybePromise = tryConvertToPromise(resource); - if (maybePromise instanceof Promise) { - resource = - maybePromise._then(maybeUnwrapDisposer, null, null, { - resources: resources, - index: i - }, undefined); - } - } - resources[i] = resource; - } - - var reflectedResources = new Array(resources.length); - for (var i = 0; i < reflectedResources.length; ++i) { - reflectedResources[i] = Promise.resolve(resources[i]).reflect(); - } - - var resultPromise = Promise.all(reflectedResources) - .then(function(inspections) { - for (var i = 0; i < inspections.length; ++i) { - var inspection = inspections[i]; - if (inspection.isRejected()) { - errorObj.e = inspection.error(); - return errorObj; - } else if (!inspection.isFulfilled()) { - resultPromise.cancel(); - return; - } - inspections[i] = inspection.value(); - } - promise._pushContext(); - - fn = tryCatch(fn); - var ret = spreadArgs - ? fn.apply(undefined, inspections) : fn(inspections); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, promiseCreated, "Promise.using", promise); - return ret; - }); - - var promise = resultPromise.lastly(function() { - var inspection = new Promise.PromiseInspection(resultPromise); - return dispose(resources, inspection); - }); - resources.promise = promise; - promise._setOnCancel(resources); - return promise; - }; - - Promise.prototype._setDisposable = function (disposer) { - this._bitField = this._bitField | 131072; - this._disposer = disposer; - }; - - Promise.prototype._isDisposable = function () { - return (this._bitField & 131072) > 0; - }; - - Promise.prototype._getDisposer = function () { - return this._disposer; - }; - - Promise.prototype._unsetDisposable = function () { - this._bitField = this._bitField & (~131072); - this._disposer = undefined; - }; - - Promise.prototype.disposer = function (fn) { - if (typeof fn === "function") { - return new FunctionDisposer(fn, this, createContext()); - } - throw new TypeError(); - }; - -}; - -},{"./errors":12,"./util":36}],36:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var l = 8; - while (l--) new FakeConstructor(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if ({}.toString.call(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -function domainBind(self, cb) { - return self.bind(cb); -} - -var ret = { - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - hasDevTools: typeof chrome !== "undefined" && chrome && - typeof chrome.loadTimes === "function", - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - domainBind: domainBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version = process.versions.node.split(".").map(Number); - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - -},{"./es5":13}]},{},[4])(4) -}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } \ No newline at end of file diff --git a/node_modules/bluebird/js/browser/bluebird.min.js b/node_modules/bluebird/js/browser/bluebird.min.js deleted file mode 100644 index e02a9cdd..00000000 --- a/node_modules/bluebird/js/browser/bluebird.min.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2017 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.5.1 - * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,n;return function r(t,e,n){function i(s,a){if(!e[s]){if(!t[s]){var c="function"==typeof _dereq_&&_dereq_;if(!a&&c)return c(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=e[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return i(n?n:e)},u,u.exports,r,t,e,n)}return e[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s0;){var e=t.shift();if("function"==typeof e){var n=t.shift(),r=t.shift();e.call(n,r)}else e._settlePromises()}},r.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},e.exports=r,e.exports.firstLineError=a},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0===(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var l=n(o),u=new t(e);u._propagateFrom(this,1);var p=this._target();if(u._setBoundTo(l),l instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:p,bindingPromise:l};p._then(e,s,void 0,u,h),l._then(a,c,void 0,u,h),u._setOnCancel(l)}else u._resolveCallback(p);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152===(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";function r(){try{Promise===o&&(Promise=i)}catch(t){}return o}var i;"undefined"!=typeof Promise&&(i=Promise);var o=t("./promise")();o.noConflict=r,e.exports=o},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var i=r(null),o=r(null);i[" size"]=o[" size"]=0}e.exports=function(e){function n(t,n){var r;if(null!=t&&(r=t[n]),"function"!=typeof r){var i="Object "+a.classString(t)+" has no method '"+a.toString(n)+"'";throw new e.TypeError(i)}return r}function r(t){var e=this.pop(),r=n(t,e);return r.apply(t,this)}function i(t){return t[this]}function o(t){var e=+this;return 0>e&&(e=Math.max(0,e+t.length)),t[e]}var s,a=t("./util"),c=a.canEvaluate;a.isIdentifier;e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=o;else if(c){var r=s(t);e=null!==r?r:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,c=e._async;e.prototype["break"]=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),this._enoughBranchesHaveCancelled()?(this._invokeOnCancel(),!0):!1)},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n=0?o[t]:void 0}var i=!1,o=[];return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},e.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,o.push(this._trace))},e.prototype._popContext=function(){if(void 0!==this._trace){var t=o.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},e.CapturedTrace=null,e.create=n,e.deactivateLongStackTraces=function(){},e.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,c=t.prototype._promiseCreated;e.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=c,i=!1},i=!0,t.prototype._pushContext=e.prototype._pushContext,t.prototype._popContext=e.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},e}},{}],9:[function(t,e,n){"use strict";e.exports=function(e,n){function r(t,e){return{promise:e}}function i(){return!1}function o(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+H.toString(t));r._attachCancellationCallback(t)})}catch(i){return i}}function s(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?H.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function a(){return this._onCancelField}function c(t){this._onCancelField=t}function l(){this._cancellationParent=void 0,this._onCancelField=void 0}function u(t,e){if(0!==(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function p(t,e){0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function h(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function f(){this._trace=new S(this._peekContext())}function _(t,e){if(N(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=j(t);H.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),H.notEnumerableProp(t,"__stackCleaned__",!0)}}}function d(t,e,n,r,i){if(void 0===t&&null!==e&&W){if(void 0!==i&&i._returnedNonUndefined())return;if(0===(65535&r._bitField))return;n&&(n+=" ");var o="",s="";if(e._trace){for(var a=e._trace.stack.split("\n"),c=w(a),l=c.length-1;l>=0;--l){var u=c[l];if(!U.test(u)){var p=u.match(M);p&&(o="at "+p[1]+":"+p[2]+":"+p[3]+" ");break}}if(c.length>0)for(var h=c[0],l=0;l0&&(s="\n"+a[l-1]);break}}var f="a promise was created in a "+n+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+s;r._warn(f,!0,e)}}function v(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),y(n)}function y(t,n,r){if(ot.warnings){var i,o=new L(t);if(n)r._attachExtraTrace(o);else if(ot.longStackTraces&&(i=e._peekContext()))i.attachExtraTrace(o);else{var s=j(o);o.stack=s.message+"\n"+s.stack.join("\n")}tt("warning",o)||E(o,"",!0)}}function m(t,e){for(var n=0;n=0;--a)if(r[a]===o){s=a;break}for(var a=s;a>=0;--a){var c=r[a];if(e[i]!==c)break;e.pop(),i--}e=r}}function w(t){for(var e=[],n=0;n0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}function j(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?C(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:w(e)}}function E(t,e,n){if("undefined"!=typeof console){var r;if(H.isObject(t)){var i=t.stack;r=e+Q(i,t)}else r=e+String(t);"function"==typeof D?D(r,n):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}}function k(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(o){I.throwLater(o)}"unhandledRejection"===t?tt(t,n,r)||i||E(n,"Unhandled rejection "):tt(t,r)}function F(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():H.toString(t);var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(e))try{var r=JSON.stringify(t);e=r}catch(i){}0===e.length&&(e="(empty array)")}return"(<"+x(e)+">, no stack trace)"}function x(t){var e=41;return t.lengths||0>a||!n||!r||n!==r||s>=a||(nt=function(t){if(B.test(t))return!0;var e=P(t);return e&&e.fileName===n&&s<=e.line&&e.line<=a?!0:!1})}}function S(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);it(this,S),e>32&&this.uncycle()}var O,A,D,V=e._getDomain,I=e._async,L=t("./errors").Warning,H=t("./util"),N=H.canAttachTrace,B=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,U=/\((?:timers\.js):\d+:\d+\)/,M=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,q=null,Q=null,$=!1,G=!(0==H.env("BLUEBIRD_DEBUG")||!H.env("BLUEBIRD_DEBUG")&&"development"!==H.env("NODE_ENV")),z=!(0==H.env("BLUEBIRD_WARNINGS")||!G&&!H.env("BLUEBIRD_WARNINGS")),X=!(0==H.env("BLUEBIRD_LONG_STACK_TRACES")||!G&&!H.env("BLUEBIRD_LONG_STACK_TRACES")),W=0!=H.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(z||!!H.env("BLUEBIRD_W_FORGOTTEN_RETURN"));e.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},e.prototype._ensurePossibleRejectionHandled=function(){if(0===(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},e.prototype._notifyUnhandledRejectionIsHandled=function(){k("rejectionHandled",O,void 0,this)},e.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},e.prototype._returnedNonUndefined=function(){return 0!==(268435456&this._bitField)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),k("unhandledRejection",A,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return y(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var e=V();A="function"==typeof t?null===e?t:H.domainBind(e,t):void 0},e.onUnhandledRejectionHandled=function(t){var e=V();O="function"==typeof t?null===e?t:H.domainBind(e,t):void 0};var K=function(){};e.longStackTraces=function(){if(I.haveItemsQueued()&&!ot.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!ot.longStackTraces&&T()){var t=e.prototype._captureStackTrace,r=e.prototype._attachExtraTrace;ot.longStackTraces=!0,K=function(){if(I.haveItemsQueued()&&!ot.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=r,n.deactivateLongStackTraces(),I.enableTrampoline(),ot.longStackTraces=!1},e.prototype._captureStackTrace=f,e.prototype._attachExtraTrace=_,n.activateLongStackTraces(),I.disableTrampolineIfNecessary()}},e.hasLongStackTraces=function(){return ot.longStackTraces&&T()};var J=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return H.global.dispatchEvent(t),function(t,e){var n=new CustomEvent(t.toLowerCase(),{detail:e,cancelable:!0});return!H.global.dispatchEvent(n)}}if("function"==typeof Event){var t=new Event("CustomEvent");return H.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,!H.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),H.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!H.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),Y=function(){return H.isNode?function(){return process.emit.apply(process,arguments)}:H.global?function(t){var e="on"+t.toLowerCase(),n=H.global[e];return n?(n.apply(H.global,[].slice.call(arguments,1)),!0):!1}:function(){return!1}}(),Z={promiseCreated:r,promiseFulfilled:r,promiseRejected:r,promiseResolved:r,promiseCancelled:r,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:r},tt=function(t){var e=!1;try{e=Y.apply(null,arguments)}catch(n){I.throwLater(n),e=!0}var r=!1;try{r=J(t,Z[t].apply(null,arguments))}catch(n){I.throwLater(n),r=!0}return r||e};e.config=function(t){if(t=Object(t),"longStackTraces"in t&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&K()),"warnings"in t){var n=t.warnings;ot.warnings=!!n,W=ot.warnings,H.isObject(n)&&"wForgottenReturn"in n&&(W=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!ot.cancellation){if(I.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=l,e.prototype._propagateFrom=u,e.prototype._onCancel=a,e.prototype._setOnCancel=c,e.prototype._attachCancellationCallback=s,e.prototype._execute=o,et=u,ot.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!ot.monitoring?(ot.monitoring=!0,e.prototype._fireEvent=tt):!t.monitoring&&ot.monitoring&&(ot.monitoring=!1,e.prototype._fireEvent=i)),e},e.prototype._fireEvent=i,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(r){return r}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var et=p,nt=function(){return!1},rt=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;H.inherits(S,Error),n.CapturedTrace=S,S.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;t=this._length=r;for(var r=t-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;t>r;++r){var s=e[r].stack,a=n[s];if(void 0!==a&&a!==r){a>0&&(e[a-1]._parent=void 0,e[a-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;t-1>a?(c._parent=e[a+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var l=c._length+1,u=r-2;u>=0;--u)e[u]._length=l,l++;return}}}},S.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=j(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(w(i.stack.split("\n"))),i=i._parent;b(r),g(r),H.notEnumerableProp(t,"stack",m(n,r)),H.notEnumerableProp(t,"__stackCleaned__",!0)}};var it=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():F(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,q=t,Q=e;var n=Error.captureStackTrace;return nt=function(t){return B.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return q=/@/,Q=e,$=!0,function(t){t.stack=(new Error).stack};var i;try{throw new Error}catch(o){i="stack"in o}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(Q=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?F(e):e.toString()},null):(q=t,Q=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}([]);"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(D=function(t){console.warn(t)},H.isNode&&process.stderr.isTTY?D=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:H.isNode||"string"!=typeof(new Error).stack||(D=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var ot={warnings:z,longStackTraces:!1,cancellation:!1,monitoring:!1};return X&&e.longStackTraces(),{longStackTraces:function(){return ot.longStackTraces},warnings:function(){return ot.warnings},cancellation:function(){return ot.cancellation},monitoring:function(){return ot.monitoring},propagateFromFunction:function(){return et},boundValueFunction:function(){return h},checkForgottenReturns:d,setBounds:R,warn:y,deprecated:v,CapturedTrace:S,fireDomEvent:J,fireGlobalEvent:Y}}},{"./errors":12,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype["return"]=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1],r=function(){throw e};return this.caught(t,r)},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];r instanceof t&&r.suppressUnhandledRejections();var i=function(){return r};return this.caught(n,i)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){function n(){return o(this)}function r(t,n){return i(t,n,e,e)}var i=t.reduce,o=t.all;t.prototype.each=function(t){return i(this,t,e,0)._then(n,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return i(this,t,e,e)},t.each=function(t,r){return i(t,r,e,0)._then(n,void 0,void 0,t,void 0)},t.mapSeries=r}},{}],12:[function(t,e,n){"use strict";function r(t,e){function n(r){return this instanceof n?(p(this,"message","string"==typeof r?r:e),p(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return u(n,Error),n}function i(t){return this instanceof i?(p(this,"name","OperationalError"),p(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(p(this,"message",t.message),p(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new i(t)}var o,s,a=t("./es5"),c=a.freeze,l=t("./util"),u=l.inherits,p=l.notEnumerableProp,h=r("Warning","warning"),f=r("CancellationError","cancellation error"),_=r("TimeoutError","timeout error"),d=r("AggregateError","aggregate error");try{o=TypeError,s=RangeError}catch(v){o=r("TypeError","type error"),s=r("RangeError","range error")}for(var y="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),m=0;m1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0):!1}function a(){return l.call(this,this.promise._target()._settledValue())}function c(t){return s(this,t)?void 0:(h.e=t,h)}function l(t){var i=this.promise,l=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?l.call(i._boundValue()):l.call(i._boundValue(),t);if(u===r)return u;if(void 0!==u){i._setReturnedNonUndefined();var f=n(u,i);if(f instanceof e){if(null!=this.cancelPromise){if(f._isCancelled()){var _=new p("late cancellation observer");return i._attachExtraTrace(_),h.e=_,h}f.isPending()&&f._attachCancellationCallback(new o(this))}return f._then(a,c,void 0,this,void 0)}}}return i.isRejected()?(s(this),h.e=t,h):(s(this),t)}var u=t("./util"),p=e.CancellationError,h=u.errorObj,f=t("./catch_filter")(r);return i.prototype.isFinallyHandler=function(){return 0===this.type},o.prototype._resultCancelled=function(){s(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new i(this,e,t),void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThrough(t,0,l,l)},e.prototype.tap=function(t){return this._passThrough(t,1,l)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,l);var r,i=new Array(n-1),o=0;for(r=0;n-1>r;++r){var s=arguments[r];if(!u.isObject(s))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+u.classString(s)));i[o++]=s}i.length=o;var a=arguments[r];return this._passThrough(f(i,a,this),1,void 0,l)},i}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r){for(var o=0;o0&&"function"==typeof arguments[e]){t=arguments[e];var r}var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var i=l();this._callback=null===i?e:u.domainBind(i,e),this._preservedValues=r===o?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function c(t,n,i,o){if("function"!=typeof n)return r("expecting a function but got "+u.classString(n));var s=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+u.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+u.classString(i.concurrency)));s=i.concurrency}return s="number"==typeof s&&isFinite(s)&&s>=1?s:0,new a(t,n,s,o).promise()}var l=e._getDomain,u=t("./util"),p=u.tryCatch,h=u.errorObj,f=e._async;u.inherits(a,n),a.prototype._asyncInit=function(){this._init$(void 0,-2)},a.prototype._init=function(){},a.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),a=this._preservedValues,c=this._limit;if(0>n){if(n=-1*n-1,r[n]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==a&&(a[n]=t);var l=this._promise,u=this._callback,f=l._boundValue();l._pushContext();var _=p(u).call(f,t,n,o),d=l._popContext();if(s.checkForgottenReturns(_,d,null!==a?"Promise.filter":"Promise.map",l),_===h)return this._reject(_.e),!0;var v=i(_,this._promise);if(v instanceof e){v=v._target();var y=v._bitField;if(0===(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0===(33554432&y))return 0!==(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);_=v._value()}r[n]=_}var m=++this._totalResolved;return m>=o?(null!==a?this._filter(r,a):this._resolve(r),!0):!1},a.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlighto;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},a.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return c(this,t,e,null)},e.map=function(t,e,n,r){return c(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var s=t("./util"),a=s.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+s.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=a(t).apply(this,arguments),s=r._popContext();return o.checkForgottenReturns(i,s,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e["try"]=function(t){if("function"!=typeof t)return i("expecting a function but got "+s.classString(t));var r=new e(n);r._captureStackTrace(),r._pushContext();var c;if(arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var l=arguments[1],u=arguments[2];c=s.isArray(l)?a(t).apply(u,l):a(t).call(u,l)}else c=a(t)();var p=r._popContext();return o.checkForgottenReturns(c,p,"Promise.try",r),r._resolveFromSyncValue(c),r},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";function r(t){return t instanceof Error&&u.getPrototypeOf(t)===Error.prototype}function i(t){var e;if(r(t)){e=new l(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var n=u.keys(t),i=0;i1){var n,r=new Array(e-1),i=0;for(n=0;e-1>n;++n){var o=arguments[n];if(!f.isObject(o))return p("Catch statement predicate: expecting an object but got "+f.classString(o));r[i++]=o}return r.length=i,t=arguments[n],this.then(void 0,P(r,t,this))}return this.then(void 0,t)},i.prototype.reflect=function(){return this._then(u,u,void 0,this,void 0)},i.prototype.then=function(t,e){if(x.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+f.classString(t);arguments.length>1&&(n+=", "+f.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},i.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},i.prototype.spread=function(t){return"function"!=typeof t?p("expecting a function but got "+f.classString(t)):this.all()._then(t,void 0,void 0,w,void 0)},i.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},i.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new E(this).promise()},i.prototype.error=function(t){return this.caught(f.originatesFromRejection,t)},i.getNewLibraryCopy=e.exports,i.is=function(t){return t instanceof i},i.fromNode=i.fromCallback=function(t){var e=new i(b);e._captureStackTrace();var n=arguments.length>1?!!Object(arguments[1]).multiArgs:!1,r=O(t)(R(e,n));return r===S&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},i.all=function(t){return new E(t).promise()},i.cast=function(t){var e=j(t);return e instanceof i||(e=new i(b),e._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},i.resolve=i.fulfilled=i.cast,i.reject=i.rejected=function(t){var e=new i(b);return e._captureStackTrace(),e._rejectCallback(t,!0),e},i.setScheduler=function(t){if("function"!=typeof t)throw new m("expecting a function but got "+f.classString(t));return v.setScheduler(t)},i.prototype._then=function(t,e,n,r,o){var s=void 0!==o,a=s?o:new i(b),l=this._target(),u=l._bitField;s||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!==(2097152&this._bitField)&&(r=0!==(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var p=c();if(0!==(50397184&u)){var h,_,d=l._settlePromiseCtx;0!==(33554432&u)?(_=l._rejectionHandler0,h=t):0!==(16777216&u)?(_=l._fulfillmentHandler0,h=e,l._unsetRejectionIsUnhandled()):(d=l._settlePromiseLateCancellationObserver,_=new g("late cancellation observer"),l._attachExtraTrace(_),h=e),v.invoke(d,l,{handler:null===p?h:"function"==typeof h&&f.domainBind(p,h),promise:a,receiver:r,value:_})}else l._addCallbacks(t,e,a,r,p);return a},i.prototype._length=function(){return 65535&this._bitField},i.prototype._isFateSealed=function(){return 0!==(117506048&this._bitField)},i.prototype._isFollowing=function(){return 67108864===(67108864&this._bitField)},i.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},i.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},i.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},i.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},i.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},i.prototype._isFinal=function(){return(4194304&this._bitField)>0},i.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},i.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},i.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},i.prototype._setAsyncGuaranteed=function(){v.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},i.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];return e===h?void 0:void 0===e&&this._isBound()?this._boundValue():e},i.prototype._promiseAt=function(t){return this[4*t-4+2]},i.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},i.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},i.prototype._boundValue=function(){},i.prototype._migrateCallback0=function(t){var e=(t._bitField,t._fulfillmentHandler0),n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=h),this._addCallbacks(e,n,r,i,null)},i.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=h),this._addCallbacks(n,r,i,o,null)},i.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:f.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:f.domainBind(i,e));else{var s=4*o-4;this[s+2]=n,this[s+3]=r,"function"==typeof t&&(this[s+0]=null===i?t:f.domainBind(i,t)),"function"==typeof e&&(this[s+1]=null===i?e:f.domainBind(i,e))}return this._setLength(o+1),o},i.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},i.prototype._resolveCallback=function(t,e){if(0===(117506048&this._bitField)){if(t===this)return this._rejectCallback(l(),!1);var n=j(t,this);if(!(n instanceof i))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r===this)return void this._reject(l());var o=r._bitField;if(0===(50397184&o)){var s=this._length();s>0&&r._migrateCallback0(this);for(var a=1;s>a;++a)r._migrateCallbackAt(this,a);this._setFollowing(),this._setLength(0),this._setFollowee(r)}else if(0!==(33554432&o))this._fulfill(r._value());else if(0!==(16777216&o))this._reject(r._reason());else{var c=new g("late cancellation observer");r._attachExtraTrace(c),this._reject(c)}}},i.prototype._rejectCallback=function(t,e,n){var r=f.ensureErrorObject(t),i=r===t;if(!i&&!n&&x.warnings()){var o="a promise was rejected with a non-error: "+f.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,e?i:!1),this._reject(t)},i.prototype._resolveFromExecutor=function(t){if(t!==b){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},i.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0===(65536&i)){r._pushContext();var o;e===w?n&&"number"==typeof n.length?o=O(t).apply(this._boundValue(),n):(o=S,o.e=new m("cannot .spread() a non-array: "+f.classString(n))):o=O(t).call(e,n);var s=r._popContext();i=r._bitField,0===(65536&i)&&(o===C?r._reject(n):o===S?r._rejectCallback(o.e,!1):(x.checkForgottenReturns(o,s,"",r,this),r._resolveCallback(o)))}},i.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},i.prototype._followee=function(){return this._rejectionHandler0},i.prototype._setFollowee=function(t){this._rejectionHandler0=t},i.prototype._settlePromise=function(t,e,r,o){var s=t instanceof i,a=this._bitField,c=0!==(134217728&a);0!==(65536&a)?(s&&t._invokeInternalOnCancel(),r instanceof T&&r.isFinallyHandler()?(r.cancelPromise=t,O(e).call(r,o)===S&&t._reject(S.e)):e===u?t._fulfill(u.call(r)):r instanceof n?r._promiseCancelled(t):s||t instanceof E?t._cancel():r.cancel()):"function"==typeof e?s?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,o,t)):e.call(r,o,t):r instanceof n?r._isResolved()||(0!==(33554432&a)?r._promiseFulfilled(o,t):r._promiseRejected(o,t)):s&&(c&&t._setAsyncGuaranteed(),0!==(33554432&a)?t._fulfill(o):t._reject(o))},i.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof i?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof i&&n._reject(o)},i.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},i.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},i.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},i.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=l();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!==(134217728&e)?this._settlePromises():v.settlePromises(this))}},i.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16))return this._setRejected(),this._fulfillmentHandler0=t,this._isFinal()?v.fatalError(t,f.isNode):void((65535&e)>0?v.settlePromises(this):this._ensurePossibleRejectionHandled())},i.prototype._fulfillPromises=function(t,e){for(var n=1;t>n;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._rejectPromises=function(t,e){for(var n=1;t>n;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!==(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},i.prototype._settledValue=function(){var t=this._bitField;return 0!==(33554432&t)?this._rejectionHandler0:0!==(16777216&t)?this._fulfillmentHandler0:void 0},i.defer=i.pending=function(){x.deprecated("Promise.defer","new Promise");var t=new i(b);return{promise:t,resolve:o,reject:s}},f.notEnumerableProp(i,"_makeSelfResolutionError",l),t("./method")(i,b,j,p,x),t("./bind")(i,b,j,x),t("./cancel")(i,E,p,x),t("./direct_resolve")(i),t("./synchronous_inspection")(i),t("./join")(i,E,j,b,v,c),i.Promise=i,i.version="3.5.1",t("./map.js")(i,E,p,j,b,x),t("./call_get.js")(i),t("./using.js")(i,p,j,F,b,x),t("./timers.js")(i,b,x),t("./generators.js")(i,p,b,j,n,x),t("./nodeify.js")(i),t("./promisify.js")(i,b),t("./props.js")(i,E,j,p),t("./race.js")(i,b,j,p),t("./reduce.js")(i,E,p,j,b,x),t("./settle.js")(i,E,x),t("./some.js")(i,E,p),t("./filter.js")(i,b),t("./each.js")(i,b),t("./any.js")(i),f.toFastProperties(i),f.toFastProperties(i.prototype),a({a:1}),a({b:2}),a({c:3}),a(1),a(function(){}),a(void 0),a(!1),a(new i(b)),x.setBounds(d.firstLineError,f.lastLineError),i}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){function s(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}function a(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var c=t("./util");c.isArray;return c.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function l(t,n){var o=r(this._values,this._promise);if(o instanceof e){o=o._target();var a=o._bitField;if(this._values=o,0===(50397184&a))return this._promise._setAsyncGuaranteed(),o._then(l,this._reject,void 0,this,n);if(0===(33554432&a))return 0!==(16777216&a)?this._reject(o._reason()):this._cancel();o=o._value()}if(o=c.asArray(o),null===o){var u=i("expecting an array or an iterable object but got "+c.classString(o)).reason();return void this._promise._rejectCallback(u,!1)}return 0===o.length?void(-5===n?this._resolveEmptyArray():this._resolve(s(n))):void this._iterate(o)},a.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,s=null,a=0;n>a;++a){var c=r(t[a],i);c instanceof e?(c=c._target(),s=c._bitField):s=null,o?null!==s&&c.suppressUnhandledRejections():null!==s?0===(50397184&s)?(c._proxy(this,a),this._values[a]=c):o=0!==(33554432&s)?this._promiseFulfilled(c._value(),a):0!==(16777216&s)?this._promiseRejected(c._reason(),a):this._promiseCancelled(a):o=this._promiseFulfilled(c,a)}o||i._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},a.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},a.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;nc;c+=2){var u=s[c],p=s[c+1],_=u+e;if(r===k)t[_]=k(u,h,u,p,e,i);else{var d=r(p,function(){return k(u,h,u,p,e,i)});f.notEnumerableProp(d,"__isPromisified__",!0),t[_]=d}}return f.toFastProperties(t),t}function u(t,e,n){return k(t,e,void 0,t,null,n)}var p,h={},f=t("./util"),_=t("./nodeback"),d=f.withAppended,v=f.maybeWrapAsError,y=f.canEvaluate,m=t("./errors").TypeError,g="Async",b={__isPromisified__:!0},w=["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"],C=new RegExp("^(?:"+w.join("|")+")$"),j=function(t){return f.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t},E=function(t){return t.replace(/([$])/,"\\$")},k=y?p:c;e.promisify=function(t,e){if("function"!=typeof t)throw new m("expecting a function but got "+f.classString(t));if(i(t))return t;e=Object(e);var n=void 0===e.context?h:e.context,o=!!e.multiArgs,s=u(t,n,o);return f.copyDescriptors(t,s,r),s},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new m("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");e=Object(e);var n=!!e.multiArgs,r=e.suffix;"string"!=typeof r&&(r=g);var i=e.filter;"function"!=typeof i&&(i=j);var o=e.promisifier;if("function"!=typeof o&&(o=k),!f.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=f.inheritedDataKeys(t),a=0;ao;++o){var s=r[o];e[o]=t[s],e[o+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function s(t){var n,s=r(t);return l(s)?(n=s instanceof e?s._then(e.props,void 0,void 0,void 0,void 0):new o(s).promise(),s instanceof e&&n._propagateFrom(s,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}var a,c=t("./util"),l=c.isObject,u=t("./es5");"function"==typeof Map&&(a=Map);var p=function(){function t(t,r){this[e]=t,this[e+n]=r,e++}var e=0,n=0;return function(r){n=r.size,e=0;var i=new Array(2*r.size);return r.forEach(t,i),i}}(),h=function(t){for(var e=new a,n=t.length/2|0,r=0;n>r;++r){var i=t[n+r],o=t[r];e.set(i,o)}return e};c.inherits(o,n),o.prototype._init=function(){},o.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=h(this._values);else{r={};for(var i=this.length(),o=0,s=this.length();s>o;++o)r[this._values[o+i]]=this._values[o]}return this._resolve(r),!0}return!1},o.prototype.shouldCopyValues=function(){return!1},o.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return s(this)},e.props=function(t){return s(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t,e,n,r,i){for(var o=0;i>o;++o)n[o+r]=t[o+e],t[o+e]=void 0}function i(t){this._capacity=t,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(t){return this._capacityh;++h){var _=t[h];(void 0!==_||h in t)&&e.cast(_)._then(u,p,void 0,l,null)}return l}var s=t("./util"),a=function(t){return t.then(function(e){return o(e,t)})};e.race=function(t){return o(t,void 0)},e.prototype.race=function(){return o(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r,i){this.constructor$(t);var s=h();this._fn=null===s?n:f.domainBind(s,n),void 0!==r&&(r=e.resolve(r),r._attachCancellationCallback(this)),this._initialValue=r,this._currentCancellable=null,i===o?this._eachValues=Array(this._length):0===i?this._eachValues=null:this._eachValues=void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function c(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function l(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+f.classString(e));var o=new a(t,e,n,i);return o.promise()}function u(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(p,void 0,void 0,this,void 0)):p.call(this,n)}function p(t){var n=this.array,r=n._promise,i=_(n._fn);r._pushContext();var o;o=void 0!==n._eachValues?i.call(r._boundValue(),t,this.index,this.length):i.call(r._boundValue(),this.accum,t,this.index,this.length),o instanceof e&&(n._currentCancellable=o);var a=r._popContext();return s.checkForgottenReturns(o,a,void 0!==n._eachValues?"Promise.each":"Promise.reduce",r),o}var h=e._getDomain,f=t("./util"),_=f.tryCatch;f.inherits(a,n),a.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},a.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},a.prototype._init=function(){},a.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},a.prototype.shouldCopyValues=function(){return!1},a.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},a.prototype._resultCancelled=function(t){return t===this._initialValue?this._cancel():void(this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel()))},a.prototype._iterate=function(t){this._values=t;var n,r,i=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;i>r;++r){var o={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(u,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(c,c,void 0,n,this)},e.prototype.reduce=function(t,e){return l(this,t,e,null)},e.reduce=function(t,e,n,r){return l(t,e,n,r)}}},{"./util":36}],29:[function(t,e,n){"use strict";var r,i=t("./util"),o=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")},s=i.getNativePromise();if(i.isNode&&"undefined"==typeof MutationObserver){var a=global.setImmediate,c=process.nextTick;r=i.isRecentNode?function(t){a.call(global,t)}:function(t){c.call(process,t)}}else if("function"==typeof s&&"function"==typeof s.resolve){var l=s.resolve();r=function(t){l.then(t)}}else r="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?"undefined"!=typeof setImmediate?function(t){setImmediate(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:o:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),i=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});i.observe(r,e);var o=function(){n||(n=!0,r.classList.toggle("foo"))};return function(n){var r=new MutationObserver(function(){r.disconnect(),n()});r.observe(t,e),o()}}();e.exports=r},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t)}var o=e.PromiseInspection,s=t("./util");s.inherits(i,n),i.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},i.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},i.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new i(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t), -this._howMany=0,this._unwrap=!1,this._initialized=!1}function o(t,e){if((0|e)!==e||0>e)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new i(t),o=n.promise();return n.setHowMany(e),n.init(),o}var s=t("./util"),a=t("./errors").RangeError,c=t("./errors").AggregateError,l=s.isArray,u={};s.inherits(i,n),i.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var t=l(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},i.prototype.init=function(){this._initialized=!0,this._init()},i.prototype.setUnwrap=function(){this._unwrap=!0},i.prototype.howMany=function(){return this._howMany},i.prototype.setHowMany=function(t){this._howMany=t},i.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()?(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0):!1},i.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},i.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},i.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new c,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},i.prototype._fulfilled=function(){return this._totalResolved},i.prototype._rejected=function(){return this._values.length-this.length()},i.prototype._addRejected=function(t){this._values.push(t)},i.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},i.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},i.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},i.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return o(t,e)},e.prototype.some=function(t){return o(this,t)},e._SomePromiseArray=i}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!==(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!==(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0===(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!==(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!==(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536===(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!==(8454144&this._target()._bitField)},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){function r(t,r){if(u(t)){if(t instanceof e)return t;var i=o(t);if(i===l){r&&r._pushContext();var c=e.reject(i.e);return r&&r._popContext(),c}if("function"==typeof i){if(s(t)){var c=new e(n);return t._then(c._fulfill,c._reject,void 0,c,null),c}return a(t,i,r)}}return t}function i(t){return t.then}function o(t){try{return i(t)}catch(e){return l.e=e,l}}function s(t){try{return p.call(t,"_promise0")}catch(e){return!1}}function a(t,r,i){function o(t){a&&(a._resolveCallback(t),a=null)}function s(t){a&&(a._rejectCallback(t,p,!0),a=null)}var a=new e(n),u=a;i&&i._pushContext(),a._captureStackTrace(),i&&i._popContext();var p=!0,h=c.tryCatch(r).call(t,o,s);return p=!1,a&&h===l&&(a._rejectCallback(h.e,!0,!0),a=null),u}var c=t("./util"),l=c.errorObj,u=c.isObject,p={}.hasOwnProperty;return r}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.handle=t}function o(t){return clearTimeout(this.handle),t}function s(t){throw clearTimeout(this.handle),t}var a=t("./util"),c=e.TimeoutError;i.prototype._resultCancelled=function(){clearTimeout(this.handle)};var l=function(t){return u(+this).thenReturn(t)},u=e.delay=function(t,o){var s,a;return void 0!==o?(s=e.resolve(o)._then(l,null,null,t,void 0),r.cancellation()&&o instanceof e&&s._setOnCancel(o)):(s=new e(n),a=setTimeout(function(){s._fulfill()},+t),r.cancellation()&&s._setOnCancel(new i(a)),s._captureStackTrace()),s._setAsyncGuaranteed(),s};e.prototype.delay=function(t){return u(t,this)};var p=function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new c("operation timed out"):new c(e),a.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()};e.prototype.timeout=function(t,e){t=+t;var n,a,c=new i(setTimeout(function(){n.isPending()&&p(n,e,a)},t));return r.cancellation()?(a=this.then(),n=a._then(o,s,void 0,c,void 0),n._setOnCancel(c)):n=this._then(o,s,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t){setTimeout(function(){throw t},0)}function c(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}function l(t,n){function i(){if(s>=l)return u._fulfill();var o=c(t[s++]);if(o instanceof e&&o._isDisposable()){try{o=r(o._getDisposer().tryDispose(n),t.promise)}catch(p){return a(p)}if(o instanceof e)return o._then(i,a,null,null,null)}i()}var s=0,l=t.length,u=new e(o);return i(),u}function u(t,e,n){this._data=t,this._promise=e,this._context=n}function p(t,e,n){this.constructor$(t,e,n)}function h(t){return u.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function f(t){this.length=t,this.promise=null,this[t-1]=null}var _=t("./util"),d=t("./errors").TypeError,v=t("./util").inherits,y=_.errorObj,m=_.tryCatch,g={};u.prototype.data=function(){return this._data},u.prototype.promise=function(){return this._promise},u.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():g},u.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==g?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},u.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},v(p,u),p.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},f.prototype._resultCancelled=function(){for(var t=this.length,n=0;t>n;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(2>t)return n("you must pass at least 2 arguments to Promise.using");var i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+_.classString(i));var o,a=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,a=!1):(o=arguments,t--);for(var c=new f(t),p=0;t>p;++p){var d=o[p];if(u.isDisposer(d)){var v=d;d=d.promise(),d._setDisposable(v)}else{var g=r(d);g instanceof e&&(d=g._then(h,null,null,{resources:c,index:p},void 0))}c[p]=d}for(var b=new Array(c.length),p=0;p0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,i());throw new d}}},{"./errors":12,"./util":36}],36:[function(t,e,n){"use strict";function r(){try{var t=P;return P=null,t.apply(this,arguments)}catch(e){return T.e=e,T}}function i(t){return P=t,r}function o(t){return null==t||t===!0||t===!1||"string"==typeof t||"number"==typeof t}function s(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return o(t)?new Error(v(t)):t}function c(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;r>n;++n)i[n]=t[n];return i[n]=e,i}function l(t,e,n){if(!F.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function u(t,e,n){if(o(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return F.defineProperty(t,e,r),t}function p(t){throw t}function h(t){try{if("function"==typeof t){var e=F.names(t.prototype),n=F.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=A.test(t+"")&&F.names(t).length>0;if(n||r||i)return!0}return!1}catch(o){return!1}}function f(t){function e(){}e.prototype=t;for(var n=8;n--;)new e;return t}function _(t){return D.test(t)}function d(t,e,n){for(var r=new Array(t),i=0;t>i;++i)r[i]=e+i+n;return r}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function m(t){try{u(t,"isOperational",!0)}catch(e){}}function g(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function b(t){return y(t)&&F.propertyIsWritable(t,"stack")}function w(t){return{}.toString.call(t)}function C(t,e,n){for(var r=F.names(t),i=0;i10||t[0]>0}(),B.isNode&&B.toFastProperties(process);try{throw new Error}catch(U){B.lastLineError=U}e.exports=B},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file diff --git a/node_modules/bluebird/js/release/any.js b/node_modules/bluebird/js/release/any.js deleted file mode 100644 index 05a6228e..00000000 --- a/node_modules/bluebird/js/release/any.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var SomePromiseArray = Promise._SomePromiseArray; -function any(promises) { - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(1); - ret.setUnwrap(); - ret.init(); - return promise; -} - -Promise.any = function (promises) { - return any(promises); -}; - -Promise.prototype.any = function () { - return any(this); -}; - -}; diff --git a/node_modules/bluebird/js/release/assert.js b/node_modules/bluebird/js/release/assert.js deleted file mode 100644 index 4518231a..00000000 --- a/node_modules/bluebird/js/release/assert.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -module.exports = (function(){ -var AssertionError = (function() { - function AssertionError(a) { - this.constructor$(a); - this.message = a; - this.name = "AssertionError"; - } - AssertionError.prototype = new Error(); - AssertionError.prototype.constructor = AssertionError; - AssertionError.prototype.constructor$ = Error; - return AssertionError; -})(); - -function getParams(args) { - var params = []; - for (var i = 0; i < args.length; ++i) params.push("arg" + i); - return params; -} - -function nativeAssert(callName, args, expect) { - try { - var params = getParams(args); - var constructorArgs = params; - constructorArgs.push("return " + - callName + "("+ params.join(",") + ");"); - var fn = Function.apply(null, constructorArgs); - return fn.apply(null, args); - } catch (e) { - if (!(e instanceof SyntaxError)) { - throw e; - } else { - return expect; - } - } -} - -return function assert(boolExpr, message) { - if (boolExpr === true) return; - - if (typeof boolExpr === "string" && - boolExpr.charAt(0) === "%") { - var nativeCallName = boolExpr; - var $_len = arguments.length;var args = new Array(Math.max($_len - 2, 0)); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];}; - if (nativeAssert(nativeCallName, args, message) === message) return; - message = (nativeCallName + " !== " + message); - } - - var ret = new AssertionError(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(ret, assert); - } - throw ret; -}; -})(); diff --git a/node_modules/bluebird/js/release/async.js b/node_modules/bluebird/js/release/async.js deleted file mode 100644 index 41f66556..00000000 --- a/node_modules/bluebird/js/release/async.js +++ /dev/null @@ -1,161 +0,0 @@ -"use strict"; -var firstLineError; -try {throw new Error(); } catch (e) {firstLineError = e;} -var schedule = require("./schedule"); -var Queue = require("./queue"); -var util = require("./util"); - -function Async() { - this._customScheduler = false; - this._isTickUsed = false; - this._lateQueue = new Queue(16); - this._normalQueue = new Queue(16); - this._haveDrainedQueues = false; - this._trampolineEnabled = true; - var self = this; - this.drainQueues = function () { - self._drainQueues(); - }; - this._schedule = schedule; -} - -Async.prototype.setScheduler = function(fn) { - var prev = this._schedule; - this._schedule = fn; - this._customScheduler = true; - return prev; -}; - -Async.prototype.hasCustomScheduler = function() { - return this._customScheduler; -}; - -Async.prototype.enableTrampoline = function() { - this._trampolineEnabled = true; -}; - -Async.prototype.disableTrampolineIfNecessary = function() { - if (util.hasDevTools) { - this._trampolineEnabled = false; - } -}; - -Async.prototype.haveItemsQueued = function () { - return this._isTickUsed || this._haveDrainedQueues; -}; - - -Async.prototype.fatalError = function(e, isNode) { - if (isNode) { - process.stderr.write("Fatal " + (e instanceof Error ? e.stack : e) + - "\n"); - process.exit(2); - } else { - this.throwLater(e); - } -}; - -Async.prototype.throwLater = function(fn, arg) { - if (arguments.length === 1) { - arg = fn; - fn = function () { throw arg; }; - } - if (typeof setTimeout !== "undefined") { - setTimeout(function() { - fn(arg); - }, 0); - } else try { - this._schedule(function() { - fn(arg); - }); - } catch (e) { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } -}; - -function AsyncInvokeLater(fn, receiver, arg) { - this._lateQueue.push(fn, receiver, arg); - this._queueTick(); -} - -function AsyncInvoke(fn, receiver, arg) { - this._normalQueue.push(fn, receiver, arg); - this._queueTick(); -} - -function AsyncSettlePromises(promise) { - this._normalQueue._pushOne(promise); - this._queueTick(); -} - -if (!util.hasDevTools) { - Async.prototype.invokeLater = AsyncInvokeLater; - Async.prototype.invoke = AsyncInvoke; - Async.prototype.settlePromises = AsyncSettlePromises; -} else { - Async.prototype.invokeLater = function (fn, receiver, arg) { - if (this._trampolineEnabled) { - AsyncInvokeLater.call(this, fn, receiver, arg); - } else { - this._schedule(function() { - setTimeout(function() { - fn.call(receiver, arg); - }, 100); - }); - } - }; - - Async.prototype.invoke = function (fn, receiver, arg) { - if (this._trampolineEnabled) { - AsyncInvoke.call(this, fn, receiver, arg); - } else { - this._schedule(function() { - fn.call(receiver, arg); - }); - } - }; - - Async.prototype.settlePromises = function(promise) { - if (this._trampolineEnabled) { - AsyncSettlePromises.call(this, promise); - } else { - this._schedule(function() { - promise._settlePromises(); - }); - } - }; -} - -Async.prototype._drainQueue = function(queue) { - while (queue.length() > 0) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - continue; - } - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -}; - -Async.prototype._drainQueues = function () { - this._drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - this._drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; diff --git a/node_modules/bluebird/js/release/bind.js b/node_modules/bluebird/js/release/bind.js deleted file mode 100644 index fc3379db..00000000 --- a/node_modules/bluebird/js/release/bind.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; diff --git a/node_modules/bluebird/js/release/bluebird.js b/node_modules/bluebird/js/release/bluebird.js deleted file mode 100644 index 1c36cf36..00000000 --- a/node_modules/bluebird/js/release/bluebird.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = require("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; diff --git a/node_modules/bluebird/js/release/call_get.js b/node_modules/bluebird/js/release/call_get.js deleted file mode 100644 index 0ed7714a..00000000 --- a/node_modules/bluebird/js/release/call_get.js +++ /dev/null @@ -1,123 +0,0 @@ -"use strict"; -var cr = Object.create; -if (cr) { - var callerCache = cr(null); - var getterCache = cr(null); - callerCache[" size"] = getterCache[" size"] = 0; -} - -module.exports = function(Promise) { -var util = require("./util"); -var canEvaluate = util.canEvaluate; -var isIdentifier = util.isIdentifier; - -var getMethodCaller; -var getGetter; -if (!false) { -var makeMethodCaller = function (methodName) { - return new Function("ensureMethod", " \n\ - return function(obj) { \n\ - 'use strict' \n\ - var len = this.length; \n\ - ensureMethod(obj, 'methodName'); \n\ - switch(len) { \n\ - case 1: return obj.methodName(this[0]); \n\ - case 2: return obj.methodName(this[0], this[1]); \n\ - case 3: return obj.methodName(this[0], this[1], this[2]); \n\ - case 0: return obj.methodName(); \n\ - default: \n\ - return obj.methodName.apply(obj, this); \n\ - } \n\ - }; \n\ - ".replace(/methodName/g, methodName))(ensureMethod); -}; - -var makeGetter = function (propertyName) { - return new Function("obj", " \n\ - 'use strict'; \n\ - return obj.propertyName; \n\ - ".replace("propertyName", propertyName)); -}; - -var getCompiled = function(name, compiler, cache) { - var ret = cache[name]; - if (typeof ret !== "function") { - if (!isIdentifier(name)) { - return null; - } - ret = compiler(name); - cache[name] = ret; - cache[" size"]++; - if (cache[" size"] > 512) { - var keys = Object.keys(cache); - for (var i = 0; i < 256; ++i) delete cache[keys[i]]; - cache[" size"] = keys.length - 256; - } - } - return ret; -}; - -getMethodCaller = function(name) { - return getCompiled(name, makeMethodCaller, callerCache); -}; - -getGetter = function(name) { - return getCompiled(name, makeGetter, getterCache); -}; -} - -function ensureMethod(obj, methodName) { - var fn; - if (obj != null) fn = obj[methodName]; - if (typeof fn !== "function") { - var message = "Object " + util.classString(obj) + " has no method '" + - util.toString(methodName) + "'"; - throw new Promise.TypeError(message); - } - return fn; -} - -function caller(obj) { - var methodName = this.pop(); - var fn = ensureMethod(obj, methodName); - return fn.apply(obj, this); -} -Promise.prototype.call = function (methodName) { - var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}; - if (!false) { - if (canEvaluate) { - var maybeCaller = getMethodCaller(methodName); - if (maybeCaller !== null) { - return this._then( - maybeCaller, undefined, undefined, args, undefined); - } - } - } - args.push(methodName); - return this._then(caller, undefined, undefined, args, undefined); -}; - -function namedGetter(obj) { - return obj[this]; -} -function indexedGetter(obj) { - var index = +this; - if (index < 0) index = Math.max(0, index + obj.length); - return obj[index]; -} -Promise.prototype.get = function (propertyName) { - var isIndex = (typeof propertyName === "number"); - var getter; - if (!isIndex) { - if (canEvaluate) { - var maybeGetter = getGetter(propertyName); - getter = maybeGetter !== null ? maybeGetter : namedGetter; - } else { - getter = namedGetter; - } - } else { - getter = indexedGetter; - } - return this._then(getter, undefined, undefined, propertyName, undefined); -}; -}; diff --git a/node_modules/bluebird/js/release/cancel.js b/node_modules/bluebird/js/release/cancel.js deleted file mode 100644 index 7a12415e..00000000 --- a/node_modules/bluebird/js/release/cancel.js +++ /dev/null @@ -1,129 +0,0 @@ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise._isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent._isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - promise._setWillBeCancelled(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this._isCancellable()) return; - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype._isCancellable = function() { - return this.isPending() && !this._isCancelled(); -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this._isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; diff --git a/node_modules/bluebird/js/release/catch_filter.js b/node_modules/bluebird/js/release/catch_filter.js deleted file mode 100644 index 0f24ce23..00000000 --- a/node_modules/bluebird/js/release/catch_filter.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = require("./util"); -var getKeys = require("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; diff --git a/node_modules/bluebird/js/release/context.js b/node_modules/bluebird/js/release/context.js deleted file mode 100644 index c307414f..00000000 --- a/node_modules/bluebird/js/release/context.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; diff --git a/node_modules/bluebird/js/release/debuggability.js b/node_modules/bluebird/js/release/debuggability.js deleted file mode 100644 index 69568041..00000000 --- a/node_modules/bluebird/js/release/debuggability.js +++ /dev/null @@ -1,919 +0,0 @@ -"use strict"; -module.exports = function(Promise, Context) { -var getDomain = Promise._getDomain; -var async = Promise._async; -var Warning = require("./errors").Warning; -var util = require("./util"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; -var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (false || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); - -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); - -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && - (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 524288); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 524288) !== 0) return; - this._setRejectionIsUnhandled(); - var self = this; - setTimeout(function() { - self._notifyUnhandledRejection(); - }, 1); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._setReturnedNonUndefined = function() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._returnedNonUndefined = function() { - return (this._bitField & 268435456) !== 0; -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var domain = getDomain(); - possiblyUnhandledRejection = - typeof fn === "function" ? (domain === null ? - fn : util.domainBind(domain, fn)) - : undefined; -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var domain = getDomain(); - unhandledRejectionHandled = - typeof fn === "function" ? (domain === null ? - fn : util.domainBind(domain, fn)) - : undefined; -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Context.deactivateLongStackTraces(); - async.enableTrampoline(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Context.activateLongStackTraces(); - async.disableTrampolineIfNecessary(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - -var fireDomEvent = (function() { - try { - if (typeof CustomEvent === "function") { - var event = new CustomEvent("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = new CustomEvent(name.toLowerCase(), { - detail: event, - cancelable: true - }); - return !util.global.dispatchEvent(domEvent); - }; - } else if (typeof Event === "function") { - var event = new Event("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = new Event(name.toLowerCase(), { - cancelable: true - }); - domEvent.detail = event; - return !util.global.dispatchEvent(domEvent); - }; - } else { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - util.global.dispatchEvent(event); - return function(name, event) { - var domEvent = document.createEvent("CustomEvent"); - domEvent.initCustomEvent(name.toLowerCase(), false, true, - event); - return !util.global.dispatchEvent(domEvent); - }; - } - } catch (e) {} - return function() { - return false; - }; -})(); - -var fireGlobalEvent = (function() { - if (util.isNode) { - return function() { - return process.emit.apply(process, arguments); - }; - } else { - if (!util.global) { - return function() { - return false; - }; - } - return function(name) { - var methodName = "on" + name.toLowerCase(); - var method = util.global[methodName]; - if (!method) return false; - method.apply(util.global, [].slice.call(arguments, 1)); - return true; - }; - } -})(); - -function generatePromiseLifecycleEventObject(name, promise) { - return {promise: promise}; -} - -var eventToObjectGenerator = { - promiseCreated: generatePromiseLifecycleEventObject, - promiseFulfilled: generatePromiseLifecycleEventObject, - promiseRejected: generatePromiseLifecycleEventObject, - promiseResolved: generatePromiseLifecycleEventObject, - promiseCancelled: generatePromiseLifecycleEventObject, - promiseChained: function(name, promise, child) { - return {promise: promise, child: child}; - }, - warning: function(name, warning) { - return {warning: warning}; - }, - unhandledRejection: function (name, reason, promise) { - return {reason: reason, promise: promise}; - }, - rejectionHandled: generatePromiseLifecycleEventObject -}; - -var activeFireEvent = function (name) { - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent.apply(null, arguments); - } catch (e) { - async.throwLater(e); - globalEventFired = true; - } - - var domEventFired = false; - try { - domEventFired = fireDomEvent(name, - eventToObjectGenerator[name].apply(null, arguments)); - } catch (e) { - async.throwLater(e); - domEventFired = true; - } - - return domEventFired || globalEventFired; -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - var warningsOption = opts.warnings; - config.warnings = !!warningsOption; - wForgottenReturn = config.warnings; - - if (util.isObject(warningsOption)) { - if ("wForgottenReturn" in warningsOption) { - wForgottenReturn = !!warningsOption.wForgottenReturn; - } - } - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } - if ("monitoring" in opts) { - if (opts.monitoring && !config.monitoring) { - config.monitoring = true; - Promise.prototype._fireEvent = activeFireEvent; - } else if (!opts.monitoring && config.monitoring) { - config.monitoring = false; - Promise.prototype._fireEvent = defaultFireEvent; - } - } - return Promise; -}; - -function defaultFireEvent() { return false; } - -Promise.prototype._fireEvent = defaultFireEvent; -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this._isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise, - parent) { - if (returnValue === undefined && promiseCreated !== null && - wForgottenReturn) { - if (parent !== undefined && parent._returnedNonUndefined()) return; - if ((promise._bitField & 65535) === 0) return; - - if (name) name = name + " "; - var handlerLine = ""; - var creatorLine = ""; - if (promiseCreated._trace) { - var traceLines = promiseCreated._trace.stack.split("\n"); - var stack = cleanStack(traceLines); - for (var i = stack.length - 1; i >= 0; --i) { - var line = stack[i]; - if (!nodeFramePattern.test(line)) { - var lineMatches = line.match(parseLinePattern); - if (lineMatches) { - handlerLine = "at " + lineMatches[1] + - ":" + lineMatches[2] + ":" + lineMatches[3] + " "; - } - break; - } - } - - if (stack.length > 0) { - var firstUserLine = stack[0]; - for (var i = 0; i < traceLines.length; ++i) { - - if (traceLines[i] === firstUserLine) { - if (i > 0) { - creatorLine = "\n" + traceLines[i - 1]; - } - break; - } - } - - } - } - var msg = "a promise was created in a " + name + - "handler " + handlerLine + "but was not returned from it, " + - "see http://goo.gl/rRqMUw" + - creatorLine; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - - if (!activeFireEvent("warning", warning)) { - formatAndLogError(warning, "", true); - } -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0 && error.name != "SyntaxError") { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: error.name == "SyntaxError" ? stack : cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - if (name === "unhandledRejection") { - if (!activeFireEvent(name, reason, promise) && !localEventFired) { - formatAndLogError(reason, "Unhandled rejection "); - } - } else { - activeFireEvent(name, promise); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = firstLineError.stack.split("\n"); - var lastStackLines = lastLineError.stack.split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false, - monitoring: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - monitoring: function() { - return config.monitoring; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace, - fireDomEvent: fireDomEvent, - fireGlobalEvent: fireGlobalEvent -}; -}; diff --git a/node_modules/bluebird/js/release/direct_resolve.js b/node_modules/bluebird/js/release/direct_resolve.js deleted file mode 100644 index a8902982..00000000 --- a/node_modules/bluebird/js/release/direct_resolve.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; diff --git a/node_modules/bluebird/js/release/each.js b/node_modules/bluebird/js/release/each.js deleted file mode 100644 index e4f3d05b..00000000 --- a/node_modules/bluebird/js/release/each.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseReduce = Promise.reduce; -var PromiseAll = Promise.all; - -function promiseAllThis() { - return PromiseAll(this); -} - -function PromiseMapSeries(promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, INTERNAL); -} - -Promise.prototype.each = function (fn) { - return PromiseReduce(this, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, this, undefined); -}; - -Promise.prototype.mapSeries = function (fn) { - return PromiseReduce(this, fn, INTERNAL, INTERNAL); -}; - -Promise.each = function (promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, promises, undefined); -}; - -Promise.mapSeries = PromiseMapSeries; -}; - diff --git a/node_modules/bluebird/js/release/errors.js b/node_modules/bluebird/js/release/errors.js deleted file mode 100644 index f62f323e..00000000 --- a/node_modules/bluebird/js/release/errors.js +++ /dev/null @@ -1,116 +0,0 @@ -"use strict"; -var es5 = require("./es5"); -var Objectfreeze = es5.freeze; -var util = require("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - es5.defineProperty(Error, "__BluebirdErrorTypes__", { - value: errorTypes, - writable: false, - enumerable: false, - configurable: false - }); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; diff --git a/node_modules/bluebird/js/release/es5.js b/node_modules/bluebird/js/release/es5.js deleted file mode 100644 index ea41d5a5..00000000 --- a/node_modules/bluebird/js/release/es5.js +++ /dev/null @@ -1,80 +0,0 @@ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} diff --git a/node_modules/bluebird/js/release/filter.js b/node_modules/bluebird/js/release/filter.js deleted file mode 100644 index ed57bf01..00000000 --- a/node_modules/bluebird/js/release/filter.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseMap = Promise.map; - -Promise.prototype.filter = function (fn, options) { - return PromiseMap(this, fn, options, INTERNAL); -}; - -Promise.filter = function (promises, fn, options) { - return PromiseMap(promises, fn, options, INTERNAL); -}; -}; diff --git a/node_modules/bluebird/js/release/finally.js b/node_modules/bluebird/js/release/finally.js deleted file mode 100644 index d57444be..00000000 --- a/node_modules/bluebird/js/release/finally.js +++ /dev/null @@ -1,146 +0,0 @@ -"use strict"; -module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { -var util = require("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; -var catchFilter = require("./catch_filter")(NEXT_FILTER); - -function PassThroughHandlerContext(promise, type, handler) { - this.promise = promise; - this.type = type; - this.handler = handler; - this.called = false; - this.cancelPromise = null; -} - -PassThroughHandlerContext.prototype.isFinallyHandler = function() { - return this.type === 0; -}; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.isFinallyHandler() - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret === NEXT_FILTER) { - return ret; - } else if (ret !== undefined) { - promise._setReturnedNonUndefined(); - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise._isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, - fail, - undefined, - new PassThroughHandlerContext(this, type, handler), - undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -Promise.prototype.tapCatch = function (handlerOrPredicate) { - var len = arguments.length; - if(len === 1) { - return this._passThrough(handlerOrPredicate, - 1, - undefined, - finallyHandler); - } else { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return Promise.reject(new TypeError( - "tapCatch statement predicate: " - + "expecting an object but got " + util.classString(item) - )); - } - } - catchInstances.length = j; - var handler = arguments[i]; - return this._passThrough(catchFilter(catchInstances, handler, this), - 1, - undefined, - finallyHandler); - } - -}; - -return PassThroughHandlerContext; -}; diff --git a/node_modules/bluebird/js/release/generators.js b/node_modules/bluebird/js/release/generators.js deleted file mode 100644 index 500c280c..00000000 --- a/node_modules/bluebird/js/release/generators.js +++ /dev/null @@ -1,223 +0,0 @@ -"use strict"; -module.exports = function(Promise, - apiRejection, - INTERNAL, - tryConvertToPromise, - Proxyable, - debug) { -var errors = require("./errors"); -var TypeError = errors.TypeError; -var util = require("./util"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -var yieldHandlers = []; - -function promiseFromYieldHandler(value, yieldHandlers, traceParent) { - for (var i = 0; i < yieldHandlers.length; ++i) { - traceParent._pushContext(); - var result = tryCatch(yieldHandlers[i])(value); - traceParent._popContext(); - if (result === errorObj) { - traceParent._pushContext(); - var ret = Promise.reject(errorObj.e); - traceParent._popContext(); - return ret; - } - var maybePromise = tryConvertToPromise(result, traceParent); - if (maybePromise instanceof Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) { - if (debug.cancellation()) { - var internal = new Promise(INTERNAL); - var _finallyPromise = this._finallyPromise = new Promise(INTERNAL); - this._promise = internal.lastly(function() { - return _finallyPromise; - }); - internal._captureStackTrace(); - internal._setOnCancel(this); - } else { - var promise = this._promise = new Promise(INTERNAL); - promise._captureStackTrace(); - } - this._stack = stack; - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = undefined; - this._yieldHandlers = typeof yieldHandler === "function" - ? [yieldHandler].concat(yieldHandlers) - : yieldHandlers; - this._yieldedPromise = null; - this._cancellationPhase = false; -} -util.inherits(PromiseSpawn, Proxyable); - -PromiseSpawn.prototype._isResolved = function() { - return this._promise === null; -}; - -PromiseSpawn.prototype._cleanup = function() { - this._promise = this._generator = null; - if (debug.cancellation() && this._finallyPromise !== null) { - this._finallyPromise._fulfill(); - this._finallyPromise = null; - } -}; - -PromiseSpawn.prototype._promiseCancelled = function() { - if (this._isResolved()) return; - var implementsReturn = typeof this._generator["return"] !== "undefined"; - - var result; - if (!implementsReturn) { - var reason = new Promise.CancellationError( - "generator .return() sentinel"); - Promise.coroutine.returnSentinel = reason; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - result = tryCatch(this._generator["throw"]).call(this._generator, - reason); - this._promise._popContext(); - } else { - this._promise._pushContext(); - result = tryCatch(this._generator["return"]).call(this._generator, - undefined); - this._promise._popContext(); - } - this._cancellationPhase = true; - this._yieldedPromise = null; - this._continue(result); -}; - -PromiseSpawn.prototype._promiseFulfilled = function(value) { - this._yieldedPromise = null; - this._promise._pushContext(); - var result = tryCatch(this._generator.next).call(this._generator, value); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._promiseRejected = function(reason) { - this._yieldedPromise = null; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - var result = tryCatch(this._generator["throw"]) - .call(this._generator, reason); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._resultCancelled = function() { - if (this._yieldedPromise instanceof Promise) { - var promise = this._yieldedPromise; - this._yieldedPromise = null; - promise.cancel(); - } -}; - -PromiseSpawn.prototype.promise = function () { - return this._promise; -}; - -PromiseSpawn.prototype._run = function () { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = undefined; - this._promiseFulfilled(undefined); -}; - -PromiseSpawn.prototype._continue = function (result) { - var promise = this._promise; - if (result === errorObj) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._rejectCallback(result.e, false); - } - } - - var value = result.value; - if (result.done === true) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._resolveCallback(value); - } - } else { - var maybePromise = tryConvertToPromise(value, this._promise); - if (!(maybePromise instanceof Promise)) { - maybePromise = - promiseFromYieldHandler(maybePromise, - this._yieldHandlers, - this._promise); - if (maybePromise === null) { - this._promiseRejected( - new TypeError( - "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/MqrFmX\u000a\u000a".replace("%s", String(value)) + - "From coroutine:\u000a" + - this._stack.split("\n").slice(1, -7).join("\n") - ) - ); - return; - } - } - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - this._yieldedPromise = maybePromise; - maybePromise._proxy(this, null); - } else if (((bitField & 33554432) !== 0)) { - Promise._async.invoke( - this._promiseFulfilled, this, maybePromise._value() - ); - } else if (((bitField & 16777216) !== 0)) { - Promise._async.invoke( - this._promiseRejected, this, maybePromise._reason() - ); - } else { - this._promiseCancelled(); - } - } -}; - -Promise.coroutine = function (generatorFunction, options) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var yieldHandler = Object(options).yieldHandler; - var PromiseSpawn$ = PromiseSpawn; - var stack = new Error().stack; - return function () { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, - stack); - var ret = spawn.promise(); - spawn._generator = generator; - spawn._promiseFulfilled(undefined); - return ret; - }; -}; - -Promise.coroutine.addYieldHandler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - yieldHandlers.push(fn); -}; - -Promise.spawn = function (generatorFunction) { - debug.deprecated("Promise.spawn()", "Promise.coroutine()"); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var spawn = new PromiseSpawn(generatorFunction, this); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; -}; -}; diff --git a/node_modules/bluebird/js/release/join.js b/node_modules/bluebird/js/release/join.js deleted file mode 100644 index 4945e3f7..00000000 --- a/node_modules/bluebird/js/release/join.js +++ /dev/null @@ -1,168 +0,0 @@ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, - getDomain) { -var util = require("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!false) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise, async) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.asyncNeeded = true; \n\ - this.now = 0; \n\ - } \n\ - \n\ - [TheName].prototype._callFunction = function(promise) { \n\ - promise._pushContext(); \n\ - var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - if (this.asyncNeeded) { \n\ - async.invoke(this._callFunction, this, promise); \n\ - } else { \n\ - this._callFunction(promise); \n\ - } \n\ - \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise, async); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", "async", code) - (tryCatch, errorObj, Promise, async); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!false) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - holder.asyncNeeded = false; - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - - if (!ret._isFateSealed()) { - if (holder.asyncNeeded) { - var domain = getDomain(); - if (domain !== null) { - holder.fn = util.domainBind(domain, holder.fn); - } - } - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];}; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; diff --git a/node_modules/bluebird/js/release/map.js b/node_modules/bluebird/js/release/map.js deleted file mode 100644 index 976f15ef..00000000 --- a/node_modules/bluebird/js/release/map.js +++ /dev/null @@ -1,168 +0,0 @@ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = require("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -function MappingPromiseArray(promises, fn, limit, _filter) { - this.constructor$(promises); - this._promise._captureStackTrace(); - var domain = getDomain(); - this._callback = domain === null ? fn : util.domainBind(domain, fn); - this._preservedValues = _filter === INTERNAL - ? new Array(this.length()) - : null; - this._limit = limit; - this._inFlight = 0; - this._queue = []; - async.invoke(this._asyncInit, this, undefined); -} -util.inherits(MappingPromiseArray, PromiseArray); - -MappingPromiseArray.prototype._asyncInit = function() { - this._init$(undefined, -2); -}; - -MappingPromiseArray.prototype._init = function () {}; - -MappingPromiseArray.prototype._promiseFulfilled = function (value, index) { - var values = this._values; - var length = this.length(); - var preservedValues = this._preservedValues; - var limit = this._limit; - - if (index < 0) { - index = (index * -1) - 1; - values[index] = value; - if (limit >= 1) { - this._inFlight--; - this._drainQueue(); - if (this._isResolved()) return true; - } - } else { - if (limit >= 1 && this._inFlight >= limit) { - values[index] = value; - this._queue.push(index); - return false; - } - if (preservedValues !== null) preservedValues[index] = value; - - var promise = this._promise; - var callback = this._callback; - var receiver = promise._boundValue(); - promise._pushContext(); - var ret = tryCatch(callback).call(receiver, value, index, length); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - preservedValues !== null ? "Promise.filter" : "Promise.map", - promise - ); - if (ret === errorObj) { - this._reject(ret.e); - return true; - } - - var maybePromise = tryConvertToPromise(ret, this._promise); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - if (limit >= 1) this._inFlight++; - values[index] = maybePromise; - maybePromise._proxy(this, (index + 1) * -1); - return false; - } else if (((bitField & 33554432) !== 0)) { - ret = maybePromise._value(); - } else if (((bitField & 16777216) !== 0)) { - this._reject(maybePromise._reason()); - return true; - } else { - this._cancel(); - return true; - } - } - values[index] = ret; - } - var totalResolved = ++this._totalResolved; - if (totalResolved >= length) { - if (preservedValues !== null) { - this._filter(values, preservedValues); - } else { - this._resolve(values); - } - return true; - } - return false; -}; - -MappingPromiseArray.prototype._drainQueue = function () { - var queue = this._queue; - var limit = this._limit; - var values = this._values; - while (queue.length > 0 && this._inFlight < limit) { - if (this._isResolved()) return; - var index = queue.pop(); - this._promiseFulfilled(values[index], index); - } -}; - -MappingPromiseArray.prototype._filter = function (booleans, values) { - var len = values.length; - var ret = new Array(len); - var j = 0; - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - } - ret.length = j; - this._resolve(ret); -}; - -MappingPromiseArray.prototype.preservedValues = function () { - return this._preservedValues; -}; - -function map(promises, fn, options, _filter) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - - var limit = 0; - if (options !== undefined) { - if (typeof options === "object" && options !== null) { - if (typeof options.concurrency !== "number") { - return Promise.reject( - new TypeError("'concurrency' must be a number but it is " + - util.classString(options.concurrency))); - } - limit = options.concurrency; - } else { - return Promise.reject(new TypeError( - "options argument must be an object but it is " + - util.classString(options))); - } - } - limit = typeof limit === "number" && - isFinite(limit) && limit >= 1 ? limit : 0; - return new MappingPromiseArray(promises, fn, limit, _filter).promise(); -} - -Promise.prototype.map = function (fn, options) { - return map(this, fn, options, null); -}; - -Promise.map = function (promises, fn, options, _filter) { - return map(promises, fn, options, _filter); -}; - - -}; diff --git a/node_modules/bluebird/js/release/method.js b/node_modules/bluebird/js/release/method.js deleted file mode 100644 index ce9e4db7..00000000 --- a/node_modules/bluebird/js/release/method.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; diff --git a/node_modules/bluebird/js/release/nodeback.js b/node_modules/bluebird/js/release/nodeback.js deleted file mode 100644 index 71e69ebd..00000000 --- a/node_modules/bluebird/js/release/nodeback.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -var util = require("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = require("./errors"); -var OperationalError = errors.OperationalError; -var es5 = require("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; diff --git a/node_modules/bluebird/js/release/nodeify.js b/node_modules/bluebird/js/release/nodeify.js deleted file mode 100644 index ce2b1900..00000000 --- a/node_modules/bluebird/js/release/nodeify.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var util = require("./util"); -var async = Promise._async; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function spreadAdapter(val, nodeback) { - var promise = this; - if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback); - var ret = - tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val)); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -function successAdapter(val, nodeback) { - var promise = this; - var receiver = promise._boundValue(); - var ret = val === undefined - ? tryCatch(nodeback).call(receiver, null) - : tryCatch(nodeback).call(receiver, null, val); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} -function errorAdapter(reason, nodeback) { - var promise = this; - if (!reason) { - var newReason = new Error(reason + ""); - newReason.cause = reason; - reason = newReason; - } - var ret = tryCatch(nodeback).call(promise._boundValue(), reason); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, - options) { - if (typeof nodeback == "function") { - var adapter = successAdapter; - if (options !== undefined && Object(options).spread) { - adapter = spreadAdapter; - } - this._then( - adapter, - errorAdapter, - undefined, - this, - nodeback - ); - } - return this; -}; -}; diff --git a/node_modules/bluebird/js/release/promise.js b/node_modules/bluebird/js/release/promise.js deleted file mode 100644 index f4a641c3..00000000 --- a/node_modules/bluebird/js/release/promise.js +++ /dev/null @@ -1,775 +0,0 @@ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = require("./util"); - -var getDomain; -if (util.isNode) { - getDomain = function() { - var ret = process.domain; - if (ret === undefined) ret = null; - return ret; - }; -} else { - getDomain = function() { - return null; - }; -} -util.notEnumerableProp(Promise, "_getDomain", getDomain); - -var es5 = require("./es5"); -var Async = require("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = require("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = require("./thenables")(Promise, INTERNAL); -var PromiseArray = - require("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = require("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; -var debug = require("./debuggability")(Promise, Context); -var CapturedTrace = debug.CapturedTrace; -var PassThroughHandlerContext = - require("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); -var catchFilter = require("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = require("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (self == null || self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - -} - -function Promise(executor) { - if (executor !== INTERNAL) { - check(this, executor); - } - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - this._resolveFromExecutor(executor); - this._promiseCreated(); - this._fireEvent("promiseCreated", this); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("Catch statement predicate: " + - "expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.getNewLibraryCopy = module.exports; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - return async.setScheduler(fn); -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - this._fireEvent("promiseChained", this, promise); - } - - var domain = getDomain(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: domain === null ? handler - : (typeof handler === "function" && - util.domainBind(domain, handler)), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, receiver, domain); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; - this._fireEvent("promiseFulfilled", this); -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; - this._fireEvent("promiseRejected", this); -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; - this._fireEvent("promiseResolved", this); -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; - this._fireEvent("promiseCancelled", this); -}; - -Promise.prototype._setWillBeCancelled = function() { - this._bitField = this._bitField | 8388608; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - if (async.hasCustomScheduler()) return; - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - domain -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = - domain === null ? fulfill : util.domainBind(domain, fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = - domain === null ? reject : util.domainBind(domain, reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - domain === null ? fulfill : util.domainBind(domain, fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - domain === null ? reject : util.domainBind(domain, reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - var promise = maybePromise._target(); - - if (promise === this) { - this._reject(makeSelfResolutionError()); - return; - } - - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(promise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - if (executor === INTERNAL) return; - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj) { - promise._rejectCallback(x.e, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise, this); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (receiver instanceof PassThroughHandlerContext && - receiver.isFinallyHandler()) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - async.settlePromises(this); - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -require("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -require("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -require("./cancel")(Promise, PromiseArray, apiRejection, debug); -require("./direct_resolve")(Promise); -require("./synchronous_inspection")(Promise); -require("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain); -Promise.Promise = Promise; -Promise.version = "3.5.1"; -require('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -require('./call_get.js')(Promise); -require('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug); -require('./timers.js')(Promise, INTERNAL, debug); -require('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug); -require('./nodeify.js')(Promise); -require('./promisify.js')(Promise, INTERNAL); -require('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection); -require('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection); -require('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -require('./settle.js')(Promise, PromiseArray, debug); -require('./some.js')(Promise, PromiseArray, apiRejection); -require('./filter.js')(Promise, INTERNAL); -require('./each.js')(Promise, INTERNAL); -require('./any.js')(Promise); - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; diff --git a/node_modules/bluebird/js/release/promise_array.js b/node_modules/bluebird/js/release/promise_array.js deleted file mode 100644 index 0fb303eb..00000000 --- a/node_modules/bluebird/js/release/promise_array.js +++ /dev/null @@ -1,185 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = require("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - case -6: return new Map(); - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise._isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; diff --git a/node_modules/bluebird/js/release/promisify.js b/node_modules/bluebird/js/release/promisify.js deleted file mode 100644 index aa98e5bd..00000000 --- a/node_modules/bluebird/js/release/promisify.js +++ /dev/null @@ -1,314 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = require("./util"); -var nodebackForPromise = require("./nodeback"); -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var TypeError = require("./errors").TypeError; -var defaultSuffix = "Async"; -var defaultPromisified = {__isPromisified__: true}; -var noCopyProps = [ - "arity", "length", - "name", - "arguments", - "caller", - "callee", - "prototype", - "__isPromisified__" -]; -var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); - -var defaultFilter = function(name) { - return util.isIdentifier(name) && - name.charAt(0) !== "_" && - name !== "constructor"; -}; - -function propsFilter(key) { - return !noCopyPropsPattern.test(key); -} - -function isPromisified(fn) { - try { - return fn.__isPromisified__ === true; - } - catch (e) { - return false; - } -} - -function hasPromisified(obj, key, suffix) { - var val = util.getDataPropertyOrDefault(obj, key + suffix, - defaultPromisified); - return val ? isPromisified(val) : false; -} -function checkValid(ret, suffix, suffixRegexp) { - for (var i = 0; i < ret.length; i += 2) { - var key = ret[i]; - if (suffixRegexp.test(key)) { - var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""); - for (var j = 0; j < ret.length; j += 2) { - if (ret[j] === keyWithoutAsyncSuffix) { - throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/MqrFmX\u000a" - .replace("%s", suffix)); - } - } - } - } -} - -function promisifiableMethods(obj, suffix, suffixRegexp, filter) { - var keys = util.inheritedDataKeys(obj); - var ret = []; - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var value = obj[key]; - var passesDefaultFilter = filter === defaultFilter - ? true : defaultFilter(key, value, obj); - if (typeof value === "function" && - !isPromisified(value) && - !hasPromisified(obj, key, suffix) && - filter(key, value, obj, passesDefaultFilter)) { - ret.push(key, value); - } - } - checkValid(ret, suffix, suffixRegexp); - return ret; -} - -var escapeIdentRegex = function(str) { - return str.replace(/([$])/, "\\$"); -}; - -var makeNodePromisifiedEval; -if (!false) { -var switchCaseArgumentOrder = function(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 3); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 3; ++i) { - ret.push(i); - } - return ret; -}; - -var argumentSequence = function(argumentCount) { - return util.filledRange(argumentCount, "_arg", ""); -}; - -var parameterDeclaration = function(parameterCount) { - return util.filledRange( - Math.max(parameterCount, 3), "_arg", ""); -}; - -var parameterCount = function(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -}; - -makeNodePromisifiedEval = -function(callback, receiver, originalName, fn, _, multiArgs) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - var shouldProxyThis = typeof callback === "string" || receiver === THIS; - - function generateCallForArgumentCount(count) { - var args = argumentSequence(count).join(", "); - var comma = count > 0 ? ", " : ""; - var ret; - if (shouldProxyThis) { - ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; - } else { - ret = receiver === undefined - ? "ret = callback({{args}}, nodeback); break;\n" - : "ret = callback.call(receiver, {{args}}, nodeback); break;\n"; - } - return ret.replace("{{args}}", args).replace(", ", comma); - } - - function generateArgumentSwitchCase() { - var ret = ""; - for (var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - - ret += " \n\ - default: \n\ - var args = new Array(len + 1); \n\ - var i = 0; \n\ - for (var i = 0; i < len; ++i) { \n\ - args[i] = arguments[i]; \n\ - } \n\ - args[i] = nodeback; \n\ - [CodeForCall] \n\ - break; \n\ - ".replace("[CodeForCall]", (shouldProxyThis - ? "ret = callback.apply(this, args);\n" - : "ret = callback.apply(receiver, args);\n")); - return ret; - } - - var getFunctionCode = typeof callback === "string" - ? ("this != null ? this['"+callback+"'] : fn") - : "fn"; - var body = "'use strict'; \n\ - var ret = function (Parameters) { \n\ - 'use strict'; \n\ - var len = arguments.length; \n\ - var promise = new Promise(INTERNAL); \n\ - promise._captureStackTrace(); \n\ - var nodeback = nodebackForPromise(promise, " + multiArgs + "); \n\ - var ret; \n\ - var callback = tryCatch([GetFunctionCode]); \n\ - switch(len) { \n\ - [CodeForSwitchCase] \n\ - } \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\ - } \n\ - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \n\ - return promise; \n\ - }; \n\ - notEnumerableProp(ret, '__isPromisified__', true); \n\ - return ret; \n\ - ".replace("[CodeForSwitchCase]", generateArgumentSwitchCase()) - .replace("[GetFunctionCode]", getFunctionCode); - body = body.replace("Parameters", parameterDeclaration(newParameterCount)); - return new Function("Promise", - "fn", - "receiver", - "withAppended", - "maybeWrapAsError", - "nodebackForPromise", - "tryCatch", - "errorObj", - "notEnumerableProp", - "INTERNAL", - body)( - Promise, - fn, - receiver, - withAppended, - maybeWrapAsError, - nodebackForPromise, - util.tryCatch, - util.errorObj, - util.notEnumerableProp, - INTERNAL); -}; -} - -function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) { - var defaultThis = (function() {return this;})(); - var method = callback; - if (typeof method === "string") { - callback = fn; - } - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - var promise = new Promise(INTERNAL); - promise._captureStackTrace(); - var cb = typeof method === "string" && this !== defaultThis - ? this[method] : callback; - var fn = nodebackForPromise(promise, multiArgs); - try { - cb.apply(_receiver, withAppended(arguments, fn)); - } catch(e) { - promise._rejectCallback(maybeWrapAsError(e), true, true); - } - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); - return promise; - } - util.notEnumerableProp(promisified, "__isPromisified__", true); - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function promisifyAll(obj, suffix, filter, promisifier, multiArgs) { - var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"); - var methods = - promisifiableMethods(obj, suffix, suffixRegexp, filter); - - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var promisifiedKey = key + suffix; - if (promisifier === makeNodePromisified) { - obj[promisifiedKey] = - makeNodePromisified(key, THIS, key, fn, suffix, multiArgs); - } else { - var promisified = promisifier(fn, function() { - return makeNodePromisified(key, THIS, key, - fn, suffix, multiArgs); - }); - util.notEnumerableProp(promisified, "__isPromisified__", true); - obj[promisifiedKey] = promisified; - } - } - util.toFastProperties(obj); - return obj; -} - -function promisify(callback, receiver, multiArgs) { - return makeNodePromisified(callback, receiver, undefined, - callback, null, multiArgs); -} - -Promise.promisify = function (fn, options) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - if (isPromisified(fn)) { - return fn; - } - options = Object(options); - var receiver = options.context === undefined ? THIS : options.context; - var multiArgs = !!options.multiArgs; - var ret = promisify(fn, receiver, multiArgs); - util.copyDescriptors(fn, ret, propsFilter); - return ret; -}; - -Promise.promisifyAll = function (target, options) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - options = Object(options); - var multiArgs = !!options.multiArgs; - var suffix = options.suffix; - if (typeof suffix !== "string") suffix = defaultSuffix; - var filter = options.filter; - if (typeof filter !== "function") filter = defaultFilter; - var promisifier = options.promisifier; - if (typeof promisifier !== "function") promisifier = makeNodePromisified; - - if (!util.isIdentifier(suffix)) { - throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - - var keys = util.inheritedDataKeys(target); - for (var i = 0; i < keys.length; ++i) { - var value = target[keys[i]]; - if (keys[i] !== "constructor" && - util.isClass(value)) { - promisifyAll(value.prototype, suffix, filter, promisifier, - multiArgs); - promisifyAll(value, suffix, filter, promisifier, multiArgs); - } - } - - return promisifyAll(target, suffix, filter, promisifier, multiArgs); -}; -}; - diff --git a/node_modules/bluebird/js/release/props.js b/node_modules/bluebird/js/release/props.js deleted file mode 100644 index 6a34aaf5..00000000 --- a/node_modules/bluebird/js/release/props.js +++ /dev/null @@ -1,118 +0,0 @@ -"use strict"; -module.exports = function( - Promise, PromiseArray, tryConvertToPromise, apiRejection) { -var util = require("./util"); -var isObject = util.isObject; -var es5 = require("./es5"); -var Es6Map; -if (typeof Map === "function") Es6Map = Map; - -var mapToEntries = (function() { - var index = 0; - var size = 0; - - function extractEntry(value, key) { - this[index] = value; - this[index + size] = key; - index++; - } - - return function mapToEntries(map) { - size = map.size; - index = 0; - var ret = new Array(map.size * 2); - map.forEach(extractEntry, ret); - return ret; - }; -})(); - -var entriesToMap = function(entries) { - var ret = new Es6Map(); - var length = entries.length / 2 | 0; - for (var i = 0; i < length; ++i) { - var key = entries[length + i]; - var value = entries[i]; - ret.set(key, value); - } - return ret; -}; - -function PropertiesPromiseArray(obj) { - var isMap = false; - var entries; - if (Es6Map !== undefined && obj instanceof Es6Map) { - entries = mapToEntries(obj); - isMap = true; - } else { - var keys = es5.keys(obj); - var len = keys.length; - entries = new Array(len * 2); - for (var i = 0; i < len; ++i) { - var key = keys[i]; - entries[i] = obj[key]; - entries[i + len] = key; - } - } - this.constructor$(entries); - this._isMap = isMap; - this._init$(undefined, isMap ? -6 : -3); -} -util.inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = function () {}; - -PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val; - if (this._isMap) { - val = entriesToMap(this._values); - } else { - val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - } - this._resolve(val); - return true; - } - return false; -}; - -PropertiesPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -PropertiesPromiseArray.prototype.getActualLength = function (len) { - return len >> 1; -}; - -function props(promises) { - var ret; - var castValue = tryConvertToPromise(promises); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } else if (castValue instanceof Promise) { - ret = castValue._then( - Promise.props, undefined, undefined, undefined, undefined); - } else { - ret = new PropertiesPromiseArray(castValue).promise(); - } - - if (castValue instanceof Promise) { - ret._propagateFrom(castValue, 2); - } - return ret; -} - -Promise.prototype.props = function () { - return props(this); -}; - -Promise.props = function (promises) { - return props(promises); -}; -}; diff --git a/node_modules/bluebird/js/release/queue.js b/node_modules/bluebird/js/release/queue.js deleted file mode 100644 index ffd36fda..00000000 --- a/node_modules/bluebird/js/release/queue.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; diff --git a/node_modules/bluebird/js/release/race.js b/node_modules/bluebird/js/release/race.js deleted file mode 100644 index b862f46d..00000000 --- a/node_modules/bluebird/js/release/race.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -module.exports = function( - Promise, INTERNAL, tryConvertToPromise, apiRejection) { -var util = require("./util"); - -var raceLater = function (promise) { - return promise.then(function(array) { - return race(array, promise); - }); -}; - -function race(promises, parent) { - var maybePromise = tryConvertToPromise(promises); - - if (maybePromise instanceof Promise) { - return raceLater(maybePromise); - } else { - promises = util.asArray(promises); - if (promises === null) - return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); - } - - var ret = new Promise(INTERNAL); - if (parent !== undefined) { - ret._propagateFrom(parent, 3); - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === undefined && !(i in promises)) { - continue; - } - - Promise.cast(val)._then(fulfill, reject, undefined, ret, null); - } - return ret; -} - -Promise.race = function (promises) { - return race(promises, undefined); -}; - -Promise.prototype.race = function () { - return race(this, undefined); -}; - -}; diff --git a/node_modules/bluebird/js/release/reduce.js b/node_modules/bluebird/js/release/reduce.js deleted file mode 100644 index 26e2b1a9..00000000 --- a/node_modules/bluebird/js/release/reduce.js +++ /dev/null @@ -1,172 +0,0 @@ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = require("./util"); -var tryCatch = util.tryCatch; - -function ReductionPromiseArray(promises, fn, initialValue, _each) { - this.constructor$(promises); - var domain = getDomain(); - this._fn = domain === null ? fn : util.domainBind(domain, fn); - if (initialValue !== undefined) { - initialValue = Promise.resolve(initialValue); - initialValue._attachCancellationCallback(this); - } - this._initialValue = initialValue; - this._currentCancellable = null; - if(_each === INTERNAL) { - this._eachValues = Array(this._length); - } else if (_each === 0) { - this._eachValues = null; - } else { - this._eachValues = undefined; - } - this._promise._captureStackTrace(); - this._init$(undefined, -5); -} -util.inherits(ReductionPromiseArray, PromiseArray); - -ReductionPromiseArray.prototype._gotAccum = function(accum) { - if (this._eachValues !== undefined && - this._eachValues !== null && - accum !== INTERNAL) { - this._eachValues.push(accum); - } -}; - -ReductionPromiseArray.prototype._eachComplete = function(value) { - if (this._eachValues !== null) { - this._eachValues.push(value); - } - return this._eachValues; -}; - -ReductionPromiseArray.prototype._init = function() {}; - -ReductionPromiseArray.prototype._resolveEmptyArray = function() { - this._resolve(this._eachValues !== undefined ? this._eachValues - : this._initialValue); -}; - -ReductionPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -ReductionPromiseArray.prototype._resolve = function(value) { - this._promise._resolveCallback(value); - this._values = null; -}; - -ReductionPromiseArray.prototype._resultCancelled = function(sender) { - if (sender === this._initialValue) return this._cancel(); - if (this._isResolved()) return; - this._resultCancelled$(); - if (this._currentCancellable instanceof Promise) { - this._currentCancellable.cancel(); - } - if (this._initialValue instanceof Promise) { - this._initialValue.cancel(); - } -}; - -ReductionPromiseArray.prototype._iterate = function (values) { - this._values = values; - var value; - var i; - var length = values.length; - if (this._initialValue !== undefined) { - value = this._initialValue; - i = 0; - } else { - value = Promise.resolve(values[0]); - i = 1; - } - - this._currentCancellable = value; - - if (!value.isRejected()) { - for (; i < length; ++i) { - var ctx = { - accum: null, - value: values[i], - index: i, - length: length, - array: this - }; - value = value._then(gotAccum, undefined, undefined, ctx, undefined); - } - } - - if (this._eachValues !== undefined) { - value = value - ._then(this._eachComplete, undefined, undefined, this, undefined); - } - value._then(completed, completed, undefined, value, this); -}; - -Promise.prototype.reduce = function (fn, initialValue) { - return reduce(this, fn, initialValue, null); -}; - -Promise.reduce = function (promises, fn, initialValue, _each) { - return reduce(promises, fn, initialValue, _each); -}; - -function completed(valueOrReason, array) { - if (this.isFulfilled()) { - array._resolve(valueOrReason); - } else { - array._reject(valueOrReason); - } -} - -function reduce(promises, fn, initialValue, _each) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var array = new ReductionPromiseArray(promises, fn, initialValue, _each); - return array.promise(); -} - -function gotAccum(accum) { - this.accum = accum; - this.array._gotAccum(accum); - var value = tryConvertToPromise(this.value, this.array._promise); - if (value instanceof Promise) { - this.array._currentCancellable = value; - return value._then(gotValue, undefined, undefined, this, undefined); - } else { - return gotValue.call(this, value); - } -} - -function gotValue(value) { - var array = this.array; - var promise = array._promise; - var fn = tryCatch(array._fn); - promise._pushContext(); - var ret; - if (array._eachValues !== undefined) { - ret = fn.call(promise._boundValue(), value, this.index, this.length); - } else { - ret = fn.call(promise._boundValue(), - this.accum, value, this.index, this.length); - } - if (ret instanceof Promise) { - array._currentCancellable = ret; - } - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - array._eachValues !== undefined ? "Promise.each" : "Promise.reduce", - promise - ); - return ret; -} -}; diff --git a/node_modules/bluebird/js/release/schedule.js b/node_modules/bluebird/js/release/schedule.js deleted file mode 100644 index f70df9fc..00000000 --- a/node_modules/bluebird/js/release/schedule.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -var util = require("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var NativePromise = util.getNativePromise(); -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if (typeof NativePromise === "function" && - typeof NativePromise.resolve === "function") { - var nativePromise = NativePromise.resolve(); - schedule = function(fn) { - nativePromise.then(fn); - }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - (window.navigator.standalone || window.cordova))) { - schedule = (function() { - var div = document.createElement("div"); - var opts = {attributes: true}; - var toggleScheduled = false; - var div2 = document.createElement("div"); - var o2 = new MutationObserver(function() { - div.classList.toggle("foo"); - toggleScheduled = false; - }); - o2.observe(div2, opts); - - var scheduleToggle = function() { - if (toggleScheduled) return; - toggleScheduled = true; - div2.classList.toggle("foo"); - }; - - return function schedule(fn) { - var o = new MutationObserver(function() { - o.disconnect(); - fn(); - }); - o.observe(div, opts); - scheduleToggle(); - }; - })(); -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; diff --git a/node_modules/bluebird/js/release/settle.js b/node_modules/bluebird/js/release/settle.js deleted file mode 100644 index fade3a17..00000000 --- a/node_modules/bluebird/js/release/settle.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -module.exports = - function(Promise, PromiseArray, debug) { -var PromiseInspection = Promise.PromiseInspection; -var util = require("./util"); - -function SettledPromiseArray(values) { - this.constructor$(values); -} -util.inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { - var ret = new PromiseInspection(); - ret._bitField = 33554432; - ret._settledValueField = value; - return this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = function (reason, index) { - var ret = new PromiseInspection(); - ret._bitField = 16777216; - ret._settledValueField = reason; - return this._promiseResolved(index, ret); -}; - -Promise.settle = function (promises) { - debug.deprecated(".settle()", ".reflect()"); - return new SettledPromiseArray(promises).promise(); -}; - -Promise.prototype.settle = function () { - return Promise.settle(this); -}; -}; diff --git a/node_modules/bluebird/js/release/some.js b/node_modules/bluebird/js/release/some.js deleted file mode 100644 index 400d8520..00000000 --- a/node_modules/bluebird/js/release/some.js +++ /dev/null @@ -1,148 +0,0 @@ -"use strict"; -module.exports = -function(Promise, PromiseArray, apiRejection) { -var util = require("./util"); -var RangeError = require("./errors").RangeError; -var AggregateError = require("./errors").AggregateError; -var isArray = util.isArray; -var CANCELLATION = {}; - - -function SomePromiseArray(values) { - this.constructor$(values); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -util.inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function () { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(undefined, -5); - var isArrayResolved = isArray(this._values); - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - this._reject(this._getRangeError(this.length())); - } -}; - -SomePromiseArray.prototype.init = function () { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function () { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function () { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = function (count) { - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = function (value) { - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } else { - this._resolve(this._values); - } - return true; - } - return false; - -}; -SomePromiseArray.prototype._promiseRejected = function (reason) { - this._addRejected(reason); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._promiseCancelled = function () { - if (this._values instanceof Promise || this._values == null) { - return this._cancel(); - } - this._addRejected(CANCELLATION); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._checkOutcome = function() { - if (this.howMany() > this._canPossiblyFulfill()) { - var e = new AggregateError(); - for (var i = this.length(); i < this._values.length; ++i) { - if (this._values[i] !== CANCELLATION) { - e.push(this._values[i]); - } - } - if (e.length > 0) { - this._reject(e); - } else { - this._cancel(); - } - return true; - } - return false; -}; - -SomePromiseArray.prototype._fulfilled = function () { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function () { - return this._values.length - this.length(); -}; - -SomePromiseArray.prototype._addRejected = function (reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = function (value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = function () { - return this.length() - this._rejected(); -}; - -SomePromiseArray.prototype._getRangeError = function (count) { - var message = "Input array must contain at least " + - this._howMany + " items but contains only " + count + " items"; - return new RangeError(message); -}; - -SomePromiseArray.prototype._resolveEmptyArray = function () { - this._reject(this._getRangeError(0)); -}; - -function some(promises, howMany) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(howMany); - ret.init(); - return promise; -} - -Promise.some = function (promises, howMany) { - return some(promises, howMany); -}; - -Promise.prototype.some = function (howMany) { - return some(this, howMany); -}; - -Promise._SomePromiseArray = SomePromiseArray; -}; diff --git a/node_modules/bluebird/js/release/synchronous_inspection.js b/node_modules/bluebird/js/release/synchronous_inspection.js deleted file mode 100644 index 9c49d2e6..00000000 --- a/node_modules/bluebird/js/release/synchronous_inspection.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = function() { - return (this._bitField & 8454144) !== 0; -}; - -Promise.prototype.__isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype._isCancelled = function() { - return this._target().__isCancelled(); -}; - -Promise.prototype.isCancelled = function() { - return (this._target()._bitField & 8454144) !== 0; -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; diff --git a/node_modules/bluebird/js/release/thenables.js b/node_modules/bluebird/js/release/thenables.js deleted file mode 100644 index d6ab9aa2..00000000 --- a/node_modules/bluebird/js/release/thenables.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = require("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - try { - return hasProp.call(obj, "_promise0"); - } catch (e) { - return false; - } -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; diff --git a/node_modules/bluebird/js/release/timers.js b/node_modules/bluebird/js/release/timers.js deleted file mode 100644 index cb8f1f42..00000000 --- a/node_modules/bluebird/js/release/timers.js +++ /dev/null @@ -1,93 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, debug) { -var util = require("./util"); -var TimeoutError = Promise.TimeoutError; - -function HandleWrapper(handle) { - this.handle = handle; -} - -HandleWrapper.prototype._resultCancelled = function() { - clearTimeout(this.handle); -}; - -var afterValue = function(value) { return delay(+this).thenReturn(value); }; -var delay = Promise.delay = function (ms, value) { - var ret; - var handle; - if (value !== undefined) { - ret = Promise.resolve(value) - ._then(afterValue, null, null, ms, undefined); - if (debug.cancellation() && value instanceof Promise) { - ret._setOnCancel(value); - } - } else { - ret = new Promise(INTERNAL); - handle = setTimeout(function() { ret._fulfill(); }, +ms); - if (debug.cancellation()) { - ret._setOnCancel(new HandleWrapper(handle)); - } - ret._captureStackTrace(); - } - ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.prototype.delay = function (ms) { - return delay(ms, this); -}; - -var afterTimeout = function (promise, message, parent) { - var err; - if (typeof message !== "string") { - if (message instanceof Error) { - err = message; - } else { - err = new TimeoutError("operation timed out"); - } - } else { - err = new TimeoutError(message); - } - util.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._reject(err); - - if (parent != null) { - parent.cancel(); - } -}; - -function successClear(value) { - clearTimeout(this.handle); - return value; -} - -function failureClear(reason) { - clearTimeout(this.handle); - throw reason; -} - -Promise.prototype.timeout = function (ms, message) { - ms = +ms; - var ret, parent; - - var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() { - if (ret.isPending()) { - afterTimeout(ret, message, parent); - } - }, ms)); - - if (debug.cancellation()) { - parent = this.then(); - ret = parent._then(successClear, failureClear, - undefined, handleWrapper, undefined); - ret._setOnCancel(handleWrapper); - } else { - ret = this._then(successClear, failureClear, - undefined, handleWrapper, undefined); - } - - return ret; -}; - -}; diff --git a/node_modules/bluebird/js/release/using.js b/node_modules/bluebird/js/release/using.js deleted file mode 100644 index 65de531c..00000000 --- a/node_modules/bluebird/js/release/using.js +++ /dev/null @@ -1,226 +0,0 @@ -"use strict"; -module.exports = function (Promise, apiRejection, tryConvertToPromise, - createContext, INTERNAL, debug) { - var util = require("./util"); - var TypeError = require("./errors").TypeError; - var inherits = require("./util").inherits; - var errorObj = util.errorObj; - var tryCatch = util.tryCatch; - var NULL = {}; - - function thrower(e) { - setTimeout(function(){throw e;}, 0); - } - - function castPreservingDisposable(thenable) { - var maybePromise = tryConvertToPromise(thenable); - if (maybePromise !== thenable && - typeof thenable._isDisposable === "function" && - typeof thenable._getDisposer === "function" && - thenable._isDisposable()) { - maybePromise._setDisposable(thenable._getDisposer()); - } - return maybePromise; - } - function dispose(resources, inspection) { - var i = 0; - var len = resources.length; - var ret = new Promise(INTERNAL); - function iterator() { - if (i >= len) return ret._fulfill(); - var maybePromise = castPreservingDisposable(resources[i++]); - if (maybePromise instanceof Promise && - maybePromise._isDisposable()) { - try { - maybePromise = tryConvertToPromise( - maybePromise._getDisposer().tryDispose(inspection), - resources.promise); - } catch (e) { - return thrower(e); - } - if (maybePromise instanceof Promise) { - return maybePromise._then(iterator, thrower, - null, null, null); - } - } - iterator(); - } - iterator(); - return ret; - } - - function Disposer(data, promise, context) { - this._data = data; - this._promise = promise; - this._context = context; - } - - Disposer.prototype.data = function () { - return this._data; - }; - - Disposer.prototype.promise = function () { - return this._promise; - }; - - Disposer.prototype.resource = function () { - if (this.promise().isFulfilled()) { - return this.promise().value(); - } - return NULL; - }; - - Disposer.prototype.tryDispose = function(inspection) { - var resource = this.resource(); - var context = this._context; - if (context !== undefined) context._pushContext(); - var ret = resource !== NULL - ? this.doDispose(resource, inspection) : null; - if (context !== undefined) context._popContext(); - this._promise._unsetDisposable(); - this._data = null; - return ret; - }; - - Disposer.isDisposer = function (d) { - return (d != null && - typeof d.resource === "function" && - typeof d.tryDispose === "function"); - }; - - function FunctionDisposer(fn, promise, context) { - this.constructor$(fn, promise, context); - } - inherits(FunctionDisposer, Disposer); - - FunctionDisposer.prototype.doDispose = function (resource, inspection) { - var fn = this.data(); - return fn.call(resource, resource, inspection); - }; - - function maybeUnwrapDisposer(value) { - if (Disposer.isDisposer(value)) { - this.resources[this.index]._setDisposable(value); - return value.promise(); - } - return value; - } - - function ResourceList(length) { - this.length = length; - this.promise = null; - this[length-1] = null; - } - - ResourceList.prototype._resultCancelled = function() { - var len = this.length; - for (var i = 0; i < len; ++i) { - var item = this[i]; - if (item instanceof Promise) { - item.cancel(); - } - } - }; - - Promise.using = function () { - var len = arguments.length; - if (len < 2) return apiRejection( - "you must pass at least 2 arguments to Promise.using"); - var fn = arguments[len - 1]; - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var input; - var spreadArgs = true; - if (len === 2 && Array.isArray(arguments[0])) { - input = arguments[0]; - len = input.length; - spreadArgs = false; - } else { - input = arguments; - len--; - } - var resources = new ResourceList(len); - for (var i = 0; i < len; ++i) { - var resource = input[i]; - if (Disposer.isDisposer(resource)) { - var disposer = resource; - resource = resource.promise(); - resource._setDisposable(disposer); - } else { - var maybePromise = tryConvertToPromise(resource); - if (maybePromise instanceof Promise) { - resource = - maybePromise._then(maybeUnwrapDisposer, null, null, { - resources: resources, - index: i - }, undefined); - } - } - resources[i] = resource; - } - - var reflectedResources = new Array(resources.length); - for (var i = 0; i < reflectedResources.length; ++i) { - reflectedResources[i] = Promise.resolve(resources[i]).reflect(); - } - - var resultPromise = Promise.all(reflectedResources) - .then(function(inspections) { - for (var i = 0; i < inspections.length; ++i) { - var inspection = inspections[i]; - if (inspection.isRejected()) { - errorObj.e = inspection.error(); - return errorObj; - } else if (!inspection.isFulfilled()) { - resultPromise.cancel(); - return; - } - inspections[i] = inspection.value(); - } - promise._pushContext(); - - fn = tryCatch(fn); - var ret = spreadArgs - ? fn.apply(undefined, inspections) : fn(inspections); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, promiseCreated, "Promise.using", promise); - return ret; - }); - - var promise = resultPromise.lastly(function() { - var inspection = new Promise.PromiseInspection(resultPromise); - return dispose(resources, inspection); - }); - resources.promise = promise; - promise._setOnCancel(resources); - return promise; - }; - - Promise.prototype._setDisposable = function (disposer) { - this._bitField = this._bitField | 131072; - this._disposer = disposer; - }; - - Promise.prototype._isDisposable = function () { - return (this._bitField & 131072) > 0; - }; - - Promise.prototype._getDisposer = function () { - return this._disposer; - }; - - Promise.prototype._unsetDisposable = function () { - this._bitField = this._bitField & (~131072); - this._disposer = undefined; - }; - - Promise.prototype.disposer = function (fn) { - if (typeof fn === "function") { - return new FunctionDisposer(fn, this, createContext()); - } - throw new TypeError(); - }; - -}; diff --git a/node_modules/bluebird/js/release/util.js b/node_modules/bluebird/js/release/util.js deleted file mode 100644 index 7ac0e2fa..00000000 --- a/node_modules/bluebird/js/release/util.js +++ /dev/null @@ -1,380 +0,0 @@ -"use strict"; -var es5 = require("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var l = 8; - while (l--) new FakeConstructor(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if ({}.toString.call(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -function domainBind(self, cb) { - return self.bind(cb); -} - -var ret = { - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - hasDevTools: typeof chrome !== "undefined" && chrome && - typeof chrome.loadTimes === "function", - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - domainBind: domainBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version = process.versions.node.split(".").map(Number); - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; diff --git a/node_modules/bluebird/package.json b/node_modules/bluebird/package.json deleted file mode 100644 index 91966def..00000000 --- a/node_modules/bluebird/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_from": "bluebird@^3.0.6", - "_id": "bluebird@3.5.1", - "_inBundle": false, - "_integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "_location": "/bluebird", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "bluebird@^3.0.6", - "name": "bluebird", - "escapedName": "bluebird", - "rawSpec": "^3.0.6", - "saveSpec": null, - "fetchSpec": "^3.0.6" - }, - "_requiredBy": [ - "/hexo-server" - ], - "_resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "_shasum": "d9551f9de98f1fcda1e683d17ee91a0602ee2eb9", - "_spec": "bluebird@^3.0.6", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\hexo-server", - "author": { - "name": "Petka Antonov", - "email": "petka_antonov@hotmail.com", - "url": "http://github.com/petkaantonov/" - }, - "browser": "./js/browser/bluebird.js", - "bugs": { - "url": "http://github.com/petkaantonov/bluebird/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Full featured Promises/A+ implementation with exceptionally good performance", - "devDependencies": { - "acorn": "~0.6.0", - "baconjs": "^0.7.43", - "bluebird": "^2.9.2", - "body-parser": "^1.10.2", - "browserify": "^8.1.1", - "cli-table": "~0.3.1", - "co": "^4.2.0", - "cross-spawn": "^0.2.3", - "glob": "^4.3.2", - "grunt-saucelabs": "~8.4.1", - "highland": "^2.3.0", - "istanbul": "^0.3.5", - "jshint": "^2.6.0", - "jshint-stylish": "~0.2.0", - "kefir": "^2.4.1", - "mkdirp": "~0.5.0", - "mocha": "~2.1", - "open": "~0.0.5", - "optimist": "~0.6.1", - "rimraf": "~2.2.6", - "rx": "^2.3.25", - "serve-static": "^1.7.1", - "sinon": "~1.7.3", - "uglify-js": "~2.4.16" - }, - "files": [ - "js/browser", - "js/release", - "LICENSE" - ], - "homepage": "https://github.com/petkaantonov/bluebird", - "keywords": [ - "promise", - "performance", - "promises", - "promises-a", - "promises-aplus", - "async", - "await", - "deferred", - "deferreds", - "future", - "flow control", - "dsl", - "fluent interface" - ], - "license": "MIT", - "main": "./js/release/bluebird.js", - "name": "bluebird", - "repository": { - "type": "git", - "url": "git://github.com/petkaantonov/bluebird.git" - }, - "scripts": { - "generate-browser-core": "node tools/build.js --features=core --no-debug --release --zalgo --browser --minify && mv js/browser/bluebird.js js/browser/bluebird.core.js && mv js/browser/bluebird.min.js js/browser/bluebird.core.min.js", - "generate-browser-full": "node tools/build.js --no-clean --no-debug --release --browser --minify", - "istanbul": "istanbul", - "lint": "node scripts/jshint.js", - "prepublish": "npm run generate-browser-core && npm run generate-browser-full", - "test": "node tools/test.js" - }, - "version": "3.5.1", - "webpack": "./js/release/bluebird.js" -} diff --git a/node_modules/bytes/History.md b/node_modules/bytes/History.md deleted file mode 100644 index 13d463ab..00000000 --- a/node_modules/bytes/History.md +++ /dev/null @@ -1,82 +0,0 @@ -3.0.0 / 2017-08-31 -================== - - * Change "kB" to "KB" in format output - * Remove support for Node.js 0.6 - * Remove support for ComponentJS - -2.5.0 / 2017-03-24 -================== - - * Add option "unit" - -2.4.0 / 2016-06-01 -================== - - * Add option "unitSeparator" - -2.3.0 / 2016-02-15 -================== - - * Drop partial bytes on all parsed units - * Fix non-finite numbers to `.format` to return `null` - * Fix parsing byte string that looks like hex - * perf: hoist regular expressions - -2.2.0 / 2015-11-13 -================== - - * add option "decimalPlaces" - * add option "fixedDecimals" - -2.1.0 / 2015-05-21 -================== - - * add `.format` export - * add `.parse` export - -2.0.2 / 2015-05-20 -================== - - * remove map recreation - * remove unnecessary object construction - -2.0.1 / 2015-05-07 -================== - - * fix browserify require - * remove node.extend dependency - -2.0.0 / 2015-04-12 -================== - - * add option "case" - * add option "thousandsSeparator" - * return "null" on invalid parse input - * support proper round-trip: bytes(bytes(num)) === num - * units no longer case sensitive when parsing - -1.0.0 / 2014-05-05 -================== - - * add negative support. fixes #6 - -0.3.0 / 2014-03-19 -================== - - * added terabyte support - -0.2.1 / 2013-04-01 -================== - - * add .component - -0.2.0 / 2012-10-28 -================== - - * bytes(200).should.eql('200b') - -0.1.0 / 2012-07-04 -================== - - * add bytes to string conversion [yields] diff --git a/node_modules/bytes/LICENSE b/node_modules/bytes/LICENSE deleted file mode 100644 index 63e95a96..00000000 --- a/node_modules/bytes/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 TJ Holowaychuk -Copyright (c) 2015 Jed Watson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/bytes/Readme.md b/node_modules/bytes/Readme.md deleted file mode 100644 index 9b53745d..00000000 --- a/node_modules/bytes/Readme.md +++ /dev/null @@ -1,125 +0,0 @@ -# Bytes utility - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. - -## Installation - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```bash -$ npm install bytes -``` - -## Usage - -```js -var bytes = require('bytes'); -``` - -#### bytes.format(number value, [options]): string|null - -Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is - rounded. - -**Arguments** - -| Name | Type | Description | -|---------|----------|--------------------| -| value | `number` | Value in bytes | -| options | `Object` | Conversion options | - -**Options** - -| Property | Type | Description | -|-------------------|--------|-----------------------------------------------------------------------------------------| -| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | -| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | -| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `.`... Default value to `''`. | -| unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | -| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | - -**Returns** - -| Name | Type | Description | -|---------|------------------|-------------------------------------------------| -| results | `string`|`null` | Return null upon error. String value otherwise. | - -**Example** - -```js -bytes(1024); -// output: '1KB' - -bytes(1000); -// output: '1000B' - -bytes(1000, {thousandsSeparator: ' '}); -// output: '1 000B' - -bytes(1024 * 1.7, {decimalPlaces: 0}); -// output: '2KB' - -bytes(1024, {unitSeparator: ' '}); -// output: '1 KB' - -``` - -#### bytes.parse(string|number value): number|null - -Parse the string value into an integer in bytes. If no unit is given, or `value` -is a number, it is assumed the value is in bytes. - -Supported units and abbreviations are as follows and are case-insensitive: - - * `b` for bytes - * `kb` for kilobytes - * `mb` for megabytes - * `gb` for gigabytes - * `tb` for terabytes - -The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. - -**Arguments** - -| Name | Type | Description | -|---------------|--------|--------------------| -| value | `string`|`number` | String to parse, or number in bytes. | - -**Returns** - -| Name | Type | Description | -|---------|-------------|-------------------------| -| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | - -**Example** - -```js -bytes('1KB'); -// output: 1024 - -bytes('1024'); -// output: 1024 - -bytes(1024); -// output: 1024 -``` - -## License - -[MIT](LICENSE) - -[downloads-image]: https://img.shields.io/npm/dm/bytes.svg -[downloads-url]: https://npmjs.org/package/bytes -[npm-image]: https://img.shields.io/npm/v/bytes.svg -[npm-url]: https://npmjs.org/package/bytes -[travis-image]: https://img.shields.io/travis/visionmedia/bytes.js/master.svg -[travis-url]: https://travis-ci.org/visionmedia/bytes.js -[coveralls-image]: https://img.shields.io/coveralls/visionmedia/bytes.js/master.svg -[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master diff --git a/node_modules/bytes/index.js b/node_modules/bytes/index.js deleted file mode 100644 index 1e39afd1..00000000 --- a/node_modules/bytes/index.js +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * bytes - * Copyright(c) 2012-2014 TJ Holowaychuk - * Copyright(c) 2015 Jed Watson - * MIT Licensed - */ - -'use strict'; - -/** - * Module exports. - * @public - */ - -module.exports = bytes; -module.exports.format = format; -module.exports.parse = parse; - -/** - * Module variables. - * @private - */ - -var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; - -var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; - -var map = { - b: 1, - kb: 1 << 10, - mb: 1 << 20, - gb: 1 << 30, - tb: ((1 << 30) * 1024) -}; - -var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i; - -/** - * Convert the given value in bytes into a string or parse to string to an integer in bytes. - * - * @param {string|number} value - * @param {{ - * case: [string], - * decimalPlaces: [number] - * fixedDecimals: [boolean] - * thousandsSeparator: [string] - * unitSeparator: [string] - * }} [options] bytes options. - * - * @returns {string|number|null} - */ - -function bytes(value, options) { - if (typeof value === 'string') { - return parse(value); - } - - if (typeof value === 'number') { - return format(value, options); - } - - return null; -} - -/** - * Format the given value in bytes into a string. - * - * If the value is negative, it is kept as such. If it is a float, - * it is rounded. - * - * @param {number} value - * @param {object} [options] - * @param {number} [options.decimalPlaces=2] - * @param {number} [options.fixedDecimals=false] - * @param {string} [options.thousandsSeparator=] - * @param {string} [options.unit=] - * @param {string} [options.unitSeparator=] - * - * @returns {string|null} - * @public - */ - -function format(value, options) { - if (!Number.isFinite(value)) { - return null; - } - - var mag = Math.abs(value); - var thousandsSeparator = (options && options.thousandsSeparator) || ''; - var unitSeparator = (options && options.unitSeparator) || ''; - var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; - var fixedDecimals = Boolean(options && options.fixedDecimals); - var unit = (options && options.unit) || ''; - - if (!unit || !map[unit.toLowerCase()]) { - if (mag >= map.tb) { - unit = 'TB'; - } else if (mag >= map.gb) { - unit = 'GB'; - } else if (mag >= map.mb) { - unit = 'MB'; - } else if (mag >= map.kb) { - unit = 'KB'; - } else { - unit = 'B'; - } - } - - var val = value / map[unit.toLowerCase()]; - var str = val.toFixed(decimalPlaces); - - if (!fixedDecimals) { - str = str.replace(formatDecimalsRegExp, '$1'); - } - - if (thousandsSeparator) { - str = str.replace(formatThousandsRegExp, thousandsSeparator); - } - - return str + unitSeparator + unit; -} - -/** - * Parse the string value into an integer in bytes. - * - * If no unit is given, it is assumed the value is in bytes. - * - * @param {number|string} val - * - * @returns {number|null} - * @public - */ - -function parse(val) { - if (typeof val === 'number' && !isNaN(val)) { - return val; - } - - if (typeof val !== 'string') { - return null; - } - - // Test if the string passed is valid - var results = parseRegExp.exec(val); - var floatValue; - var unit = 'b'; - - if (!results) { - // Nothing could be extracted from the given string - floatValue = parseInt(val, 10); - unit = 'b' - } else { - // Retrieve the value and the unit - floatValue = parseFloat(results[1]); - unit = results[4].toLowerCase(); - } - - return Math.floor(map[unit] * floatValue); -} diff --git a/node_modules/bytes/package.json b/node_modules/bytes/package.json deleted file mode 100644 index b2dc1633..00000000 --- a/node_modules/bytes/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_from": "bytes@3.0.0", - "_id": "bytes@3.0.0", - "_inBundle": false, - "_integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "_location": "/bytes", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "bytes@3.0.0", - "name": "bytes", - "escapedName": "bytes", - "rawSpec": "3.0.0", - "saveSpec": null, - "fetchSpec": "3.0.0" - }, - "_requiredBy": [ - "/compression" - ], - "_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "_shasum": "d32815404d689699f85a4ea4fa8755dd13a96048", - "_spec": "bytes@3.0.0", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\compression", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "bugs": { - "url": "https://github.com/visionmedia/bytes.js/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Jed Watson", - "email": "jed.watson@me.com" - }, - { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" - } - ], - "deprecated": false, - "description": "Utility to parse a string bytes to bytes and vice-versa", - "devDependencies": { - "mocha": "2.5.3", - "nyc": "10.3.2" - }, - "engines": { - "node": ">= 0.8" - }, - "files": [ - "History.md", - "LICENSE", - "Readme.md", - "index.js" - ], - "homepage": "https://github.com/visionmedia/bytes.js#readme", - "keywords": [ - "byte", - "bytes", - "utility", - "parse", - "parser", - "convert", - "converter" - ], - "license": "MIT", - "name": "bytes", - "repository": { - "type": "git", - "url": "git+https://github.com/visionmedia/bytes.js.git" - }, - "scripts": { - "test": "mocha --check-leaks --reporter spec", - "test-ci": "nyc --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - }, - "version": "3.0.0" -} diff --git a/node_modules/chalk/index.js b/node_modules/chalk/index.js deleted file mode 100644 index 2d85a917..00000000 --- a/node_modules/chalk/index.js +++ /dev/null @@ -1,116 +0,0 @@ -'use strict'; -var escapeStringRegexp = require('escape-string-regexp'); -var ansiStyles = require('ansi-styles'); -var stripAnsi = require('strip-ansi'); -var hasAnsi = require('has-ansi'); -var supportsColor = require('supports-color'); -var defineProps = Object.defineProperties; -var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); - -function Chalk(options) { - // detect mode if not set manually - this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; -} - -// use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001b[94m'; -} - -var styles = (function () { - var ret = {}; - - Object.keys(ansiStyles).forEach(function (key) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - ret[key] = { - get: function () { - return build.call(this, this._styles.concat(key)); - } - }; - }); - - return ret; -})(); - -var proto = defineProps(function chalk() {}, styles); - -function build(_styles) { - var builder = function () { - return applyStyle.apply(builder, arguments); - }; - - builder._styles = _styles; - builder.enabled = this.enabled; - // __proto__ is used because we must return a function, but there is - // no way to create a function with a different prototype. - /* eslint-disable no-proto */ - builder.__proto__ = proto; - - return builder; -} - -function applyStyle() { - // support varags, but simply cast to string in case there's only one arg - var args = arguments; - var argsLen = args.length; - var str = argsLen !== 0 && String(arguments[0]); - - if (argsLen > 1) { - // don't slice `arguments`, it prevents v8 optimizations - for (var a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!this.enabled || !str) { - return str; - } - - var nestedStyles = this._styles; - var i = nestedStyles.length; - - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - var originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { - ansiStyles.dim.open = ''; - } - - while (i--) { - var code = ansiStyles[nestedStyles[i]]; - - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - } - - // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. - ansiStyles.dim.open = originalDim; - - return str; -} - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - return build.call(this, [name]); - } - }; - }); - - return ret; -} - -defineProps(Chalk.prototype, init()); - -module.exports = new Chalk(); -module.exports.styles = ansiStyles; -module.exports.hasColor = hasAnsi; -module.exports.stripColor = stripAnsi; -module.exports.supportsColor = supportsColor; diff --git a/node_modules/chalk/license b/node_modules/chalk/license deleted file mode 100644 index 654d0bfe..00000000 --- a/node_modules/chalk/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json deleted file mode 100644 index 6152d2fa..00000000 --- a/node_modules/chalk/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_from": "chalk@^1.1.1", - "_id": "chalk@1.1.3", - "_inBundle": false, - "_integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "_location": "/chalk", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "chalk@^1.1.1", - "name": "chalk", - "escapedName": "chalk", - "rawSpec": "^1.1.1", - "saveSpec": null, - "fetchSpec": "^1.1.1" - }, - "_requiredBy": [ - "/hexo-server" - ], - "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98", - "_spec": "chalk@^1.1.1", - "_where": "F:\\myself\\643435675.github.io\\node_modules\\hexo-server", - "bugs": { - "url": "https://github.com/chalk/chalk/issues" - }, - "bundleDependencies": false, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "deprecated": false, - "description": "Terminal string styling done right. Much color.", - "devDependencies": { - "coveralls": "^2.11.2", - "matcha": "^0.6.0", - "mocha": "*", - "nyc": "^3.0.0", - "require-uncached": "^1.0.2", - "resolve-from": "^1.0.0", - "semver": "^4.3.3", - "xo": "*" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/chalk/chalk#readme", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "str", - "ansi", - "style", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "maintainers": [ - { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - { - "name": "Joshua Appelman", - "email": "jappelman@xebia.com", - "url": "jbnicolai.com" - }, - { - "name": "JD Ballard", - "email": "i.am.qix@gmail.com", - "url": "github.com/qix-" - } - ], - "name": "chalk", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/chalk.git" - }, - "scripts": { - "bench": "matcha benchmark.js", - "coverage": "nyc npm test && nyc report", - "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls", - "test": "xo && mocha" - }, - "version": "1.1.3", - "xo": { - "envs": [ - "node", - "mocha" - ] - } -} diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md deleted file mode 100644 index 5cf111e3..00000000 --- a/node_modules/chalk/readme.md +++ /dev/null @@ -1,213 +0,0 @@ -

    -
    -
    - chalk -
    -
    -
    -

    - -> Terminal string styling done right - -[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) -[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master) -[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) - - -[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png) - - -## Why - -- Highly performant -- Doesn't extend `String.prototype` -- Expressive API -- Ability to nest styles -- Clean and focused -- Auto-detects color support -- Actively maintained -- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015 - - -## Install - -``` -$ npm install --save chalk -``` - - -## Usage - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -chalk.blue('Hello world!'); - -// combine styled and normal strings -chalk.blue('Hello') + 'World' + chalk.red('!'); - -// compose multiple styles using the chainable API -chalk.blue.bgRed.bold('Hello world!'); - -// pass in multiple arguments -chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'); - -// nest styles -chalk.red('Hello', chalk.underline.bgBlue('world') + '!'); - -// nest styles of the same type even (color, underline, background) -chalk.green( - 'I am a green line ' + - chalk.blue.underline.bold('with a blue substring') + - ' that becomes green again!' -); -``` - -Easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - -Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). - -```js -var name = 'Sindre'; -console.log(chalk.green('Hello %s'), name); -//=> Hello Sindre -``` - - -## API - -### chalk.` +``` + +(3)不论div的宽高是否确定,使用`transform`。 +父级`position:relative;`子级`postion:absolute;`left:50%;top:50%;`transform`:`translate`(-50%,-50%); + +```html +
    + 我是父级元素 +
    + 我是子级元素 +
    +
    + + +``` + +(4)不论div的宽高是否确定,flex布局(IE9以下不支持) +```html +display:flex,justify-content:center;align-items:center; +``` + +### 扩展问题: CSS中常见的三栏布局/圣杯布局有哪几种方式? +> 左右各300,中间自适应? + + 1、浮动 2、绝对定位 3、flex 4、table-cell 5、grid 网格布局 + +直接上代码吧。。。。 + +```html + + + + + + + + layout + + + + + + +
    + +
    +
    +
    +
    +

    这是浮动解决方案

    + 我是中间,我自适应了!! + 我是中间,我自适应了!! +
    + +
    + +
    + + +
    + +
    +
    +
    +
    +

    绝对定位解决方案

    + 我是中间,我自适应了!! + 我是中间,我自适应了!! +
    +
    +
    + + + +
    + + +
    +
    +
    +

    flexbox解决方案

    + 我是中间,我自适应了!! + 我是中间,我自适应了!! +
    +
    +
    + +
    + + + +
    + +
    +
    +
    +

    table解决方案(表格布局)

    + 我是中间,我自适应了!! + 我是中间,我自适应了!! +
    +
    +
    +
    + + +
    + +
    +
    +
    +

    grid解决方案(网格布局)

    + 我是中间,我自适应了!! + 我是中间,我自适应了!! +
    +
    +
    +
    + + + +``` + + +### 流式布局,自适应布局,响应式布局,弹性布局优缺点以及使用场景? + +>静态布局:给页面元素设置固定的宽度与高度,单位px,窗口缩小;实际开发中再PC端比较实用,手机端适配不同分辨率,要写多个样式文件。 + +>自适应布局:创建多个静态布局,每个静态布局对应一个屏幕分辨率,使用@media媒体查询技术。 + +>流式布局:元素的宽高用百分比做单位,元素的宽高按屏幕分辨率调整。 + +>响应式布局:采用自适应布局与流式布局的结合,为不同分辨率范围创建流式布局。 + +>弹性布局:使用em或rem单位来定义元素宽度,与流式布局有极大的相似性 + +关于本段可以延伸出更多的知识点,会在下一篇详细记录。 + + From 72edc11d7cbd815cc3b5d6453f71a5c1062afefe Mon Sep 17 00:00:00 2001 From: xushijie Date: Tue, 23 Oct 2018 14:17:28 +0800 Subject: [PATCH 16/41] Update _posts/2018-10-23-front-end-knowledge-points.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 生成摘要 --- _posts/2018-10-23-front-end-knowledge-points.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/_posts/2018-10-23-front-end-knowledge-points.md b/_posts/2018-10-23-front-end-knowledge-points.md index fa1e8369..9e84afce 100644 --- a/_posts/2018-10-23-front-end-knowledge-points.md +++ b/_posts/2018-10-23-front-end-knowledge-points.md @@ -5,7 +5,6 @@ date: 2018-10-23 13:02:18 +0800 categories: 前端知识 tags: 前端知识 CSS 三栏布局 author: Xu ShiJie -mathjax: false --- * content @@ -28,6 +27,10 @@ mathjax: false >2)有效时间 + + + + `localStorage` :存储持久数据,浏览器关闭后数据不丢失除非主动删除数据。 `sessionStorage` : 数据在当前浏览器窗口关闭后自动删除。 `cookie` : 设置的 `cookie` 过期时间之前一直有效,即使窗口或浏览器关闭。 From dadf8e7fafba066e3ed88c9ae81377d6021acef2 Mon Sep 17 00:00:00 2001 From: ShiJie Xu Date: Fri, 26 Oct 2018 00:33:50 +0800 Subject: [PATCH 17/41] Set theme jekyll-theme-cayman --- _config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_config.yml b/_config.yml index 407abb30..8d99618e 100755 --- a/_config.yml +++ b/_config.yml @@ -58,3 +58,5 @@ excerpt_separator: "\n\n\n\n" # paginate gems: [jekyll-paginate] paginate: 6 + +theme: jekyll-theme-cayman \ No newline at end of file From 5c18e09d72dd9bb49ca97891e5766bec148425e0 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sat, 27 Oct 2018 02:30:48 +0800 Subject: [PATCH 18/41] Update _posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md 2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md --- ....0 + webpack + TypeScript-build-project.md | 596 ++++++++++++++++++ 1 file changed, 596 insertions(+) create mode 100755 _posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md diff --git a/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md b/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md new file mode 100755 index 00000000..7d68bbce --- /dev/null +++ b/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md @@ -0,0 +1,596 @@ +--- +layout: post +title: "Thank you for your effort!! " +date: 2018-10-27 02:27:18 +0800 +categories: markdown +tags: markdown +author: Xu ShiJie +mathjax: false +--- + + + + +### webpack + TypeScript + Vue2.0 从零开始搭建项目 + +[github可下源码](https://github.com/xushijie10086/veu-webpack-Typescript) + + +> 先创个空白文件夹: + +```js + mkdir learn-vue + cd learn-vue +``` + +>新建一个页面`index.html`: + +```html + + + + + + + + learn-vue + + +
    +

    {{ message }}

    +
    + + + +``` + +这是我们在学习vue的时候会看到的最原始的代码。那我们如何对其进行改造呢。 + + + + + +>根目录建立`package.json`文件,可以手动也可以命令行 + +```cmd + npm init -y +``` + +去掉冗余,简单一点 + +```json +{ + "name": "learn-vue", + "version": "1.0.0" +} +``` + +然后安装webpack 已安装可以忽略 + +``` +npm install --save-dev webpack webpack-cli +``` +**会发现目录中增加了`node_modules`** + + +![Alt text](https://ws3.sinaimg.cn/large/006tNbRwgy1fwm4p2qbkzj304t019745.jpg "node_modules") + +> `node_modules`其实就类似于`maven`,这里有个[**有趣的知乎回答**](http://www.baidu.com) + +且`package.json`中变成这样了: + +```json +{ + "name": "learn-vue", + "version": "1.0.0", + "devDependencies": { + "webpack": "^4.16.5", + "webpack-cli": "^3.1.0" + } +} +``` + + + webpack是一个js打包工具,使用webpack你可以在一个js文件中使用 import 或者 require 来引用另外一个js文件中定义的组件。不消说,这样你就可以把js组件分文件存放了。 + 通过webpack就可以把多个js文件打包成一个js文件。使用了webpack就可以使用import语句来导入别的js文件,这样做有两个好处 + + + + +* 不需要将公共库的js引用写到页面上来了,比如vue的引用就不需要写到`index.html`页面上了。 + +* 你可以将你的所有js脚本可以按模块来分文件存放了 + +> vue+webpack后发生了第一次转变: + +```js + npm install npm -g +``` + +`package.json` 变为: + +```json +{ + "name": "learn-vue", + "version": "1.0.0", + "devDependencies": { + "webpack": "^4.16.5", + "webpack-cli": "^3.1.0", + }, + "dependencies": { + "vue": "^2.5.17", + } +} +``` + +根目录新建src文件夹,并建立`main.js` + +```js +new Vue({ + el: '#app', + data: { + message: 'Hello Vue.js!' + } +}) +``` + +index.html中的`script`语句替换成: + +```html + +``` +**并把这句话去掉** + +```html + +``` + +打开网页还是有hello world的。 + + + > **注意了,接下来就要开始用webpack了:** + + 修改main.js脚本,增加这个开头: + + ```js + import Vue from 'vue/dist/vue.js' + + ``` + 根目录新建文件`webpack.config.js`: + + ```js + var path = require('path'); + +module.exports = { + mode: 'development', + entry: './src/main.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'bundle.js' + } +}; + ``` + + >简单的讲解一下这个webpack.config.js + + - mode: 主要用到的模式有production和development。开发时使用development,所以我们现在用development,其实你就算用production对我们的例子也没什么影响。 + + - entry: 我嫩之前不是说过使用了webpack之后就可以引用import来导入别的js文件么?那么你可以想象一下,你项目中的js可以构成一个引用树。这个引用树总要有一个树根的,这个树根是不会被任何js所引用的,所有引用最后都可以回溯到它。这里的entry就是webpack的js引用树树根文件 + + - output:定义了打包后文件要存放的路径和文件名 + + index.html中main.js改成: + + ```js + + + ``` + +根目录新建一个dist文件夹作为output的目录。 + +```cmd +mkdir dist +``` + +`npx webpack`后我们能够看到`Hello Vue.js`。 + +> ### SFC结构: + +`src`下新建`components`目录,新建`HelloVue.vue` + +```html + + +``` + +src下新建App.vue + +```html + + + + +``` + +main.js改为: + +```ts +import Vue from 'vue/dist/vue.js' +import App from './App.vue' + +new Vue({ + el: '#app', + components: { App }, + template: "" +}) +``` + +index.html: + +```html + + + + + + + learn-vue + + +
    + + + +``` + +**原理:** + +```js +index.html是不可能直接使用.vue文件的, +因为浏览器不知道.vue文件是什么。 +所以App.vue是通过被某个js调用, +从而被index.html所感知的。 +所以它们之间必须要有一个js文件作为连接。 +我们使用之前建立的main.js来引用App.vue。 +``` + +![](https://ws4.sinaimg.cn/large/006tNbRwgy1fwm5jpbx1jj30om07hjri.jpg) + +使用template属性来定义模板 , 使用name属性来注册组件。我们在模板中使用了Hello.vue组件 + + +除此之外,webpack是不认识vue的,所以要添加解析器: + + +```cmd +npm install --save-dev vue-loader vue-template-compiler +``` + +并在webpack.config.js中添加: + +```js +const { VueLoaderPlugin } = require('vue-loader') +``` + +```js +plugins: [ + new VueLoaderPlugin() + ] +``` + +```js +module: { + rules: [ + { + test: /\.vue$/, + loader: 'vue-loader', + } + ] + }, +``` + +最终为: + +```js +var path = require('path'); +const { VueLoaderPlugin } = require('vue-loader') + +module.exports = { + mode: 'development', + entry: './src/main.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'bundle.js' + }, + module: { + rules: [ + { + test: /\.vue$/, + loader: 'vue-loader', + } + ] + }, + plugins: [ + new VueLoaderPlugin() + ] +}; +``` + +#### 使用html-webpack-plugin自动插入脚本 + +安装: + +```js +npm install --save-dev html-webpack-plugin +``` + +webpack.config.js 中添加: + +```js +const HtmlWebpackPlugin = require('html-webpack-plugin') +``` + +```js +plugins: [ + new VueLoaderPlugin(), + // 以下是HtmlWebpackPlugin的配置 + new HtmlWebpackPlugin({ + template: 'index.html', + filename: './index.html', // 输出文件【注意:这里的根路径是module.exports.output.path】 + hash: true + }) + ] + ``` + + 到这里就已经可以正常运行了。 + + + 那么如何实现热部署呢? + + 安装webpack-dev-server,它可以配置不同的模式来自动更新页面 + + ```json + npm install --save-dev webpack-dev-server +``` + +并在package.json中添加: + +```js +"scripts": { + "dev": "webpack-dev-server --inline --progress --config webpack.config.js", + "start": "npm run dev", + }, +``` +npm start/npm run dev就可以运行了,并且更改后会自动更新。 + + +**js改为ts:(typescript)** + +安装: + +```js +yarn add vue-class-component vue-property-decorator +yarn add ts-loader typescript --dev +``` + +- [vue-class-component](https://github.com/vuejs/vue-class-component):强化 Vue 组件,使用 TypeScript/装饰器 增强 Vue 组件 +- [vue-class-component](https://github.com/kaorun343/vue-property-decorator):在 vue-class-component 上增强更多的结合 Vue 特性的装饰器 + +webconfig.config.js中添加: + +```js + resolve: { + extensions: ['.js', '.vue', '.json', '.ts'], + alias: { + '@': path.resolve(__dirname, '..', 'src'), + } + }, +module: { + rules: [ + { + test: /\.tsx?$/, + loader: 'ts-loader', + exclude: /node_modules/, + options: { + appendTsSuffixTo: [/\.vue$/], + } + }, + { + test: /\.vue$/, + loader: 'vue-loader', + } + ] + }, + +``` + +根目录添加 + +tsconfig.json: + +```json +{ + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules" + ], + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "experimentalDecorators": true, + "allowJs": true, + "module": "esnext", + "target": "es5", + "moduleResolution": "node", + "isolatedModules": true, + "lib": [ + "dom", + "es5", + "es2015.promise" + ], + "sourceMap": true, + "pretty": true + } +} + +``` + +在 ./src 目录创建 vue-shim.d.ts 文件,让 ts 识别 .vue 文件: + +```ts +// vue-shim.d.ts +declare module "*.vue" { + import Vue from "vue"; + export default Vue; +} +``` +main.js改为main.ts, +![](https://ws4.sinaimg.cn/large/006tNbRwgy1fwm5uww7a6j309l00zq2q.jpg) + +改造之后的 ts 文件不会识别 .vue 文件,所以在引入 .vue 文件的时候,需要手动添加 .vue 后缀 + +[原文作者](https://blog.csdn.net/Jerry_CSDN_YZR/article/details/81902859) + +webpack.config.js中的main.js也改为main.ts! + +![](https://ws2.sinaimg.cn/large/006tNbRwgy1fwm5vldbhlj30810123ya.jpg) + +App.vue改造为: + +```HTML + + + +``` + +HelloVue.vue改造为: + +```HTML + + + + + +``` + + +webpack.config.js最终改造为: + + +```JS + +var path = require('path'); + +const { VueLoaderPlugin } = require('vue-loader') +const HtmlWebpackPlugin = require('html-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/main.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].js' + }, + resolve: { + extensions: ['.js', '.vue', '.json', '.ts'], + alias: { + '@': path.resolve(__dirname, '..', 'src'), + } + }, + module: { + rules: [ + { + test: /\.tsx?$/, + loader: 'ts-loader', + exclude: /node_modules/, + options: { + appendTsSuffixTo: [/\.vue$/], + } + }, + { + test: /\.vue$/, + loader: 'vue-loader', + } + ] + }, + plugins: [ + new VueLoaderPlugin(), + + new HtmlWebpackPlugin({ + template: 'index.html', + filename: './index.html', + hash: true + }) + ] +}; + +``` + +执行命令: +```js +npm install +``` + +```js +npm start +``` + + +运行得到hello world! + +小小demo \ No newline at end of file From fa2834a07755ace719851d8f4299d116ba592391 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sat, 27 Oct 2018 02:42:44 +0800 Subject: [PATCH 19/41] fixed fiexd --- _config.yml | 2 +- ...8-10-27-Vue2.0 + webpack + TypeScript-build-project.md | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/_config.yml b/_config.yml index 8d99618e..c72b4a88 100755 --- a/_config.yml +++ b/_config.yml @@ -29,7 +29,7 @@ description_footer: 本站记录我前端之旅的沿途风景! # two ways to comment, only choose one, and use your own short name # 两种评论插件,选一个就好了,使用自己的 short_name duoshuo_shortname: #XuShiJieblog -disqus_shortname: gaohaoyang +disqus_shortname: # statistic analysis 统计代码 # 百度统计 id,将统计代码替换为自己的百度统计id,即 diff --git a/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md b/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md index 7d68bbce..aa0f155c 100755 --- a/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md +++ b/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md @@ -1,9 +1,9 @@ --- layout: post -title: "Thank you for your effort!! " +title: "webpack + TypeScript + Vue2.0 从零开始搭建项目 " date: 2018-10-27 02:27:18 +0800 -categories: markdown -tags: markdown +categories: webpack TypeScript +tags: Vue author: Xu ShiJie mathjax: false --- @@ -11,8 +11,6 @@ mathjax: false -### webpack + TypeScript + Vue2.0 从零开始搭建项目 - [github可下源码](https://github.com/xushijie10086/veu-webpack-Typescript) From 8cec149f98ae8e269ffb6aa6d8f0a9f32748dee2 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sat, 27 Oct 2018 02:47:08 +0800 Subject: [PATCH 20/41] Update _posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改 --- .../2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md b/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md index aa0f155c..5364a019 100755 --- a/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md +++ b/_posts/2018-10-27-Vue2.0 + webpack + TypeScript-build-project.md @@ -485,7 +485,7 @@ webpack.config.js中的main.js也改为main.ts! App.vue改造为: -```HTML +```html

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≶ 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∾AtwVA$wQ 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 z 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 diff --git a/index.html b/index.html old mode 100644 new mode 100755 index 3c71e9b9..71de2c7c --- a/index.html +++ b/index.html @@ -4,8 +4,8 @@

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≶ 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∾AtwVA$wQ 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 z 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 literal 0 HcmV?d00001 From aaa89b590351de8b7f3083d1455b9781c1550864 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sun, 21 Oct 2018 06:58:16 +0800 Subject: [PATCH 02/41] rename rename --- _config.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/_config.yml b/_config.yml index 201eda30..526ebf49 100644 --- a/_config.yml +++ b/_config.yml @@ -6,24 +6,24 @@ # 'jekyll serve'. If you change this file, please restart the server process. # Site settings -title: "姚信的技术专栏" +title: "徐士杰的技术专栏" brief-intro: "System Research" baseurl: "" # the subpath of your site, e.g. /blog -url: "https://XinYao1994.github.io" # the base hostname & protocol for your site +url: "https://xushijie10086.github.io" # the base hostname & protocol for your site permalink: /:year/:month/:day/:title/ # other links twitter_username: #gaohaoyang126 facebook_username: #gaohaoyang.water -github_username: XinYao1994 -email: u3004330@connect.hku.hk -weibo_username: -zhihu_username: -linkedIn_username: xinyao1994 -dribbble_username: +github_username: xushijie10086 +email: shijie10086@163.com +weibo_username: none +zhihu_username: 徐士杰 +linkedIn_username: none +dribbble_username: none -description_footer: 来自姚信的个人专栏! +description_footer: 来自徐士杰的个人专栏! # comments # two ways to comment, only choose one, and use your own short name @@ -35,9 +35,9 @@ gitalk: enable: true #是否开启Gitalk评论 clientID: 52bbb620d9680fd85254 #生成的clientID clientSecret: d92cec378527800b0816d1bdd26dc71eb5dd0ccd #生成的clientSecret - repo: XinYao1994.github.io #仓库名称 - owner: XinYao1994 #github用户名 - admin: XinYao1994 + repo: xushijie10086.github.io #仓库名称 + owner: xushijie10086 #github用户名 + admin: xushijie10086 distractionFreeMode: true #是否启用类似FB的阴影遮罩 # statistic analysis 统计代码 @@ -50,7 +50,7 @@ ga_domain: auto friends: [ { - title: "Linkedin - Xin YAO", + title: "Linkedin - Shijie Xu", href: "https://www.linkedin.com/in/%E4%BF%A1-%E5%A7%9A-947492167/" } ] From 13db5a02c14b7c0478ea43020b66d6331bdaafc8 Mon Sep 17 00:00:00 2001 From: xushijie Date: Sun, 21 Oct 2018 07:03:31 +0800 Subject: [PATCH 03/41] rename rename --- _posts/2018-09-24-Open-Github-Pages-for-blogs.md | 2 +- _posts/2018-09-25-Git-Beginner.md | 2 +- _posts/2018-09-25-Markdown-Beginner.md | 2 +- index.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2018-09-24-Open-Github-Pages-for-blogs.md b/_posts/2018-09-24-Open-Github-Pages-for-blogs.md index 0dc5e15f..e85bb67a 100644 --- a/_posts/2018-09-24-Open-Github-Pages-for-blogs.md +++ b/_posts/2018-09-24-Open-Github-Pages-for-blogs.md @@ -3,7 +3,7 @@ layout: post title: Open Github Pages for blogs subtitle: Others date: 2018-09-24 -author: Xin YAO +author: Shijie Xu catalog: true tags: - git diff --git a/_posts/2018-09-25-Git-Beginner.md b/_posts/2018-09-25-Git-Beginner.md index 4c363310..660d4d6a 100644 --- a/_posts/2018-09-25-Git-Beginner.md +++ b/_posts/2018-09-25-Git-Beginner.md @@ -3,7 +3,7 @@ layout: post title: Git Beginner subtitle: History Blogs @ 2015/10/1 date: 2018-09-25 -author: Xin YAO +author: Shijie Xu catalog: true tags: - git diff --git a/_posts/2018-09-25-Markdown-Beginner.md b/_posts/2018-09-25-Markdown-Beginner.md index 3945ef02..8214b446 100644 --- a/_posts/2018-09-25-Markdown-Beginner.md +++ b/_posts/2018-09-25-Markdown-Beginner.md @@ -3,7 +3,7 @@ layout: post title: Markdown Beginner subtitle: date: 2018-09-25 -author: Xin YAO +author: Shijie Xu catalog: true tags: - Markdown diff --git a/index.html b/index.html index 050a5770..3c71e9b9 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@