From 19e44a1e8ab3d1f14fb827086ccc4da59ee6237e Mon Sep 17 00:00:00 2001 From: Youngsoo Choi Date: Tue, 24 Oct 2017 10:43:42 +0900 Subject: [PATCH] [WRT] Add node_modules for wrt Change-Id: I665be92cbf40a01aae26e46d674b98b3e0e82444 Signed-off-by: Youngsoo Choi --- wrt/node_modules/.bin/mime | 1 + wrt/node_modules/.bin/mkdirp | 1 + wrt/node_modules/.bin/ncp | 1 + wrt/node_modules/.bin/rimraf | 1 + wrt/node_modules/.bin/show_dialog | 1 + wrt/node_modules/.bin/strip-ansi | 1 + wrt/node_modules/.bin/uuid | 1 + wrt/node_modules/.bin/window-size | 1 + wrt/node_modules/accepts/HISTORY.md | 212 + wrt/node_modules/accepts/LICENSE | 23 + wrt/node_modules/accepts/README.md | 135 + wrt/node_modules/accepts/index.js | 231 + wrt/node_modules/accepts/package.json | 112 + wrt/node_modules/after/.npmignore | 2 + wrt/node_modules/after/.travis.yml | 12 + wrt/node_modules/after/LICENCE | 19 + wrt/node_modules/after/README.md | 115 + wrt/node_modules/after/index.js | 28 + wrt/node_modules/after/package.json | 103 + wrt/node_modules/after/test/after-test.js | 120 + wrt/node_modules/align-text/LICENSE | 21 + wrt/node_modules/align-text/README.md | 236 + wrt/node_modules/align-text/index.js | 52 + wrt/node_modules/align-text/package.json | 78 + wrt/node_modules/ansi-styles/index.js | 152 + wrt/node_modules/ansi-styles/license | 9 + wrt/node_modules/ansi-styles/package.json | 126 + wrt/node_modules/ansi-styles/readme.md | 147 + wrt/node_modules/array-flatten/LICENSE | 21 + wrt/node_modules/array-flatten/README.md | 43 + wrt/node_modules/array-flatten/array-flatten.js | 64 + wrt/node_modules/array-flatten/package.json | 96 + wrt/node_modules/arraybuffer.slice/.npmignore | 17 + wrt/node_modules/arraybuffer.slice/Makefile | 8 + wrt/node_modules/arraybuffer.slice/README.md | 17 + wrt/node_modules/arraybuffer.slice/index.js | 29 + wrt/node_modules/arraybuffer.slice/package.json | 72 + .../arraybuffer.slice/test/slice-buffer.js | 227 + wrt/node_modules/async/CHANGELOG.md | 125 + wrt/node_modules/async/LICENSE | 19 + wrt/node_modules/async/README.md | 1877 ++++++ wrt/node_modules/async/dist/async.js | 1265 ++++ wrt/node_modules/async/dist/async.min.js | 2 + wrt/node_modules/async/lib/async.js | 1265 ++++ wrt/node_modules/async/package.json | 114 + wrt/node_modules/backo2/.npmignore | 1 + wrt/node_modules/backo2/History.md | 12 + wrt/node_modules/backo2/Makefile | 8 + wrt/node_modules/backo2/Readme.md | 34 + wrt/node_modules/backo2/component.json | 11 + wrt/node_modules/backo2/index.js | 85 + wrt/node_modules/backo2/package.json | 78 + wrt/node_modules/backo2/test/index.js | 18 + wrt/node_modules/balanced-match/.npmignore | 5 + wrt/node_modules/balanced-match/LICENSE.md | 21 + wrt/node_modules/balanced-match/README.md | 91 + wrt/node_modules/balanced-match/index.js | 59 + wrt/node_modules/balanced-match/package.json | 77 + wrt/node_modules/base64-arraybuffer/.npmignore | 3 + wrt/node_modules/base64-arraybuffer/.travis.yml | 19 + wrt/node_modules/base64-arraybuffer/LICENSE-MIT | 22 + wrt/node_modules/base64-arraybuffer/README.md | 20 + .../base64-arraybuffer/lib/base64-arraybuffer.js | 67 + wrt/node_modules/base64-arraybuffer/package.json | 97 + wrt/node_modules/base64id/.npmignore | 3 + wrt/node_modules/base64id/LICENSE | 22 + wrt/node_modules/base64id/README.md | 18 + wrt/node_modules/base64id/lib/base64id.js | 103 + wrt/node_modules/base64id/package.json | 89 + wrt/node_modules/better-assert/.npmignore | 4 + wrt/node_modules/better-assert/History.md | 15 + wrt/node_modules/better-assert/Makefile | 5 + wrt/node_modules/better-assert/Readme.md | 61 + wrt/node_modules/better-assert/example.js | 10 + wrt/node_modules/better-assert/index.js | 38 + wrt/node_modules/better-assert/package.json | 100 + wrt/node_modules/binary/.npmignore | 1 + wrt/node_modules/binary/.travis.yml | 4 + wrt/node_modules/binary/README.markdown | 177 + wrt/node_modules/binary/example/buf.js | 11 + wrt/node_modules/binary/example/parse.js | 10 + wrt/node_modules/binary/example/stream.js | 12 + wrt/node_modules/binary/index.js | 397 ++ wrt/node_modules/binary/lib/vars.js | 28 + wrt/node_modules/binary/package.json | 102 + wrt/node_modules/binary/perf/loop.js | 92 + wrt/node_modules/binary/perf/small.js | 80 + wrt/node_modules/binary/test/bu.js | 46 + wrt/node_modules/binary/test/deferred.js | 20 + wrt/node_modules/binary/test/dots.js | 23 + wrt/node_modules/binary/test/eof.js | 41 + wrt/node_modules/binary/test/flush.js | 17 + wrt/node_modules/binary/test/from_buffer.js | 14 + wrt/node_modules/binary/test/get_buffer.js | 28 + wrt/node_modules/binary/test/immediate.js | 18 + wrt/node_modules/binary/test/interval.js | 38 + wrt/node_modules/binary/test/into_buffer.js | 35 + wrt/node_modules/binary/test/into_stream.js | 43 + wrt/node_modules/binary/test/loop.js | 44 + wrt/node_modules/binary/test/loop_scan.js | 54 + wrt/node_modules/binary/test/lu.js | 46 + wrt/node_modules/binary/test/negbs.js | 29 + wrt/node_modules/binary/test/negls.js | 29 + wrt/node_modules/binary/test/nested.js | 35 + wrt/node_modules/binary/test/not_enough_buf.js | 17 + wrt/node_modules/binary/test/not_enough_parse.js | 19 + wrt/node_modules/binary/test/parse.js | 54 + wrt/node_modules/binary/test/peek.js | 40 + wrt/node_modules/binary/test/pipe.js | 49 + wrt/node_modules/binary/test/posbs.js | 29 + wrt/node_modules/binary/test/posls.js | 29 + wrt/node_modules/binary/test/scan.js | 33 + wrt/node_modules/binary/test/scan_buf.js | 18 + wrt/node_modules/binary/test/scan_buf_null.js | 16 + wrt/node_modules/binary/test/skip.js | 58 + wrt/node_modules/binary/test/split.js | 34 + wrt/node_modules/blob/.npmignore | 2 + wrt/node_modules/blob/.zuul.yml | 14 + wrt/node_modules/blob/Makefile | 14 + wrt/node_modules/blob/README.md | 14 + wrt/node_modules/blob/index.js | 96 + wrt/node_modules/blob/package.json | 77 + wrt/node_modules/blob/test/index.js | 94 + wrt/node_modules/brace-expansion/README.md | 123 + wrt/node_modules/brace-expansion/index.js | 201 + wrt/node_modules/brace-expansion/package.json | 76 + wrt/node_modules/buffers/README.markdown | 122 + wrt/node_modules/buffers/examples/slice.js | 9 + wrt/node_modules/buffers/examples/splice.js | 17 + wrt/node_modules/buffers/index.js | 269 + wrt/node_modules/buffers/package.json | 87 + wrt/node_modules/buffers/test/buffers.js | 209 + wrt/node_modules/callsite/.npmignore | 4 + wrt/node_modules/callsite/History.md | 10 + wrt/node_modules/callsite/Makefile | 6 + wrt/node_modules/callsite/Readme.md | 44 + wrt/node_modules/callsite/index.js | 10 + wrt/node_modules/callsite/package.json | 77 + wrt/node_modules/center-align/LICENSE | 21 + wrt/node_modules/center-align/README.md | 74 + wrt/node_modules/center-align/index.js | 16 + wrt/node_modules/center-align/package.json | 82 + wrt/node_modules/center-align/utils.js | 40 + wrt/node_modules/chainsaw/.npmignore | 1 + wrt/node_modules/chainsaw/README.markdown | 157 + wrt/node_modules/chainsaw/examples/add_do.js | 25 + wrt/node_modules/chainsaw/examples/prompt.js | 67 + wrt/node_modules/chainsaw/index.js | 145 + wrt/node_modules/chainsaw/package.json | 85 + wrt/node_modules/chainsaw/test/chainsaw.js | 418 ++ wrt/node_modules/chalk/index.js | 220 + wrt/node_modules/chalk/license | 9 + wrt/node_modules/chalk/package.json | 139 + wrt/node_modules/chalk/readme.md | 306 + wrt/node_modules/chalk/templates.js | 128 + wrt/node_modules/color-convert/CHANGELOG.md | 54 + wrt/node_modules/color-convert/LICENSE | 21 + wrt/node_modules/color-convert/README.md | 68 + wrt/node_modules/color-convert/conversions.js | 861 +++ wrt/node_modules/color-convert/index.js | 78 + wrt/node_modules/color-convert/package.json | 124 + wrt/node_modules/color-convert/route.js | 98 + wrt/node_modules/color-name/.eslintrc.json | 43 + wrt/node_modules/color-name/.npmignore | 107 + wrt/node_modules/color-name/LICENSE | 8 + wrt/node_modules/color-name/README.md | 11 + wrt/node_modules/color-name/index.js | 152 + wrt/node_modules/color-name/package.json | 90 + wrt/node_modules/color-name/test.js | 7 + wrt/node_modules/component-bind/.npmignore | 4 + wrt/node_modules/component-bind/History.md | 13 + wrt/node_modules/component-bind/Makefile | 7 + wrt/node_modules/component-bind/Readme.md | 64 + wrt/node_modules/component-bind/component.json | 13 + wrt/node_modules/component-bind/index.js | 23 + wrt/node_modules/component-bind/package.json | 81 + wrt/node_modules/component-emitter/History.md | 68 + wrt/node_modules/component-emitter/LICENSE | 24 + wrt/node_modules/component-emitter/Readme.md | 74 + wrt/node_modules/component-emitter/index.js | 163 + wrt/node_modules/component-emitter/package.json | 218 + wrt/node_modules/component-inherit/.npmignore | 3 + wrt/node_modules/component-inherit/History.md | 5 + wrt/node_modules/component-inherit/Makefile | 16 + wrt/node_modules/component-inherit/Readme.md | 24 + wrt/node_modules/component-inherit/component.json | 10 + wrt/node_modules/component-inherit/index.js | 7 + wrt/node_modules/component-inherit/package.json | 78 + wrt/node_modules/component-inherit/test/inherit.js | 21 + wrt/node_modules/concat-map/.travis.yml | 4 + wrt/node_modules/concat-map/LICENSE | 18 + wrt/node_modules/concat-map/README.markdown | 62 + wrt/node_modules/concat-map/example/map.js | 6 + wrt/node_modules/concat-map/index.js | 13 + wrt/node_modules/concat-map/package.json | 88 + wrt/node_modules/concat-map/test/map.js | 39 + wrt/node_modules/content-disposition/HISTORY.md | 50 + wrt/node_modules/content-disposition/LICENSE | 22 + wrt/node_modules/content-disposition/README.md | 141 + wrt/node_modules/content-disposition/index.js | 445 ++ wrt/node_modules/content-disposition/package.json | 110 + wrt/node_modules/content-type/HISTORY.md | 24 + wrt/node_modules/content-type/LICENSE | 22 + wrt/node_modules/content-type/README.md | 92 + wrt/node_modules/content-type/index.js | 222 + wrt/node_modules/content-type/package.json | 112 + wrt/node_modules/cookie-signature/.npmignore | 4 + wrt/node_modules/cookie-signature/History.md | 38 + wrt/node_modules/cookie-signature/Readme.md | 42 + wrt/node_modules/cookie-signature/index.js | 51 + wrt/node_modules/cookie-signature/package.json | 92 + wrt/node_modules/cookie/HISTORY.md | 118 + wrt/node_modules/cookie/LICENSE | 24 + wrt/node_modules/cookie/README.md | 220 + wrt/node_modules/cookie/index.js | 195 + wrt/node_modules/cookie/package.json | 106 + wrt/node_modules/core-util-is/LICENSE | 19 + wrt/node_modules/core-util-is/README.md | 3 + wrt/node_modules/core-util-is/float.patch | 604 ++ wrt/node_modules/core-util-is/lib/util.js | 107 + wrt/node_modules/core-util-is/package.json | 94 + wrt/node_modules/core-util-is/test.js | 68 + wrt/node_modules/debug/.coveralls.yml | 1 + wrt/node_modules/debug/.eslintrc | 14 + wrt/node_modules/debug/.npmignore | 9 + wrt/node_modules/debug/.travis.yml | 20 + wrt/node_modules/debug/CHANGELOG.md | 378 ++ wrt/node_modules/debug/LICENSE | 19 + wrt/node_modules/debug/Makefile | 58 + wrt/node_modules/debug/README.md | 367 ++ wrt/node_modules/debug/component.json | 19 + wrt/node_modules/debug/karma.conf.js | 70 + wrt/node_modules/debug/node.js | 1 + wrt/node_modules/debug/package.json | 136 + wrt/node_modules/debug/src/browser.js | 195 + wrt/node_modules/debug/src/debug.js | 225 + wrt/node_modules/debug/src/index.js | 10 + wrt/node_modules/debug/src/node.js | 177 + wrt/node_modules/decamelize/index.js | 13 + wrt/node_modules/decamelize/license | 21 + wrt/node_modules/decamelize/package.json | 71 + wrt/node_modules/decamelize/readme.md | 48 + wrt/node_modules/depd/History.md | 90 + wrt/node_modules/depd/LICENSE | 22 + wrt/node_modules/depd/Readme.md | 283 + wrt/node_modules/depd/index.js | 520 ++ wrt/node_modules/depd/lib/browser/index.js | 77 + .../depd/lib/compat/callsite-tostring.js | 103 + .../depd/lib/compat/event-listener-count.js | 22 + wrt/node_modules/depd/lib/compat/index.js | 79 + wrt/node_modules/depd/package.json | 114 + wrt/node_modules/destroy/LICENSE | 22 + wrt/node_modules/destroy/README.md | 60 + wrt/node_modules/destroy/index.js | 75 + wrt/node_modules/destroy/package.json | 106 + wrt/node_modules/dialog/README.md | 57 + wrt/node_modules/dialog/bin/dialog.js | 19 + wrt/node_modules/dialog/index.js | 135 + wrt/node_modules/dialog/msgbox.vbs | 6 + wrt/node_modules/dialog/package.json | 52 + wrt/node_modules/diskdb/README.md | 362 + wrt/node_modules/diskdb/lib/collection.js | 113 + wrt/node_modules/diskdb/lib/diskdb.js | 58 + wrt/node_modules/diskdb/lib/util.js | 159 + .../diskdb/node_modules/ansi-styles/ansi-styles.js | 38 + .../diskdb/node_modules/ansi-styles/package.json | 109 + .../diskdb/node_modules/ansi-styles/readme.md | 65 + .../diskdb/node_modules/chalk/index.js | 63 + .../diskdb/node_modules/chalk/package.json | 111 + .../diskdb/node_modules/chalk/readme.md | 158 + wrt/node_modules/diskdb/package.json | 111 + wrt/node_modules/ee-first/LICENSE | 22 + wrt/node_modules/ee-first/README.md | 80 + wrt/node_modules/ee-first/index.js | 95 + wrt/node_modules/ee-first/package.json | 98 + wrt/node_modules/encodeurl/HISTORY.md | 9 + wrt/node_modules/encodeurl/LICENSE | 22 + wrt/node_modules/encodeurl/README.md | 124 + wrt/node_modules/encodeurl/index.js | 60 + wrt/node_modules/encodeurl/package.json | 112 + wrt/node_modules/engine.io-client/History.md | 683 ++ wrt/node_modules/engine.io-client/LICENSE | 22 + wrt/node_modules/engine.io-client/README.md | 299 + wrt/node_modules/engine.io-client/engine.io.js | 4707 +++++++++++++ wrt/node_modules/engine.io-client/index.js | 2 + wrt/node_modules/engine.io-client/lib/index.js | 10 + wrt/node_modules/engine.io-client/lib/socket.js | 744 +++ wrt/node_modules/engine.io-client/lib/transport.js | 157 + .../engine.io-client/lib/transports/index.js | 53 + .../lib/transports/polling-jsonp.js | 231 + .../engine.io-client/lib/transports/polling-xhr.js | 413 ++ .../engine.io-client/lib/transports/polling.js | 245 + .../engine.io-client/lib/transports/websocket.js | 286 + .../engine.io-client/lib/xmlhttprequest.js | 37 + .../node_modules/debug/.coveralls.yml | 1 + .../engine.io-client/node_modules/debug/.eslintrc | 11 + .../engine.io-client/node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../engine.io-client/node_modules/debug/LICENSE | 19 + .../engine.io-client/node_modules/debug/Makefile | 50 + .../engine.io-client/node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../engine.io-client/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 148 + .../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 + wrt/node_modules/engine.io-client/package.json | 152 + wrt/node_modules/engine.io-parser/History.md | 177 + wrt/node_modules/engine.io-parser/LICENSE | 22 + wrt/node_modules/engine.io-parser/Readme.md | 202 + wrt/node_modules/engine.io-parser/index.js | 2 + wrt/node_modules/engine.io-parser/lib/browser.js | 606 ++ wrt/node_modules/engine.io-parser/lib/index.js | 480 ++ wrt/node_modules/engine.io-parser/lib/keys.js | 19 + wrt/node_modules/engine.io-parser/lib/utf8.js | 255 + wrt/node_modules/engine.io-parser/package.json | 101 + wrt/node_modules/engine.io/LICENSE | 19 + wrt/node_modules/engine.io/README.md | 539 ++ wrt/node_modules/engine.io/lib/engine.io.js | 126 + wrt/node_modules/engine.io/lib/server.js | 579 ++ wrt/node_modules/engine.io/lib/socket.js | 482 ++ wrt/node_modules/engine.io/lib/transport.js | 128 + wrt/node_modules/engine.io/lib/transports/index.js | 36 + .../engine.io/lib/transports/polling-jsonp.js | 75 + .../engine.io/lib/transports/polling-xhr.js | 69 + .../engine.io/lib/transports/polling.js | 407 ++ .../engine.io/lib/transports/websocket.js | 134 + .../engine.io/node_modules/debug/.coveralls.yml | 1 + .../engine.io/node_modules/debug/.eslintrc | 11 + .../engine.io/node_modules/debug/.npmignore | 9 + .../engine.io/node_modules/debug/.travis.yml | 14 + .../engine.io/node_modules/debug/CHANGELOG.md | 362 + .../engine.io/node_modules/debug/LICENSE | 19 + .../engine.io/node_modules/debug/Makefile | 50 + .../engine.io/node_modules/debug/README.md | 312 + .../engine.io/node_modules/debug/component.json | 19 + .../engine.io/node_modules/debug/karma.conf.js | 70 + .../engine.io/node_modules/debug/node.js | 1 + .../engine.io/node_modules/debug/package.json | 148 + .../engine.io/node_modules/debug/src/browser.js | 185 + .../engine.io/node_modules/debug/src/debug.js | 202 + .../engine.io/node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../engine.io/node_modules/debug/src/node.js | 248 + wrt/node_modules/engine.io/package.json | 136 + wrt/node_modules/escape-html/LICENSE | 24 + wrt/node_modules/escape-html/Readme.md | 43 + wrt/node_modules/escape-html/index.js | 78 + wrt/node_modules/escape-html/package.json | 94 + wrt/node_modules/escape-string-regexp/index.js | 11 + wrt/node_modules/escape-string-regexp/license | 21 + wrt/node_modules/escape-string-regexp/package.json | 109 + wrt/node_modules/escape-string-regexp/readme.md | 27 + wrt/node_modules/etag/HISTORY.md | 83 + wrt/node_modules/etag/LICENSE | 22 + wrt/node_modules/etag/README.md | 159 + wrt/node_modules/etag/index.js | 131 + wrt/node_modules/etag/package.json | 122 + wrt/node_modules/express/History.md | 3289 +++++++++ wrt/node_modules/express/LICENSE | 24 + wrt/node_modules/express/Readme.md | 141 + wrt/node_modules/express/index.js | 11 + wrt/node_modules/express/lib/application.js | 644 ++ wrt/node_modules/express/lib/express.js | 111 + wrt/node_modules/express/lib/middleware/init.js | 43 + wrt/node_modules/express/lib/middleware/query.js | 47 + wrt/node_modules/express/lib/request.js | 517 ++ wrt/node_modules/express/lib/response.js | 1076 +++ wrt/node_modules/express/lib/router/index.js | 662 ++ wrt/node_modules/express/lib/router/layer.js | 181 + wrt/node_modules/express/lib/router/route.js | 216 + wrt/node_modules/express/lib/utils.js | 298 + wrt/node_modules/express/lib/view.js | 174 + .../express/node_modules/debug/.coveralls.yml | 1 + .../express/node_modules/debug/.eslintrc | 11 + .../express/node_modules/debug/.npmignore | 9 + .../express/node_modules/debug/.travis.yml | 14 + .../express/node_modules/debug/CHANGELOG.md | 357 + .../express/node_modules/debug/LICENSE | 19 + .../express/node_modules/debug/Makefile | 50 + .../express/node_modules/debug/README.md | 312 + .../express/node_modules/debug/component.json | 19 + .../express/node_modules/debug/karma.conf.js | 70 + .../express/node_modules/debug/node.js | 1 + .../express/node_modules/debug/package.json | 124 + .../express/node_modules/debug/src/browser.js | 185 + .../express/node_modules/debug/src/debug.js | 202 + .../express/node_modules/debug/src/index.js | 10 + .../express/node_modules/debug/src/node.js | 246 + wrt/node_modules/express/package.json | 201 + wrt/node_modules/finalhandler/HISTORY.md | 167 + wrt/node_modules/finalhandler/LICENSE | 22 + wrt/node_modules/finalhandler/README.md | 148 + wrt/node_modules/finalhandler/index.js | 300 + .../finalhandler/node_modules/debug/.coveralls.yml | 1 + .../finalhandler/node_modules/debug/.eslintrc | 11 + .../finalhandler/node_modules/debug/.npmignore | 9 + .../finalhandler/node_modules/debug/.travis.yml | 14 + .../finalhandler/node_modules/debug/CHANGELOG.md | 362 + .../finalhandler/node_modules/debug/LICENSE | 19 + .../finalhandler/node_modules/debug/Makefile | 50 + .../finalhandler/node_modules/debug/README.md | 312 + .../finalhandler/node_modules/debug/component.json | 19 + .../finalhandler/node_modules/debug/karma.conf.js | 70 + .../finalhandler/node_modules/debug/node.js | 1 + .../finalhandler/node_modules/debug/package.json | 136 + .../finalhandler/node_modules/debug/src/browser.js | 185 + .../finalhandler/node_modules/debug/src/debug.js | 202 + .../finalhandler/node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../finalhandler/node_modules/debug/src/node.js | 248 + wrt/node_modules/finalhandler/package.json | 117 + wrt/node_modules/forwarded/HISTORY.md | 16 + wrt/node_modules/forwarded/LICENSE | 22 + wrt/node_modules/forwarded/README.md | 57 + wrt/node_modules/forwarded/index.js | 76 + wrt/node_modules/forwarded/package.json | 114 + wrt/node_modules/fresh/HISTORY.md | 58 + wrt/node_modules/fresh/LICENSE | 23 + wrt/node_modules/fresh/README.md | 113 + wrt/node_modules/fresh/index.js | 81 + wrt/node_modules/fresh/package.json | 120 + wrt/node_modules/fs-plus/LICENSE.md | 20 + wrt/node_modules/fs-plus/README.md | 235 + wrt/node_modules/fs-plus/appveyor.yml | 17 + wrt/node_modules/fs-plus/lib/fs-plus.js | 699 ++ wrt/node_modules/fs-plus/package.json | 63 + wrt/node_modules/fs.realpath/LICENSE | 43 + wrt/node_modules/fs.realpath/README.md | 33 + wrt/node_modules/fs.realpath/index.js | 66 + wrt/node_modules/fs.realpath/old.js | 303 + wrt/node_modules/fs.realpath/package.json | 61 + wrt/node_modules/fstream/.npmignore | 5 + wrt/node_modules/fstream/.travis.yml | 3 + wrt/node_modules/fstream/LICENSE | 27 + wrt/node_modules/fstream/README.md | 76 + wrt/node_modules/fstream/examples/filter-pipe.js | 131 + wrt/node_modules/fstream/examples/pipe.js | 115 + wrt/node_modules/fstream/examples/reader.js | 54 + wrt/node_modules/fstream/examples/symlink-write.js | 24 + wrt/node_modules/fstream/fstream.js | 31 + wrt/node_modules/fstream/lib/abstract.js | 85 + wrt/node_modules/fstream/lib/collect.js | 67 + wrt/node_modules/fstream/lib/dir-reader.js | 251 + wrt/node_modules/fstream/lib/dir-writer.js | 171 + wrt/node_modules/fstream/lib/file-reader.js | 147 + wrt/node_modules/fstream/lib/file-writer.js | 104 + wrt/node_modules/fstream/lib/get-type.js | 32 + wrt/node_modules/fstream/lib/link-reader.js | 54 + wrt/node_modules/fstream/lib/link-writer.js | 95 + wrt/node_modules/fstream/lib/proxy-reader.js | 93 + wrt/node_modules/fstream/lib/proxy-writer.js | 109 + wrt/node_modules/fstream/lib/reader.js | 262 + wrt/node_modules/fstream/lib/socket-reader.js | 38 + wrt/node_modules/fstream/lib/writer.js | 389 ++ wrt/node_modules/fstream/package.json | 90 + wrt/node_modules/glob/LICENSE | 15 + wrt/node_modules/glob/README.md | 359 + wrt/node_modules/glob/common.js | 226 + wrt/node_modules/glob/glob.js | 765 +++ wrt/node_modules/glob/package.json | 106 + wrt/node_modules/glob/sync.js | 460 ++ wrt/node_modules/graceful-fs/.npmignore | 3 + wrt/node_modules/graceful-fs/.travis.yml | 7 + wrt/node_modules/graceful-fs/LICENSE | 15 + wrt/node_modules/graceful-fs/README.md | 36 + wrt/node_modules/graceful-fs/fs.js | 1 + wrt/node_modules/graceful-fs/graceful-fs.js | 158 + wrt/node_modules/graceful-fs/package.json | 112 + wrt/node_modules/graceful-fs/polyfills.js | 255 + wrt/node_modules/graceful-fs/test/max-open.js | 69 + wrt/node_modules/graceful-fs/test/open.js | 39 + wrt/node_modules/graceful-fs/test/readdir-sort.js | 20 + .../graceful-fs/test/write-then-read.js | 47 + wrt/node_modules/has-binary2/History.md | 39 + wrt/node_modules/has-binary2/LICENSE | 20 + wrt/node_modules/has-binary2/README.md | 4 + wrt/node_modules/has-binary2/index.js | 62 + .../has-binary2/node_modules/isarray/README.md | 54 + .../has-binary2/node_modules/isarray/index.js | 5 + .../has-binary2/node_modules/isarray/package.json | 111 + wrt/node_modules/has-binary2/package.json | 85 + wrt/node_modules/has-color/index.js | 32 + wrt/node_modules/has-color/package.json | 105 + wrt/node_modules/has-color/readme.md | 30 + wrt/node_modules/has-cors/.npmignore | 3 + wrt/node_modules/has-cors/History.md | 21 + wrt/node_modules/has-cors/Makefile | 11 + wrt/node_modules/has-cors/Readme.md | 24 + wrt/node_modules/has-cors/component.json | 13 + wrt/node_modules/has-cors/index.js | 17 + wrt/node_modules/has-cors/package.json | 97 + wrt/node_modules/has-cors/test.js | 24 + wrt/node_modules/has-flag/index.js | 10 + wrt/node_modules/has-flag/license | 21 + wrt/node_modules/has-flag/package.json | 116 + wrt/node_modules/has-flag/readme.md | 67 + wrt/node_modules/http-errors/HISTORY.md | 124 + wrt/node_modules/http-errors/LICENSE | 23 + wrt/node_modules/http-errors/README.md | 135 + wrt/node_modules/http-errors/index.js | 260 + wrt/node_modules/http-errors/package.json | 133 + wrt/node_modules/indexof/.npmignore | 2 + wrt/node_modules/indexof/Makefile | 11 + wrt/node_modules/indexof/Readme.md | 15 + wrt/node_modules/indexof/component.json | 10 + wrt/node_modules/indexof/index.js | 10 + wrt/node_modules/indexof/package.json | 67 + wrt/node_modules/inflight/LICENSE | 15 + wrt/node_modules/inflight/README.md | 37 + wrt/node_modules/inflight/inflight.js | 54 + wrt/node_modules/inflight/package.json | 62 + wrt/node_modules/inherits/LICENSE | 16 + wrt/node_modules/inherits/README.md | 42 + wrt/node_modules/inherits/inherits.js | 7 + wrt/node_modules/inherits/inherits_browser.js | 23 + wrt/node_modules/inherits/package.json | 72 + wrt/node_modules/ipaddr.js/.npmignore | 2 + wrt/node_modules/ipaddr.js/.travis.yml | 10 + wrt/node_modules/ipaddr.js/Cakefile | 18 + wrt/node_modules/ipaddr.js/LICENSE | 19 + wrt/node_modules/ipaddr.js/README.md | 227 + wrt/node_modules/ipaddr.js/bower.json | 29 + wrt/node_modules/ipaddr.js/ipaddr.min.js | 1 + wrt/node_modules/ipaddr.js/lib/ipaddr.js | 586 ++ wrt/node_modules/ipaddr.js/package.json | 97 + wrt/node_modules/ipaddr.js/src/ipaddr.coffee | 504 ++ wrt/node_modules/ipaddr.js/src/ipaddr.js | 586 ++ wrt/node_modules/ipaddr.js/test/ipaddr.js | 424 ++ wrt/node_modules/ipaddr.js/test/ipaddr.test.coffee | 391 ++ wrt/node_modules/is-buffer/.npmignore | 2 + wrt/node_modules/is-buffer/LICENSE | 21 + wrt/node_modules/is-buffer/README.md | 49 + wrt/node_modules/is-buffer/index.js | 21 + wrt/node_modules/is-buffer/package.json | 77 + wrt/node_modules/is-buffer/test/basic.js | 25 + wrt/node_modules/isarray/README.md | 54 + wrt/node_modules/isarray/build/build.js | 209 + wrt/node_modules/isarray/component.json | 19 + wrt/node_modules/isarray/index.js | 3 + wrt/node_modules/isarray/package.json | 86 + wrt/node_modules/kind-of/LICENSE | 21 + wrt/node_modules/kind-of/README.md | 261 + wrt/node_modules/kind-of/index.js | 116 + wrt/node_modules/kind-of/package.json | 139 + wrt/node_modules/lazy-cache/LICENSE | 21 + wrt/node_modules/lazy-cache/README.md | 147 + wrt/node_modules/lazy-cache/index.js | 67 + wrt/node_modules/lazy-cache/package.json | 89 + wrt/node_modules/longest/LICENSE | 21 + wrt/node_modules/longest/README.md | 65 + wrt/node_modules/longest/index.js | 37 + wrt/node_modules/longest/package.json | 68 + wrt/node_modules/match-stream/.idea/.name | 1 + wrt/node_modules/match-stream/.idea/encodings.xml | 5 + .../match-stream/.idea/jsLibraryMappings.xml | 7 + .../match-stream/.idea/match-stream.iml | 10 + wrt/node_modules/match-stream/.idea/misc.xml | 5 + wrt/node_modules/match-stream/.idea/modules.xml | 9 + .../match-stream/.idea/scopes/scope_settings.xml | 5 + wrt/node_modules/match-stream/.idea/vcs.xml | 8 + wrt/node_modules/match-stream/.idea/workspace.xml | 434 ++ wrt/node_modules/match-stream/.travis.yml | 5 + wrt/node_modules/match-stream/LICENSE | 22 + wrt/node_modules/match-stream/README.md | 75 + wrt/node_modules/match-stream/examples/lorem.txt | 1 + wrt/node_modules/match-stream/examples/split.js | 32 + wrt/node_modules/match-stream/examples/until.js | 26 + wrt/node_modules/match-stream/match.js | 60 + wrt/node_modules/match-stream/package.json | 94 + wrt/node_modules/match-stream/test/split.js | 64 + wrt/node_modules/match-stream/test/until.js | 30 + wrt/node_modules/media-typer/HISTORY.md | 22 + wrt/node_modules/media-typer/LICENSE | 22 + wrt/node_modules/media-typer/README.md | 81 + wrt/node_modules/media-typer/index.js | 270 + wrt/node_modules/media-typer/package.json | 92 + wrt/node_modules/merge-descriptors/HISTORY.md | 21 + wrt/node_modules/merge-descriptors/LICENSE | 23 + wrt/node_modules/merge-descriptors/README.md | 48 + wrt/node_modules/merge-descriptors/index.js | 60 + wrt/node_modules/merge-descriptors/package.json | 172 + wrt/node_modules/merge/.npmignore | 1 + wrt/node_modules/merge/LICENSE | 21 + wrt/node_modules/merge/README.md | 58 + wrt/node_modules/merge/bower.json | 22 + wrt/node_modules/merge/merge.js | 175 + wrt/node_modules/merge/merge.min.js | 3 + wrt/node_modules/merge/package.json | 87 + wrt/node_modules/methods/HISTORY.md | 29 + wrt/node_modules/methods/LICENSE | 24 + wrt/node_modules/methods/README.md | 51 + wrt/node_modules/methods/index.js | 69 + wrt/node_modules/methods/package.json | 122 + wrt/node_modules/mime-db/HISTORY.md | 343 + wrt/node_modules/mime-db/LICENSE | 22 + wrt/node_modules/mime-db/README.md | 94 + wrt/node_modules/mime-db/db.json | 6966 ++++++++++++++++++++ wrt/node_modules/mime-db/index.js | 11 + wrt/node_modules/mime-db/package.json | 140 + wrt/node_modules/mime-types/HISTORY.md | 247 + wrt/node_modules/mime-types/LICENSE | 23 + wrt/node_modules/mime-types/README.md | 108 + wrt/node_modules/mime-types/index.js | 188 + wrt/node_modules/mime-types/package.json | 129 + wrt/node_modules/mime/.npmignore | 0 wrt/node_modules/mime/LICENSE | 19 + wrt/node_modules/mime/README.md | 90 + wrt/node_modules/mime/build/build.js | 11 + wrt/node_modules/mime/build/test.js | 57 + wrt/node_modules/mime/cli.js | 8 + wrt/node_modules/mime/mime.js | 108 + wrt/node_modules/mime/package.json | 106 + wrt/node_modules/mime/types.json | 1 + wrt/node_modules/minimatch/LICENSE | 15 + wrt/node_modules/minimatch/README.md | 209 + wrt/node_modules/minimatch/minimatch.js | 923 +++ wrt/node_modules/minimatch/package.json | 67 + wrt/node_modules/minimist/.travis.yml | 4 + wrt/node_modules/minimist/LICENSE | 18 + wrt/node_modules/minimist/example/parse.js | 2 + wrt/node_modules/minimist/index.js | 187 + wrt/node_modules/minimist/package.json | 72 + wrt/node_modules/minimist/readme.markdown | 73 + wrt/node_modules/minimist/test/dash.js | 24 + wrt/node_modules/minimist/test/default_bool.js | 20 + wrt/node_modules/minimist/test/dotted.js | 16 + wrt/node_modules/minimist/test/long.js | 31 + wrt/node_modules/minimist/test/parse.js | 318 + wrt/node_modules/minimist/test/parse_modified.js | 9 + wrt/node_modules/minimist/test/short.js | 67 + wrt/node_modules/minimist/test/whitespace.js | 8 + wrt/node_modules/mkdirp/.travis.yml | 8 + wrt/node_modules/mkdirp/LICENSE | 21 + wrt/node_modules/mkdirp/examples/pow.js | 6 + wrt/node_modules/mkdirp/index.js | 98 + wrt/node_modules/mkdirp/package.json | 67 + wrt/node_modules/mkdirp/readme.markdown | 100 + wrt/node_modules/mkdirp/test/chmod.js | 41 + wrt/node_modules/mkdirp/test/clobber.js | 38 + wrt/node_modules/mkdirp/test/mkdirp.js | 28 + wrt/node_modules/mkdirp/test/opts_fs.js | 29 + wrt/node_modules/mkdirp/test/opts_fs_sync.js | 27 + wrt/node_modules/mkdirp/test/perm.js | 32 + wrt/node_modules/mkdirp/test/perm_sync.js | 36 + wrt/node_modules/mkdirp/test/race.js | 37 + wrt/node_modules/mkdirp/test/rel.js | 32 + wrt/node_modules/mkdirp/test/return.js | 25 + wrt/node_modules/mkdirp/test/return_sync.js | 24 + wrt/node_modules/mkdirp/test/root.js | 19 + wrt/node_modules/mkdirp/test/sync.js | 32 + wrt/node_modules/mkdirp/test/umask.js | 28 + wrt/node_modules/mkdirp/test/umask_sync.js | 32 + wrt/node_modules/ms/index.js | 152 + wrt/node_modules/ms/license.md | 21 + wrt/node_modules/ms/package.json | 109 + wrt/node_modules/ms/readme.md | 51 + wrt/node_modules/mv/.npmignore | 1 + wrt/node_modules/mv/.travis.yml | 4 + wrt/node_modules/mv/LICENSE | 21 + wrt/node_modules/mv/README.md | 33 + wrt/node_modules/mv/index.js | 105 + wrt/node_modules/mv/node_modules/.bin/rimraf | 1 + wrt/node_modules/mv/node_modules/rimraf/LICENSE | 15 + wrt/node_modules/mv/node_modules/rimraf/README.md | 43 + wrt/node_modules/mv/node_modules/rimraf/bin.js | 40 + .../mv/node_modules/rimraf/package.json | 95 + wrt/node_modules/mv/node_modules/rimraf/rimraf.js | 333 + wrt/node_modules/mv/package.json | 100 + wrt/node_modules/mv/test/a-file | 1 + wrt/node_modules/mv/test/a-folder/another-file | 1 + .../mv/test/a-folder/another-folder/file3 | 1 + wrt/node_modules/mv/test/test.js | 151 + wrt/node_modules/natives/README.md | 64 + wrt/node_modules/natives/index.js | 115 + wrt/node_modules/natives/package.json | 90 + wrt/node_modules/ncp/.npmignore | 4 + wrt/node_modules/ncp/.travis.yml | 6 + wrt/node_modules/ncp/LICENSE.md | 21 + wrt/node_modules/ncp/README.md | 63 + wrt/node_modules/ncp/bin/ncp | 48 + wrt/node_modules/ncp/lib/ncp.js | 261 + wrt/node_modules/ncp/package.json | 98 + wrt/node_modules/ncp/test/modified-files/out/a | 1 + wrt/node_modules/ncp/test/modified-files/src/a | 1 + wrt/node_modules/ncp/test/ncp.js | 197 + wrt/node_modules/ncp/test/regular-fixtures/src/a | 1 + wrt/node_modules/ncp/test/regular-fixtures/src/b | 1 + wrt/node_modules/ncp/test/regular-fixtures/src/c | 0 wrt/node_modules/ncp/test/regular-fixtures/src/d | 0 wrt/node_modules/ncp/test/regular-fixtures/src/e | 0 wrt/node_modules/ncp/test/regular-fixtures/src/f | 0 .../ncp/test/regular-fixtures/src/sub/a | 1 + .../ncp/test/regular-fixtures/src/sub/b | 0 .../ncp/test/symlink-fixtures/src/dir/bar | 1 + wrt/node_modules/ncp/test/symlink-fixtures/src/foo | 1 + wrt/node_modules/negotiator/HISTORY.md | 98 + wrt/node_modules/negotiator/LICENSE | 24 + wrt/node_modules/negotiator/README.md | 203 + wrt/node_modules/negotiator/index.js | 124 + wrt/node_modules/negotiator/lib/charset.js | 169 + wrt/node_modules/negotiator/lib/encoding.js | 184 + wrt/node_modules/negotiator/lib/language.js | 179 + wrt/node_modules/negotiator/lib/mediaType.js | 294 + wrt/node_modules/negotiator/package.json | 125 + wrt/node_modules/node-constants/.npmignore | 2 + wrt/node_modules/node-constants/LICENSE | 18 + wrt/node_modules/node-constants/README.md | 30 + wrt/node_modules/node-constants/examples/define.js | 27 + .../node-constants/examples/definer.js | 28 + .../node-constants/examples/not_exports.js | 16 + .../node-constants/examples/quick_definer.js | 20 + wrt/node_modules/node-constants/index.js | 1 + wrt/node_modules/node-constants/lib/index.js | 56 + wrt/node_modules/node-constants/package.json | 87 + wrt/node_modules/node-constants/test/main.js | 53 + wrt/node_modules/node-constants/test/mocha.opts | 2 + wrt/node_modules/node-uuid/.npmignore | 4 + wrt/node_modules/node-uuid/LICENSE.md | 21 + wrt/node_modules/node-uuid/README.md | 8 + wrt/node_modules/node-uuid/benchmark/README.md | 53 + wrt/node_modules/node-uuid/benchmark/bench.gnu | 174 + wrt/node_modules/node-uuid/benchmark/bench.sh | 34 + .../node-uuid/benchmark/benchmark-native.c | 34 + wrt/node_modules/node-uuid/benchmark/benchmark.js | 84 + wrt/node_modules/node-uuid/bin/uuid | 26 + wrt/node_modules/node-uuid/bower.json | 23 + wrt/node_modules/node-uuid/component.json | 25 + wrt/node_modules/node-uuid/lib/sha1-browser.js | 120 + wrt/node_modules/node-uuid/package.json | 118 + wrt/node_modules/node-uuid/test/compare_v1.js | 63 + wrt/node_modules/node-uuid/test/test.html | 17 + wrt/node_modules/node-uuid/test/test.js | 231 + wrt/node_modules/node-uuid/uuid.js | 272 + wrt/node_modules/node-uuid/v3.js | 54 + wrt/node_modules/object-assign/index.js | 90 + wrt/node_modules/object-assign/license | 21 + wrt/node_modules/object-assign/package.json | 118 + wrt/node_modules/object-assign/readme.md | 61 + wrt/node_modules/object-component/.npmignore | 3 + wrt/node_modules/object-component/History.md | 10 + wrt/node_modules/object-component/Makefile | 16 + wrt/node_modules/object-component/Readme.md | 31 + wrt/node_modules/object-component/component.json | 10 + wrt/node_modules/object-component/index.js | 84 + wrt/node_modules/object-component/package.json | 69 + wrt/node_modules/object-component/test/object.js | 48 + wrt/node_modules/on-finished/HISTORY.md | 88 + wrt/node_modules/on-finished/LICENSE | 23 + wrt/node_modules/on-finished/README.md | 154 + wrt/node_modules/on-finished/index.js | 196 + wrt/node_modules/on-finished/package.json | 106 + wrt/node_modules/once/LICENSE | 15 + wrt/node_modules/once/README.md | 79 + wrt/node_modules/once/once.js | 42 + wrt/node_modules/once/package.json | 71 + wrt/node_modules/over/.npmignore | 3 + wrt/node_modules/over/README.md | 112 + wrt/node_modules/over/overload.js | 236 + wrt/node_modules/over/package.json | 82 + wrt/node_modules/over/test/defFunctionsTest.js | 89 + wrt/node_modules/over/test/overloadTest.js | 295 + wrt/node_modules/parsejson/.npmignore | 2 + wrt/node_modules/parsejson/LICENSE | 21 + wrt/node_modules/parsejson/Makefile | 3 + wrt/node_modules/parsejson/README.md | 2 + wrt/node_modules/parsejson/index.js | 32 + wrt/node_modules/parsejson/package.json | 87 + wrt/node_modules/parsejson/test.js | 21 + wrt/node_modules/parseqs/.npmignore | 3 + wrt/node_modules/parseqs/LICENSE | 21 + wrt/node_modules/parseqs/Makefile | 3 + wrt/node_modules/parseqs/README.md | 1 + wrt/node_modules/parseqs/index.js | 37 + wrt/node_modules/parseqs/package.json | 88 + wrt/node_modules/parseqs/test.js | 27 + wrt/node_modules/parseuri/.npmignore | 2 + wrt/node_modules/parseuri/History.md | 5 + wrt/node_modules/parseuri/LICENSE | 21 + wrt/node_modules/parseuri/Makefile | 3 + wrt/node_modules/parseuri/README.md | 2 + wrt/node_modules/parseuri/index.js | 39 + wrt/node_modules/parseuri/package.json | 86 + wrt/node_modules/parseuri/test.js | 51 + wrt/node_modules/parseurl/HISTORY.md | 53 + wrt/node_modules/parseurl/LICENSE | 24 + wrt/node_modules/parseurl/README.md | 124 + wrt/node_modules/parseurl/index.js | 154 + wrt/node_modules/parseurl/package.json | 117 + wrt/node_modules/path-is-absolute/index.js | 20 + wrt/node_modules/path-is-absolute/license | 21 + wrt/node_modules/path-is-absolute/package.json | 79 + wrt/node_modules/path-is-absolute/readme.md | 59 + wrt/node_modules/path-to-regexp/History.md | 36 + wrt/node_modules/path-to-regexp/LICENSE | 21 + wrt/node_modules/path-to-regexp/Readme.md | 35 + wrt/node_modules/path-to-regexp/index.js | 129 + wrt/node_modules/path-to-regexp/package.json | 219 + wrt/node_modules/proxy-addr/HISTORY.md | 115 + wrt/node_modules/proxy-addr/LICENSE | 22 + wrt/node_modules/proxy-addr/README.md | 140 + wrt/node_modules/proxy-addr/index.js | 327 + wrt/node_modules/proxy-addr/package.json | 108 + wrt/node_modules/pullstream/.npmignore | 8 + wrt/node_modules/pullstream/.travis.yml | 5 + wrt/node_modules/pullstream/.vimrc | 2 + wrt/node_modules/pullstream/LICENSE | 20 + wrt/node_modules/pullstream/README.md | 214 + .../pullstream/examples/loremIpsum.txt | 9 + .../pullstream/examples/pullFromFile.js | 18 + wrt/node_modules/pullstream/package.json | 92 + wrt/node_modules/pullstream/pullstream.js | 137 + wrt/node_modules/pullstream/test/pullStreamTest.js | 430 ++ wrt/node_modules/pullstream/test/testFile.txt | 1 + wrt/node_modules/qs/.editorconfig | 30 + wrt/node_modules/qs/.eslintignore | 1 + wrt/node_modules/qs/.eslintrc | 18 + wrt/node_modules/qs/CHANGELOG.md | 212 + wrt/node_modules/qs/LICENSE | 28 + wrt/node_modules/qs/README.md | 475 ++ wrt/node_modules/qs/dist/qs.js | 615 ++ wrt/node_modules/qs/lib/formats.js | 18 + wrt/node_modules/qs/lib/index.js | 11 + wrt/node_modules/qs/lib/parse.js | 172 + wrt/node_modules/qs/lib/stringify.js | 210 + wrt/node_modules/qs/lib/utils.js | 192 + wrt/node_modules/qs/package.json | 123 + wrt/node_modules/qs/test/.eslintrc | 11 + wrt/node_modules/qs/test/index.js | 7 + wrt/node_modules/qs/test/parse.js | 546 ++ wrt/node_modules/qs/test/stringify.js | 596 ++ wrt/node_modules/qs/test/utils.js | 34 + wrt/node_modules/range-parser/HISTORY.md | 51 + wrt/node_modules/range-parser/LICENSE | 23 + wrt/node_modules/range-parser/README.md | 75 + wrt/node_modules/range-parser/index.js | 158 + wrt/node_modules/range-parser/package.json | 134 + wrt/node_modules/readable-stream/.npmignore | 5 + wrt/node_modules/readable-stream/LICENSE | 18 + wrt/node_modules/readable-stream/README.md | 15 + wrt/node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 89 + .../readable-stream/lib/_stream_passthrough.js | 46 + .../readable-stream/lib/_stream_readable.js | 982 +++ .../readable-stream/lib/_stream_transform.js | 210 + .../readable-stream/lib/_stream_writable.js | 386 ++ wrt/node_modules/readable-stream/package.json | 115 + wrt/node_modules/readable-stream/passthrough.js | 1 + wrt/node_modules/readable-stream/readable.js | 11 + wrt/node_modules/readable-stream/transform.js | 1 + wrt/node_modules/readable-stream/writable.js | 1 + wrt/node_modules/repeat-string/LICENSE | 21 + wrt/node_modules/repeat-string/README.md | 136 + wrt/node_modules/repeat-string/index.js | 70 + wrt/node_modules/repeat-string/package.json | 128 + wrt/node_modules/right-align/LICENSE | 21 + wrt/node_modules/right-align/README.md | 77 + wrt/node_modules/right-align/index.js | 16 + wrt/node_modules/right-align/package.json | 70 + wrt/node_modules/rimraf/LICENSE | 15 + wrt/node_modules/rimraf/README.md | 101 + wrt/node_modules/rimraf/bin.js | 50 + wrt/node_modules/rimraf/node_modules/glob/LICENSE | 15 + .../rimraf/node_modules/glob/README.md | 368 ++ .../rimraf/node_modules/glob/changelog.md | 67 + .../rimraf/node_modules/glob/common.js | 240 + wrt/node_modules/rimraf/node_modules/glob/glob.js | 790 +++ .../rimraf/node_modules/glob/package.json | 76 + wrt/node_modules/rimraf/node_modules/glob/sync.js | 486 ++ wrt/node_modules/rimraf/package.json | 107 + wrt/node_modules/rimraf/rimraf.js | 363 + wrt/node_modules/run-series/.travis.yml | 7 + wrt/node_modules/run-series/.zuul.yml | 16 + wrt/node_modules/run-series/LICENSE | 20 + wrt/node_modules/run-series/README.md | 76 + wrt/node_modules/run-series/img.png | Bin 0 -> 90658 bytes wrt/node_modules/run-series/index.js | 24 + wrt/node_modules/run-series/package.json | 98 + wrt/node_modules/run-series/test/basic.js | 71 + wrt/node_modules/run-series/test/empty-array.js | 16 + wrt/node_modules/run-series/test/error.js | 23 + wrt/node_modules/run-series/test/no-callback.js | 19 + wrt/node_modules/safe-buffer/.travis.yml | 7 + wrt/node_modules/safe-buffer/LICENSE | 21 + wrt/node_modules/safe-buffer/README.md | 581 ++ wrt/node_modules/safe-buffer/browser.js | 1 + wrt/node_modules/safe-buffer/index.js | 58 + wrt/node_modules/safe-buffer/package.json | 103 + wrt/node_modules/safe-buffer/test.js | 99 + wrt/node_modules/sax/LICENSE | 41 + wrt/node_modules/sax/README.md | 225 + wrt/node_modules/sax/lib/sax.js | 1565 +++++ wrt/node_modules/sax/package.json | 136 + wrt/node_modules/send/HISTORY.md | 420 ++ wrt/node_modules/send/LICENSE | 23 + wrt/node_modules/send/README.md | 301 + wrt/node_modules/send/index.js | 1074 +++ .../send/node_modules/debug/.coveralls.yml | 1 + wrt/node_modules/send/node_modules/debug/.eslintrc | 11 + .../send/node_modules/debug/.npmignore | 9 + .../send/node_modules/debug/.travis.yml | 14 + .../send/node_modules/debug/CHANGELOG.md | 357 + wrt/node_modules/send/node_modules/debug/LICENSE | 19 + wrt/node_modules/send/node_modules/debug/Makefile | 50 + wrt/node_modules/send/node_modules/debug/README.md | 312 + .../send/node_modules/debug/component.json | 19 + .../send/node_modules/debug/karma.conf.js | 70 + wrt/node_modules/send/node_modules/debug/node.js | 1 + .../send/node_modules/debug/package.json | 136 + .../send/node_modules/debug/src/browser.js | 185 + .../send/node_modules/debug/src/debug.js | 202 + .../send/node_modules/debug/src/index.js | 10 + .../send/node_modules/debug/src/node.js | 246 + wrt/node_modules/send/package.json | 141 + wrt/node_modules/serve-static/HISTORY.md | 385 ++ wrt/node_modules/serve-static/LICENSE | 25 + wrt/node_modules/serve-static/README.md | 253 + wrt/node_modules/serve-static/index.js | 209 + wrt/node_modules/serve-static/package.json | 110 + wrt/node_modules/setimmediate/LICENSE.txt | 20 + wrt/node_modules/setimmediate/package.json | 111 + wrt/node_modules/setimmediate/setImmediate.js | 186 + wrt/node_modules/setprototypeof/LICENSE | 13 + wrt/node_modules/setprototypeof/README.md | 21 + wrt/node_modules/setprototypeof/index.js | 15 + wrt/node_modules/setprototypeof/package.json | 89 + wrt/node_modules/slice-stream/.travis.yml | 6 + wrt/node_modules/slice-stream/LICENSE | 22 + wrt/node_modules/slice-stream/README.md | 47 + wrt/node_modules/slice-stream/examples/until.js | 26 + wrt/node_modules/slice-stream/package.json | 94 + wrt/node_modules/slice-stream/slicestream.js | 34 + wrt/node_modules/slice-stream/test/until.js | 30 + wrt/node_modules/socket.io-adapter/.npmignore | 1 + wrt/node_modules/socket.io-adapter/LICENSE | 20 + wrt/node_modules/socket.io-adapter/Readme.md | 16 + wrt/node_modules/socket.io-adapter/index.js | 263 + wrt/node_modules/socket.io-adapter/package.json | 81 + wrt/node_modules/socket.io-client/History.md | 561 ++ wrt/node_modules/socket.io-client/LICENSE | 22 + wrt/node_modules/socket.io-client/README.md | 50 + .../socket.io-client/dist/socket.io.js | 3 + .../socket.io-client/dist/socket.io.js.map | 1 + .../socket.io-client/dist/socket.io.slim.js | 3 + .../socket.io-client/dist/socket.io.slim.js.map | 1 + wrt/node_modules/socket.io-client/lib/index.js | 94 + wrt/node_modules/socket.io-client/lib/manager.js | 573 ++ wrt/node_modules/socket.io-client/lib/on.js | 24 + wrt/node_modules/socket.io-client/lib/socket.js | 418 ++ wrt/node_modules/socket.io-client/lib/url.js | 75 + .../node_modules/debug/.coveralls.yml | 1 + .../socket.io-client/node_modules/debug/.eslintrc | 11 + .../socket.io-client/node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../socket.io-client/node_modules/debug/LICENSE | 19 + .../socket.io-client/node_modules/debug/Makefile | 50 + .../socket.io-client/node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../socket.io-client/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 148 + .../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 + wrt/node_modules/socket.io-client/package.json | 156 + wrt/node_modules/socket.io-parser/History.md | 160 + wrt/node_modules/socket.io-parser/LICENSE | 20 + wrt/node_modules/socket.io-parser/Readme.md | 73 + wrt/node_modules/socket.io-parser/binary.js | 141 + wrt/node_modules/socket.io-parser/index.js | 400 ++ wrt/node_modules/socket.io-parser/is-buffer.js | 13 + .../node_modules/debug/.coveralls.yml | 1 + .../socket.io-parser/node_modules/debug/.eslintrc | 11 + .../socket.io-parser/node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../socket.io-parser/node_modules/debug/LICENSE | 19 + .../socket.io-parser/node_modules/debug/Makefile | 50 + .../socket.io-parser/node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../socket.io-parser/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 148 + .../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/isarray/README.md | 54 + .../socket.io-parser/node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 123 + wrt/node_modules/socket.io-parser/package.json | 103 + wrt/node_modules/socket.io/History.md | 720 ++ wrt/node_modules/socket.io/LICENSE | 22 + wrt/node_modules/socket.io/Readme.md | 242 + wrt/node_modules/socket.io/lib/client.js | 252 + wrt/node_modules/socket.io/lib/index.js | 474 ++ wrt/node_modules/socket.io/lib/namespace.js | 274 + wrt/node_modules/socket.io/lib/socket.js | 558 ++ .../socket.io/node_modules/debug/.coveralls.yml | 1 + .../socket.io/node_modules/debug/.eslintrc | 11 + .../socket.io/node_modules/debug/.npmignore | 9 + .../socket.io/node_modules/debug/.travis.yml | 14 + .../socket.io/node_modules/debug/CHANGELOG.md | 362 + .../socket.io/node_modules/debug/LICENSE | 19 + .../socket.io/node_modules/debug/Makefile | 50 + .../socket.io/node_modules/debug/README.md | 312 + .../socket.io/node_modules/debug/component.json | 19 + .../socket.io/node_modules/debug/karma.conf.js | 70 + .../socket.io/node_modules/debug/node.js | 1 + .../socket.io/node_modules/debug/package.json | 136 + .../socket.io/node_modules/debug/src/browser.js | 185 + .../socket.io/node_modules/debug/src/debug.js | 202 + .../socket.io/node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../socket.io/node_modules/debug/src/node.js | 248 + wrt/node_modules/socket.io/package.json | 136 + wrt/node_modules/sprintf-js/.editorconfig | 14 + wrt/node_modules/sprintf-js/.eslintignore | 2 + wrt/node_modules/sprintf-js/.eslintrc.js | 17 + wrt/node_modules/sprintf-js/.npmignore | 1 + wrt/node_modules/sprintf-js/.travis.yml | 3 + wrt/node_modules/sprintf-js/CHANGELOG.md | 7 + wrt/node_modules/sprintf-js/CONTRIBUTORS | 24 + wrt/node_modules/sprintf-js/LICENSE | 24 + wrt/node_modules/sprintf-js/README.md | 109 + wrt/node_modules/sprintf-js/benchmark/benchmark.js | 23 + wrt/node_modules/sprintf-js/bower.json | 18 + wrt/node_modules/sprintf-js/demo/angular.html | 20 + wrt/node_modules/sprintf-js/dist/.gitattributes | 4 + .../sprintf-js/dist/angular-sprintf.min.js | 3 + .../sprintf-js/dist/angular-sprintf.min.js.map | 1 + wrt/node_modules/sprintf-js/dist/sprintf.min.js | 3 + .../sprintf-js/dist/sprintf.min.js.map | 1 + wrt/node_modules/sprintf-js/gulpfile.js | 45 + wrt/node_modules/sprintf-js/package.json | 99 + wrt/node_modules/sprintf-js/src/angular-sprintf.js | 24 + wrt/node_modules/sprintf-js/src/sprintf.js | 218 + wrt/node_modules/sprintf-js/test/test.js | 112 + .../sprintf-js/test/test_validation.js | 60 + wrt/node_modules/statuses/HISTORY.md | 55 + wrt/node_modules/statuses/LICENSE | 23 + wrt/node_modules/statuses/README.md | 103 + wrt/node_modules/statuses/codes.json | 65 + wrt/node_modules/statuses/index.js | 110 + wrt/node_modules/statuses/package.json | 141 + wrt/node_modules/string_decoder/.npmignore | 2 + wrt/node_modules/string_decoder/LICENSE | 20 + wrt/node_modules/string_decoder/README.md | 7 + wrt/node_modules/string_decoder/index.js | 221 + wrt/node_modules/string_decoder/package.json | 87 + wrt/node_modules/strip-ansi/cli.js | 27 + wrt/node_modules/strip-ansi/index.js | 4 + wrt/node_modules/strip-ansi/package.json | 115 + wrt/node_modules/strip-ansi/readme.md | 46 + wrt/node_modules/supports-color/browser.js | 2 + wrt/node_modules/supports-color/index.js | 115 + wrt/node_modules/supports-color/license | 9 + wrt/node_modules/supports-color/package.json | 125 + wrt/node_modules/supports-color/readme.md | 66 + wrt/node_modules/to-array/.npmignore | 3 + wrt/node_modules/to-array/LICENCE | 19 + wrt/node_modules/to-array/README.md | 22 + wrt/node_modules/to-array/index.js | 13 + wrt/node_modules/to-array/package.json | 98 + wrt/node_modules/traverse/.npmignore | 1 + wrt/node_modules/traverse/LICENSE | 24 + wrt/node_modules/traverse/README.markdown | 247 + wrt/node_modules/traverse/examples/json.js | 16 + wrt/node_modules/traverse/examples/leaves.js | 15 + wrt/node_modules/traverse/examples/negative.js | 8 + wrt/node_modules/traverse/examples/stringify.js | 38 + wrt/node_modules/traverse/index.js | 322 + wrt/node_modules/traverse/package.json | 75 + wrt/node_modules/traverse/test/circular.js | 114 + wrt/node_modules/traverse/test/date.js | 35 + wrt/node_modules/traverse/test/equal.js | 219 + wrt/node_modules/traverse/test/instance.js | 17 + wrt/node_modules/traverse/test/interface.js | 42 + wrt/node_modules/traverse/test/json.js | 47 + wrt/node_modules/traverse/test/leaves.js | 21 + wrt/node_modules/traverse/test/mutability.js | 203 + wrt/node_modules/traverse/test/negative.js | 20 + wrt/node_modules/traverse/test/obj.js | 15 + wrt/node_modules/traverse/test/stop.js | 41 + wrt/node_modules/traverse/test/stringify.js | 36 + wrt/node_modules/traverse/test/super_deep.js | 54 + wrt/node_modules/type-is/HISTORY.md | 218 + wrt/node_modules/type-is/LICENSE | 23 + wrt/node_modules/type-is/README.md | 146 + wrt/node_modules/type-is/index.js | 262 + wrt/node_modules/type-is/package.json | 121 + wrt/node_modules/ultron/LICENSE | 22 + wrt/node_modules/ultron/index.js | 138 + wrt/node_modules/ultron/package.json | 112 + wrt/node_modules/underscore-plus/LICENSE.md | 20 + wrt/node_modules/underscore-plus/README.md | 14 + .../underscore-plus/lib/underscore-plus.js | 522 ++ wrt/node_modules/underscore-plus/package.json | 66 + wrt/node_modules/underscore.string/.editorconfig | 9 + wrt/node_modules/underscore.string/.eslintignore | 8 + wrt/node_modules/underscore.string/.eslintrc | 26 + wrt/node_modules/underscore.string/.npmignore | 4 + wrt/node_modules/underscore.string/.travis.yml | 4 + .../underscore.string/CHANGELOG.markdown | 200 + .../underscore.string/CONTRIBUTING.markdown | 32 + wrt/node_modules/underscore.string/README.markdown | 888 +++ wrt/node_modules/underscore.string/bower.json | 34 + wrt/node_modules/underscore.string/camelize.js | 14 + wrt/node_modules/underscore.string/capitalize.js | 8 + wrt/node_modules/underscore.string/chars.js | 5 + wrt/node_modules/underscore.string/chop.js | 6 + wrt/node_modules/underscore.string/classify.js | 8 + wrt/node_modules/underscore.string/clean.js | 5 + .../underscore.string/cleanDiacritics.js | 22 + wrt/node_modules/underscore.string/component.json | 16 + wrt/node_modules/underscore.string/count.js | 10 + wrt/node_modules/underscore.string/dasherize.js | 5 + wrt/node_modules/underscore.string/decapitalize.js | 6 + wrt/node_modules/underscore.string/dedent.js | 28 + .../underscore.string/dist/underscore.string.js | 1369 ++++ .../dist/underscore.string.min.js | 19 + wrt/node_modules/underscore.string/endsWith.js | 13 + wrt/node_modules/underscore.string/escapeHTML.js | 17 + wrt/node_modules/underscore.string/exports.js | 10 + .../underscore.string/helper/adjacent.js | 9 + .../helper/defaultToWhiteSpace.js | 10 + .../underscore.string/helper/escapeChars.js | 19 + .../underscore.string/helper/escapeRegExp.js | 5 + .../underscore.string/helper/htmlEntities.js | 19 + .../underscore.string/helper/makeString.js | 7 + .../underscore.string/helper/strRepeat.js | 9 + .../underscore.string/helper/toPositive.js | 3 + wrt/node_modules/underscore.string/humanize.js | 7 + wrt/node_modules/underscore.string/include.js | 6 + wrt/node_modules/underscore.string/index.js | 143 + wrt/node_modules/underscore.string/insert.js | 5 + wrt/node_modules/underscore.string/isBlank.js | 5 + wrt/node_modules/underscore.string/join.js | 9 + wrt/node_modules/underscore.string/levenshtein.js | 52 + wrt/node_modules/underscore.string/lines.js | 4 + wrt/node_modules/underscore.string/lpad.js | 5 + wrt/node_modules/underscore.string/lrpad.js | 5 + wrt/node_modules/underscore.string/ltrim.js | 10 + wrt/node_modules/underscore.string/map.js | 9 + wrt/node_modules/underscore.string/meteor-post.js | 2 + wrt/node_modules/underscore.string/meteor-pre.js | 6 + wrt/node_modules/underscore.string/naturalCmp.js | 29 + wrt/node_modules/underscore.string/numberFormat.js | 12 + wrt/node_modules/underscore.string/package.js | 16 + wrt/node_modules/underscore.string/package.json | 177 + wrt/node_modules/underscore.string/pad.js | 26 + wrt/node_modules/underscore.string/pred.js | 5 + wrt/node_modules/underscore.string/prune.js | 27 + wrt/node_modules/underscore.string/quote.js | 5 + wrt/node_modules/underscore.string/repeat.js | 16 + wrt/node_modules/underscore.string/replaceAll.js | 8 + wrt/node_modules/underscore.string/reverse.js | 5 + wrt/node_modules/underscore.string/rpad.js | 5 + wrt/node_modules/underscore.string/rtrim.js | 10 + wrt/node_modules/underscore.string/slugify.js | 7 + wrt/node_modules/underscore.string/splice.js | 7 + wrt/node_modules/underscore.string/sprintf.js | 4 + wrt/node_modules/underscore.string/startsWith.js | 9 + wrt/node_modules/underscore.string/strLeft.js | 8 + wrt/node_modules/underscore.string/strLeftBack.js | 8 + wrt/node_modules/underscore.string/strRight.js | 8 + wrt/node_modules/underscore.string/strRightBack.js | 8 + wrt/node_modules/underscore.string/stripTags.js | 5 + wrt/node_modules/underscore.string/succ.js | 5 + wrt/node_modules/underscore.string/surround.js | 3 + wrt/node_modules/underscore.string/swapCase.js | 7 + wrt/node_modules/underscore.string/titleize.js | 7 + wrt/node_modules/underscore.string/toBoolean.js | 20 + wrt/node_modules/underscore.string/toNumber.js | 5 + wrt/node_modules/underscore.string/toSentence.js | 12 + .../underscore.string/toSentenceSerial.js | 5 + wrt/node_modules/underscore.string/trim.js | 10 + wrt/node_modules/underscore.string/truncate.js | 8 + wrt/node_modules/underscore.string/underscored.js | 5 + wrt/node_modules/underscore.string/unescapeHTML.js | 20 + wrt/node_modules/underscore.string/unquote.js | 6 + wrt/node_modules/underscore.string/vsprintf.js | 4 + wrt/node_modules/underscore.string/words.js | 7 + wrt/node_modules/underscore.string/wrap.js | 102 + wrt/node_modules/underscore/LICENSE | 23 + wrt/node_modules/underscore/README.md | 22 + wrt/node_modules/underscore/package.json | 71 + wrt/node_modules/underscore/underscore-min.js | 6 + wrt/node_modules/underscore/underscore.js | 1343 ++++ wrt/node_modules/unpipe/HISTORY.md | 4 + wrt/node_modules/unpipe/LICENSE | 22 + wrt/node_modules/unpipe/README.md | 43 + wrt/node_modules/unpipe/index.js | 69 + wrt/node_modules/unpipe/package.json | 93 + wrt/node_modules/unzip/.npmignore | 2 + wrt/node_modules/unzip/.travis.yml | 6 + wrt/node_modules/unzip/LICENSE | 20 + wrt/node_modules/unzip/README.md | 81 + wrt/node_modules/unzip/lib/entry.js | 17 + wrt/node_modules/unzip/lib/extract.js | 56 + wrt/node_modules/unzip/lib/parse.js | 314 + wrt/node_modules/unzip/package.json | 107 + wrt/node_modules/unzip/test/compressed.js | 49 + wrt/node_modules/unzip/test/fileSizeUnknownFlag.js | 78 + wrt/node_modules/unzip/test/pipeSingleEntry.js | 29 + wrt/node_modules/unzip/test/uncompressed.js | 49 + .../testData/compressed-OSX-Finder/archive.zip | Bin 0 -> 1598 bytes .../inflated/dir/fileInsideDir.txt | 1 + .../compressed-OSX-Finder/inflated/file.txt | 11 + .../testData/compressed-flags-set/archive.zip | Bin 0 -> 1636 bytes .../inflated/dir/fileInsideDir.txt | 1 + .../compressed-flags-set/inflated/file.txt | 11 + .../unzip/testData/compressed-standard/archive.zip | Bin 0 -> 1636 bytes .../inflated/dir/fileInsideDir.txt | 1 + .../testData/compressed-standard/inflated/file.txt | 11 + .../unzip/testData/uncompressed/archive.zip | Bin 0 -> 489 bytes .../uncompressed/inflated/dir/fileInsideDir.txt | 1 + .../unzip/testData/uncompressed/inflated/file.txt | 1 + wrt/node_modules/unzip/unzip.js | 4 + wrt/node_modules/util-deprecate/History.md | 16 + wrt/node_modules/util-deprecate/LICENSE | 24 + wrt/node_modules/util-deprecate/README.md | 53 + wrt/node_modules/util-deprecate/browser.js | 67 + wrt/node_modules/util-deprecate/node.js | 6 + wrt/node_modules/util-deprecate/package.json | 89 + wrt/node_modules/utils-merge/.travis.yml | 6 + wrt/node_modules/utils-merge/LICENSE | 20 + wrt/node_modules/utils-merge/README.md | 34 + wrt/node_modules/utils-merge/index.js | 23 + wrt/node_modules/utils-merge/package.json | 93 + wrt/node_modules/uws/LICENSE | 17 + wrt/node_modules/uws/README.md | 32 + wrt/node_modules/uws/binding.gyp | 80 + wrt/node_modules/uws/build/Makefile | 329 + .../Release/obj.target/action_after_build.stamp.d | 1 + .../Release/.deps/Release/obj.target/uws.node.d | 1 + .../Release/obj.target/uws/src/Extensions.o.d | 5 + .../.deps/Release/obj.target/uws/src/Group.o.d | 113 + .../Release/obj.target/uws/src/HTTPSocket.o.d | 108 + .../.deps/Release/obj.target/uws/src/Hub.o.d | 114 + .../Release/obj.target/uws/src/Networking.o.d | 100 + .../.deps/Release/obj.target/uws/src/Node.o.d | 102 + .../.deps/Release/obj.target/uws/src/Socket.o.d | 101 + .../.deps/Release/obj.target/uws/src/WebSocket.o.d | 114 + .../.deps/Release/obj.target/uws/src/addon.o.d | 132 + .../uws/build/Release/.deps/Release/uws.node.d | 1 + wrt/node_modules/uws/build/Release/.deps/uws.d | 1 + .../Release/obj.target/action_after_build.stamp | 0 .../uws/build/Release/obj.target/uws.node | Bin 0 -> 250400 bytes .../build/Release/obj.target/uws/src/Extensions.o | Bin 0 -> 10024 bytes .../uws/build/Release/obj.target/uws/src/Group.o | Bin 0 -> 147864 bytes .../build/Release/obj.target/uws/src/HTTPSocket.o | Bin 0 -> 42992 bytes .../uws/build/Release/obj.target/uws/src/Hub.o | Bin 0 -> 42704 bytes .../build/Release/obj.target/uws/src/Networking.o | Bin 0 -> 16088 bytes .../uws/build/Release/obj.target/uws/src/Node.o | Bin 0 -> 6176 bytes .../uws/build/Release/obj.target/uws/src/Socket.o | Bin 0 -> 2608 bytes .../build/Release/obj.target/uws/src/WebSocket.o | Bin 0 -> 85600 bytes .../uws/build/Release/obj.target/uws/src/addon.o | Bin 0 -> 207208 bytes wrt/node_modules/uws/build/Release/uws.node | Bin 0 -> 250400 bytes .../uws/build/action_after_build.target.mk | 38 + wrt/node_modules/uws/build/binding.Makefile | 6 + wrt/node_modules/uws/build/config.gypi | 156 + wrt/node_modules/uws/build/uws.target.mk | 145 + wrt/node_modules/uws/build_log.txt | 264 + wrt/node_modules/uws/package.json | 91 + wrt/node_modules/uws/src/Asio.h | 184 + wrt/node_modules/uws/src/Backend.h | 15 + wrt/node_modules/uws/src/Epoll.cpp | 60 + wrt/node_modules/uws/src/Epoll.h | 257 + wrt/node_modules/uws/src/Extensions.cpp | 131 + wrt/node_modules/uws/src/Extensions.h | 29 + wrt/node_modules/uws/src/Group.cpp | 263 + wrt/node_modules/uws/src/Group.h | 144 + wrt/node_modules/uws/src/HTTPSocket.cpp | 310 + wrt/node_modules/uws/src/HTTPSocket.h | 285 + wrt/node_modules/uws/src/Hub.cpp | 177 + wrt/node_modules/uws/src/Hub.h | 97 + wrt/node_modules/uws/src/Libuv.h | 175 + wrt/node_modules/uws/src/Networking.cpp | 78 + wrt/node_modules/uws/src/Networking.h | 259 + wrt/node_modules/uws/src/Node.cpp | 83 + wrt/node_modules/uws/src/Node.h | 198 + wrt/node_modules/uws/src/Socket.cpp | 28 + wrt/node_modules/uws/src/Socket.h | 507 ++ wrt/node_modules/uws/src/WebSocket.cpp | 405 ++ wrt/node_modules/uws/src/WebSocket.h | 89 + wrt/node_modules/uws/src/WebSocketProtocol.h | 377 ++ wrt/node_modules/uws/src/addon.cpp | 24 + wrt/node_modules/uws/src/addon.h | 464 ++ wrt/node_modules/uws/src/http.h | 357 + wrt/node_modules/uws/src/uWS.h | 6 + wrt/node_modules/uws/uws.js | 563 ++ wrt/node_modules/uws/uws_darwin_46.node | Bin 0 -> 377568 bytes wrt/node_modules/uws/uws_darwin_47.node | Bin 0 -> 377568 bytes wrt/node_modules/uws/uws_darwin_48.node | Bin 0 -> 377560 bytes wrt/node_modules/uws/uws_darwin_51.node | Bin 0 -> 377616 bytes wrt/node_modules/uws/uws_linux_46.node | Bin 0 -> 1563976 bytes wrt/node_modules/uws/uws_linux_47.node | Bin 0 -> 1563976 bytes wrt/node_modules/uws/uws_linux_48.node | Bin 0 -> 1563976 bytes wrt/node_modules/uws/uws_linux_51.node | Bin 0 -> 250400 bytes wrt/node_modules/uws/uws_win32_48.node | Bin 0 -> 641024 bytes wrt/node_modules/uws/uws_win32_51.node | Bin 0 -> 641536 bytes wrt/node_modules/vary/HISTORY.md | 39 + wrt/node_modules/vary/LICENSE | 22 + wrt/node_modules/vary/README.md | 101 + wrt/node_modules/vary/index.js | 149 + wrt/node_modules/vary/package.json | 114 + wrt/node_modules/window-size/LICENSE | 21 + wrt/node_modules/window-size/README.md | 45 + wrt/node_modules/window-size/cli.js | 30 + wrt/node_modules/window-size/index.js | 32 + wrt/node_modules/window-size/package.json | 81 + wrt/node_modules/wrappy/LICENSE | 15 + wrt/node_modules/wrappy/README.md | 36 + wrt/node_modules/wrappy/package.json | 59 + wrt/node_modules/wrappy/wrappy.js | 33 + wrt/node_modules/ws/LICENSE | 21 + wrt/node_modules/ws/README.md | 260 + wrt/node_modules/ws/index.js | 15 + wrt/node_modules/ws/lib/BufferUtil.js | 71 + wrt/node_modules/ws/lib/Constants.js | 10 + wrt/node_modules/ws/lib/ErrorCodes.js | 28 + wrt/node_modules/ws/lib/EventTarget.js | 155 + wrt/node_modules/ws/lib/Extensions.js | 67 + wrt/node_modules/ws/lib/PerMessageDeflate.js | 384 ++ wrt/node_modules/ws/lib/Receiver.js | 555 ++ wrt/node_modules/ws/lib/Sender.js | 403 ++ wrt/node_modules/ws/lib/Validation.js | 17 + wrt/node_modules/ws/lib/WebSocket.js | 712 ++ wrt/node_modules/ws/lib/WebSocketServer.js | 336 + wrt/node_modules/ws/package.json | 127 + wrt/node_modules/xml2js/LICENSE | 19 + wrt/node_modules/xml2js/README.md | 406 ++ wrt/node_modules/xml2js/lib/bom.js | 12 + wrt/node_modules/xml2js/lib/builder.js | 127 + wrt/node_modules/xml2js/lib/defaults.js | 72 + wrt/node_modules/xml2js/lib/parser.js | 357 + wrt/node_modules/xml2js/lib/processors.js | 34 + wrt/node_modules/xml2js/lib/xml2js.js | 37 + wrt/node_modules/xml2js/package.json | 314 + wrt/node_modules/xmlbuilder/.npmignore | 5 + wrt/node_modules/xmlbuilder/CHANGELOG.md | 423 ++ wrt/node_modules/xmlbuilder/LICENSE | 21 + wrt/node_modules/xmlbuilder/README.md | 85 + wrt/node_modules/xmlbuilder/lib/Utility.js | 73 + wrt/node_modules/xmlbuilder/lib/XMLAttribute.js | 31 + wrt/node_modules/xmlbuilder/lib/XMLCData.js | 32 + wrt/node_modules/xmlbuilder/lib/XMLComment.js | 32 + wrt/node_modules/xmlbuilder/lib/XMLDTDAttList.js | 50 + wrt/node_modules/xmlbuilder/lib/XMLDTDElement.js | 35 + wrt/node_modules/xmlbuilder/lib/XMLDTDEntity.js | 56 + wrt/node_modules/xmlbuilder/lib/XMLDTDNotation.js | 37 + wrt/node_modules/xmlbuilder/lib/XMLDeclaration.js | 40 + wrt/node_modules/xmlbuilder/lib/XMLDocType.js | 107 + wrt/node_modules/xmlbuilder/lib/XMLDocument.js | 48 + wrt/node_modules/xmlbuilder/lib/XMLDocumentCB.js | 402 ++ wrt/node_modules/xmlbuilder/lib/XMLElement.js | 111 + wrt/node_modules/xmlbuilder/lib/XMLNode.js | 432 ++ .../xmlbuilder/lib/XMLProcessingInstruction.js | 35 + wrt/node_modules/xmlbuilder/lib/XMLRaw.js | 32 + wrt/node_modules/xmlbuilder/lib/XMLStreamWriter.js | 279 + wrt/node_modules/xmlbuilder/lib/XMLStringWriter.js | 334 + wrt/node_modules/xmlbuilder/lib/XMLStringifier.js | 163 + wrt/node_modules/xmlbuilder/lib/XMLText.js | 32 + wrt/node_modules/xmlbuilder/lib/XMLWriterBase.js | 90 + wrt/node_modules/xmlbuilder/lib/index.js | 53 + wrt/node_modules/xmlbuilder/package.json | 100 + wrt/node_modules/xmlhttprequest-ssl/LICENSE | 22 + wrt/node_modules/xmlhttprequest-ssl/README.md | 61 + .../xmlhttprequest-ssl/autotest.watchr | 8 + .../xmlhttprequest-ssl/example/demo.js | 16 + .../xmlhttprequest-ssl/lib/XMLHttpRequest.js | 650 ++ wrt/node_modules/xmlhttprequest-ssl/package.json | 98 + .../xmlhttprequest-ssl/tests/test-constants.js | 13 + .../xmlhttprequest-ssl/tests/test-events.js | 50 + .../xmlhttprequest-ssl/tests/test-exceptions.js | 59 + .../xmlhttprequest-ssl/tests/test-headers.js | 76 + .../xmlhttprequest-ssl/tests/test-redirect-302.js | 41 + .../xmlhttprequest-ssl/tests/test-redirect-303.js | 41 + .../xmlhttprequest-ssl/tests/test-redirect-307.js | 43 + .../tests/test-request-methods.js | 62 + .../tests/test-request-protocols.js | 32 + .../xmlhttprequest-ssl/tests/testdata.txt | 1 + wrt/node_modules/y18n/LICENSE | 13 + wrt/node_modules/y18n/README.md | 91 + wrt/node_modules/y18n/index.js | 172 + wrt/node_modules/y18n/package.json | 66 + wrt/node_modules/yargs/CHANGELOG.md | 429 ++ wrt/node_modules/yargs/LICENSE | 21 + wrt/node_modules/yargs/README.md | 1071 +++ wrt/node_modules/yargs/completion.sh.hbs | 28 + wrt/node_modules/yargs/index.js | 564 ++ wrt/node_modules/yargs/lib/completion.js | 80 + wrt/node_modules/yargs/lib/parser.js | 467 ++ wrt/node_modules/yargs/lib/usage.js | 339 + wrt/node_modules/yargs/lib/validation.js | 249 + wrt/node_modules/yargs/locales/en.json | 36 + wrt/node_modules/yargs/locales/es.json | 36 + wrt/node_modules/yargs/locales/fr.json | 36 + wrt/node_modules/yargs/locales/pirate.json | 12 + wrt/node_modules/yargs/locales/pt.json | 36 + .../yargs/node_modules/camelcase/index.js | 27 + .../yargs/node_modules/camelcase/license | 21 + .../yargs/node_modules/camelcase/package.json | 70 + .../yargs/node_modules/camelcase/readme.md | 56 + .../yargs/node_modules/cliui/.coveralls.yml | 1 + .../yargs/node_modules/cliui/.npmignore | 2 + .../yargs/node_modules/cliui/.travis.yml | 7 + .../yargs/node_modules/cliui/LICENSE.txt | 14 + .../yargs/node_modules/cliui/README.md | 104 + wrt/node_modules/yargs/node_modules/cliui/index.js | 273 + .../yargs/node_modules/cliui/package.json | 91 + .../yargs/node_modules/cliui/test/cliui.js | 349 + .../yargs/node_modules/wordwrap/.npmignore | 1 + .../yargs/node_modules/wordwrap/README.markdown | 70 + .../yargs/node_modules/wordwrap/example/center.js | 10 + .../yargs/node_modules/wordwrap/example/meat.js | 3 + .../yargs/node_modules/wordwrap/index.js | 76 + .../yargs/node_modules/wordwrap/package.json | 66 + .../yargs/node_modules/wordwrap/test/break.js | 30 + .../yargs/node_modules/wordwrap/test/idleness.txt | 63 + .../yargs/node_modules/wordwrap/test/wrap.js | 31 + wrt/node_modules/yargs/package.json | 127 + wrt/node_modules/yeast/LICENSE | 22 + wrt/node_modules/yeast/README.md | 82 + wrt/node_modules/yeast/index.js | 68 + wrt/node_modules/yeast/package.json | 100 + 1436 files changed, 156224 insertions(+) create mode 120000 wrt/node_modules/.bin/mime create mode 120000 wrt/node_modules/.bin/mkdirp create mode 120000 wrt/node_modules/.bin/ncp create mode 120000 wrt/node_modules/.bin/rimraf create mode 120000 wrt/node_modules/.bin/show_dialog create mode 120000 wrt/node_modules/.bin/strip-ansi create mode 120000 wrt/node_modules/.bin/uuid create mode 120000 wrt/node_modules/.bin/window-size create mode 100644 wrt/node_modules/accepts/HISTORY.md create mode 100644 wrt/node_modules/accepts/LICENSE create mode 100644 wrt/node_modules/accepts/README.md create mode 100644 wrt/node_modules/accepts/index.js create mode 100644 wrt/node_modules/accepts/package.json create mode 100644 wrt/node_modules/after/.npmignore create mode 100644 wrt/node_modules/after/.travis.yml create mode 100644 wrt/node_modules/after/LICENCE create mode 100644 wrt/node_modules/after/README.md create mode 100644 wrt/node_modules/after/index.js create mode 100644 wrt/node_modules/after/package.json create mode 100644 wrt/node_modules/after/test/after-test.js create mode 100644 wrt/node_modules/align-text/LICENSE create mode 100644 wrt/node_modules/align-text/README.md create mode 100644 wrt/node_modules/align-text/index.js create mode 100644 wrt/node_modules/align-text/package.json create mode 100644 wrt/node_modules/ansi-styles/index.js create mode 100644 wrt/node_modules/ansi-styles/license create mode 100644 wrt/node_modules/ansi-styles/package.json create mode 100644 wrt/node_modules/ansi-styles/readme.md create mode 100644 wrt/node_modules/array-flatten/LICENSE create mode 100644 wrt/node_modules/array-flatten/README.md create mode 100644 wrt/node_modules/array-flatten/array-flatten.js create mode 100644 wrt/node_modules/array-flatten/package.json create mode 100644 wrt/node_modules/arraybuffer.slice/.npmignore create mode 100644 wrt/node_modules/arraybuffer.slice/Makefile create mode 100644 wrt/node_modules/arraybuffer.slice/README.md create mode 100644 wrt/node_modules/arraybuffer.slice/index.js create mode 100644 wrt/node_modules/arraybuffer.slice/package.json create mode 100644 wrt/node_modules/arraybuffer.slice/test/slice-buffer.js create mode 100644 wrt/node_modules/async/CHANGELOG.md create mode 100644 wrt/node_modules/async/LICENSE create mode 100644 wrt/node_modules/async/README.md create mode 100644 wrt/node_modules/async/dist/async.js create mode 100644 wrt/node_modules/async/dist/async.min.js create mode 100644 wrt/node_modules/async/lib/async.js create mode 100644 wrt/node_modules/async/package.json create mode 100644 wrt/node_modules/backo2/.npmignore create mode 100644 wrt/node_modules/backo2/History.md create mode 100644 wrt/node_modules/backo2/Makefile create mode 100644 wrt/node_modules/backo2/Readme.md create mode 100644 wrt/node_modules/backo2/component.json create mode 100644 wrt/node_modules/backo2/index.js create mode 100644 wrt/node_modules/backo2/package.json create mode 100644 wrt/node_modules/backo2/test/index.js create mode 100644 wrt/node_modules/balanced-match/.npmignore create mode 100644 wrt/node_modules/balanced-match/LICENSE.md create mode 100644 wrt/node_modules/balanced-match/README.md create mode 100644 wrt/node_modules/balanced-match/index.js create mode 100644 wrt/node_modules/balanced-match/package.json create mode 100644 wrt/node_modules/base64-arraybuffer/.npmignore create mode 100644 wrt/node_modules/base64-arraybuffer/.travis.yml create mode 100644 wrt/node_modules/base64-arraybuffer/LICENSE-MIT create mode 100644 wrt/node_modules/base64-arraybuffer/README.md create mode 100644 wrt/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js create mode 100644 wrt/node_modules/base64-arraybuffer/package.json create mode 100644 wrt/node_modules/base64id/.npmignore create mode 100644 wrt/node_modules/base64id/LICENSE create mode 100644 wrt/node_modules/base64id/README.md create mode 100644 wrt/node_modules/base64id/lib/base64id.js create mode 100644 wrt/node_modules/base64id/package.json create mode 100644 wrt/node_modules/better-assert/.npmignore create mode 100644 wrt/node_modules/better-assert/History.md create mode 100644 wrt/node_modules/better-assert/Makefile create mode 100644 wrt/node_modules/better-assert/Readme.md create mode 100644 wrt/node_modules/better-assert/example.js create mode 100644 wrt/node_modules/better-assert/index.js create mode 100644 wrt/node_modules/better-assert/package.json create mode 100644 wrt/node_modules/binary/.npmignore create mode 100644 wrt/node_modules/binary/.travis.yml create mode 100644 wrt/node_modules/binary/README.markdown create mode 100644 wrt/node_modules/binary/example/buf.js create mode 100644 wrt/node_modules/binary/example/parse.js create mode 100644 wrt/node_modules/binary/example/stream.js create mode 100644 wrt/node_modules/binary/index.js create mode 100644 wrt/node_modules/binary/lib/vars.js create mode 100644 wrt/node_modules/binary/package.json create mode 100644 wrt/node_modules/binary/perf/loop.js create mode 100644 wrt/node_modules/binary/perf/small.js create mode 100644 wrt/node_modules/binary/test/bu.js create mode 100644 wrt/node_modules/binary/test/deferred.js create mode 100644 wrt/node_modules/binary/test/dots.js create mode 100644 wrt/node_modules/binary/test/eof.js create mode 100644 wrt/node_modules/binary/test/flush.js create mode 100644 wrt/node_modules/binary/test/from_buffer.js create mode 100644 wrt/node_modules/binary/test/get_buffer.js create mode 100644 wrt/node_modules/binary/test/immediate.js create mode 100644 wrt/node_modules/binary/test/interval.js create mode 100644 wrt/node_modules/binary/test/into_buffer.js create mode 100644 wrt/node_modules/binary/test/into_stream.js create mode 100644 wrt/node_modules/binary/test/loop.js create mode 100644 wrt/node_modules/binary/test/loop_scan.js create mode 100644 wrt/node_modules/binary/test/lu.js create mode 100644 wrt/node_modules/binary/test/negbs.js create mode 100644 wrt/node_modules/binary/test/negls.js create mode 100644 wrt/node_modules/binary/test/nested.js create mode 100644 wrt/node_modules/binary/test/not_enough_buf.js create mode 100644 wrt/node_modules/binary/test/not_enough_parse.js create mode 100644 wrt/node_modules/binary/test/parse.js create mode 100644 wrt/node_modules/binary/test/peek.js create mode 100644 wrt/node_modules/binary/test/pipe.js create mode 100644 wrt/node_modules/binary/test/posbs.js create mode 100644 wrt/node_modules/binary/test/posls.js create mode 100644 wrt/node_modules/binary/test/scan.js create mode 100644 wrt/node_modules/binary/test/scan_buf.js create mode 100644 wrt/node_modules/binary/test/scan_buf_null.js create mode 100644 wrt/node_modules/binary/test/skip.js create mode 100644 wrt/node_modules/binary/test/split.js create mode 100644 wrt/node_modules/blob/.npmignore create mode 100644 wrt/node_modules/blob/.zuul.yml create mode 100644 wrt/node_modules/blob/Makefile create mode 100644 wrt/node_modules/blob/README.md create mode 100644 wrt/node_modules/blob/index.js create mode 100644 wrt/node_modules/blob/package.json create mode 100644 wrt/node_modules/blob/test/index.js create mode 100644 wrt/node_modules/brace-expansion/README.md create mode 100644 wrt/node_modules/brace-expansion/index.js create mode 100644 wrt/node_modules/brace-expansion/package.json create mode 100644 wrt/node_modules/buffers/README.markdown create mode 100644 wrt/node_modules/buffers/examples/slice.js create mode 100644 wrt/node_modules/buffers/examples/splice.js create mode 100644 wrt/node_modules/buffers/index.js create mode 100644 wrt/node_modules/buffers/package.json create mode 100644 wrt/node_modules/buffers/test/buffers.js create mode 100644 wrt/node_modules/callsite/.npmignore create mode 100644 wrt/node_modules/callsite/History.md create mode 100644 wrt/node_modules/callsite/Makefile create mode 100644 wrt/node_modules/callsite/Readme.md create mode 100644 wrt/node_modules/callsite/index.js create mode 100644 wrt/node_modules/callsite/package.json create mode 100644 wrt/node_modules/center-align/LICENSE create mode 100644 wrt/node_modules/center-align/README.md create mode 100644 wrt/node_modules/center-align/index.js create mode 100644 wrt/node_modules/center-align/package.json create mode 100644 wrt/node_modules/center-align/utils.js create mode 100644 wrt/node_modules/chainsaw/.npmignore create mode 100644 wrt/node_modules/chainsaw/README.markdown create mode 100644 wrt/node_modules/chainsaw/examples/add_do.js create mode 100644 wrt/node_modules/chainsaw/examples/prompt.js create mode 100755 wrt/node_modules/chainsaw/index.js create mode 100644 wrt/node_modules/chainsaw/package.json create mode 100644 wrt/node_modules/chainsaw/test/chainsaw.js create mode 100644 wrt/node_modules/chalk/index.js create mode 100644 wrt/node_modules/chalk/license create mode 100644 wrt/node_modules/chalk/package.json create mode 100644 wrt/node_modules/chalk/readme.md create mode 100644 wrt/node_modules/chalk/templates.js create mode 100644 wrt/node_modules/color-convert/CHANGELOG.md create mode 100644 wrt/node_modules/color-convert/LICENSE create mode 100644 wrt/node_modules/color-convert/README.md create mode 100644 wrt/node_modules/color-convert/conversions.js create mode 100644 wrt/node_modules/color-convert/index.js create mode 100644 wrt/node_modules/color-convert/package.json create mode 100644 wrt/node_modules/color-convert/route.js create mode 100644 wrt/node_modules/color-name/.eslintrc.json create mode 100644 wrt/node_modules/color-name/.npmignore create mode 100644 wrt/node_modules/color-name/LICENSE create mode 100644 wrt/node_modules/color-name/README.md create mode 100644 wrt/node_modules/color-name/index.js create mode 100644 wrt/node_modules/color-name/package.json create mode 100644 wrt/node_modules/color-name/test.js create mode 100644 wrt/node_modules/component-bind/.npmignore create mode 100644 wrt/node_modules/component-bind/History.md create mode 100644 wrt/node_modules/component-bind/Makefile create mode 100644 wrt/node_modules/component-bind/Readme.md create mode 100644 wrt/node_modules/component-bind/component.json create mode 100644 wrt/node_modules/component-bind/index.js create mode 100644 wrt/node_modules/component-bind/package.json create mode 100644 wrt/node_modules/component-emitter/History.md create mode 100644 wrt/node_modules/component-emitter/LICENSE create mode 100644 wrt/node_modules/component-emitter/Readme.md create mode 100644 wrt/node_modules/component-emitter/index.js create mode 100644 wrt/node_modules/component-emitter/package.json create mode 100644 wrt/node_modules/component-inherit/.npmignore create mode 100644 wrt/node_modules/component-inherit/History.md create mode 100644 wrt/node_modules/component-inherit/Makefile create mode 100644 wrt/node_modules/component-inherit/Readme.md create mode 100644 wrt/node_modules/component-inherit/component.json create mode 100644 wrt/node_modules/component-inherit/index.js create mode 100644 wrt/node_modules/component-inherit/package.json create mode 100644 wrt/node_modules/component-inherit/test/inherit.js create mode 100644 wrt/node_modules/concat-map/.travis.yml create mode 100644 wrt/node_modules/concat-map/LICENSE create mode 100644 wrt/node_modules/concat-map/README.markdown create mode 100644 wrt/node_modules/concat-map/example/map.js create mode 100644 wrt/node_modules/concat-map/index.js create mode 100644 wrt/node_modules/concat-map/package.json create mode 100644 wrt/node_modules/concat-map/test/map.js create mode 100644 wrt/node_modules/content-disposition/HISTORY.md create mode 100644 wrt/node_modules/content-disposition/LICENSE create mode 100644 wrt/node_modules/content-disposition/README.md create mode 100644 wrt/node_modules/content-disposition/index.js create mode 100644 wrt/node_modules/content-disposition/package.json create mode 100644 wrt/node_modules/content-type/HISTORY.md create mode 100644 wrt/node_modules/content-type/LICENSE create mode 100644 wrt/node_modules/content-type/README.md create mode 100644 wrt/node_modules/content-type/index.js create mode 100644 wrt/node_modules/content-type/package.json create mode 100644 wrt/node_modules/cookie-signature/.npmignore create mode 100644 wrt/node_modules/cookie-signature/History.md create mode 100644 wrt/node_modules/cookie-signature/Readme.md create mode 100644 wrt/node_modules/cookie-signature/index.js create mode 100644 wrt/node_modules/cookie-signature/package.json create mode 100644 wrt/node_modules/cookie/HISTORY.md create mode 100644 wrt/node_modules/cookie/LICENSE create mode 100644 wrt/node_modules/cookie/README.md create mode 100644 wrt/node_modules/cookie/index.js create mode 100644 wrt/node_modules/cookie/package.json create mode 100644 wrt/node_modules/core-util-is/LICENSE create mode 100644 wrt/node_modules/core-util-is/README.md create mode 100644 wrt/node_modules/core-util-is/float.patch create mode 100644 wrt/node_modules/core-util-is/lib/util.js create mode 100644 wrt/node_modules/core-util-is/package.json create mode 100644 wrt/node_modules/core-util-is/test.js create mode 100644 wrt/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/debug/Makefile create mode 100644 wrt/node_modules/debug/README.md create mode 100644 wrt/node_modules/debug/component.json create mode 100644 wrt/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/debug/node.js create mode 100644 wrt/node_modules/debug/package.json create mode 100644 wrt/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/decamelize/index.js create mode 100644 wrt/node_modules/decamelize/license create mode 100644 wrt/node_modules/decamelize/package.json create mode 100644 wrt/node_modules/decamelize/readme.md create mode 100644 wrt/node_modules/depd/History.md create mode 100644 wrt/node_modules/depd/LICENSE create mode 100644 wrt/node_modules/depd/Readme.md create mode 100644 wrt/node_modules/depd/index.js create mode 100644 wrt/node_modules/depd/lib/browser/index.js create mode 100644 wrt/node_modules/depd/lib/compat/callsite-tostring.js create mode 100644 wrt/node_modules/depd/lib/compat/event-listener-count.js create mode 100644 wrt/node_modules/depd/lib/compat/index.js create mode 100644 wrt/node_modules/depd/package.json create mode 100644 wrt/node_modules/destroy/LICENSE create mode 100644 wrt/node_modules/destroy/README.md create mode 100644 wrt/node_modules/destroy/index.js create mode 100644 wrt/node_modules/destroy/package.json create mode 100644 wrt/node_modules/dialog/README.md create mode 100755 wrt/node_modules/dialog/bin/dialog.js create mode 100644 wrt/node_modules/dialog/index.js create mode 100644 wrt/node_modules/dialog/msgbox.vbs create mode 100644 wrt/node_modules/dialog/package.json create mode 100644 wrt/node_modules/diskdb/README.md create mode 100644 wrt/node_modules/diskdb/lib/collection.js create mode 100644 wrt/node_modules/diskdb/lib/diskdb.js create mode 100644 wrt/node_modules/diskdb/lib/util.js create mode 100644 wrt/node_modules/diskdb/node_modules/ansi-styles/ansi-styles.js create mode 100644 wrt/node_modules/diskdb/node_modules/ansi-styles/package.json create mode 100644 wrt/node_modules/diskdb/node_modules/ansi-styles/readme.md create mode 100644 wrt/node_modules/diskdb/node_modules/chalk/index.js create mode 100644 wrt/node_modules/diskdb/node_modules/chalk/package.json create mode 100644 wrt/node_modules/diskdb/node_modules/chalk/readme.md create mode 100644 wrt/node_modules/diskdb/package.json create mode 100644 wrt/node_modules/ee-first/LICENSE create mode 100644 wrt/node_modules/ee-first/README.md create mode 100644 wrt/node_modules/ee-first/index.js create mode 100644 wrt/node_modules/ee-first/package.json create mode 100644 wrt/node_modules/encodeurl/HISTORY.md create mode 100644 wrt/node_modules/encodeurl/LICENSE create mode 100644 wrt/node_modules/encodeurl/README.md create mode 100644 wrt/node_modules/encodeurl/index.js create mode 100644 wrt/node_modules/encodeurl/package.json create mode 100644 wrt/node_modules/engine.io-client/History.md create mode 100644 wrt/node_modules/engine.io-client/LICENSE create mode 100644 wrt/node_modules/engine.io-client/README.md create mode 100644 wrt/node_modules/engine.io-client/engine.io.js create mode 100644 wrt/node_modules/engine.io-client/index.js create mode 100644 wrt/node_modules/engine.io-client/lib/index.js create mode 100644 wrt/node_modules/engine.io-client/lib/socket.js create mode 100644 wrt/node_modules/engine.io-client/lib/transport.js create mode 100755 wrt/node_modules/engine.io-client/lib/transports/index.js create mode 100644 wrt/node_modules/engine.io-client/lib/transports/polling-jsonp.js create mode 100755 wrt/node_modules/engine.io-client/lib/transports/polling-xhr.js create mode 100644 wrt/node_modules/engine.io-client/lib/transports/polling.js create mode 100644 wrt/node_modules/engine.io-client/lib/transports/websocket.js create mode 100644 wrt/node_modules/engine.io-client/lib/xmlhttprequest.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/Makefile create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/README.md create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/component.json create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/node.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/package.json create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/src/inspector-log.js create mode 100644 wrt/node_modules/engine.io-client/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/engine.io-client/package.json create mode 100644 wrt/node_modules/engine.io-parser/History.md create mode 100644 wrt/node_modules/engine.io-parser/LICENSE create mode 100644 wrt/node_modules/engine.io-parser/Readme.md create mode 100644 wrt/node_modules/engine.io-parser/index.js create mode 100644 wrt/node_modules/engine.io-parser/lib/browser.js create mode 100644 wrt/node_modules/engine.io-parser/lib/index.js create mode 100644 wrt/node_modules/engine.io-parser/lib/keys.js create mode 100644 wrt/node_modules/engine.io-parser/lib/utf8.js create mode 100644 wrt/node_modules/engine.io-parser/package.json create mode 100644 wrt/node_modules/engine.io/LICENSE create mode 100644 wrt/node_modules/engine.io/README.md create mode 100644 wrt/node_modules/engine.io/lib/engine.io.js create mode 100644 wrt/node_modules/engine.io/lib/server.js create mode 100644 wrt/node_modules/engine.io/lib/socket.js create mode 100644 wrt/node_modules/engine.io/lib/transport.js create mode 100644 wrt/node_modules/engine.io/lib/transports/index.js create mode 100644 wrt/node_modules/engine.io/lib/transports/polling-jsonp.js create mode 100644 wrt/node_modules/engine.io/lib/transports/polling-xhr.js create mode 100644 wrt/node_modules/engine.io/lib/transports/polling.js create mode 100644 wrt/node_modules/engine.io/lib/transports/websocket.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/engine.io/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/engine.io/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/engine.io/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/engine.io/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/engine.io/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/engine.io/node_modules/debug/Makefile create mode 100644 wrt/node_modules/engine.io/node_modules/debug/README.md create mode 100644 wrt/node_modules/engine.io/node_modules/debug/component.json create mode 100644 wrt/node_modules/engine.io/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/node.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/package.json create mode 100644 wrt/node_modules/engine.io/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/src/inspector-log.js create mode 100644 wrt/node_modules/engine.io/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/engine.io/package.json create mode 100644 wrt/node_modules/escape-html/LICENSE create mode 100644 wrt/node_modules/escape-html/Readme.md create mode 100644 wrt/node_modules/escape-html/index.js create mode 100644 wrt/node_modules/escape-html/package.json create mode 100644 wrt/node_modules/escape-string-regexp/index.js create mode 100644 wrt/node_modules/escape-string-regexp/license create mode 100644 wrt/node_modules/escape-string-regexp/package.json create mode 100644 wrt/node_modules/escape-string-regexp/readme.md create mode 100644 wrt/node_modules/etag/HISTORY.md create mode 100644 wrt/node_modules/etag/LICENSE create mode 100644 wrt/node_modules/etag/README.md create mode 100644 wrt/node_modules/etag/index.js create mode 100644 wrt/node_modules/etag/package.json create mode 100644 wrt/node_modules/express/History.md create mode 100644 wrt/node_modules/express/LICENSE create mode 100644 wrt/node_modules/express/Readme.md create mode 100644 wrt/node_modules/express/index.js create mode 100644 wrt/node_modules/express/lib/application.js create mode 100644 wrt/node_modules/express/lib/express.js create mode 100644 wrt/node_modules/express/lib/middleware/init.js create mode 100644 wrt/node_modules/express/lib/middleware/query.js create mode 100644 wrt/node_modules/express/lib/request.js create mode 100644 wrt/node_modules/express/lib/response.js create mode 100644 wrt/node_modules/express/lib/router/index.js create mode 100644 wrt/node_modules/express/lib/router/layer.js create mode 100644 wrt/node_modules/express/lib/router/route.js create mode 100644 wrt/node_modules/express/lib/utils.js create mode 100644 wrt/node_modules/express/lib/view.js create mode 100644 wrt/node_modules/express/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/express/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/express/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/express/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/express/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/express/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/express/node_modules/debug/Makefile create mode 100644 wrt/node_modules/express/node_modules/debug/README.md create mode 100644 wrt/node_modules/express/node_modules/debug/component.json create mode 100644 wrt/node_modules/express/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/express/node_modules/debug/node.js create mode 100644 wrt/node_modules/express/node_modules/debug/package.json create mode 100644 wrt/node_modules/express/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/express/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/express/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/express/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/express/package.json create mode 100644 wrt/node_modules/finalhandler/HISTORY.md create mode 100644 wrt/node_modules/finalhandler/LICENSE create mode 100644 wrt/node_modules/finalhandler/README.md create mode 100644 wrt/node_modules/finalhandler/index.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/Makefile create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/README.md create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/component.json create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/node.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/package.json create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/src/inspector-log.js create mode 100644 wrt/node_modules/finalhandler/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/finalhandler/package.json create mode 100644 wrt/node_modules/forwarded/HISTORY.md create mode 100644 wrt/node_modules/forwarded/LICENSE create mode 100644 wrt/node_modules/forwarded/README.md create mode 100644 wrt/node_modules/forwarded/index.js create mode 100644 wrt/node_modules/forwarded/package.json create mode 100644 wrt/node_modules/fresh/HISTORY.md create mode 100644 wrt/node_modules/fresh/LICENSE create mode 100644 wrt/node_modules/fresh/README.md create mode 100644 wrt/node_modules/fresh/index.js create mode 100644 wrt/node_modules/fresh/package.json create mode 100644 wrt/node_modules/fs-plus/LICENSE.md create mode 100644 wrt/node_modules/fs-plus/README.md create mode 100644 wrt/node_modules/fs-plus/appveyor.yml create mode 100644 wrt/node_modules/fs-plus/lib/fs-plus.js create mode 100644 wrt/node_modules/fs-plus/package.json create mode 100644 wrt/node_modules/fs.realpath/LICENSE create mode 100644 wrt/node_modules/fs.realpath/README.md create mode 100644 wrt/node_modules/fs.realpath/index.js create mode 100644 wrt/node_modules/fs.realpath/old.js create mode 100644 wrt/node_modules/fs.realpath/package.json create mode 100644 wrt/node_modules/fstream/.npmignore create mode 100644 wrt/node_modules/fstream/.travis.yml create mode 100644 wrt/node_modules/fstream/LICENSE create mode 100644 wrt/node_modules/fstream/README.md create mode 100644 wrt/node_modules/fstream/examples/filter-pipe.js create mode 100644 wrt/node_modules/fstream/examples/pipe.js create mode 100644 wrt/node_modules/fstream/examples/reader.js create mode 100644 wrt/node_modules/fstream/examples/symlink-write.js create mode 100644 wrt/node_modules/fstream/fstream.js create mode 100644 wrt/node_modules/fstream/lib/abstract.js create mode 100644 wrt/node_modules/fstream/lib/collect.js create mode 100644 wrt/node_modules/fstream/lib/dir-reader.js create mode 100644 wrt/node_modules/fstream/lib/dir-writer.js create mode 100644 wrt/node_modules/fstream/lib/file-reader.js create mode 100644 wrt/node_modules/fstream/lib/file-writer.js create mode 100644 wrt/node_modules/fstream/lib/get-type.js create mode 100644 wrt/node_modules/fstream/lib/link-reader.js create mode 100644 wrt/node_modules/fstream/lib/link-writer.js create mode 100644 wrt/node_modules/fstream/lib/proxy-reader.js create mode 100644 wrt/node_modules/fstream/lib/proxy-writer.js create mode 100644 wrt/node_modules/fstream/lib/reader.js create mode 100644 wrt/node_modules/fstream/lib/socket-reader.js create mode 100644 wrt/node_modules/fstream/lib/writer.js create mode 100644 wrt/node_modules/fstream/package.json create mode 100644 wrt/node_modules/glob/LICENSE create mode 100644 wrt/node_modules/glob/README.md create mode 100644 wrt/node_modules/glob/common.js create mode 100644 wrt/node_modules/glob/glob.js create mode 100644 wrt/node_modules/glob/package.json create mode 100644 wrt/node_modules/glob/sync.js create mode 100644 wrt/node_modules/graceful-fs/.npmignore create mode 100644 wrt/node_modules/graceful-fs/.travis.yml create mode 100644 wrt/node_modules/graceful-fs/LICENSE create mode 100644 wrt/node_modules/graceful-fs/README.md create mode 100644 wrt/node_modules/graceful-fs/fs.js create mode 100644 wrt/node_modules/graceful-fs/graceful-fs.js create mode 100644 wrt/node_modules/graceful-fs/package.json create mode 100644 wrt/node_modules/graceful-fs/polyfills.js create mode 100644 wrt/node_modules/graceful-fs/test/max-open.js create mode 100644 wrt/node_modules/graceful-fs/test/open.js create mode 100644 wrt/node_modules/graceful-fs/test/readdir-sort.js create mode 100644 wrt/node_modules/graceful-fs/test/write-then-read.js create mode 100644 wrt/node_modules/has-binary2/History.md create mode 100644 wrt/node_modules/has-binary2/LICENSE create mode 100644 wrt/node_modules/has-binary2/README.md create mode 100644 wrt/node_modules/has-binary2/index.js create mode 100644 wrt/node_modules/has-binary2/node_modules/isarray/README.md create mode 100644 wrt/node_modules/has-binary2/node_modules/isarray/index.js create mode 100644 wrt/node_modules/has-binary2/node_modules/isarray/package.json create mode 100644 wrt/node_modules/has-binary2/package.json create mode 100644 wrt/node_modules/has-color/index.js create mode 100644 wrt/node_modules/has-color/package.json create mode 100644 wrt/node_modules/has-color/readme.md create mode 100644 wrt/node_modules/has-cors/.npmignore create mode 100644 wrt/node_modules/has-cors/History.md create mode 100644 wrt/node_modules/has-cors/Makefile create mode 100644 wrt/node_modules/has-cors/Readme.md create mode 100644 wrt/node_modules/has-cors/component.json create mode 100644 wrt/node_modules/has-cors/index.js create mode 100644 wrt/node_modules/has-cors/package.json create mode 100644 wrt/node_modules/has-cors/test.js create mode 100644 wrt/node_modules/has-flag/index.js create mode 100644 wrt/node_modules/has-flag/license create mode 100644 wrt/node_modules/has-flag/package.json create mode 100644 wrt/node_modules/has-flag/readme.md create mode 100644 wrt/node_modules/http-errors/HISTORY.md create mode 100644 wrt/node_modules/http-errors/LICENSE create mode 100644 wrt/node_modules/http-errors/README.md create mode 100644 wrt/node_modules/http-errors/index.js create mode 100644 wrt/node_modules/http-errors/package.json create mode 100644 wrt/node_modules/indexof/.npmignore create mode 100644 wrt/node_modules/indexof/Makefile create mode 100644 wrt/node_modules/indexof/Readme.md create mode 100644 wrt/node_modules/indexof/component.json create mode 100644 wrt/node_modules/indexof/index.js create mode 100644 wrt/node_modules/indexof/package.json create mode 100644 wrt/node_modules/inflight/LICENSE create mode 100644 wrt/node_modules/inflight/README.md create mode 100644 wrt/node_modules/inflight/inflight.js create mode 100644 wrt/node_modules/inflight/package.json create mode 100644 wrt/node_modules/inherits/LICENSE create mode 100644 wrt/node_modules/inherits/README.md create mode 100644 wrt/node_modules/inherits/inherits.js create mode 100644 wrt/node_modules/inherits/inherits_browser.js create mode 100644 wrt/node_modules/inherits/package.json create mode 100644 wrt/node_modules/ipaddr.js/.npmignore create mode 100644 wrt/node_modules/ipaddr.js/.travis.yml create mode 100644 wrt/node_modules/ipaddr.js/Cakefile create mode 100644 wrt/node_modules/ipaddr.js/LICENSE create mode 100644 wrt/node_modules/ipaddr.js/README.md create mode 100644 wrt/node_modules/ipaddr.js/bower.json create mode 100644 wrt/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 wrt/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 wrt/node_modules/ipaddr.js/package.json create mode 100644 wrt/node_modules/ipaddr.js/src/ipaddr.coffee create mode 100644 wrt/node_modules/ipaddr.js/src/ipaddr.js create mode 100644 wrt/node_modules/ipaddr.js/test/ipaddr.js create mode 100644 wrt/node_modules/ipaddr.js/test/ipaddr.test.coffee create mode 100644 wrt/node_modules/is-buffer/.npmignore create mode 100644 wrt/node_modules/is-buffer/LICENSE create mode 100644 wrt/node_modules/is-buffer/README.md create mode 100644 wrt/node_modules/is-buffer/index.js create mode 100644 wrt/node_modules/is-buffer/package.json create mode 100644 wrt/node_modules/is-buffer/test/basic.js create mode 100644 wrt/node_modules/isarray/README.md create mode 100644 wrt/node_modules/isarray/build/build.js create mode 100644 wrt/node_modules/isarray/component.json create mode 100644 wrt/node_modules/isarray/index.js create mode 100644 wrt/node_modules/isarray/package.json create mode 100644 wrt/node_modules/kind-of/LICENSE create mode 100644 wrt/node_modules/kind-of/README.md create mode 100644 wrt/node_modules/kind-of/index.js create mode 100644 wrt/node_modules/kind-of/package.json create mode 100644 wrt/node_modules/lazy-cache/LICENSE create mode 100644 wrt/node_modules/lazy-cache/README.md create mode 100644 wrt/node_modules/lazy-cache/index.js create mode 100644 wrt/node_modules/lazy-cache/package.json create mode 100644 wrt/node_modules/longest/LICENSE create mode 100644 wrt/node_modules/longest/README.md create mode 100644 wrt/node_modules/longest/index.js create mode 100644 wrt/node_modules/longest/package.json create mode 100644 wrt/node_modules/match-stream/.idea/.name create mode 100644 wrt/node_modules/match-stream/.idea/encodings.xml create mode 100644 wrt/node_modules/match-stream/.idea/jsLibraryMappings.xml create mode 100644 wrt/node_modules/match-stream/.idea/match-stream.iml create mode 100644 wrt/node_modules/match-stream/.idea/misc.xml create mode 100644 wrt/node_modules/match-stream/.idea/modules.xml create mode 100644 wrt/node_modules/match-stream/.idea/scopes/scope_settings.xml create mode 100644 wrt/node_modules/match-stream/.idea/vcs.xml create mode 100644 wrt/node_modules/match-stream/.idea/workspace.xml create mode 100644 wrt/node_modules/match-stream/.travis.yml create mode 100644 wrt/node_modules/match-stream/LICENSE create mode 100644 wrt/node_modules/match-stream/README.md create mode 100644 wrt/node_modules/match-stream/examples/lorem.txt create mode 100644 wrt/node_modules/match-stream/examples/split.js create mode 100644 wrt/node_modules/match-stream/examples/until.js create mode 100644 wrt/node_modules/match-stream/match.js create mode 100644 wrt/node_modules/match-stream/package.json create mode 100644 wrt/node_modules/match-stream/test/split.js create mode 100644 wrt/node_modules/match-stream/test/until.js create mode 100644 wrt/node_modules/media-typer/HISTORY.md create mode 100644 wrt/node_modules/media-typer/LICENSE create mode 100644 wrt/node_modules/media-typer/README.md create mode 100644 wrt/node_modules/media-typer/index.js create mode 100644 wrt/node_modules/media-typer/package.json create mode 100644 wrt/node_modules/merge-descriptors/HISTORY.md create mode 100644 wrt/node_modules/merge-descriptors/LICENSE create mode 100644 wrt/node_modules/merge-descriptors/README.md create mode 100644 wrt/node_modules/merge-descriptors/index.js create mode 100644 wrt/node_modules/merge-descriptors/package.json create mode 100644 wrt/node_modules/merge/.npmignore create mode 100644 wrt/node_modules/merge/LICENSE create mode 100644 wrt/node_modules/merge/README.md create mode 100644 wrt/node_modules/merge/bower.json create mode 100644 wrt/node_modules/merge/merge.js create mode 100644 wrt/node_modules/merge/merge.min.js create mode 100644 wrt/node_modules/merge/package.json create mode 100644 wrt/node_modules/methods/HISTORY.md create mode 100644 wrt/node_modules/methods/LICENSE create mode 100644 wrt/node_modules/methods/README.md create mode 100644 wrt/node_modules/methods/index.js create mode 100644 wrt/node_modules/methods/package.json create mode 100644 wrt/node_modules/mime-db/HISTORY.md create mode 100644 wrt/node_modules/mime-db/LICENSE create mode 100644 wrt/node_modules/mime-db/README.md create mode 100644 wrt/node_modules/mime-db/db.json create mode 100644 wrt/node_modules/mime-db/index.js create mode 100644 wrt/node_modules/mime-db/package.json create mode 100644 wrt/node_modules/mime-types/HISTORY.md create mode 100644 wrt/node_modules/mime-types/LICENSE create mode 100644 wrt/node_modules/mime-types/README.md create mode 100644 wrt/node_modules/mime-types/index.js create mode 100644 wrt/node_modules/mime-types/package.json create mode 100644 wrt/node_modules/mime/.npmignore create mode 100644 wrt/node_modules/mime/LICENSE create mode 100644 wrt/node_modules/mime/README.md create mode 100644 wrt/node_modules/mime/build/build.js create mode 100644 wrt/node_modules/mime/build/test.js create mode 100755 wrt/node_modules/mime/cli.js create mode 100644 wrt/node_modules/mime/mime.js create mode 100644 wrt/node_modules/mime/package.json create mode 100644 wrt/node_modules/mime/types.json create mode 100644 wrt/node_modules/minimatch/LICENSE create mode 100644 wrt/node_modules/minimatch/README.md create mode 100644 wrt/node_modules/minimatch/minimatch.js create mode 100644 wrt/node_modules/minimatch/package.json create mode 100644 wrt/node_modules/minimist/.travis.yml create mode 100644 wrt/node_modules/minimist/LICENSE create mode 100644 wrt/node_modules/minimist/example/parse.js create mode 100644 wrt/node_modules/minimist/index.js create mode 100644 wrt/node_modules/minimist/package.json create mode 100644 wrt/node_modules/minimist/readme.markdown create mode 100644 wrt/node_modules/minimist/test/dash.js create mode 100644 wrt/node_modules/minimist/test/default_bool.js create mode 100644 wrt/node_modules/minimist/test/dotted.js create mode 100644 wrt/node_modules/minimist/test/long.js create mode 100644 wrt/node_modules/minimist/test/parse.js create mode 100644 wrt/node_modules/minimist/test/parse_modified.js create mode 100644 wrt/node_modules/minimist/test/short.js create mode 100644 wrt/node_modules/minimist/test/whitespace.js create mode 100644 wrt/node_modules/mkdirp/.travis.yml create mode 100644 wrt/node_modules/mkdirp/LICENSE create mode 100644 wrt/node_modules/mkdirp/examples/pow.js create mode 100644 wrt/node_modules/mkdirp/index.js create mode 100644 wrt/node_modules/mkdirp/package.json create mode 100644 wrt/node_modules/mkdirp/readme.markdown create mode 100644 wrt/node_modules/mkdirp/test/chmod.js create mode 100644 wrt/node_modules/mkdirp/test/clobber.js create mode 100644 wrt/node_modules/mkdirp/test/mkdirp.js create mode 100644 wrt/node_modules/mkdirp/test/opts_fs.js create mode 100644 wrt/node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 wrt/node_modules/mkdirp/test/perm.js create mode 100644 wrt/node_modules/mkdirp/test/perm_sync.js create mode 100644 wrt/node_modules/mkdirp/test/race.js create mode 100644 wrt/node_modules/mkdirp/test/rel.js create mode 100644 wrt/node_modules/mkdirp/test/return.js create mode 100644 wrt/node_modules/mkdirp/test/return_sync.js create mode 100644 wrt/node_modules/mkdirp/test/root.js create mode 100644 wrt/node_modules/mkdirp/test/sync.js create mode 100644 wrt/node_modules/mkdirp/test/umask.js create mode 100644 wrt/node_modules/mkdirp/test/umask_sync.js create mode 100644 wrt/node_modules/ms/index.js create mode 100644 wrt/node_modules/ms/license.md create mode 100644 wrt/node_modules/ms/package.json create mode 100644 wrt/node_modules/ms/readme.md create mode 100644 wrt/node_modules/mv/.npmignore create mode 100644 wrt/node_modules/mv/.travis.yml create mode 100644 wrt/node_modules/mv/LICENSE create mode 100644 wrt/node_modules/mv/README.md create mode 100644 wrt/node_modules/mv/index.js create mode 120000 wrt/node_modules/mv/node_modules/.bin/rimraf create mode 100644 wrt/node_modules/mv/node_modules/rimraf/LICENSE create mode 100644 wrt/node_modules/mv/node_modules/rimraf/README.md create mode 100755 wrt/node_modules/mv/node_modules/rimraf/bin.js create mode 100644 wrt/node_modules/mv/node_modules/rimraf/package.json create mode 100644 wrt/node_modules/mv/node_modules/rimraf/rimraf.js create mode 100644 wrt/node_modules/mv/package.json create mode 100644 wrt/node_modules/mv/test/a-file create mode 100644 wrt/node_modules/mv/test/a-folder/another-file create mode 100644 wrt/node_modules/mv/test/a-folder/another-folder/file3 create mode 100644 wrt/node_modules/mv/test/test.js create mode 100644 wrt/node_modules/natives/README.md create mode 100644 wrt/node_modules/natives/index.js create mode 100644 wrt/node_modules/natives/package.json create mode 100644 wrt/node_modules/ncp/.npmignore create mode 100644 wrt/node_modules/ncp/.travis.yml create mode 100644 wrt/node_modules/ncp/LICENSE.md create mode 100644 wrt/node_modules/ncp/README.md create mode 100755 wrt/node_modules/ncp/bin/ncp create mode 100644 wrt/node_modules/ncp/lib/ncp.js create mode 100644 wrt/node_modules/ncp/package.json create mode 100644 wrt/node_modules/ncp/test/modified-files/out/a create mode 100644 wrt/node_modules/ncp/test/modified-files/src/a create mode 100644 wrt/node_modules/ncp/test/ncp.js create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/a create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/b create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/c create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/d create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/e create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/f create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/sub/a create mode 100644 wrt/node_modules/ncp/test/regular-fixtures/src/sub/b create mode 100644 wrt/node_modules/ncp/test/symlink-fixtures/src/dir/bar create mode 100644 wrt/node_modules/ncp/test/symlink-fixtures/src/foo create mode 100644 wrt/node_modules/negotiator/HISTORY.md create mode 100644 wrt/node_modules/negotiator/LICENSE create mode 100644 wrt/node_modules/negotiator/README.md create mode 100644 wrt/node_modules/negotiator/index.js create mode 100644 wrt/node_modules/negotiator/lib/charset.js create mode 100644 wrt/node_modules/negotiator/lib/encoding.js create mode 100644 wrt/node_modules/negotiator/lib/language.js create mode 100644 wrt/node_modules/negotiator/lib/mediaType.js create mode 100644 wrt/node_modules/negotiator/package.json create mode 100644 wrt/node_modules/node-constants/.npmignore create mode 100644 wrt/node_modules/node-constants/LICENSE create mode 100644 wrt/node_modules/node-constants/README.md create mode 100644 wrt/node_modules/node-constants/examples/define.js create mode 100644 wrt/node_modules/node-constants/examples/definer.js create mode 100644 wrt/node_modules/node-constants/examples/not_exports.js create mode 100644 wrt/node_modules/node-constants/examples/quick_definer.js create mode 100644 wrt/node_modules/node-constants/index.js create mode 100644 wrt/node_modules/node-constants/lib/index.js create mode 100644 wrt/node_modules/node-constants/package.json create mode 100644 wrt/node_modules/node-constants/test/main.js create mode 100644 wrt/node_modules/node-constants/test/mocha.opts create mode 100644 wrt/node_modules/node-uuid/.npmignore create mode 100644 wrt/node_modules/node-uuid/LICENSE.md create mode 100644 wrt/node_modules/node-uuid/README.md create mode 100644 wrt/node_modules/node-uuid/benchmark/README.md create mode 100644 wrt/node_modules/node-uuid/benchmark/bench.gnu create mode 100755 wrt/node_modules/node-uuid/benchmark/bench.sh create mode 100644 wrt/node_modules/node-uuid/benchmark/benchmark-native.c create mode 100644 wrt/node_modules/node-uuid/benchmark/benchmark.js create mode 100755 wrt/node_modules/node-uuid/bin/uuid create mode 100644 wrt/node_modules/node-uuid/bower.json create mode 100644 wrt/node_modules/node-uuid/component.json create mode 100644 wrt/node_modules/node-uuid/lib/sha1-browser.js create mode 100644 wrt/node_modules/node-uuid/package.json create mode 100644 wrt/node_modules/node-uuid/test/compare_v1.js create mode 100644 wrt/node_modules/node-uuid/test/test.html create mode 100644 wrt/node_modules/node-uuid/test/test.js create mode 100644 wrt/node_modules/node-uuid/uuid.js create mode 100644 wrt/node_modules/node-uuid/v3.js create mode 100644 wrt/node_modules/object-assign/index.js create mode 100644 wrt/node_modules/object-assign/license create mode 100644 wrt/node_modules/object-assign/package.json create mode 100644 wrt/node_modules/object-assign/readme.md create mode 100644 wrt/node_modules/object-component/.npmignore create mode 100644 wrt/node_modules/object-component/History.md create mode 100644 wrt/node_modules/object-component/Makefile create mode 100644 wrt/node_modules/object-component/Readme.md create mode 100644 wrt/node_modules/object-component/component.json create mode 100644 wrt/node_modules/object-component/index.js create mode 100644 wrt/node_modules/object-component/package.json create mode 100644 wrt/node_modules/object-component/test/object.js create mode 100644 wrt/node_modules/on-finished/HISTORY.md create mode 100644 wrt/node_modules/on-finished/LICENSE create mode 100644 wrt/node_modules/on-finished/README.md create mode 100644 wrt/node_modules/on-finished/index.js create mode 100644 wrt/node_modules/on-finished/package.json create mode 100644 wrt/node_modules/once/LICENSE create mode 100644 wrt/node_modules/once/README.md create mode 100644 wrt/node_modules/once/once.js create mode 100644 wrt/node_modules/once/package.json create mode 100644 wrt/node_modules/over/.npmignore create mode 100644 wrt/node_modules/over/README.md create mode 100644 wrt/node_modules/over/overload.js create mode 100644 wrt/node_modules/over/package.json create mode 100644 wrt/node_modules/over/test/defFunctionsTest.js create mode 100644 wrt/node_modules/over/test/overloadTest.js create mode 100644 wrt/node_modules/parsejson/.npmignore create mode 100644 wrt/node_modules/parsejson/LICENSE create mode 100644 wrt/node_modules/parsejson/Makefile create mode 100644 wrt/node_modules/parsejson/README.md create mode 100644 wrt/node_modules/parsejson/index.js create mode 100644 wrt/node_modules/parsejson/package.json create mode 100644 wrt/node_modules/parsejson/test.js create mode 100644 wrt/node_modules/parseqs/.npmignore create mode 100644 wrt/node_modules/parseqs/LICENSE create mode 100644 wrt/node_modules/parseqs/Makefile create mode 100644 wrt/node_modules/parseqs/README.md create mode 100644 wrt/node_modules/parseqs/index.js create mode 100644 wrt/node_modules/parseqs/package.json create mode 100644 wrt/node_modules/parseqs/test.js create mode 100644 wrt/node_modules/parseuri/.npmignore create mode 100644 wrt/node_modules/parseuri/History.md create mode 100644 wrt/node_modules/parseuri/LICENSE create mode 100644 wrt/node_modules/parseuri/Makefile create mode 100644 wrt/node_modules/parseuri/README.md create mode 100644 wrt/node_modules/parseuri/index.js create mode 100644 wrt/node_modules/parseuri/package.json create mode 100644 wrt/node_modules/parseuri/test.js create mode 100644 wrt/node_modules/parseurl/HISTORY.md create mode 100644 wrt/node_modules/parseurl/LICENSE create mode 100644 wrt/node_modules/parseurl/README.md create mode 100644 wrt/node_modules/parseurl/index.js create mode 100644 wrt/node_modules/parseurl/package.json create mode 100644 wrt/node_modules/path-is-absolute/index.js create mode 100644 wrt/node_modules/path-is-absolute/license create mode 100644 wrt/node_modules/path-is-absolute/package.json create mode 100644 wrt/node_modules/path-is-absolute/readme.md create mode 100644 wrt/node_modules/path-to-regexp/History.md create mode 100644 wrt/node_modules/path-to-regexp/LICENSE create mode 100644 wrt/node_modules/path-to-regexp/Readme.md create mode 100644 wrt/node_modules/path-to-regexp/index.js create mode 100644 wrt/node_modules/path-to-regexp/package.json create mode 100644 wrt/node_modules/proxy-addr/HISTORY.md create mode 100644 wrt/node_modules/proxy-addr/LICENSE create mode 100644 wrt/node_modules/proxy-addr/README.md create mode 100644 wrt/node_modules/proxy-addr/index.js create mode 100644 wrt/node_modules/proxy-addr/package.json create mode 100644 wrt/node_modules/pullstream/.npmignore create mode 100644 wrt/node_modules/pullstream/.travis.yml create mode 100644 wrt/node_modules/pullstream/.vimrc create mode 100644 wrt/node_modules/pullstream/LICENSE create mode 100644 wrt/node_modules/pullstream/README.md create mode 100644 wrt/node_modules/pullstream/examples/loremIpsum.txt create mode 100644 wrt/node_modules/pullstream/examples/pullFromFile.js create mode 100644 wrt/node_modules/pullstream/package.json create mode 100644 wrt/node_modules/pullstream/pullstream.js create mode 100644 wrt/node_modules/pullstream/test/pullStreamTest.js create mode 100644 wrt/node_modules/pullstream/test/testFile.txt create mode 100644 wrt/node_modules/qs/.editorconfig create mode 100644 wrt/node_modules/qs/.eslintignore create mode 100644 wrt/node_modules/qs/.eslintrc create mode 100644 wrt/node_modules/qs/CHANGELOG.md create mode 100644 wrt/node_modules/qs/LICENSE create mode 100644 wrt/node_modules/qs/README.md create mode 100644 wrt/node_modules/qs/dist/qs.js create mode 100644 wrt/node_modules/qs/lib/formats.js create mode 100644 wrt/node_modules/qs/lib/index.js create mode 100644 wrt/node_modules/qs/lib/parse.js create mode 100644 wrt/node_modules/qs/lib/stringify.js create mode 100644 wrt/node_modules/qs/lib/utils.js create mode 100644 wrt/node_modules/qs/package.json create mode 100644 wrt/node_modules/qs/test/.eslintrc create mode 100644 wrt/node_modules/qs/test/index.js create mode 100644 wrt/node_modules/qs/test/parse.js create mode 100644 wrt/node_modules/qs/test/stringify.js create mode 100644 wrt/node_modules/qs/test/utils.js create mode 100644 wrt/node_modules/range-parser/HISTORY.md create mode 100644 wrt/node_modules/range-parser/LICENSE create mode 100644 wrt/node_modules/range-parser/README.md create mode 100644 wrt/node_modules/range-parser/index.js create mode 100644 wrt/node_modules/range-parser/package.json create mode 100644 wrt/node_modules/readable-stream/.npmignore create mode 100644 wrt/node_modules/readable-stream/LICENSE create mode 100644 wrt/node_modules/readable-stream/README.md create mode 100644 wrt/node_modules/readable-stream/duplex.js create mode 100644 wrt/node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 wrt/node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 wrt/node_modules/readable-stream/lib/_stream_readable.js create mode 100644 wrt/node_modules/readable-stream/lib/_stream_transform.js create mode 100644 wrt/node_modules/readable-stream/lib/_stream_writable.js create mode 100644 wrt/node_modules/readable-stream/package.json create mode 100644 wrt/node_modules/readable-stream/passthrough.js create mode 100644 wrt/node_modules/readable-stream/readable.js create mode 100644 wrt/node_modules/readable-stream/transform.js create mode 100644 wrt/node_modules/readable-stream/writable.js create mode 100644 wrt/node_modules/repeat-string/LICENSE create mode 100644 wrt/node_modules/repeat-string/README.md create mode 100644 wrt/node_modules/repeat-string/index.js create mode 100644 wrt/node_modules/repeat-string/package.json create mode 100644 wrt/node_modules/right-align/LICENSE create mode 100644 wrt/node_modules/right-align/README.md create mode 100644 wrt/node_modules/right-align/index.js create mode 100644 wrt/node_modules/right-align/package.json create mode 100644 wrt/node_modules/rimraf/LICENSE create mode 100644 wrt/node_modules/rimraf/README.md create mode 100755 wrt/node_modules/rimraf/bin.js create mode 100644 wrt/node_modules/rimraf/node_modules/glob/LICENSE create mode 100644 wrt/node_modules/rimraf/node_modules/glob/README.md create mode 100644 wrt/node_modules/rimraf/node_modules/glob/changelog.md create mode 100644 wrt/node_modules/rimraf/node_modules/glob/common.js create mode 100644 wrt/node_modules/rimraf/node_modules/glob/glob.js create mode 100644 wrt/node_modules/rimraf/node_modules/glob/package.json create mode 100644 wrt/node_modules/rimraf/node_modules/glob/sync.js create mode 100644 wrt/node_modules/rimraf/package.json create mode 100644 wrt/node_modules/rimraf/rimraf.js create mode 100644 wrt/node_modules/run-series/.travis.yml create mode 100644 wrt/node_modules/run-series/.zuul.yml create mode 100644 wrt/node_modules/run-series/LICENSE create mode 100644 wrt/node_modules/run-series/README.md create mode 100644 wrt/node_modules/run-series/img.png create mode 100644 wrt/node_modules/run-series/index.js create mode 100644 wrt/node_modules/run-series/package.json create mode 100644 wrt/node_modules/run-series/test/basic.js create mode 100644 wrt/node_modules/run-series/test/empty-array.js create mode 100644 wrt/node_modules/run-series/test/error.js create mode 100644 wrt/node_modules/run-series/test/no-callback.js create mode 100644 wrt/node_modules/safe-buffer/.travis.yml create mode 100644 wrt/node_modules/safe-buffer/LICENSE create mode 100644 wrt/node_modules/safe-buffer/README.md create mode 100644 wrt/node_modules/safe-buffer/browser.js create mode 100644 wrt/node_modules/safe-buffer/index.js create mode 100644 wrt/node_modules/safe-buffer/package.json create mode 100644 wrt/node_modules/safe-buffer/test.js create mode 100644 wrt/node_modules/sax/LICENSE create mode 100644 wrt/node_modules/sax/README.md create mode 100644 wrt/node_modules/sax/lib/sax.js create mode 100644 wrt/node_modules/sax/package.json create mode 100644 wrt/node_modules/send/HISTORY.md create mode 100644 wrt/node_modules/send/LICENSE create mode 100644 wrt/node_modules/send/README.md create mode 100644 wrt/node_modules/send/index.js create mode 100644 wrt/node_modules/send/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/send/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/send/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/send/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/send/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/send/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/send/node_modules/debug/Makefile create mode 100644 wrt/node_modules/send/node_modules/debug/README.md create mode 100644 wrt/node_modules/send/node_modules/debug/component.json create mode 100644 wrt/node_modules/send/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/send/node_modules/debug/node.js create mode 100644 wrt/node_modules/send/node_modules/debug/package.json create mode 100644 wrt/node_modules/send/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/send/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/send/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/send/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/send/package.json create mode 100644 wrt/node_modules/serve-static/HISTORY.md create mode 100644 wrt/node_modules/serve-static/LICENSE create mode 100644 wrt/node_modules/serve-static/README.md create mode 100644 wrt/node_modules/serve-static/index.js create mode 100644 wrt/node_modules/serve-static/package.json create mode 100644 wrt/node_modules/setimmediate/LICENSE.txt create mode 100644 wrt/node_modules/setimmediate/package.json create mode 100644 wrt/node_modules/setimmediate/setImmediate.js create mode 100644 wrt/node_modules/setprototypeof/LICENSE create mode 100644 wrt/node_modules/setprototypeof/README.md create mode 100644 wrt/node_modules/setprototypeof/index.js create mode 100644 wrt/node_modules/setprototypeof/package.json create mode 100644 wrt/node_modules/slice-stream/.travis.yml create mode 100644 wrt/node_modules/slice-stream/LICENSE create mode 100644 wrt/node_modules/slice-stream/README.md create mode 100644 wrt/node_modules/slice-stream/examples/until.js create mode 100644 wrt/node_modules/slice-stream/package.json create mode 100644 wrt/node_modules/slice-stream/slicestream.js create mode 100644 wrt/node_modules/slice-stream/test/until.js create mode 100644 wrt/node_modules/socket.io-adapter/.npmignore create mode 100644 wrt/node_modules/socket.io-adapter/LICENSE create mode 100644 wrt/node_modules/socket.io-adapter/Readme.md create mode 100644 wrt/node_modules/socket.io-adapter/index.js create mode 100644 wrt/node_modules/socket.io-adapter/package.json create mode 100644 wrt/node_modules/socket.io-client/History.md create mode 100644 wrt/node_modules/socket.io-client/LICENSE create mode 100644 wrt/node_modules/socket.io-client/README.md create mode 100644 wrt/node_modules/socket.io-client/dist/socket.io.js create mode 100644 wrt/node_modules/socket.io-client/dist/socket.io.js.map create mode 100644 wrt/node_modules/socket.io-client/dist/socket.io.slim.js create mode 100644 wrt/node_modules/socket.io-client/dist/socket.io.slim.js.map create mode 100644 wrt/node_modules/socket.io-client/lib/index.js create mode 100644 wrt/node_modules/socket.io-client/lib/manager.js create mode 100644 wrt/node_modules/socket.io-client/lib/on.js create mode 100644 wrt/node_modules/socket.io-client/lib/socket.js create mode 100644 wrt/node_modules/socket.io-client/lib/url.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/Makefile create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/README.md create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/component.json create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/node.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/package.json create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/src/inspector-log.js create mode 100644 wrt/node_modules/socket.io-client/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/socket.io-client/package.json create mode 100644 wrt/node_modules/socket.io-parser/History.md create mode 100644 wrt/node_modules/socket.io-parser/LICENSE create mode 100644 wrt/node_modules/socket.io-parser/Readme.md create mode 100644 wrt/node_modules/socket.io-parser/binary.js create mode 100644 wrt/node_modules/socket.io-parser/index.js create mode 100644 wrt/node_modules/socket.io-parser/is-buffer.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/Makefile create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/README.md create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/component.json create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/node.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/package.json create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/src/inspector-log.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/isarray/README.md create mode 100644 wrt/node_modules/socket.io-parser/node_modules/isarray/index.js create mode 100644 wrt/node_modules/socket.io-parser/node_modules/isarray/package.json create mode 100644 wrt/node_modules/socket.io-parser/package.json create mode 100644 wrt/node_modules/socket.io/History.md create mode 100644 wrt/node_modules/socket.io/LICENSE create mode 100644 wrt/node_modules/socket.io/Readme.md create mode 100644 wrt/node_modules/socket.io/lib/client.js create mode 100644 wrt/node_modules/socket.io/lib/index.js create mode 100644 wrt/node_modules/socket.io/lib/namespace.js create mode 100644 wrt/node_modules/socket.io/lib/socket.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/.coveralls.yml create mode 100644 wrt/node_modules/socket.io/node_modules/debug/.eslintrc create mode 100644 wrt/node_modules/socket.io/node_modules/debug/.npmignore create mode 100644 wrt/node_modules/socket.io/node_modules/debug/.travis.yml create mode 100644 wrt/node_modules/socket.io/node_modules/debug/CHANGELOG.md create mode 100644 wrt/node_modules/socket.io/node_modules/debug/LICENSE create mode 100644 wrt/node_modules/socket.io/node_modules/debug/Makefile create mode 100644 wrt/node_modules/socket.io/node_modules/debug/README.md create mode 100644 wrt/node_modules/socket.io/node_modules/debug/component.json create mode 100644 wrt/node_modules/socket.io/node_modules/debug/karma.conf.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/node.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/package.json create mode 100644 wrt/node_modules/socket.io/node_modules/debug/src/browser.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/src/debug.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/src/index.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/src/inspector-log.js create mode 100644 wrt/node_modules/socket.io/node_modules/debug/src/node.js create mode 100644 wrt/node_modules/socket.io/package.json create mode 100644 wrt/node_modules/sprintf-js/.editorconfig create mode 100644 wrt/node_modules/sprintf-js/.eslintignore create mode 100644 wrt/node_modules/sprintf-js/.eslintrc.js create mode 100644 wrt/node_modules/sprintf-js/.npmignore create mode 100644 wrt/node_modules/sprintf-js/.travis.yml create mode 100644 wrt/node_modules/sprintf-js/CHANGELOG.md create mode 100644 wrt/node_modules/sprintf-js/CONTRIBUTORS create mode 100644 wrt/node_modules/sprintf-js/LICENSE create mode 100644 wrt/node_modules/sprintf-js/README.md create mode 100644 wrt/node_modules/sprintf-js/benchmark/benchmark.js create mode 100644 wrt/node_modules/sprintf-js/bower.json create mode 100644 wrt/node_modules/sprintf-js/demo/angular.html create mode 100644 wrt/node_modules/sprintf-js/dist/.gitattributes create mode 100644 wrt/node_modules/sprintf-js/dist/angular-sprintf.min.js create mode 100644 wrt/node_modules/sprintf-js/dist/angular-sprintf.min.js.map create mode 100644 wrt/node_modules/sprintf-js/dist/sprintf.min.js create mode 100644 wrt/node_modules/sprintf-js/dist/sprintf.min.js.map create mode 100644 wrt/node_modules/sprintf-js/gulpfile.js create mode 100644 wrt/node_modules/sprintf-js/package.json create mode 100644 wrt/node_modules/sprintf-js/src/angular-sprintf.js create mode 100644 wrt/node_modules/sprintf-js/src/sprintf.js create mode 100644 wrt/node_modules/sprintf-js/test/test.js create mode 100644 wrt/node_modules/sprintf-js/test/test_validation.js create mode 100644 wrt/node_modules/statuses/HISTORY.md create mode 100644 wrt/node_modules/statuses/LICENSE create mode 100644 wrt/node_modules/statuses/README.md create mode 100644 wrt/node_modules/statuses/codes.json create mode 100644 wrt/node_modules/statuses/index.js create mode 100644 wrt/node_modules/statuses/package.json create mode 100644 wrt/node_modules/string_decoder/.npmignore create mode 100644 wrt/node_modules/string_decoder/LICENSE create mode 100644 wrt/node_modules/string_decoder/README.md create mode 100644 wrt/node_modules/string_decoder/index.js create mode 100644 wrt/node_modules/string_decoder/package.json create mode 100755 wrt/node_modules/strip-ansi/cli.js create mode 100644 wrt/node_modules/strip-ansi/index.js create mode 100644 wrt/node_modules/strip-ansi/package.json create mode 100644 wrt/node_modules/strip-ansi/readme.md create mode 100644 wrt/node_modules/supports-color/browser.js create mode 100644 wrt/node_modules/supports-color/index.js create mode 100644 wrt/node_modules/supports-color/license create mode 100644 wrt/node_modules/supports-color/package.json create mode 100644 wrt/node_modules/supports-color/readme.md create mode 100644 wrt/node_modules/to-array/.npmignore create mode 100644 wrt/node_modules/to-array/LICENCE create mode 100644 wrt/node_modules/to-array/README.md create mode 100644 wrt/node_modules/to-array/index.js create mode 100644 wrt/node_modules/to-array/package.json create mode 100644 wrt/node_modules/traverse/.npmignore create mode 100644 wrt/node_modules/traverse/LICENSE create mode 100644 wrt/node_modules/traverse/README.markdown create mode 100755 wrt/node_modules/traverse/examples/json.js create mode 100755 wrt/node_modules/traverse/examples/leaves.js create mode 100755 wrt/node_modules/traverse/examples/negative.js create mode 100755 wrt/node_modules/traverse/examples/stringify.js create mode 100755 wrt/node_modules/traverse/index.js create mode 100644 wrt/node_modules/traverse/package.json create mode 100644 wrt/node_modules/traverse/test/circular.js create mode 100644 wrt/node_modules/traverse/test/date.js create mode 100644 wrt/node_modules/traverse/test/equal.js create mode 100644 wrt/node_modules/traverse/test/instance.js create mode 100644 wrt/node_modules/traverse/test/interface.js create mode 100644 wrt/node_modules/traverse/test/json.js create mode 100644 wrt/node_modules/traverse/test/leaves.js create mode 100644 wrt/node_modules/traverse/test/mutability.js create mode 100644 wrt/node_modules/traverse/test/negative.js create mode 100644 wrt/node_modules/traverse/test/obj.js create mode 100644 wrt/node_modules/traverse/test/stop.js create mode 100644 wrt/node_modules/traverse/test/stringify.js create mode 100644 wrt/node_modules/traverse/test/super_deep.js create mode 100644 wrt/node_modules/type-is/HISTORY.md create mode 100644 wrt/node_modules/type-is/LICENSE create mode 100644 wrt/node_modules/type-is/README.md create mode 100644 wrt/node_modules/type-is/index.js create mode 100644 wrt/node_modules/type-is/package.json create mode 100644 wrt/node_modules/ultron/LICENSE create mode 100644 wrt/node_modules/ultron/index.js create mode 100644 wrt/node_modules/ultron/package.json create mode 100644 wrt/node_modules/underscore-plus/LICENSE.md create mode 100644 wrt/node_modules/underscore-plus/README.md create mode 100644 wrt/node_modules/underscore-plus/lib/underscore-plus.js create mode 100644 wrt/node_modules/underscore-plus/package.json create mode 100644 wrt/node_modules/underscore.string/.editorconfig create mode 100644 wrt/node_modules/underscore.string/.eslintignore create mode 100644 wrt/node_modules/underscore.string/.eslintrc create mode 100644 wrt/node_modules/underscore.string/.npmignore create mode 100644 wrt/node_modules/underscore.string/.travis.yml create mode 100644 wrt/node_modules/underscore.string/CHANGELOG.markdown create mode 100644 wrt/node_modules/underscore.string/CONTRIBUTING.markdown create mode 100644 wrt/node_modules/underscore.string/README.markdown create mode 100644 wrt/node_modules/underscore.string/bower.json create mode 100644 wrt/node_modules/underscore.string/camelize.js create mode 100644 wrt/node_modules/underscore.string/capitalize.js create mode 100644 wrt/node_modules/underscore.string/chars.js create mode 100644 wrt/node_modules/underscore.string/chop.js create mode 100644 wrt/node_modules/underscore.string/classify.js create mode 100644 wrt/node_modules/underscore.string/clean.js create mode 100644 wrt/node_modules/underscore.string/cleanDiacritics.js create mode 100644 wrt/node_modules/underscore.string/component.json create mode 100644 wrt/node_modules/underscore.string/count.js create mode 100644 wrt/node_modules/underscore.string/dasherize.js create mode 100644 wrt/node_modules/underscore.string/decapitalize.js create mode 100644 wrt/node_modules/underscore.string/dedent.js create mode 100644 wrt/node_modules/underscore.string/dist/underscore.string.js create mode 100644 wrt/node_modules/underscore.string/dist/underscore.string.min.js create mode 100644 wrt/node_modules/underscore.string/endsWith.js create mode 100644 wrt/node_modules/underscore.string/escapeHTML.js create mode 100644 wrt/node_modules/underscore.string/exports.js create mode 100644 wrt/node_modules/underscore.string/helper/adjacent.js create mode 100644 wrt/node_modules/underscore.string/helper/defaultToWhiteSpace.js create mode 100644 wrt/node_modules/underscore.string/helper/escapeChars.js create mode 100644 wrt/node_modules/underscore.string/helper/escapeRegExp.js create mode 100644 wrt/node_modules/underscore.string/helper/htmlEntities.js create mode 100644 wrt/node_modules/underscore.string/helper/makeString.js create mode 100644 wrt/node_modules/underscore.string/helper/strRepeat.js create mode 100644 wrt/node_modules/underscore.string/helper/toPositive.js create mode 100644 wrt/node_modules/underscore.string/humanize.js create mode 100644 wrt/node_modules/underscore.string/include.js create mode 100644 wrt/node_modules/underscore.string/index.js create mode 100644 wrt/node_modules/underscore.string/insert.js create mode 100644 wrt/node_modules/underscore.string/isBlank.js create mode 100644 wrt/node_modules/underscore.string/join.js create mode 100644 wrt/node_modules/underscore.string/levenshtein.js create mode 100644 wrt/node_modules/underscore.string/lines.js create mode 100644 wrt/node_modules/underscore.string/lpad.js create mode 100644 wrt/node_modules/underscore.string/lrpad.js create mode 100644 wrt/node_modules/underscore.string/ltrim.js create mode 100644 wrt/node_modules/underscore.string/map.js create mode 100644 wrt/node_modules/underscore.string/meteor-post.js create mode 100644 wrt/node_modules/underscore.string/meteor-pre.js create mode 100644 wrt/node_modules/underscore.string/naturalCmp.js create mode 100644 wrt/node_modules/underscore.string/numberFormat.js create mode 100644 wrt/node_modules/underscore.string/package.js create mode 100644 wrt/node_modules/underscore.string/package.json create mode 100644 wrt/node_modules/underscore.string/pad.js create mode 100644 wrt/node_modules/underscore.string/pred.js create mode 100644 wrt/node_modules/underscore.string/prune.js create mode 100644 wrt/node_modules/underscore.string/quote.js create mode 100644 wrt/node_modules/underscore.string/repeat.js create mode 100644 wrt/node_modules/underscore.string/replaceAll.js create mode 100644 wrt/node_modules/underscore.string/reverse.js create mode 100644 wrt/node_modules/underscore.string/rpad.js create mode 100644 wrt/node_modules/underscore.string/rtrim.js create mode 100644 wrt/node_modules/underscore.string/slugify.js create mode 100644 wrt/node_modules/underscore.string/splice.js create mode 100644 wrt/node_modules/underscore.string/sprintf.js create mode 100644 wrt/node_modules/underscore.string/startsWith.js create mode 100644 wrt/node_modules/underscore.string/strLeft.js create mode 100644 wrt/node_modules/underscore.string/strLeftBack.js create mode 100644 wrt/node_modules/underscore.string/strRight.js create mode 100644 wrt/node_modules/underscore.string/strRightBack.js create mode 100644 wrt/node_modules/underscore.string/stripTags.js create mode 100644 wrt/node_modules/underscore.string/succ.js create mode 100644 wrt/node_modules/underscore.string/surround.js create mode 100644 wrt/node_modules/underscore.string/swapCase.js create mode 100644 wrt/node_modules/underscore.string/titleize.js create mode 100644 wrt/node_modules/underscore.string/toBoolean.js create mode 100644 wrt/node_modules/underscore.string/toNumber.js create mode 100644 wrt/node_modules/underscore.string/toSentence.js create mode 100644 wrt/node_modules/underscore.string/toSentenceSerial.js create mode 100644 wrt/node_modules/underscore.string/trim.js create mode 100644 wrt/node_modules/underscore.string/truncate.js create mode 100644 wrt/node_modules/underscore.string/underscored.js create mode 100644 wrt/node_modules/underscore.string/unescapeHTML.js create mode 100644 wrt/node_modules/underscore.string/unquote.js create mode 100644 wrt/node_modules/underscore.string/vsprintf.js create mode 100644 wrt/node_modules/underscore.string/words.js create mode 100644 wrt/node_modules/underscore.string/wrap.js create mode 100644 wrt/node_modules/underscore/LICENSE create mode 100644 wrt/node_modules/underscore/README.md create mode 100644 wrt/node_modules/underscore/package.json create mode 100644 wrt/node_modules/underscore/underscore-min.js create mode 100644 wrt/node_modules/underscore/underscore.js create mode 100644 wrt/node_modules/unpipe/HISTORY.md create mode 100644 wrt/node_modules/unpipe/LICENSE create mode 100644 wrt/node_modules/unpipe/README.md create mode 100644 wrt/node_modules/unpipe/index.js create mode 100644 wrt/node_modules/unpipe/package.json create mode 100644 wrt/node_modules/unzip/.npmignore create mode 100644 wrt/node_modules/unzip/.travis.yml create mode 100644 wrt/node_modules/unzip/LICENSE create mode 100644 wrt/node_modules/unzip/README.md create mode 100644 wrt/node_modules/unzip/lib/entry.js create mode 100644 wrt/node_modules/unzip/lib/extract.js create mode 100644 wrt/node_modules/unzip/lib/parse.js create mode 100644 wrt/node_modules/unzip/package.json create mode 100644 wrt/node_modules/unzip/test/compressed.js create mode 100644 wrt/node_modules/unzip/test/fileSizeUnknownFlag.js create mode 100644 wrt/node_modules/unzip/test/pipeSingleEntry.js create mode 100644 wrt/node_modules/unzip/test/uncompressed.js create mode 100644 wrt/node_modules/unzip/testData/compressed-OSX-Finder/archive.zip create mode 100644 wrt/node_modules/unzip/testData/compressed-OSX-Finder/inflated/dir/fileInsideDir.txt create mode 100644 wrt/node_modules/unzip/testData/compressed-OSX-Finder/inflated/file.txt create mode 100644 wrt/node_modules/unzip/testData/compressed-flags-set/archive.zip create mode 100644 wrt/node_modules/unzip/testData/compressed-flags-set/inflated/dir/fileInsideDir.txt create mode 100644 wrt/node_modules/unzip/testData/compressed-flags-set/inflated/file.txt create mode 100644 wrt/node_modules/unzip/testData/compressed-standard/archive.zip create mode 100644 wrt/node_modules/unzip/testData/compressed-standard/inflated/dir/fileInsideDir.txt create mode 100644 wrt/node_modules/unzip/testData/compressed-standard/inflated/file.txt create mode 100644 wrt/node_modules/unzip/testData/uncompressed/archive.zip create mode 100644 wrt/node_modules/unzip/testData/uncompressed/inflated/dir/fileInsideDir.txt create mode 100644 wrt/node_modules/unzip/testData/uncompressed/inflated/file.txt create mode 100644 wrt/node_modules/unzip/unzip.js create mode 100644 wrt/node_modules/util-deprecate/History.md create mode 100644 wrt/node_modules/util-deprecate/LICENSE create mode 100644 wrt/node_modules/util-deprecate/README.md create mode 100644 wrt/node_modules/util-deprecate/browser.js create mode 100644 wrt/node_modules/util-deprecate/node.js create mode 100644 wrt/node_modules/util-deprecate/package.json create mode 100644 wrt/node_modules/utils-merge/.travis.yml create mode 100644 wrt/node_modules/utils-merge/LICENSE create mode 100644 wrt/node_modules/utils-merge/README.md create mode 100644 wrt/node_modules/utils-merge/index.js create mode 100644 wrt/node_modules/utils-merge/package.json create mode 100644 wrt/node_modules/uws/LICENSE create mode 100644 wrt/node_modules/uws/README.md create mode 100644 wrt/node_modules/uws/binding.gyp create mode 100644 wrt/node_modules/uws/build/Makefile create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/action_after_build.stamp.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws.node.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/Extensions.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/Group.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/HTTPSocket.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/Hub.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/Networking.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/Node.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/Socket.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/WebSocket.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/obj.target/uws/src/addon.o.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/Release/uws.node.d create mode 100644 wrt/node_modules/uws/build/Release/.deps/uws.d create mode 100644 wrt/node_modules/uws/build/Release/obj.target/action_after_build.stamp create mode 100755 wrt/node_modules/uws/build/Release/obj.target/uws.node create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/Extensions.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/Group.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/HTTPSocket.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/Hub.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/Networking.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/Node.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/Socket.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/WebSocket.o create mode 100644 wrt/node_modules/uws/build/Release/obj.target/uws/src/addon.o create mode 100755 wrt/node_modules/uws/build/Release/uws.node create mode 100644 wrt/node_modules/uws/build/action_after_build.target.mk create mode 100644 wrt/node_modules/uws/build/binding.Makefile create mode 100644 wrt/node_modules/uws/build/config.gypi create mode 100644 wrt/node_modules/uws/build/uws.target.mk create mode 100644 wrt/node_modules/uws/build_log.txt create mode 100644 wrt/node_modules/uws/package.json create mode 100644 wrt/node_modules/uws/src/Asio.h create mode 100644 wrt/node_modules/uws/src/Backend.h create mode 100644 wrt/node_modules/uws/src/Epoll.cpp create mode 100644 wrt/node_modules/uws/src/Epoll.h create mode 100644 wrt/node_modules/uws/src/Extensions.cpp create mode 100644 wrt/node_modules/uws/src/Extensions.h create mode 100644 wrt/node_modules/uws/src/Group.cpp create mode 100644 wrt/node_modules/uws/src/Group.h create mode 100644 wrt/node_modules/uws/src/HTTPSocket.cpp create mode 100644 wrt/node_modules/uws/src/HTTPSocket.h create mode 100644 wrt/node_modules/uws/src/Hub.cpp create mode 100644 wrt/node_modules/uws/src/Hub.h create mode 100644 wrt/node_modules/uws/src/Libuv.h create mode 100644 wrt/node_modules/uws/src/Networking.cpp create mode 100644 wrt/node_modules/uws/src/Networking.h create mode 100644 wrt/node_modules/uws/src/Node.cpp create mode 100644 wrt/node_modules/uws/src/Node.h create mode 100644 wrt/node_modules/uws/src/Socket.cpp create mode 100644 wrt/node_modules/uws/src/Socket.h create mode 100644 wrt/node_modules/uws/src/WebSocket.cpp create mode 100644 wrt/node_modules/uws/src/WebSocket.h create mode 100644 wrt/node_modules/uws/src/WebSocketProtocol.h create mode 100644 wrt/node_modules/uws/src/addon.cpp create mode 100644 wrt/node_modules/uws/src/addon.h create mode 100644 wrt/node_modules/uws/src/http.h create mode 100644 wrt/node_modules/uws/src/uWS.h create mode 100644 wrt/node_modules/uws/uws.js create mode 100755 wrt/node_modules/uws/uws_darwin_46.node create mode 100755 wrt/node_modules/uws/uws_darwin_47.node create mode 100755 wrt/node_modules/uws/uws_darwin_48.node create mode 100755 wrt/node_modules/uws/uws_darwin_51.node create mode 100755 wrt/node_modules/uws/uws_linux_46.node create mode 100755 wrt/node_modules/uws/uws_linux_47.node create mode 100755 wrt/node_modules/uws/uws_linux_48.node create mode 100755 wrt/node_modules/uws/uws_linux_51.node create mode 100755 wrt/node_modules/uws/uws_win32_48.node create mode 100755 wrt/node_modules/uws/uws_win32_51.node create mode 100644 wrt/node_modules/vary/HISTORY.md create mode 100644 wrt/node_modules/vary/LICENSE create mode 100644 wrt/node_modules/vary/README.md create mode 100644 wrt/node_modules/vary/index.js create mode 100644 wrt/node_modules/vary/package.json create mode 100644 wrt/node_modules/window-size/LICENSE create mode 100644 wrt/node_modules/window-size/README.md create mode 100755 wrt/node_modules/window-size/cli.js create mode 100644 wrt/node_modules/window-size/index.js create mode 100644 wrt/node_modules/window-size/package.json create mode 100644 wrt/node_modules/wrappy/LICENSE create mode 100644 wrt/node_modules/wrappy/README.md create mode 100644 wrt/node_modules/wrappy/package.json create mode 100644 wrt/node_modules/wrappy/wrappy.js create mode 100644 wrt/node_modules/ws/LICENSE create mode 100644 wrt/node_modules/ws/README.md create mode 100644 wrt/node_modules/ws/index.js create mode 100644 wrt/node_modules/ws/lib/BufferUtil.js create mode 100644 wrt/node_modules/ws/lib/Constants.js create mode 100644 wrt/node_modules/ws/lib/ErrorCodes.js create mode 100644 wrt/node_modules/ws/lib/EventTarget.js create mode 100644 wrt/node_modules/ws/lib/Extensions.js create mode 100644 wrt/node_modules/ws/lib/PerMessageDeflate.js create mode 100644 wrt/node_modules/ws/lib/Receiver.js create mode 100644 wrt/node_modules/ws/lib/Sender.js create mode 100644 wrt/node_modules/ws/lib/Validation.js create mode 100644 wrt/node_modules/ws/lib/WebSocket.js create mode 100644 wrt/node_modules/ws/lib/WebSocketServer.js create mode 100644 wrt/node_modules/ws/package.json create mode 100644 wrt/node_modules/xml2js/LICENSE create mode 100644 wrt/node_modules/xml2js/README.md create mode 100644 wrt/node_modules/xml2js/lib/bom.js create mode 100644 wrt/node_modules/xml2js/lib/builder.js create mode 100644 wrt/node_modules/xml2js/lib/defaults.js create mode 100644 wrt/node_modules/xml2js/lib/parser.js create mode 100644 wrt/node_modules/xml2js/lib/processors.js create mode 100644 wrt/node_modules/xml2js/lib/xml2js.js create mode 100644 wrt/node_modules/xml2js/package.json create mode 100644 wrt/node_modules/xmlbuilder/.npmignore create mode 100644 wrt/node_modules/xmlbuilder/CHANGELOG.md create mode 100644 wrt/node_modules/xmlbuilder/LICENSE create mode 100644 wrt/node_modules/xmlbuilder/README.md create mode 100644 wrt/node_modules/xmlbuilder/lib/Utility.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLAttribute.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLCData.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLComment.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDTDAttList.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDTDElement.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDTDEntity.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDTDNotation.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDeclaration.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDocType.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDocument.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLDocumentCB.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLElement.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLNode.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLRaw.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLStreamWriter.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLStringWriter.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLStringifier.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLText.js create mode 100644 wrt/node_modules/xmlbuilder/lib/XMLWriterBase.js create mode 100644 wrt/node_modules/xmlbuilder/lib/index.js create mode 100644 wrt/node_modules/xmlbuilder/package.json create mode 100644 wrt/node_modules/xmlhttprequest-ssl/LICENSE create mode 100644 wrt/node_modules/xmlhttprequest-ssl/README.md create mode 100644 wrt/node_modules/xmlhttprequest-ssl/autotest.watchr create mode 100644 wrt/node_modules/xmlhttprequest-ssl/example/demo.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/package.json create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-constants.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-events.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-exceptions.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-headers.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-redirect-302.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-redirect-303.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-redirect-307.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-request-methods.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/test-request-protocols.js create mode 100644 wrt/node_modules/xmlhttprequest-ssl/tests/testdata.txt create mode 100644 wrt/node_modules/y18n/LICENSE create mode 100644 wrt/node_modules/y18n/README.md create mode 100644 wrt/node_modules/y18n/index.js create mode 100644 wrt/node_modules/y18n/package.json create mode 100644 wrt/node_modules/yargs/CHANGELOG.md create mode 100644 wrt/node_modules/yargs/LICENSE create mode 100644 wrt/node_modules/yargs/README.md create mode 100644 wrt/node_modules/yargs/completion.sh.hbs create mode 100644 wrt/node_modules/yargs/index.js create mode 100644 wrt/node_modules/yargs/lib/completion.js create mode 100644 wrt/node_modules/yargs/lib/parser.js create mode 100644 wrt/node_modules/yargs/lib/usage.js create mode 100644 wrt/node_modules/yargs/lib/validation.js create mode 100644 wrt/node_modules/yargs/locales/en.json create mode 100644 wrt/node_modules/yargs/locales/es.json create mode 100644 wrt/node_modules/yargs/locales/fr.json create mode 100644 wrt/node_modules/yargs/locales/pirate.json create mode 100644 wrt/node_modules/yargs/locales/pt.json create mode 100644 wrt/node_modules/yargs/node_modules/camelcase/index.js create mode 100644 wrt/node_modules/yargs/node_modules/camelcase/license create mode 100644 wrt/node_modules/yargs/node_modules/camelcase/package.json create mode 100644 wrt/node_modules/yargs/node_modules/camelcase/readme.md create mode 100644 wrt/node_modules/yargs/node_modules/cliui/.coveralls.yml create mode 100644 wrt/node_modules/yargs/node_modules/cliui/.npmignore create mode 100644 wrt/node_modules/yargs/node_modules/cliui/.travis.yml create mode 100644 wrt/node_modules/yargs/node_modules/cliui/LICENSE.txt create mode 100644 wrt/node_modules/yargs/node_modules/cliui/README.md create mode 100644 wrt/node_modules/yargs/node_modules/cliui/index.js create mode 100644 wrt/node_modules/yargs/node_modules/cliui/package.json create mode 100644 wrt/node_modules/yargs/node_modules/cliui/test/cliui.js create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/.npmignore create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/README.markdown create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/example/center.js create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/example/meat.js create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/index.js create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/package.json create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/test/break.js create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/test/idleness.txt create mode 100644 wrt/node_modules/yargs/node_modules/wordwrap/test/wrap.js create mode 100644 wrt/node_modules/yargs/package.json create mode 100644 wrt/node_modules/yeast/LICENSE create mode 100644 wrt/node_modules/yeast/README.md create mode 100644 wrt/node_modules/yeast/index.js create mode 100644 wrt/node_modules/yeast/package.json diff --git a/wrt/node_modules/.bin/mime b/wrt/node_modules/.bin/mime new file mode 120000 index 0000000..fbb7ee0 --- /dev/null +++ b/wrt/node_modules/.bin/mime @@ -0,0 +1 @@ +../mime/cli.js \ No newline at end of file diff --git a/wrt/node_modules/.bin/mkdirp b/wrt/node_modules/.bin/mkdirp new file mode 120000 index 0000000..017896c --- /dev/null +++ b/wrt/node_modules/.bin/mkdirp @@ -0,0 +1 @@ +../mkdirp/bin/cmd.js \ No newline at end of file diff --git a/wrt/node_modules/.bin/ncp b/wrt/node_modules/.bin/ncp new file mode 120000 index 0000000..1c02648 --- /dev/null +++ b/wrt/node_modules/.bin/ncp @@ -0,0 +1 @@ +../ncp/bin/ncp \ No newline at end of file diff --git a/wrt/node_modules/.bin/rimraf b/wrt/node_modules/.bin/rimraf new file mode 120000 index 0000000..4cd49a4 --- /dev/null +++ b/wrt/node_modules/.bin/rimraf @@ -0,0 +1 @@ +../rimraf/bin.js \ No newline at end of file diff --git a/wrt/node_modules/.bin/show_dialog b/wrt/node_modules/.bin/show_dialog new file mode 120000 index 0000000..6f57ae8 --- /dev/null +++ b/wrt/node_modules/.bin/show_dialog @@ -0,0 +1 @@ +../dialog/bin/dialog.js \ No newline at end of file diff --git a/wrt/node_modules/.bin/strip-ansi b/wrt/node_modules/.bin/strip-ansi new file mode 120000 index 0000000..b65c9f8 --- /dev/null +++ b/wrt/node_modules/.bin/strip-ansi @@ -0,0 +1 @@ +../strip-ansi/cli.js \ No newline at end of file diff --git a/wrt/node_modules/.bin/uuid b/wrt/node_modules/.bin/uuid new file mode 120000 index 0000000..80eb14a --- /dev/null +++ b/wrt/node_modules/.bin/uuid @@ -0,0 +1 @@ +../node-uuid/bin/uuid \ No newline at end of file diff --git a/wrt/node_modules/.bin/window-size b/wrt/node_modules/.bin/window-size new file mode 120000 index 0000000..e84c8ec --- /dev/null +++ b/wrt/node_modules/.bin/window-size @@ -0,0 +1 @@ +../window-size/cli.js \ No newline at end of file diff --git a/wrt/node_modules/accepts/HISTORY.md b/wrt/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..0477ed7 --- /dev/null +++ b/wrt/node_modules/accepts/HISTORY.md @@ -0,0 +1,212 @@ +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/wrt/node_modules/accepts/LICENSE b/wrt/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/wrt/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(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/wrt/node_modules/accepts/README.md b/wrt/node_modules/accepts/README.md new file mode 100644 index 0000000..ae36676 --- /dev/null +++ b/wrt/node_modules/accepts/README.md @@ -0,0 +1,135 @@ +# 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 + +```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]: http://nodejs.org/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/wrt/node_modules/accepts/index.js b/wrt/node_modules/accepts/index.js new file mode 100644 index 0000000..e80192a --- /dev/null +++ b/wrt/node_modules/accepts/index.js @@ -0,0 +1,231 @@ +/*! + * 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() + } + + if (!this.headers.accept) return types[0]; + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + if (!first) return false; + return types[mimes.indexOf(first)]; +} + +/** + * 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/wrt/node_modules/accepts/package.json b/wrt/node_modules/accepts/package.json new file mode 100644 index 0000000..32a7717 --- /dev/null +++ b/wrt/node_modules/accepts/package.json @@ -0,0 +1,112 @@ +{ + "_args": [ + [ + { + "raw": "accepts@1.3.3", + "scope": null, + "escapedName": "accepts", + "name": "accepts", + "rawSpec": "1.3.3", + "spec": "1.3.3", + "type": "version" + }, + "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/engine.io" + ] + ], + "_from": "accepts@1.3.3", + "_id": "accepts@1.3.3", + "_inCache": true, + "_location": "/accepts", + "_nodeVersion": "4.4.3", + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/accepts-1.3.3.tgz_1462251932032_0.7092335098423064" + }, + "_npmUser": { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + }, + "_npmVersion": "2.15.1", + "_phantomChildren": {}, + "_requested": { + "raw": "accepts@1.3.3", + "scope": null, + "escapedName": "accepts", + "name": "accepts", + "rawSpec": "1.3.3", + "spec": "1.3.3", + "type": "version" + }, + "_requiredBy": [ + "/engine.io" + ], + "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca", + "_shrinkwrap": null, + "_spec": "accepts@1.3.3", + "_where": "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/engine.io", + "bugs": { + "url": "https://github.com/jshttp/accepts/issues" + }, + "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.11", + "negotiator": "0.6.1" + }, + "description": "Higher-level content negotiation", + "devDependencies": { + "istanbul": "0.4.3", + "mocha": "~1.21.5" + }, + "directories": {}, + "dist": { + "shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca", + "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "gitHead": "3e925b1e65ed7da2798849683d49814680dfa426", + "homepage": "https://github.com/jshttp/accepts#readme", + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "doug@somethingdoug.com" + } + ], + "name": "accepts", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/accepts.git" + }, + "scripts": { + "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.3" +} diff --git a/wrt/node_modules/after/.npmignore b/wrt/node_modules/after/.npmignore new file mode 100644 index 0000000..6c78602 --- /dev/null +++ b/wrt/node_modules/after/.npmignore @@ -0,0 +1,2 @@ +node_modules +.monitor diff --git a/wrt/node_modules/after/.travis.yml b/wrt/node_modules/after/.travis.yml new file mode 100644 index 0000000..afd72d0 --- /dev/null +++ b/wrt/node_modules/after/.travis.yml @@ -0,0 +1,12 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 + - 0.10 + - 0.12 + - 4.2.4 + - 5.4.1 + - iojs-1 + - iojs-2 + - iojs-3 diff --git a/wrt/node_modules/after/LICENCE b/wrt/node_modules/after/LICENCE new file mode 100644 index 0000000..7c35130 --- /dev/null +++ b/wrt/node_modules/after/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2011 Raynos. + +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. \ No newline at end of file diff --git a/wrt/node_modules/after/README.md b/wrt/node_modules/after/README.md new file mode 100644 index 0000000..fc69096 --- /dev/null +++ b/wrt/node_modules/after/README.md @@ -0,0 +1,115 @@ +# After [![Build Status][1]][2] + +Invoke callback after n calls + +## Status: production ready + +## Example + +```js +var after = require("after") +var db = require("./db") // some db. + +var updateUser = function (req, res) { + // use after to run two tasks in parallel, + // namely get request body and get session + // then run updateUser with the results + var next = after(2, updateUser) + var results = {} + + getJSONBody(req, res, function (err, body) { + if (err) return next(err) + + results.body = body + next(null, results) + }) + + getSessionUser(req, res, function (err, user) { + if (err) return next(err) + + results.user = user + next(null, results) + }) + + // now do the thing! + function updateUser(err, result) { + if (err) { + res.statusCode = 500 + return res.end("Unexpected Error") + } + + if (!result.user || result.user.role !== "admin") { + res.statusCode = 403 + return res.end("Permission Denied") + } + + db.put("users:" + req.params.userId, result.body, function (err) { + if (err) { + res.statusCode = 500 + return res.end("Unexpected Error") + } + + res.statusCode = 200 + res.end("Ok") + }) + } +} +``` + +## Naive Example + +```js +var after = require("after") + , next = after(3, logItWorks) + +next() +next() +next() // it works + +function logItWorks() { + console.log("it works!") +} +``` + +## Example with error handling + +```js +var after = require("after") + , next = after(3, logError) + +next() +next(new Error("oops")) // logs oops +next() // does nothing + +// This callback is only called once. +// If there is an error the callback gets called immediately +// this avoids the situation where errors get lost. +function logError(err) { + console.log(err) +} +``` + +## Installation + +`npm install after` + +## Tests + +`npm test` + +## Contributors + + - Raynos + - defunctzombie + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Raynos/after.png + [2]: http://travis-ci.org/Raynos/after + [3]: http://raynos.org/blog/2/Flow-control-in-node.js + [4]: http://stackoverflow.com/questions/6852059/determining-the-end-of-asynchronous-operations-javascript/6852307#6852307 + [5]: http://stackoverflow.com/questions/6869872/in-javascript-what-are-best-practices-for-executing-multiple-asynchronous-functi/6870031#6870031 + [6]: http://stackoverflow.com/questions/6864397/javascript-performance-long-running-tasks/6889419#6889419 + [7]: http://stackoverflow.com/questions/6597493/synchronous-database-queries-with-node-js/6620091#6620091 + [8]: http://github.com/Raynos/iterators + [9]: http://github.com/Raynos/composite diff --git a/wrt/node_modules/after/index.js b/wrt/node_modules/after/index.js new file mode 100644 index 0000000..ec24879 --- /dev/null +++ b/wrt/node_modules/after/index.js @@ -0,0 +1,28 @@ +module.exports = after + +function after(count, callback, err_cb) { + var bail = false + err_cb = err_cb || noop + proxy.count = count + + return (count === 0) ? callback() : proxy + + function proxy(err, result) { + if (proxy.count <= 0) { + throw new Error('after called too many times') + } + --proxy.count + + // after first error, rest are passed to err_cb + if (err) { + bail = true + callback(err) + // future error callbacks will go to error handler + callback = err_cb + } else if (proxy.count === 0 && !bail) { + callback(null, result) + } + } +} + +function noop() {} diff --git a/wrt/node_modules/after/package.json b/wrt/node_modules/after/package.json new file mode 100644 index 0000000..af7970e --- /dev/null +++ b/wrt/node_modules/after/package.json @@ -0,0 +1,103 @@ +{ + "_args": [ + [ + { + "raw": "after@0.8.2", + "scope": null, + "escapedName": "after", + "name": "after", + "rawSpec": "0.8.2", + "spec": "0.8.2", + "type": "version" + }, + "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/engine.io-parser" + ] + ], + "_from": "after@0.8.2", + "_id": "after@0.8.2", + "_inCache": true, + "_location": "/after", + "_nodeVersion": "0.10.32", + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/after-0.8.2.tgz_1471308639186_0.9132961586583406" + }, + "_npmUser": { + "name": "raynos", + "email": "raynos2@gmail.com" + }, + "_npmVersion": "2.15.9", + "_phantomChildren": {}, + "_requested": { + "raw": "after@0.8.2", + "scope": null, + "escapedName": "after", + "name": "after", + "rawSpec": "0.8.2", + "spec": "0.8.2", + "type": "version" + }, + "_requiredBy": [ + "/engine.io-parser" + ], + "_resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "_shasum": "fedb394f9f0e02aa9768e702bda23b505fae7e1f", + "_shrinkwrap": null, + "_spec": "after@0.8.2", + "_where": "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/engine.io-parser", + "author": { + "name": "Raynos", + "email": "raynos2@gmail.com" + }, + "bugs": { + "url": "https://github.com/Raynos/after/issues" + }, + "contributors": [ + { + "name": "Raynos", + "email": "raynos2@gmail.com", + "url": "http://raynos.org" + } + ], + "dependencies": {}, + "description": "after - tiny flow control", + "devDependencies": { + "mocha": "~1.8.1" + }, + "directories": {}, + "dist": { + "shasum": "fedb394f9f0e02aa9768e702bda23b505fae7e1f", + "tarball": "https://registry.npmjs.org/after/-/after-0.8.2.tgz" + }, + "gitHead": "e8c26046f36962b90e68dc5df33a9672a54b25f5", + "homepage": "https://github.com/Raynos/after#readme", + "keywords": [ + "flowcontrol", + "after", + "flow", + "control", + "arch" + ], + "license": "MIT", + "maintainers": [ + { + "name": "raynos", + "email": "raynos2@gmail.com" + }, + { + "name": "defunctzombie", + "email": "shtylman@gmail.com" + } + ], + "name": "after", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/Raynos/after.git" + }, + "scripts": { + "test": "mocha --ui tdd --reporter spec test/*.js" + }, + "version": "0.8.2" +} diff --git a/wrt/node_modules/after/test/after-test.js b/wrt/node_modules/after/test/after-test.js new file mode 100644 index 0000000..0d63f4c --- /dev/null +++ b/wrt/node_modules/after/test/after-test.js @@ -0,0 +1,120 @@ +/*global suite, test*/ + +var assert = require("assert") + , after = require("../") + +test("exists", function () { + assert(typeof after === "function", "after is not a function") +}) + +test("after when called with 0 invokes", function (done) { + after(0, done) +}); + +test("after 1", function (done) { + var next = after(1, done) + next() +}) + +test("after 5", function (done) { + var next = after(5, done) + , i = 5 + + while (i--) { + next() + } +}) + +test("manipulate count", function (done) { + var next = after(1, done) + , i = 5 + + next.count = i + while (i--) { + next() + } +}) + +test("after terminates on error", function (done) { + var next = after(2, function(err) { + assert.equal(err.message, 'test'); + done(); + }) + next(new Error('test')) + next(new Error('test2')) +}) + +test('gee', function(done) { + done = after(2, done) + + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + assert.equal(err.message, 2) + done() + }); + + next() + next(new Error(1)) + next(new Error(2)) +}) + +test('eee', function(done) { + done = after(3, done) + + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + assert.equal(err.message, 2) + done() + }); + + next(new Error(1)) + next(new Error(2)) + next(new Error(2)) +}) + +test('gge', function(done) { + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + // should not happen + assert.ok(false); + }); + + next() + next() + next(new Error(1)) +}) + +test('egg', function(done) { + function cb(err) { + assert.equal(err.message, 1); + done() + } + + var next = after(3, cb, function(err) { + // should not happen + assert.ok(false); + }); + + next(new Error(1)) + next() + next() +}) + +test('throws on too many calls', function(done) { + var next = after(1, done); + next() + assert.throws(next, /after called too many times/); +}); + diff --git a/wrt/node_modules/align-text/LICENSE b/wrt/node_modules/align-text/LICENSE new file mode 100644 index 0000000..65f90ac --- /dev/null +++ b/wrt/node_modules/align-text/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015, Jon Schlinkert. + +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/wrt/node_modules/align-text/README.md b/wrt/node_modules/align-text/README.md new file mode 100644 index 0000000..476b97f --- /dev/null +++ b/wrt/node_modules/align-text/README.md @@ -0,0 +1,236 @@ +# align-text [![NPM version](https://badge.fury.io/js/align-text.svg)](http://badge.fury.io/js/align-text) [![Build Status](https://travis-ci.org/jonschlinkert/align-text.svg)](https://travis-ci.org/jonschlinkert/align-text) + +> Align the text in a string. + +**Examples** + +Align text values in an array: + +```js +align([1, 2, 3, 100]); +//=> [' 1', ' 2', ' 3', '100'] +``` + +Or [do stuff like this](./example.js): + +[![screen shot 2015-06-09 at 2 08 34 am](https://cloud.githubusercontent.com/assets/383994/8051597/7b716fbc-0e4c-11e5-9aef-4493fd22db58.png)](./example.js) + +Visit [the example](./example.js) to see how this works. + +## Install + +Install with [npm](https://www.npmjs.com/) + +```sh +$ npm i align-text --save +``` + +## Usage + +```js +var align = require('align-text'); +align(text, callback_function_or_integer); +``` + +**Params** + +* `text` can be a **string or array**. If a string is passed, a string will be returned. If an array is passed, an array will be returned. +* `callback|integer`: if an integer, the text will be indented by that amount. If a function, it must return an integer representing the amount of leading indentation to use as `align` loops over each line. + +**Example** + +```js +align(text, 4); +``` + +Would align: + +``` +abc +abc +abc +``` + +To: + +``` + abc + abc + abc +``` + +## callback + +### params + +The callback is used to determine the indentation of each line and gets the following params: + +* `len` the length of the "current" line +* `longest` the length of the longest line +* `line` the current line (string) being aligned +* `lines` the array of all lines + +### return + +The callback may return: + +* an integer that represents the number of spaces to use for padding, +* or an object with the following properties: + - `indent`: **{Number}** the amount of indentation to use. Default is `0` when an object is returned. + - `character`: **{String}** the character to use for indentation. Default is `''` (empty string) when an object is returned. + - `prefix`: **{String}** leading characters to use at the beginning of each line. `''` (empty string) when an object is returned. + +**Integer example:** + +```js +// calculate half the difference between the length +// of the current line and the longest line +function centerAlign(len, longest, line, lines) { + return Math.floor((longest - len) / 2); +} +``` + +**Object example:** + +```js +function centerAlign(len, longest, line, lines) { + return { + character: '\t', + indent: Math.floor((longest - len) / 2), + prefix: '~ ', + } +} +``` + +## Usage examples + +### Center align + +Using the `centerAlign` function from above: + +```js +align(text, centerAlign); +``` + +Would align this text: + +```js +Lorem ipsum dolor sit amet +consectetur adipiscin +elit, sed do eiusmod tempor incididun +ut labore et dolor +magna aliqua. Ut enim ad mini +veniam, quis +``` + +Resulting in this: + +``` + Lorem ipsum dolor sit amet, + consectetur adipiscing +elit, sed do eiusmod tempor incididunt + ut labore et dolore + magna aliqua. Ut enim ad minim + veniam, quis +``` + +**Customize** + +If you wanted to add more padding on the left, just pass the number in the callback. + +For example, to add 4 spaces before every line: + +```js +function centerAlign(len, longest, line, lines) { + return 4 + Math.floor((longest - len) / 2); +} +``` + +Would result in: + +``` + Lorem ipsum dolor sit amet, + consectetur adipiscing + elit, sed do eiusmod tempor incididunt + ut labore et dolore + magna aliqua. Ut enim ad minim + veniam, quis +``` + +### Bullets + +```js +align(text, function (len, max, line, lines) { + return {prefix: ' - '}; +}); +``` + +Would return: + +``` +- Lorem ipsum dolor sit amet, +- consectetur adipiscing +- elit, sed do eiusmod tempor incididunt +- ut labore et dolore +- magna aliqua. Ut enim ad minim +- veniam, quis +``` + +### Different indent character + +```js +align(text, function (len, max, line, lines) { + return { + indent: Math.floor((max - len) / 2), + character: '~', + }; +}); +``` + +Would return + +``` +~~~~~Lorem ipsum dolor sit amet, +~~~~~~~~consectetur adipiscing +elit, sed do eiusmod tempor incididunt +~~~~~~~~~ut labore et dolore +~~~~magna aliqua. Ut enim ad minim +~~~~~~~~~~~~~veniam, quis +``` + +## Related projects + +* [center-align](https://github.com/jonschlinkert/center-align): Center-align the text in a string. +* [justify](https://github.com/bahamas10/node-justify): Left or right (or both) justify text using a custom width and character +* [longest](https://github.com/jonschlinkert/longest): Get the longest item in an array. +* [right-align](https://github.com/jonschlinkert/right-align): Right-align the text in a string. +* [repeat-string](https://github.com/jonschlinkert/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string. +* [word-wrap](https://github.com/jonschlinkert/word-wrap): Wrap words to a specified length. + +## Running tests + +Install dev dependencies: + +```sh +$ npm i -d && npm test +``` + +## Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/align-text/issues/new) + +## Author + +**Jon Schlinkert** + ++ [github/jonschlinkert](https://github.com/jonschlinkert) ++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +## License + +Copyright © 2015 [Jon Schlinkert](https://github.com/jonschlinkert) +Released under the MIT license. + +*** + +_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 09, 2015._ diff --git a/wrt/node_modules/align-text/index.js b/wrt/node_modules/align-text/index.js new file mode 100644 index 0000000..75902a3 --- /dev/null +++ b/wrt/node_modules/align-text/index.js @@ -0,0 +1,52 @@ +/*! + * align-text + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +var typeOf = require('kind-of'); +var repeat = require('repeat-string'); +var longest = require('longest'); + +module.exports = function alignText(val, fn) { + var lines, type = typeOf(val); + + if (type === 'array') { + lines = val; + } else if (type === 'string') { + lines = val.split(/(?:\r\n|\n)/); + } else { + throw new TypeError('align-text expects a string or array.'); + } + + var fnType = typeOf(fn); + var len = lines.length; + var max = longest(lines); + var res = [], i = 0; + + while (len--) { + var line = String(lines[i++]); + var diff; + + if (fnType === 'function') { + diff = fn(line.length, max.length, line, lines, i); + } else if (fnType === 'number') { + diff = fn; + } else { + diff = max.length - line.length; + } + + if (typeOf(diff) === 'number') { + res.push(repeat(' ', diff) + line); + } else if (typeOf(diff) === 'object') { + var result = repeat(diff.character || ' ', diff.indent || 0); + res.push((diff.prefix || '') + result + line); + } + } + + if (type === 'array') return res; + return res.join('\n'); +}; diff --git a/wrt/node_modules/align-text/package.json b/wrt/node_modules/align-text/package.json new file mode 100644 index 0000000..b2d356e --- /dev/null +++ b/wrt/node_modules/align-text/package.json @@ -0,0 +1,78 @@ +{ + "_from": "align-text@^0.1.3", + "_id": "align-text@0.1.4", + "_inBundle": false, + "_integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "_location": "/align-text", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "align-text@^0.1.3", + "name": "align-text", + "escapedName": "align-text", + "rawSpec": "^0.1.3", + "saveSpec": null, + "fetchSpec": "^0.1.3" + }, + "_requiredBy": [ + "/center-align", + "/right-align" + ], + "_resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "_shasum": "0cd90a561093f35d0a99256c22b7069433fad117", + "_spec": "align-text@^0.1.3", + "_where": "/home/kenshin.choi/project/blink/workspace/demo/chromium-efl/electron/was/node_modules/center-align", + "author": { + "name": "Jon Schlinkert", + "url": "https://github.com/jonschlinkert" + }, + "bugs": { + "url": "https://github.com/jonschlinkert/align-text/issues" + }, + "bundleDependencies": false, + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "deprecated": false, + "description": "Align the text in a string.", + "devDependencies": { + "mocha": "*", + "should": "*", + "word-wrap": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/jonschlinkert/align-text", + "keywords": [ + "align", + "align-center", + "alignment", + "center", + "center-align", + "indent", + "pad", + "padding", + "right", + "right-align", + "text", + "typography" + ], + "license": "MIT", + "main": "index.js", + "name": "align-text", + "repository": { + "type": "git", + "url": "git://github.com/jonschlinkert/align-text.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "0.1.4" +} diff --git a/wrt/node_modules/ansi-styles/index.js b/wrt/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..3d3baa6 --- /dev/null +++ b/wrt/node_modules/ansi-styles/index.js @@ -0,0 +1,152 @@ +'use strict'; +const colorConvert = require('color-convert'); + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + 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], + + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Fix humans + styles.color.grey = styles.color.gray; + + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } + + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = {}; + styles.color.ansi256 = {}; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = {}; + styles.bgColor.ansi256 = {}; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (const key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/wrt/node_modules/ansi-styles/license b/wrt/node_modules/ansi-styles/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/wrt/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +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/wrt/node_modules/ansi-styles/package.json b/wrt/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..3c3045c --- /dev/null +++ b/wrt/node_modules/ansi-styles/package.json @@ -0,0 +1,126 @@ +{ + "_args": [ + [ + { + "raw": "ansi-styles", + "scope": null, + "escapedName": "ansi-styles", + "name": "ansi-styles", + "rawSpec": "", + "spec": "latest", + "type": "tag" + }, + "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt" + ] + ], + "_from": "ansi-styles@latest", + "_id": "ansi-styles@3.2.0", + "_inCache": true, + "_location": "/ansi-styles", + "_nodeVersion": "8.2.1", + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/ansi-styles-3.2.0.tgz_1500809147099_0.7141686324030161" + }, + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "_npmVersion": "5.3.0", + "_phantomChildren": {}, + "_requested": { + "raw": "ansi-styles", + "scope": null, + "escapedName": "ansi-styles", + "name": "ansi-styles", + "rawSpec": "", + "spec": "latest", + "type": "tag" + }, + "_requiredBy": [ + "#USER" + ], + "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "_shasum": "c159b8d5be0f9e5a6f346dab94f16ce022161b88", + "_shrinkwrap": null, + "_spec": "ansi-styles", + "_where": "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "ava": { + "require": "babel-polyfill" + }, + "bugs": { + "url": "https://github.com/chalk/ansi-styles/issues" + }, + "dependencies": { + "color-convert": "^1.9.0" + }, + "description": "ANSI escape codes for styling strings in the terminal", + "devDependencies": { + "ava": "*", + "babel-polyfill": "^6.23.0", + "xo": "*" + }, + "directories": {}, + "dist": { + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "shasum": "c159b8d5be0f9e5a6f346dab94f16ce022161b88", + "tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz" + }, + "engines": { + "node": ">=4" + }, + "files": [ + "index.js" + ], + "gitHead": "3340c4d536078a51fd7b5049e939c43c5ab05db3", + "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": "qix", + "email": "i.am.qix@gmail.com" + }, + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "name": "ansi-styles", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/chalk/ansi-styles.git" + }, + "scripts": { + "test": "xo && ava" + }, + "version": "3.2.0" +} diff --git a/wrt/node_modules/ansi-styles/readme.md b/wrt/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..dce3687 --- /dev/null +++ b/wrt/node_modules/ansi-styles/readme.md @@ -0,0 +1,147 @@ +# 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 ansi-styles +``` + + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.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` ("bright black") +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + + +## 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. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + + +## License + +MIT diff --git a/wrt/node_modules/array-flatten/LICENSE b/wrt/node_modules/array-flatten/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/wrt/node_modules/array-flatten/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.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/wrt/node_modules/array-flatten/README.md b/wrt/node_modules/array-flatten/README.md new file mode 100644 index 0000000..91fa5b6 --- /dev/null +++ b/wrt/node_modules/array-flatten/README.md @@ -0,0 +1,43 @@ +# Array Flatten + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +> Flatten an array of nested arrays into a single flat array. Accepts an optional depth. + +## Installation + +``` +npm install array-flatten --save +``` + +## Usage + +```javascript +var flatten = require('array-flatten') + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) +//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) +//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] + +(function () { + flatten(arguments) //=> [1, 2, 3] +})(1, [2, 3]) +``` + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat +[npm-url]: https://npmjs.org/package/array-flatten +[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat +[downloads-url]: https://npmjs.org/package/array-flatten +[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/array-flatten +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/wrt/node_modules/array-flatten/array-flatten.js b/wrt/node_modules/array-flatten/array-flatten.js new file mode 100644 index 0000000..089117b --- /dev/null +++ b/wrt/node_modules/array-flatten/array-flatten.js @@ -0,0 +1,64 @@ +'use strict' + +/** + * Expose `arrayFlatten`. + */ +module.exports = arrayFlatten + +/** + * Recursive flatten function with depth. + * + * @param {Array} array + * @param {Array} result + * @param {Number} depth + * @return {Array} + */ +function flattenWithDepth (array, result, depth) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (depth > 0 && Array.isArray(value)) { + flattenWithDepth(value, result, depth - 1) + } else { + result.push(value) + } + } + + return result +} + +/** + * Recursive flatten function. Omitting depth is slightly faster. + * + * @param {Array} array + * @param {Array} result + * @return {Array} + */ +function flattenForever (array, result) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (Array.isArray(value)) { + flattenForever(value, result) + } else { + result.push(value) + } + } + + return result +} + +/** + * Flatten an array, with the ability to define a depth. + * + * @param {Array} array + * @param {Number} depth + * @return {Array} + */ +function arrayFlatten (array, depth) { + if (depth == null) { + return flattenForever(array, []) + } + + return flattenWithDepth(array, [], depth) +} diff --git a/wrt/node_modules/array-flatten/package.json b/wrt/node_modules/array-flatten/package.json new file mode 100644 index 0000000..3c9c6b0 --- /dev/null +++ b/wrt/node_modules/array-flatten/package.json @@ -0,0 +1,96 @@ +{ + "_args": [ + [ + { + "raw": "array-flatten@1.1.1", + "scope": null, + "escapedName": "array-flatten", + "name": "array-flatten", + "rawSpec": "1.1.1", + "spec": "1.1.1", + "type": "version" + }, + "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/express" + ] + ], + "_from": "array-flatten@1.1.1", + "_id": "array-flatten@1.1.1", + "_inCache": true, + "_location": "/array-flatten", + "_nodeVersion": "2.3.3", + "_npmUser": { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + }, + "_npmVersion": "2.11.3", + "_phantomChildren": {}, + "_requested": { + "raw": "array-flatten@1.1.1", + "scope": null, + "escapedName": "array-flatten", + "name": "array-flatten", + "rawSpec": "1.1.1", + "spec": "1.1.1", + "type": "version" + }, + "_requiredBy": [ + "/express" + ], + "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2", + "_shrinkwrap": null, + "_spec": "array-flatten@1.1.1", + "_where": "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/express", + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "bugs": { + "url": "https://github.com/blakeembrey/array-flatten/issues" + }, + "dependencies": {}, + "description": "Flatten an array of nested arrays into a single flat array", + "devDependencies": { + "istanbul": "^0.3.13", + "mocha": "^2.2.4", + "pre-commit": "^1.0.7", + "standard": "^3.7.3" + }, + "directories": {}, + "dist": { + "shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2", + "tarball": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + }, + "files": [ + "array-flatten.js", + "LICENSE" + ], + "gitHead": "1963a9189229d408e1e8f585a00c8be9edbd1803", + "homepage": "https://github.com/blakeembrey/array-flatten", + "keywords": [ + "array", + "flatten", + "arguments", + "depth" + ], + "license": "MIT", + "main": "array-flatten.js", + "maintainers": [ + { + "name": "blakeembrey", + "email": "hello@blakeembrey.com" + } + ], + "name": "array-flatten", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/array-flatten.git" + }, + "scripts": { + "test": "istanbul cover _mocha -- -R spec" + }, + "version": "1.1.1" +} diff --git a/wrt/node_modules/arraybuffer.slice/.npmignore b/wrt/node_modules/arraybuffer.slice/.npmignore new file mode 100644 index 0000000..cfbee8d --- /dev/null +++ b/wrt/node_modules/arraybuffer.slice/.npmignore @@ -0,0 +1,17 @@ +lib-cov +lcov.info +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results +build +.grunt + +node_modules diff --git a/wrt/node_modules/arraybuffer.slice/Makefile b/wrt/node_modules/arraybuffer.slice/Makefile new file mode 100644 index 0000000..849887f --- /dev/null +++ b/wrt/node_modules/arraybuffer.slice/Makefile @@ -0,0 +1,8 @@ + +REPORTER = dot + +test: + @./node_modules/.bin/mocha \ + --reporter $(REPORTER) + +.PHONY: test diff --git a/wrt/node_modules/arraybuffer.slice/README.md b/wrt/node_modules/arraybuffer.slice/README.md new file mode 100644 index 0000000..15e465e --- /dev/null +++ b/wrt/node_modules/arraybuffer.slice/README.md @@ -0,0 +1,17 @@ +# How to +```javascript +var sliceBuffer = require('arraybuffer.slice'); +var ab = (new Int8Array(5)).buffer; +var sliced = sliceBuffer(ab, 1, 3); +sliced = sliceBuffer(ab, 1); +``` + +# Licence (MIT) +Copyright (C) 2013 Rase- + + +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/wrt/node_modules/arraybuffer.slice/index.js b/wrt/node_modules/arraybuffer.slice/index.js new file mode 100644 index 0000000..11ac556 --- /dev/null +++ b/wrt/node_modules/arraybuffer.slice/index.js @@ -0,0 +1,29 @@ +/** + * An abstraction for slicing an arraybuffer even when + * ArrayBuffer.prototype.slice is not supported + * + * @api public + */ + +module.exports = function(arraybuffer, start, end) { + var bytes = arraybuffer.byteLength; + start = start || 0; + end = end || bytes; + + if (arraybuffer.slice) { return arraybuffer.slice(start, end); } + + if (start < 0) { start += bytes; } + if (end < 0) { end += bytes; } + if (end > bytes) { end = bytes; } + + if (start >= bytes || start >= end || bytes === 0) { + return new ArrayBuffer(0); + } + + var abv = new Uint8Array(arraybuffer); + var result = new Uint8Array(end - start); + for (var i = start, ii = 0; i < end; i++, ii++) { + result[ii] = abv[i]; + } + return result.buffer; +}; diff --git a/wrt/node_modules/arraybuffer.slice/package.json b/wrt/node_modules/arraybuffer.slice/package.json new file mode 100644 index 0000000..34d4975 --- /dev/null +++ b/wrt/node_modules/arraybuffer.slice/package.json @@ -0,0 +1,72 @@ +{ + "_args": [ + [ + { + "raw": "arraybuffer.slice@0.0.6", + "scope": null, + "escapedName": "arraybuffer.slice", + "name": "arraybuffer.slice", + "rawSpec": "0.0.6", + "spec": "0.0.6", + "type": "version" + }, + "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/engine.io-parser" + ] + ], + "_from": "arraybuffer.slice@0.0.6", + "_id": "arraybuffer.slice@0.0.6", + "_inCache": true, + "_location": "/arraybuffer.slice", + "_npmUser": { + "name": "rase-", + "email": "tonykovanen@hotmail.com" + }, + "_npmVersion": "1.3.5", + "_phantomChildren": {}, + "_requested": { + "raw": "arraybuffer.slice@0.0.6", + "scope": null, + "escapedName": "arraybuffer.slice", + "name": "arraybuffer.slice", + "rawSpec": "0.0.6", + "spec": "0.0.6", + "type": "version" + }, + "_requiredBy": [ + "/engine.io-parser" + ], + "_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "_shasum": "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca", + "_shrinkwrap": null, + "_spec": "arraybuffer.slice@0.0.6", + "_where": "/home/kenshin.choi/project/blink/workspace/public/crosswalk-tizen/wrt/node_modules/engine.io-parser", + "bugs": { + "url": "https://github.com/rase-/arraybuffer.slice/issues" + }, + "dependencies": {}, + "description": "Exports a function for slicing ArrayBuffers (no polyfilling)", + "devDependencies": { + "expect.js": "0.2.0", + "mocha": "1.17.1" + }, + "directories": {}, + "dist": { + "shasum": "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca", + "tarball": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" + }, + "homepage": "https://github.com/rase-/arraybuffer.slice", + "maintainers": [ + { + "name": "rase-", + "email": "tonykovanen@hotmail.com" + } + ], + "name": "arraybuffer.slice", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/rase-/arraybuffer.slice.git" + }, + "version": "0.0.6" +} diff --git a/wrt/node_modules/arraybuffer.slice/test/slice-buffer.js b/wrt/node_modules/arraybuffer.slice/test/slice-buffer.js new file mode 100644 index 0000000..4778da6 --- /dev/null +++ b/wrt/node_modules/arraybuffer.slice/test/slice-buffer.js @@ -0,0 +1,227 @@ +/* + * Test dependencies + */ + +var sliceBuffer = require('../index.js'); +var expect = require('expect.js'); + +/** + * Tests + */ + +describe('sliceBuffer', function() { + describe('using standard slice', function() { + it('should slice correctly with only start provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 3); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with start and end provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 3, 8); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < 8; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 0, -3); + var sabv = new Uint8Array(sliced); + for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, -6, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with equal start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 1, 1); + expect(sliced.byteLength).to.equal(0); + }); + + it('should slice correctly when end larger than buffer', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 0, 100); + expect(new Uint8Array(sliced)).to.eql(abv); + }); + + it('shoud slice correctly when start larger than end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + + var sliced = sliceBuffer(abv.buffer, 6, 5); + expect(sliced.byteLength).to.equal(0); + }); + }); + + describe('using fallback', function() { + it('should slice correctly with only start provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 3); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with start and end provided', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + + var sliced = sliceBuffer(ab, 3, 8); + var sabv = new Uint8Array(sliced); + for (var i = 3, ii = 0; i < 8; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + + var sliced = sliceBuffer(ab, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 0, -3); + var sabv = new Uint8Array(sliced); + for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with negative start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, -6, -3); + var sabv = new Uint8Array(sliced); + for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) { + expect(abv[i]).to.equal(sabv[ii]); + } + }); + + it('should slice correctly with equal start and end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 1, 1); + expect(sliced.byteLength).to.equal(0); + }); + + it('should slice correctly when end larger than buffer', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 0, 100); + var sabv = new Uint8Array(sliced); + for (var i = 0; i < abv.length; i++) { + expect(abv[i]).to.equal(sabv[i]); + } + }); + + it('shoud slice correctly when start larger than end', function() { + var abv = new Uint8Array(10); + for (var i = 0; i < abv.length; i++) { + abv[i] = i; + } + var ab = abv.buffer; + ab.slice = undefined; + + var sliced = sliceBuffer(ab, 6, 5); + expect(sliced.byteLength).to.equal(0); + }); + }); +}); diff --git a/wrt/node_modules/async/CHANGELOG.md b/wrt/node_modules/async/CHANGELOG.md new file mode 100644 index 0000000..f15e081 --- /dev/null +++ b/wrt/node_modules/async/CHANGELOG.md @@ -0,0 +1,125 @@ +# v1.5.2 +- Allow using `"consructor"` as an argument in `memoize` (#998) +- Give a better error messsage when `auto` dependency checking fails (#994) +- Various doc updates (#936, #956, #979, #1002) + +# v1.5.1 +- Fix issue with `pause` in `queue` with concurrency enabled (#946) +- `while` and `until` now pass the final result to callback (#963) +- `auto` will properly handle concurrency when there is no callback (#966) +- `auto` will now properly stop execution when an error occurs (#988, #993) +- Various doc fixes (#971, #980) + +# v1.5.0 + +- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) (#892) +- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. (#873) +- `auto` now accepts an optional `concurrency` argument to limit the number of running tasks (#637) +- Added `queue#workersList()`, to retrieve the list of currently running tasks. (#891) +- Various code simplifications (#896, #904) +- Various doc fixes :scroll: (#890, #894, #903, #905, #912) + +# v1.4.2 + +- Ensure coverage files don't get published on npm (#879) + +# v1.4.1 + +- Add in overlooked `detectLimit` method (#866) +- Removed unnecessary files from npm releases (#861) +- Removed usage of a reserved word to prevent :boom: in older environments (#870) + +# v1.4.0 + +- `asyncify` now supports promises (#840) +- Added `Limit` versions of `filter` and `reject` (#836) +- Add `Limit` versions of `detect`, `some` and `every` (#828, #829) +- `some`, `every` and `detect` now short circuit early (#828, #829) +- Improve detection of the global object (#804), enabling use in WebWorkers +- `whilst` now called with arguments from iterator (#823) +- `during` now gets called with arguments from iterator (#824) +- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0)) + + +# v1.3.0 + +New Features: +- Added `constant` +- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. (#671, #806) +- Added `during` and `doDuring`, which are like `whilst` with an async truth test. (#800) +- `retry` now accepts an `interval` parameter to specify a delay between retries. (#793) +- `async` should work better in Web Workers due to better `root` detection (#804) +- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` (#642) +- Various internal updates (#786, #801, #802, #803) +- Various doc fixes (#790, #794) + +Bug Fixes: +- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. (#740, #744, #783) + + +# v1.2.1 + +Bug Fix: + +- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) + + +# v1.2.0 + +New Features: + +- Added `timesLimit` (#743) +- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. (#747, #772) + +Bug Fixes: + +- Fixed a regression in `each` and family with empty arrays that have additional properties. (#775, #777) + + +# v1.1.1 + +Bug Fix: + +- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) + + +# v1.1.0 + +New Features: + +- `cargo` now supports all of the same methods and event callbacks as `queue`. +- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. (#769) +- Optimized `map`, `eachOf`, and `waterfall` families of functions +- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array (#667). +- The callback is now optional for the composed results of `compose` and `seq`. (#618) +- Reduced file size by 4kb, (minified version by 1kb) +- Added code coverage through `nyc` and `coveralls` (#768) + +Bug Fixes: + +- `forever` will no longer stack overflow with a synchronous iterator (#622) +- `eachLimit` and other limit functions will stop iterating once an error occurs (#754) +- Always pass `null` in callbacks when there is no error (#439) +- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue (#668) +- `each` and family will properly handle an empty array (#578) +- `eachSeries` and family will finish if the underlying array is modified during execution (#557) +- `queue` will throw if a non-function is passed to `q.push()` (#593) +- Doc fixes (#629, #766) + + +# v1.0.0 + +No known breaking changes, we are simply complying with semver from here on out. + +Changes: + +- Start using a changelog! +- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321) +- Detect deadlocks in `auto` (#663) +- Better support for require.js (#527) +- Throw if queue created with concurrency `0` (#714) +- Fix unneeded iteration in `queue.resume()` (#758) +- Guard against timer mocking overriding `setImmediate` (#609 #611) +- Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729) +- Use single noop function internally (#546) +- Optimize internal `_each`, `_map` and `_keys` functions. diff --git a/wrt/node_modules/async/LICENSE b/wrt/node_modules/async/LICENSE new file mode 100644 index 0000000..8f29698 --- /dev/null +++ b/wrt/node_modules/async/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010-2014 Caolan McMahon + +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/wrt/node_modules/async/README.md b/wrt/node_modules/async/README.md new file mode 100644 index 0000000..316c405 --- /dev/null +++ b/wrt/node_modules/async/README.md @@ -0,0 +1,1877 @@ +# Async.js + +[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async) +[![NPM version](http://img.shields.io/npm/v/async.svg)](https://www.npmjs.org/package/async) +[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master) +[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + + +Async is a utility module which provides straight-forward, powerful functions +for working with asynchronous JavaScript. Although originally designed for +use with [Node.js](http://nodejs.org) and installable via `npm install async`, +it can also be used directly in the browser. + +Async is also installable via: + +- [bower](http://bower.io/): `bower install async` +- [component](https://github.com/component/component): `component install + caolan/async` +- [jam](http://jamjs.org/): `jam install async` +- [spm](http://spmjs.io/): `spm install async` + +Async provides around 20 functions that include the usual 'functional' +suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns +for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these +functions assume you follow the Node.js convention of providing a single +callback as the last argument of your `async` function. + + +## Quick Examples + +```javascript +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); + +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); + +async.parallel([ + function(){ ... }, + function(){ ... } +], callback); + +async.series([ + function(){ ... }, + function(){ ... } +]); +``` + +There are many more functions available so take a look at the docs below for a +full list. This module aims to be comprehensive, so if you feel anything is +missing please create a GitHub issue for it. + +## Common Pitfalls [(StackOverflow)](http://stackoverflow.com/questions/tagged/async.js) +### Synchronous iteration functions + +If you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.setImmediate` to start a new call stack on the next tick of the event loop. + +This can also arise by accident if you callback early in certain cases: + +```js +async.eachSeries(hugeArray, function iterator(item, callback) { + if (inCache(item)) { + callback(null, cache[item]); // if many items are cached, you'll overflow + } else { + doSomeIO(item, callback); + } +}, function done() { + //... +}); +``` + +Just change it to: + +```js +async.eachSeries(hugeArray, function iterator(item, callback) { + if (inCache(item)) { + async.setImmediate(function () { + callback(null, cache[item]); + }); + } else { + doSomeIO(item, callback); + //... +``` + +Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral. + +If JavaScript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works. + + +### Multiple callbacks + +Make sure to always `return` when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases. + +```js +async.waterfall([ + function (callback) { + getSomething(options, function (err, result) { + if (err) { + callback(new Error("failed getting something:" + err.message)); + // we should return here + } + // since we did not return, this callback still will be called and + // `processData` will be called twice + callback(null, result); + }); + }, + processData +], done) +``` + +It is always good practice to `return callback(err, result)` whenever a callback call is not the last statement of a function. + + +### Binding a context to an iterator + +This section is really about `bind`, not about `async`. If you are wondering how to +make `async` execute your iterators in a given context, or are confused as to why +a method of another library isn't working as an iterator, study this example: + +```js +// Here is a simple object with an (unnecessarily roundabout) squaring method +var AsyncSquaringLibrary = { + squareExponent: 2, + square: function(number, callback){ + var result = Math.pow(number, this.squareExponent); + setTimeout(function(){ + callback(null, result); + }, 200); + } +}; + +async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ + // result is [NaN, NaN, NaN] + // This fails because the `this.squareExponent` expression in the square + // function is not evaluated in the context of AsyncSquaringLibrary, and is + // therefore undefined. +}); + +async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ + // result is [1, 4, 9] + // With the help of bind we can attach a context to the iterator before + // passing it to async. Now the square function will be executed in its + // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` + // will be as expected. +}); +``` + +## Download + +The source is available for download from +[GitHub](https://github.com/caolan/async/blob/master/lib/async.js). +Alternatively, you can install using Node Package Manager (`npm`): + + npm install async + +As well as using Bower: + + bower install async + +__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed + +## In the Browser + +So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. + +Usage: + +```html + + +``` + +## Documentation + +Some functions are also available in the following forms: +* `Series` - the same as `` but runs only a single async operation at a time +* `Limit` - the same as `` but runs a maximum of `limit` async operations at a time + +### Collections + +* [`each`](#each), `eachSeries`, `eachLimit` +* [`forEachOf`](#forEachOf), `forEachOfSeries`, `forEachOfLimit` +* [`map`](#map), `mapSeries`, `mapLimit` +* [`filter`](#filter), `filterSeries`, `filterLimit` +* [`reject`](#reject), `rejectSeries`, `rejectLimit` +* [`reduce`](#reduce), [`reduceRight`](#reduceRight) +* [`detect`](#detect), `detectSeries`, `detectLimit` +* [`sortBy`](#sortBy) +* [`some`](#some), `someLimit` +* [`every`](#every), `everyLimit` +* [`concat`](#concat), `concatSeries` + +### Control Flow + +* [`series`](#seriestasks-callback) +* [`parallel`](#parallel), `parallelLimit` +* [`whilst`](#whilst), [`doWhilst`](#doWhilst) +* [`until`](#until), [`doUntil`](#doUntil) +* [`during`](#during), [`doDuring`](#doDuring) +* [`forever`](#forever) +* [`waterfall`](#waterfall) +* [`compose`](#compose) +* [`seq`](#seq) +* [`applyEach`](#applyEach), `applyEachSeries` +* [`queue`](#queue), [`priorityQueue`](#priorityQueue) +* [`cargo`](#cargo) +* [`auto`](#auto) +* [`retry`](#retry) +* [`iterator`](#iterator) +* [`times`](#times), `timesSeries`, `timesLimit` + +### Utils + +* [`apply`](#apply) +* [`nextTick`](#nextTick) +* [`memoize`](#memoize) +* [`unmemoize`](#unmemoize) +* [`ensureAsync`](#ensureAsync) +* [`constant`](#constant) +* [`asyncify`](#asyncify) +* [`wrapSync`](#wrapSync) +* [`log`](#log) +* [`dir`](#dir) +* [`noConflict`](#noConflict) + +## Collections + + + +### each(arr, iterator, [callback]) + +Applies the function `iterator` to each item in `arr`, in parallel. +The `iterator` is called with an item from the list, and a callback for when it +has finished. If the `iterator` passes an error to its `callback`, the main +`callback` (for the `each` function) is immediately called with the error. + +Note, that since this function applies `iterator` to each item in parallel, +there is no guarantee that the iterator functions will complete in order. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err)` which must be called once it has + completed. If no error has occurred, the `callback` should be run without + arguments or with an explicit `null` argument. The array index is not passed + to the iterator. If you need the index, use [`forEachOf`](#forEachOf). +* `callback(err)` - *Optional* A callback which is called when all `iterator` functions + have finished, or an error occurs. + +__Examples__ + + +```js +// assuming openFiles is an array of file names and saveFile is a function +// to save the modified contents of that file: + +async.each(openFiles, saveFile, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +```js +// assuming openFiles is an array of file names + +async.each(openFiles, function(file, callback) { + + // Perform operation on file here. + console.log('Processing file ' + file); + + if( file.length > 32 ) { + console.log('This file name is too long'); + callback('File name too long'); + } else { + // Do work to process file here + console.log('File processed'); + callback(); + } +}, function(err){ + // if any of the file processing produced an error, err would equal that error + if( err ) { + // One of the iterations produced an error. + // All processing will now stop. + console.log('A file failed to process'); + } else { + console.log('All files have been processed successfully'); + } +}); +``` + +__Related__ + +* eachSeries(arr, iterator, [callback]) +* eachLimit(arr, limit, iterator, [callback]) + +--------------------------------------- + + + + +### forEachOf(obj, iterator, [callback]) + +Like `each`, except that it iterates over objects, and passes the key as the second argument to the iterator. + +__Arguments__ + +* `obj` - An object or array to iterate over. +* `iterator(item, key, callback)` - A function to apply to each item in `obj`. +The `key` is the item's key, or index in the case of an array. The iterator is +passed a `callback(err)` which must be called once it has completed. If no +error has occurred, the callback should be run without arguments or with an +explicit `null` argument. +* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs. + +__Example__ + +```js +var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; +var configs = {}; + +async.forEachOf(obj, function (value, key, callback) { + fs.readFile(__dirname + value, "utf8", function (err, data) { + if (err) return callback(err); + try { + configs[key] = JSON.parse(data); + } catch (e) { + return callback(e); + } + callback(); + }) +}, function (err) { + if (err) console.error(err.message); + // configs is now a map of JSON data + doSomethingWith(configs); +}) +``` + +__Related__ + +* forEachOfSeries(obj, iterator, [callback]) +* forEachOfLimit(obj, limit, iterator, [callback]) + +--------------------------------------- + + +### map(arr, iterator, [callback]) + +Produces a new array of values by mapping each value in `arr` through +the `iterator` function. The `iterator` is called with an item from `arr` and a +callback for when it has finished processing. Each of these callback takes 2 arguments: +an `error`, and the transformed item from `arr`. If `iterator` passes an error to its +callback, the main `callback` (for the `map` function) is immediately called with the error. + +Note, that since this function applies the `iterator` to each item in parallel, +there is no guarantee that the `iterator` functions will complete in order. +However, the results array will be in the same order as the original `arr`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, transformed)` which must be called once + it has completed with an error (which can be `null`) and a transformed item. +* `callback(err, results)` - *Optional* A callback which is called when all `iterator` + functions have finished, or an error occurs. Results is an array of the + transformed items from the `arr`. + +__Example__ + +```js +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +__Related__ +* mapSeries(arr, iterator, [callback]) +* mapLimit(arr, limit, iterator, [callback]) + +--------------------------------------- + + + +### filter(arr, iterator, [callback]) + +__Alias:__ `select` + +Returns a new array of all the values in `arr` which pass an async truth test. +_The callback for each `iterator` call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. This operation is +performed in parallel, but the results array will be in the same order as the +original. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in `arr`. + The `iterator` is passed a `callback(truthValue)`, which must be called with a + boolean argument once it has completed. +* `callback(results)` - *Optional* A callback which is called after all the `iterator` + functions have finished. + +__Example__ + +```js +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); +``` + +__Related__ + +* filterSeries(arr, iterator, [callback]) +* filterLimit(arr, limit, iterator, [callback]) + +--------------------------------------- + + +### reject(arr, iterator, [callback]) + +The opposite of [`filter`](#filter). Removes values that pass an `async` truth test. + +__Related__ + +* rejectSeries(arr, iterator, [callback]) +* rejectLimit(arr, limit, iterator, [callback]) + +--------------------------------------- + + +### reduce(arr, memo, iterator, [callback]) + +__Aliases:__ `inject`, `foldl` + +Reduces `arr` into a single value using an async `iterator` to return +each successive step. `memo` is the initial state of the reduction. +This function only operates in series. + +For performance reasons, it may make sense to split a call to this function into +a parallel map, and then use the normal `Array.prototype.reduce` on the results. +This function is for situations where each step in the reduction needs to be async; +if you can get the data before reducing it, then it's probably a good idea to do so. + +__Arguments__ + +* `arr` - An array to iterate over. +* `memo` - The initial state of the reduction. +* `iterator(memo, item, callback)` - A function applied to each item in the + array to produce the next step in the reduction. The `iterator` is passed a + `callback(err, reduction)` which accepts an optional error as its first + argument, and the state of the reduction as the second. If an error is + passed to the callback, the reduction is stopped and the main `callback` is + immediately called with the error. +* `callback(err, result)` - *Optional* A callback which is called after all the `iterator` + functions have finished. Result is the reduced value. + +__Example__ + +```js +async.reduce([1,2,3], 0, function(memo, item, callback){ + // pointless async: + process.nextTick(function(){ + callback(null, memo + item) + }); +}, function(err, result){ + // result is now equal to the last value of memo, which is 6 +}); +``` + +--------------------------------------- + + +### reduceRight(arr, memo, iterator, [callback]) + +__Alias:__ `foldr` + +Same as [`reduce`](#reduce), only operates on `arr` in reverse order. + + +--------------------------------------- + + +### detect(arr, iterator, [callback]) + +Returns the first value in `arr` that passes an async truth test. The +`iterator` is applied in parallel, meaning the first iterator to return `true` will +fire the detect `callback` with that result. That means the result might not be +the first item in the original `arr` (in terms of order) that passes the test. + +If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries). + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in `arr`. + The iterator is passed a `callback(truthValue)` which must be called with a + boolean argument once it has completed. **Note: this callback does not take an error as its first argument.** +* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns + `true`, or after all the `iterator` functions have finished. Result will be + the first item in the array that passes the truth test (iterator) or the + value `undefined` if none passed. **Note: this callback does not take an error as its first argument.** + +__Example__ + +```js +async.detect(['file1','file2','file3'], fs.exists, function(result){ + // result now equals the first file in the list that exists +}); +``` + +__Related__ + +* detectSeries(arr, iterator, [callback]) +* detectLimit(arr, limit, iterator, [callback]) + +--------------------------------------- + + +### sortBy(arr, iterator, [callback]) + +Sorts a list by the results of running each `arr` value through an async `iterator`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, sortValue)` which must be called once it + has completed with an error (which can be `null`) and a value to use as the sort + criteria. +* `callback(err, results)` - *Optional* A callback which is called after all the `iterator` + functions have finished, or an error occurs. Results is the items from + the original `arr` sorted by the values returned by the `iterator` calls. + +__Example__ + +```js +async.sortBy(['file1','file2','file3'], function(file, callback){ + fs.stat(file, function(err, stats){ + callback(err, stats.mtime); + }); +}, function(err, results){ + // results is now the original array of files sorted by + // modified date +}); +``` + +__Sort Order__ + +By modifying the callback parameter the sorting order can be influenced: + +```js +//ascending order +async.sortBy([1,9,3,5], function(x, callback){ + callback(null, x); +}, function(err,result){ + //result callback +} ); + +//descending order +async.sortBy([1,9,3,5], function(x, callback){ + callback(null, x*-1); //<- x*-1 instead of x, turns the order around +}, function(err,result){ + //result callback +} ); +``` + +--------------------------------------- + + +### some(arr, iterator, [callback]) + +__Alias:__ `any` + +Returns `true` if at least one element in the `arr` satisfies an async test. +_The callback for each iterator call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. Once any iterator +call returns `true`, the main `callback` is immediately called. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in the array + in parallel. The iterator is passed a `callback(truthValue)`` which must be + called with a boolean argument once it has completed. +* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns + `true`, or after all the iterator functions have finished. Result will be + either `true` or `false` depending on the values of the async tests. + + **Note: the callbacks do not take an error as their first argument.** +__Example__ + +```js +async.some(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then at least one of the files exists +}); +``` + +__Related__ + +* someLimit(arr, limit, iterator, callback) + +--------------------------------------- + + +### every(arr, iterator, [callback]) + +__Alias:__ `all` + +Returns `true` if every element in `arr` satisfies an async test. +_The callback for each `iterator` call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in the array + in parallel. The iterator is passed a `callback(truthValue)` which must be + called with a boolean argument once it has completed. +* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns + `false`, or after all the iterator functions have finished. Result will be + either `true` or `false` depending on the values of the async tests. + + **Note: the callbacks do not take an error as their first argument.** + +__Example__ + +```js +async.every(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then every file exists +}); +``` + +__Related__ + +* everyLimit(arr, limit, iterator, callback) + +--------------------------------------- + + +### concat(arr, iterator, [callback]) + +Applies `iterator` to each item in `arr`, concatenating the results. Returns the +concatenated list. The `iterator`s are called in parallel, and the results are +concatenated as they return. There is no guarantee that the results array will +be returned in the original order of `arr` passed to the `iterator` function. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, results)` which must be called once it + has completed with an error (which can be `null`) and an array of results. +* `callback(err, results)` - *Optional* A callback which is called after all the `iterator` + functions have finished, or an error occurs. Results is an array containing + the concatenated results of the `iterator` function. + +__Example__ + +```js +async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ + // files is now a list of filenames that exist in the 3 directories +}); +``` + +__Related__ + +* concatSeries(arr, iterator, [callback]) + + +## Control Flow + + +### series(tasks, [callback]) + +Run the functions in the `tasks` array in series, each one running once the previous +function has completed. If any functions in the series pass an error to its +callback, no more functions are run, and `callback` is immediately called with the value of the error. +Otherwise, `callback` receives an array of results when `tasks` have completed. + +It is also possible to use an object instead of an array. Each property will be +run as a function, and the results will be passed to the final `callback` as an object +instead of an array. This can be a more readable way of handling results from +[`series`](#series). + +**Note** that while many implementations preserve the order of object properties, the +[ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) +explicitly states that + +> The mechanics and order of enumerating the properties is not specified. + +So if you rely on the order in which your series of functions are executed, and want +this to work on all platforms, consider using an array. + +__Arguments__ + +* `tasks` - An array or object containing functions to run, each function is passed + a `callback(err, result)` it must call on completion with an error `err` (which can + be `null`) and an optional `result` value. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the `task` callbacks. + +__Example__ + +```js +async.series([ + function(callback){ + // do some stuff ... + callback(null, 'one'); + }, + function(callback){ + // do some more stuff ... + callback(null, 'two'); + } +], +// optional callback +function(err, results){ + // results is now equal to ['one', 'two'] +}); + + +// an example using an object instead of an array +async.series({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equal to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallel(tasks, [callback]) + +Run the `tasks` array of functions in parallel, without waiting until the previous +function has completed. If any of the functions pass an error to its +callback, the main `callback` is immediately called with the value of the error. +Once the `tasks` have completed, the results are passed to the final `callback` as an +array. + +**Note:** `parallel` is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded. + +It is also possible to use an object instead of an array. Each property will be +run as a function and the results will be passed to the final `callback` as an object +instead of an array. This can be a more readable way of handling results from +[`parallel`](#parallel). + + +__Arguments__ + +* `tasks` - An array or object containing functions to run. Each function is passed + a `callback(err, result)` which it must call on completion with an error `err` + (which can be `null`) and an optional `result` value. +* `callback(err, results)` - An optional callback to run once all the functions + have completed successfully. This function gets a results array (or object) containing all + the result arguments passed to the task callbacks. + +__Example__ + +```js +async.parallel([ + function(callback){ + setTimeout(function(){ + callback(null, 'one'); + }, 200); + }, + function(callback){ + setTimeout(function(){ + callback(null, 'two'); + }, 100); + } +], +// optional callback +function(err, results){ + // the results array will equal ['one','two'] even though + // the second function had a shorter timeout. +}); + + +// an example using an object instead of an array +async.parallel({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equals to: {one: 1, two: 2} +}); +``` + +__Related__ + +* parallelLimit(tasks, limit, [callback]) + +--------------------------------------- + + +### whilst(test, fn, callback) + +Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped, +or an error occurs. + +__Arguments__ + +* `test()` - synchronous truth test to perform before each execution of `fn`. +* `fn(callback)` - A function which is called each time `test` passes. The function is + passed a `callback(err)`, which must be called once it has completed with an + optional `err` argument. +* `callback(err, [results])` - A callback which is called after the test + function has failed and repeated execution of `fn` has stopped. `callback` + will be passed an error and any arguments passed to the final `fn`'s callback. + +__Example__ + +```js +var count = 0; + +async.whilst( + function () { return count < 5; }, + function (callback) { + count++; + setTimeout(function () { + callback(null, count); + }, 1000); + }, + function (err, n) { + // 5 seconds have passed, n = 5 + } +); +``` + +--------------------------------------- + + +### doWhilst(fn, test, callback) + +The post-check version of [`whilst`](#whilst). To reflect the difference in +the order of operations, the arguments `test` and `fn` are switched. + +`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + +--------------------------------------- + + +### until(test, fn, callback) + +Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped, +or an error occurs. `callback` will be passed an error and any arguments passed +to the final `fn`'s callback. + +The inverse of [`whilst`](#whilst). + +--------------------------------------- + + +### doUntil(fn, test, callback) + +Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`. + +--------------------------------------- + + +### during(test, fn, callback) + +Like [`whilst`](#whilst), except the `test` is an asynchronous function that is passed a callback in the form of `function (err, truth)`. If error is passed to `test` or `fn`, the main callback is immediately called with the value of the error. + +__Example__ + +```js +var count = 0; + +async.during( + function (callback) { + return callback(null, count < 5); + }, + function (callback) { + count++; + setTimeout(callback, 1000); + }, + function (err) { + // 5 seconds have passed + } +); +``` + +--------------------------------------- + + +### doDuring(fn, test, callback) + +The post-check version of [`during`](#during). To reflect the difference in +the order of operations, the arguments `test` and `fn` are switched. + +Also a version of [`doWhilst`](#doWhilst) with asynchronous `test` function. + +--------------------------------------- + + +### forever(fn, [errback]) + +Calls the asynchronous function `fn` with a callback parameter that allows it to +call itself again, in series, indefinitely. + +If an error is passed to the callback then `errback` is called with the +error, and execution stops, otherwise it will never be called. + +```js +async.forever( + function(next) { + // next is suitable for passing to things that need a callback(err [, whatever]); + // it will result in this function being called again. + }, + function(err) { + // if next is called with a value in its first parameter, it will appear + // in here as 'err', and execution will stop. + } +); +``` + +--------------------------------------- + + +### waterfall(tasks, [callback]) + +Runs the `tasks` array of functions in series, each passing their results to the next in +the array. However, if any of the `tasks` pass an error to their own callback, the +next function is not executed, and the main `callback` is immediately called with +the error. + +__Arguments__ + +* `tasks` - An array of functions to run, each function is passed a + `callback(err, result1, result2, ...)` it must call on completion. The first + argument is an error (which can be `null`) and any further arguments will be + passed as arguments in order to the next task. +* `callback(err, [results])` - An optional callback to run once all the functions + have completed. This will be passed the results of the last task's callback. + + + +__Example__ + +```js +async.waterfall([ + function(callback) { + callback(null, 'one', 'two'); + }, + function(arg1, arg2, callback) { + // arg1 now equals 'one' and arg2 now equals 'two' + callback(null, 'three'); + }, + function(arg1, callback) { + // arg1 now equals 'three' + callback(null, 'done'); + } +], function (err, result) { + // result now equals 'done' +}); +``` +Or, with named functions: + +```js +async.waterfall([ + myFirstFunction, + mySecondFunction, + myLastFunction, +], function (err, result) { + // result now equals 'done' +}); +function myFirstFunction(callback) { + callback(null, 'one', 'two'); +} +function mySecondFunction(arg1, arg2, callback) { + // arg1 now equals 'one' and arg2 now equals 'two' + callback(null, 'three'); +} +function myLastFunction(arg1, callback) { + // arg1 now equals 'three' + callback(null, 'done'); +} +``` + +Or, if you need to pass any argument to the first function: + +```js +async.waterfall([ + async.apply(myFirstFunction, 'zero'), + mySecondFunction, + myLastFunction, +], function (err, result) { + // result now equals 'done' +}); +function myFirstFunction(arg1, callback) { + // arg1 now equals 'zero' + callback(null, 'one', 'two'); +} +function mySecondFunction(arg1, arg2, callback) { + // arg1 now equals 'one' and arg2 now equals 'two' + callback(null, 'three'); +} +function myLastFunction(arg1, callback) { + // arg1 now equals 'three' + callback(null, 'done'); +} +``` + +--------------------------------------- + +### compose(fn1, fn2...) + +Creates a function which is a composition of the passed asynchronous +functions. Each function consumes the return value of the function that +follows. Composing functions `f()`, `g()`, and `h()` would produce the result of +`f(g(h()))`, only this version uses callbacks to obtain the return values. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* `functions...` - the asynchronous functions to compose + + +__Example__ + +```js +function add1(n, callback) { + setTimeout(function () { + callback(null, n + 1); + }, 10); +} + +function mul3(n, callback) { + setTimeout(function () { + callback(null, n * 3); + }, 10); +} + +var add1mul3 = async.compose(mul3, add1); + +add1mul3(4, function (err, result) { + // result now equals 15 +}); +``` + +--------------------------------------- + +### seq(fn1, fn2...) + +Version of the compose function that is more natural to read. +Each function consumes the return value of the previous function. +It is the equivalent of [`compose`](#compose) with the arguments reversed. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* `functions...` - the asynchronous functions to compose + + +__Example__ + +```js +// Requires lodash (or underscore), express3 and dresende's orm2. +// Part of an app, that fetches cats of the logged user. +// This example uses `seq` function to avoid overnesting and error +// handling clutter. +app.get('/cats', function(request, response) { + var User = request.models.User; + async.seq( + _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) + function(user, fn) { + user.getCats(fn); // 'getCats' has signature (callback(err, data)) + } + )(req.session.user_id, function (err, cats) { + if (err) { + console.error(err); + response.json({ status: 'error', message: err.message }); + } else { + response.json({ status: 'ok', message: 'Cats found', data: cats }); + } + }); +}); +``` + +--------------------------------------- + +### applyEach(fns, args..., callback) + +Applies the provided arguments to each function in the array, calling +`callback` after all functions have completed. If you only provide the first +argument, then it will return a function which lets you pass in the +arguments as if it were a single function call. + +__Arguments__ + +* `fns` - the asynchronous functions to all call with the same arguments +* `args...` - any number of separate arguments to pass to the function +* `callback` - the final argument should be the callback, called when all + functions have completed processing + + +__Example__ + +```js +async.applyEach([enableSearch, updateSchema], 'bucket', callback); + +// partial application example: +async.each( + buckets, + async.applyEach([enableSearch, updateSchema]), + callback +); +``` + +__Related__ + +* applyEachSeries(tasks, args..., [callback]) + +--------------------------------------- + + +### queue(worker, [concurrency]) + +Creates a `queue` object with the specified `concurrency`. Tasks added to the +`queue` are processed in parallel (up to the `concurrency` limit). If all +`worker`s are in progress, the task is queued until one becomes available. +Once a `worker` completes a `task`, that `task`'s callback is called. + +__Arguments__ + +* `worker(task, callback)` - An asynchronous function for processing a queued + task, which must call its `callback(err)` argument when finished, with an + optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`. +* `concurrency` - An `integer` for determining how many `worker` functions should be + run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown. + +__Queue objects__ + +The `queue` object returned by this function has the following properties and +methods: + +* `length()` - a function returning the number of items waiting to be processed. +* `started` - a function returning whether or not any items have been pushed and processed by the queue +* `running()` - a function returning the number of items currently being processed. +* `workersList()` - a function returning the array of items currently being processed. +* `idle()` - a function returning false if there are items waiting or being processed, or true if not. +* `concurrency` - an integer for determining how many `worker` functions should be + run in parallel. This property can be changed after a `queue` is created to + alter the concurrency on-the-fly. +* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once + the `worker` has finished processing the task. Instead of a single task, a `tasks` array + can be submitted. The respective callback is used for every task in the list. +* `unshift(task, [callback])` - add a new task to the front of the `queue`. +* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, + and further tasks will be queued. +* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`. +* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`. +* `paused` - a boolean for determining whether the queue is in a paused state +* `pause()` - a function that pauses the processing of tasks until `resume()` is called. +* `resume()` - a function that resumes the processing of queued tasks when the queue is paused. +* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle. + +__Example__ + +```js +// create a queue object with concurrency 2 + +var q = async.queue(function (task, callback) { + console.log('hello ' + task.name); + callback(); +}, 2); + + +// assign a callback +q.drain = function() { + console.log('all items have been processed'); +} + +// add some items to the queue + +q.push({name: 'foo'}, function (err) { + console.log('finished processing foo'); +}); +q.push({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); + +// add some items to the queue (batch-wise) + +q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { + console.log('finished processing item'); +}); + +// add some items to the front of the queue + +q.unshift({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); +``` + + +--------------------------------------- + + +### priorityQueue(worker, concurrency) + +The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects: + +* `push(task, priority, [callback])` - `priority` should be a number. If an array of + `tasks` is given, all tasks will be assigned the same priority. +* The `unshift` method was removed. + +--------------------------------------- + + +### cargo(worker, [payload]) + +Creates a `cargo` object with the specified payload. Tasks added to the +cargo will be processed altogether (up to the `payload` limit). If the +`worker` is in progress, the task is queued until it becomes available. Once +the `worker` has completed some tasks, each callback of those tasks is called. +Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work. + +While [queue](#queue) passes only one task to one of a group of workers +at a time, cargo passes an array of tasks to a single worker, repeating +when the worker is finished. + +__Arguments__ + +* `worker(tasks, callback)` - An asynchronous function for processing an array of + queued tasks, which must call its `callback(err)` argument when finished, with + an optional `err` argument. +* `payload` - An optional `integer` for determining how many tasks should be + processed per round; if omitted, the default is unlimited. + +__Cargo objects__ + +The `cargo` object returned by this function has the following properties and +methods: + +* `length()` - A function returning the number of items waiting to be processed. +* `payload` - An `integer` for determining how many tasks should be + process per round. This property can be changed after a `cargo` is created to + alter the payload on-the-fly. +* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called + once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` + can be submitted. The respective callback is used for every task in the list. +* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued. +* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`. +* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`. +* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue) + +__Example__ + +```js +// create a cargo object with payload 2 + +var cargo = async.cargo(function (tasks, callback) { + for(var i=0; i +### auto(tasks, [concurrency], [callback]) + +Determines the best order for running the functions in `tasks`, based on their requirements. Each function can optionally depend on other functions being completed first, and each function is run as soon as its requirements are satisfied. + +If any of the functions pass an error to their callback, the `auto` sequence will stop. Further tasks will not execute (so any other functions depending on it will not run), and the main `callback` is immediately called with the error. Functions also receive an object containing the results of functions which have completed so far. + +Note, all functions are called with a `results` object as a second argument, +so it is unsafe to pass functions in the `tasks` object which cannot handle the +extra argument. + +For example, this snippet of code: + +```js +async.auto({ + readData: async.apply(fs.readFile, 'data.txt', 'utf-8') +}, callback); +``` + +will have the effect of calling `readFile` with the results object as the last +argument, which will fail: + +```js +fs.readFile('data.txt', 'utf-8', cb, {}); +``` + +Instead, wrap the call to `readFile` in a function which does not forward the +`results` object: + +```js +async.auto({ + readData: function(cb, results){ + fs.readFile('data.txt', 'utf-8', cb); + } +}, callback); +``` + +__Arguments__ + +* `tasks` - An object. Each of its properties is either a function or an array of + requirements, with the function itself the last item in the array. The object's key + of a property serves as the name of the task defined by that property, + i.e. can be used when specifying requirements for other tasks. + The function receives two arguments: (1) a `callback(err, result)` which must be + called when finished, passing an `error` (which can be `null`) and the result of + the function's execution, and (2) a `results` object, containing the results of + the previously executed functions. +* `concurrency` - An optional `integer` for determining the maximum number of tasks that can be run in parallel. By default, as many as possible. +* `callback(err, results)` - An optional callback which is called when all the + tasks have been completed. It receives the `err` argument if any `tasks` + pass an error to their callback. Results are always returned; however, if + an error occurs, no further `tasks` will be performed, and the results + object will only contain partial results. + + +__Example__ + +```js +async.auto({ + get_data: function(callback){ + console.log('in get_data'); + // async code to get some data + callback(null, 'data', 'converted to array'); + }, + make_folder: function(callback){ + console.log('in make_folder'); + // async code to create a directory to store a file in + // this is run at the same time as getting the data + callback(null, 'folder'); + }, + write_file: ['get_data', 'make_folder', function(callback, results){ + console.log('in write_file', JSON.stringify(results)); + // once there is some data and the directory exists, + // write the data to a file in the directory + callback(null, 'filename'); + }], + email_link: ['write_file', function(callback, results){ + console.log('in email_link', JSON.stringify(results)); + // once the file is written let's email a link to it... + // results.write_file contains the filename returned by write_file. + callback(null, {'file':results.write_file, 'email':'user@example.com'}); + }] +}, function(err, results) { + console.log('err = ', err); + console.log('results = ', results); +}); +``` + +This is a fairly trivial example, but to do this using the basic parallel and +series functions would look like this: + +```js +async.parallel([ + function(callback){ + console.log('in get_data'); + // async code to get some data + callback(null, 'data', 'converted to array'); + }, + function(callback){ + console.log('in make_folder'); + // async code to create a directory to store a file in + // this is run at the same time as getting the data + callback(null, 'folder'); + } +], +function(err, results){ + async.series([ + function(callback){ + console.log('in write_file', JSON.stringify(results)); + // once there is some data and the directory exists, + // write the data to a file in the directory + results.push('filename'); + callback(null); + }, + function(callback){ + console.log('in email_link', JSON.stringify(results)); + // once the file is written let's email a link to it... + callback(null, {'file':results.pop(), 'email':'user@example.com'}); + } + ]); +}); +``` + +For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding +new tasks much easier (and the code more readable). + + +--------------------------------------- + + +### retry([opts = {times: 5, interval: 0}| 5], task, [callback]) + +Attempts to get a successful response from `task` no more than `times` times before +returning an error. If the task is successful, the `callback` will be passed the result +of the successful task. If all attempts fail, the callback will be passed the error and +result (if any) of the final attempt. + +__Arguments__ + +* `opts` - Can be either an object with `times` and `interval` or a number. + * `times` - The number of attempts to make before giving up. The default is `5`. + * `interval` - The time to wait between retries, in milliseconds. The default is `0`. + * If `opts` is a number, the number specifies the number of times to retry, with the default interval of `0`. +* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)` + which must be called when finished, passing `err` (which can be `null`) and the `result` of + the function's execution, and (2) a `results` object, containing the results of + the previously executed functions (if nested inside another control flow). +* `callback(err, results)` - An optional callback which is called when the + task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`. + +The [`retry`](#retry) function can be used as a stand-alone control flow by passing a callback, as shown below: + +```js +// try calling apiMethod 3 times +async.retry(3, apiMethod, function(err, result) { + // do something with the result +}); +``` + +```js +// try calling apiMethod 3 times, waiting 200 ms between each retry +async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + // do something with the result +}); +``` + +```js +// try calling apiMethod the default 5 times no delay between each retry +async.retry(apiMethod, function(err, result) { + // do something with the result +}); +``` + +It can also be embedded within other control flow functions to retry individual methods +that are not as reliable, like this: + +```js +async.auto({ + users: api.getUsers.bind(api), + payments: async.retry(3, api.getPayments.bind(api)) +}, function(err, results) { + // do something with the results +}); +``` + + +--------------------------------------- + + +### iterator(tasks) + +Creates an iterator function which calls the next function in the `tasks` array, +returning a continuation to call the next one after that. It's also possible to +“peek” at the next iterator with `iterator.next()`. + +This function is used internally by the `async` module, but can be useful when +you want to manually control the flow of functions in series. + +__Arguments__ + +* `tasks` - An array of functions to run. + +__Example__ + +```js +var iterator = async.iterator([ + function(){ sys.p('one'); }, + function(){ sys.p('two'); }, + function(){ sys.p('three'); } +]); + +node> var iterator2 = iterator(); +'one' +node> var iterator3 = iterator2(); +'two' +node> iterator3(); +'three' +node> var nextfn = iterator2.next(); +node> nextfn(); +'three' +``` + +--------------------------------------- + + +### apply(function, arguments..) + +Creates a continuation function with some arguments already applied. + +Useful as a shorthand when combined with other control flow functions. Any arguments +passed to the returned function are added to the arguments originally passed +to apply. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to automatically apply when the + continuation is called. + +__Example__ + +```js +// using apply + +async.parallel([ + async.apply(fs.writeFile, 'testfile1', 'test1'), + async.apply(fs.writeFile, 'testfile2', 'test2'), +]); + + +// the same process without using apply + +async.parallel([ + function(callback){ + fs.writeFile('testfile1', 'test1', callback); + }, + function(callback){ + fs.writeFile('testfile2', 'test2', callback); + } +]); +``` + +It's possible to pass any number of additional arguments when calling the +continuation: + +```js +node> var fn = async.apply(sys.puts, 'one'); +node> fn('two', 'three'); +one +two +three +``` + +--------------------------------------- + + +### nextTick(callback), setImmediate(callback) + +Calls `callback` on a later loop around the event loop. In Node.js this just +calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` +if available, otherwise `setTimeout(callback, 0)`, which means other higher priority +events may precede the execution of `callback`. + +This is used internally for browser-compatibility purposes. + +__Arguments__ + +* `callback` - The function to call on a later loop around the event loop. + +__Example__ + +```js +var call_order = []; +async.nextTick(function(){ + call_order.push('two'); + // call_order now equals ['one','two'] +}); +call_order.push('one') +``` + + +### times(n, iterator, [callback]) + +Calls the `iterator` function `n` times, and accumulates results in the same manner +you would use with [`map`](#map). + +__Arguments__ + +* `n` - The number of times to run the function. +* `iterator` - The function to call `n` times. +* `callback` - see [`map`](#map) + +__Example__ + +```js +// Pretend this is some complicated async factory +var createUser = function(id, callback) { + callback(null, { + id: 'user' + id + }) +} +// generate 5 users +async.times(5, function(n, next){ + createUser(n, function(err, user) { + next(err, user) + }) +}, function(err, users) { + // we should now have 5 users +}); +``` + +__Related__ + +* timesSeries(n, iterator, [callback]) +* timesLimit(n, limit, iterator, [callback]) + + +## Utils + + +### memoize(fn, [hasher]) + +Caches the results of an `async` function. When creating a hash to store function +results against, the callback is omitted from the hash and an optional hash +function can be used. + +If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function. + +The cache of results is exposed as the `memo` property of the function returned +by `memoize`. + +__Arguments__ + +* `fn` - The function to proxy and cache results from. +* `hasher` - An optional function for generating a custom hash for storing + results. It has all the arguments applied to it apart from the callback, and + must be synchronous. + +__Example__ + +```js +var slow_fn = function (name, callback) { + // do something + callback(null, result); +}; +var fn = async.memoize(slow_fn); + +// fn can now be used as if it were slow_fn +fn('some name', function () { + // callback +}); +``` + + +### unmemoize(fn) + +Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized +form. Handy for testing. + +__Arguments__ + +* `fn` - the memoized function + +--------------------------------------- + + +### ensureAsync(fn) + +Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained. + +__Arguments__ + +* `fn` - an async function, one that expects a node-style callback as its last argument + +Returns a wrapped function with the exact same call signature as the function passed in. + +__Example__ + +```js +function sometimesAsync(arg, callback) { + if (cache[arg]) { + return callback(null, cache[arg]); // this would be synchronous!! + } else { + doSomeIO(arg, callback); // this IO would be asynchronous + } +} + +// this has a risk of stack overflows if many results are cached in a row +async.mapSeries(args, sometimesAsync, done); + +// this will defer sometimesAsync's callback if necessary, +// preventing stack overflows +async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + +``` + +--------------------------------------- + + +### constant(values...) + +Returns a function that when called, calls-back with the values provided. Useful as the first function in a `waterfall`, or for plugging values in to `auto`. + +__Example__ + +```js +async.waterfall([ + async.constant(42), + function (value, next) { + // value === 42 + }, + //... +], callback); + +async.waterfall([ + async.constant(filename, "utf8"), + fs.readFile, + function (fileData, next) { + //... + } + //... +], callback); + +async.auto({ + hostname: async.constant("https://server.net/"), + port: findFreePort, + launchServer: ["hostname", "port", function (cb, options) { + startServer(options, cb); + }], + //... +}, callback); + +``` + +--------------------------------------- + + + +### asyncify(func) + +__Alias:__ `wrapSync` + +Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback. + +__Example__ + +```js +async.waterfall([ + async.apply(fs.readFile, filename, "utf8"), + async.asyncify(JSON.parse), + function (data, next) { + // data is the result of parsing the text. + // If there was a parsing error, it would have been caught. + } +], callback) +``` + +If the function passed to `asyncify` returns a Promise, that promises's resolved/rejected state will be used to call the callback, rather than simply the synchronous return value. Example: + +```js +async.waterfall([ + async.apply(fs.readFile, filename, "utf8"), + async.asyncify(function (contents) { + return db.model.create(contents); + }), + function (model, next) { + // `model` is the instantiated model object. + // If there was an error, this function would be skipped. + } +], callback) +``` + +This also means you can asyncify ES2016 `async` functions. + +```js +var q = async.queue(async.asyncify(async function (file) { + var intermediateStep = await processFile(file); + return await somePromise(intermediateStep) +})); + +q.push(files); +``` + +--------------------------------------- + + +### log(function, arguments) + +Logs the result of an `async` function to the `console`. Only works in Node.js or +in browsers that support `console.log` and `console.error` (such as FF and Chrome). +If multiple arguments are returned from the async function, `console.log` is +called on each argument in order. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, 'hello ' + name); + }, 1000); +}; +``` +```js +node> async.log(hello, 'world'); +'hello world' +``` + +--------------------------------------- + + +### dir(function, arguments) + +Logs the result of an `async` function to the `console` using `console.dir` to +display the properties of the resulting object. Only works in Node.js or +in browsers that support `console.dir` and `console.error` (such as FF and Chrome). +If multiple arguments are returned from the async function, `console.dir` is +called on each argument in order. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, {hello: name}); + }, 1000); +}; +``` +```js +node> async.dir(hello, 'world'); +{hello: 'world'} +``` + +--------------------------------------- + + +### noConflict() + +Changes the value of `async` back to its original value, returning a reference to the +`async` object. diff --git a/wrt/node_modules/async/dist/async.js b/wrt/node_modules/async/dist/async.js new file mode 100644 index 0000000..31e7620 --- /dev/null +++ b/wrt/node_modules/async/dist/async.js @@ -0,0 +1,1265 @@ +/*! + * async + * https://github.com/caolan/async + * + * Copyright 2010-2014 Caolan McMahon + * Released under the MIT license + */ +(function () { + + var async = {}; + function noop() {} + function identity(v) { + return v; + } + function toBool(v) { + return !!v; + } + function notId(v) { + return !v; + } + + // global on the server, window in the browser + var previous_async; + + // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. + var root = typeof self === 'object' && self.self === self && self || + typeof global === 'object' && global.global === global && global || + this; + + if (root != null) { + previous_async = root.async; + } + + async.noConflict = function () { + root.async = previous_async; + return async; + }; + + function only_once(fn) { + return function() { + if (fn === null) throw new Error("Callback was already called."); + fn.apply(this, arguments); + fn = null; + }; + } + + function _once(fn) { + return function() { + if (fn === null) return; + fn.apply(this, arguments); + fn = null; + }; + } + + //// cross-browser compatiblity functions //// + + var _toString = Object.prototype.toString; + + var _isArray = Array.isArray || function (obj) { + return _toString.call(obj) === '[object Array]'; + }; + + // Ported from underscore.js isObject + var _isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + function _isArrayLike(arr) { + return _isArray(arr) || ( + // has a positive integer length property + typeof arr.length === "number" && + arr.length >= 0 && + arr.length % 1 === 0 + ); + } + + function _arrayEach(arr, iterator) { + var index = -1, + length = arr.length; + + while (++index < length) { + iterator(arr[index], index, arr); + } + } + + function _map(arr, iterator) { + var index = -1, + length = arr.length, + result = Array(length); + + while (++index < length) { + result[index] = iterator(arr[index], index, arr); + } + return result; + } + + function _range(count) { + return _map(Array(count), function (v, i) { return i; }); + } + + function _reduce(arr, iterator, memo) { + _arrayEach(arr, function (x, i, a) { + memo = iterator(memo, x, i, a); + }); + return memo; + } + + function _forEachOf(object, iterator) { + _arrayEach(_keys(object), function (key) { + iterator(object[key], key); + }); + } + + function _indexOf(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] === item) return i; + } + return -1; + } + + var _keys = Object.keys || function (obj) { + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; + }; + + function _keyIterator(coll) { + var i = -1; + var len; + var keys; + if (_isArrayLike(coll)) { + len = coll.length; + return function next() { + i++; + return i < len ? i : null; + }; + } else { + keys = _keys(coll); + len = keys.length; + return function next() { + i++; + return i < len ? keys[i] : null; + }; + } + } + + // Similar to ES6's rest param (http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html) + // This accumulates the arguments passed into an array, after a given index. + // From underscore.js (https://github.com/jashkenas/underscore/pull/2140). + function _restParam(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0); + var rest = Array(length); + for (var index = 0; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + } + // Currently unused but handle cases outside of the switch statement: + // var args = Array(startIndex + 1); + // for (index = 0; index < startIndex; index++) { + // args[index] = arguments[index]; + // } + // args[startIndex] = rest; + // return func.apply(this, args); + }; + } + + function _withoutIndex(iterator) { + return function (value, index, callback) { + return iterator(value, callback); + }; + } + + //// exported async module functions //// + + //// nextTick implementation with browser-compatible fallback //// + + // capture the global reference to guard against fakeTimer mocks + var _setImmediate = typeof setImmediate === 'function' && setImmediate; + + var _delay = _setImmediate ? function(fn) { + // not a direct alias for IE10 compatibility + _setImmediate(fn); + } : function(fn) { + setTimeout(fn, 0); + }; + + if (typeof process === 'object' && typeof process.nextTick === 'function') { + async.nextTick = process.nextTick; + } else { + async.nextTick = _delay; + } + async.setImmediate = _setImmediate ? _delay : async.nextTick; + + + async.forEach = + async.each = function (arr, iterator, callback) { + return async.eachOf(arr, _withoutIndex(iterator), callback); + }; + + async.forEachSeries = + async.eachSeries = function (arr, iterator, callback) { + return async.eachOfSeries(arr, _withoutIndex(iterator), callback); + }; + + + async.forEachLimit = + async.eachLimit = function (arr, limit, iterator, callback) { + return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback); + }; + + async.forEachOf = + async.eachOf = function (object, iterator, callback) { + callback = _once(callback || noop); + object = object || []; + + var iter = _keyIterator(object); + var key, completed = 0; + + while ((key = iter()) != null) { + completed += 1; + iterator(object[key], key, only_once(done)); + } + + if (completed === 0) callback(null); + + function done(err) { + completed--; + if (err) { + callback(err); + } + // Check key is null in case iterator isn't exhausted + // and done resolved synchronously. + else if (key === null && completed <= 0) { + callback(null); + } + } + }; + + async.forEachOfSeries = + async.eachOfSeries = function (obj, iterator, callback) { + callback = _once(callback || noop); + obj = obj || []; + var nextKey = _keyIterator(obj); + var key = nextKey(); + function iterate() { + var sync = true; + if (key === null) { + return callback(null); + } + iterator(obj[key], key, only_once(function (err) { + if (err) { + callback(err); + } + else { + key = nextKey(); + if (key === null) { + return callback(null); + } else { + if (sync) { + async.setImmediate(iterate); + } else { + iterate(); + } + } + } + })); + sync = false; + } + iterate(); + }; + + + + async.forEachOfLimit = + async.eachOfLimit = function (obj, limit, iterator, callback) { + _eachOfLimit(limit)(obj, iterator, callback); + }; + + function _eachOfLimit(limit) { + + return function (obj, iterator, callback) { + callback = _once(callback || noop); + obj = obj || []; + var nextKey = _keyIterator(obj); + if (limit <= 0) { + return callback(null); + } + var done = false; + var running = 0; + var errored = false; + + (function replenish () { + if (done && running <= 0) { + return callback(null); + } + + while (running < limit && !errored) { + var key = nextKey(); + if (key === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iterator(obj[key], key, only_once(function (err) { + running -= 1; + if (err) { + callback(err); + errored = true; + } + else { + replenish(); + } + })); + } + })(); + }; + } + + + function doParallel(fn) { + return function (obj, iterator, callback) { + return fn(async.eachOf, obj, iterator, callback); + }; + } + function doParallelLimit(fn) { + return function (obj, limit, iterator, callback) { + return fn(_eachOfLimit(limit), obj, iterator, callback); + }; + } + function doSeries(fn) { + return function (obj, iterator, callback) { + return fn(async.eachOfSeries, obj, iterator, callback); + }; + } + + function _asyncMap(eachfn, arr, iterator, callback) { + callback = _once(callback || noop); + arr = arr || []; + var results = _isArrayLike(arr) ? [] : {}; + eachfn(arr, function (value, index, callback) { + iterator(value, function (err, v) { + results[index] = v; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + + async.map = doParallel(_asyncMap); + async.mapSeries = doSeries(_asyncMap); + async.mapLimit = doParallelLimit(_asyncMap); + + // reduce only has a series version, as doing reduce in parallel won't + // work in many situations. + async.inject = + async.foldl = + async.reduce = function (arr, memo, iterator, callback) { + async.eachOfSeries(arr, function (x, i, callback) { + iterator(memo, x, function (err, v) { + memo = v; + callback(err); + }); + }, function (err) { + callback(err, memo); + }); + }; + + async.foldr = + async.reduceRight = function (arr, memo, iterator, callback) { + var reversed = _map(arr, identity).reverse(); + async.reduce(reversed, memo, iterator, callback); + }; + + async.transform = function (arr, memo, iterator, callback) { + if (arguments.length === 3) { + callback = iterator; + iterator = memo; + memo = _isArray(arr) ? [] : {}; + } + + async.eachOf(arr, function(v, k, cb) { + iterator(memo, v, k, cb); + }, function(err) { + callback(err, memo); + }); + }; + + function _filter(eachfn, arr, iterator, callback) { + var results = []; + eachfn(arr, function (x, index, callback) { + iterator(x, function (v) { + if (v) { + results.push({index: index, value: x}); + } + callback(); + }); + }, function () { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + } + + async.select = + async.filter = doParallel(_filter); + + async.selectLimit = + async.filterLimit = doParallelLimit(_filter); + + async.selectSeries = + async.filterSeries = doSeries(_filter); + + function _reject(eachfn, arr, iterator, callback) { + _filter(eachfn, arr, function(value, cb) { + iterator(value, function(v) { + cb(!v); + }); + }, callback); + } + async.reject = doParallel(_reject); + async.rejectLimit = doParallelLimit(_reject); + async.rejectSeries = doSeries(_reject); + + function _createTester(eachfn, check, getResult) { + return function(arr, limit, iterator, cb) { + function done() { + if (cb) cb(getResult(false, void 0)); + } + function iteratee(x, _, callback) { + if (!cb) return callback(); + iterator(x, function (v) { + if (cb && check(v)) { + cb(getResult(true, x)); + cb = iterator = false; + } + callback(); + }); + } + if (arguments.length > 3) { + eachfn(arr, limit, iteratee, done); + } else { + cb = iterator; + iterator = limit; + eachfn(arr, iteratee, done); + } + }; + } + + async.any = + async.some = _createTester(async.eachOf, toBool, identity); + + async.someLimit = _createTester(async.eachOfLimit, toBool, identity); + + async.all = + async.every = _createTester(async.eachOf, notId, notId); + + async.everyLimit = _createTester(async.eachOfLimit, notId, notId); + + function _findGetResult(v, x) { + return x; + } + async.detect = _createTester(async.eachOf, identity, _findGetResult); + async.detectSeries = _createTester(async.eachOfSeries, identity, _findGetResult); + async.detectLimit = _createTester(async.eachOfLimit, identity, _findGetResult); + + async.sortBy = function (arr, iterator, callback) { + async.map(arr, function (x, callback) { + iterator(x, function (err, criteria) { + if (err) { + callback(err); + } + else { + callback(null, {value: x, criteria: criteria}); + } + }); + }, function (err, results) { + if (err) { + return callback(err); + } + else { + callback(null, _map(results.sort(comparator), function (x) { + return x.value; + })); + } + + }); + + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } + }; + + async.auto = function (tasks, concurrency, callback) { + if (typeof arguments[1] === 'function') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = _once(callback || noop); + var keys = _keys(tasks); + var remainingTasks = keys.length; + if (!remainingTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = remainingTasks; + } + + var results = {}; + var runningTasks = 0; + + var hasError = false; + + var listeners = []; + function addListener(fn) { + listeners.unshift(fn); + } + function removeListener(fn) { + var idx = _indexOf(listeners, fn); + if (idx >= 0) listeners.splice(idx, 1); + } + function taskComplete() { + remainingTasks--; + _arrayEach(listeners.slice(0), function (fn) { + fn(); + }); + } + + addListener(function () { + if (!remainingTasks) { + callback(null, results); + } + }); + + _arrayEach(keys, function (k) { + if (hasError) return; + var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; + var taskCallback = _restParam(function(err, args) { + runningTasks--; + if (args.length <= 1) { + args = args[0]; + } + if (err) { + var safeResults = {}; + _forEachOf(results, function(val, rkey) { + safeResults[rkey] = val; + }); + safeResults[k] = args; + hasError = true; + + callback(err, safeResults); + } + else { + results[k] = args; + async.setImmediate(taskComplete); + } + }); + var requires = task.slice(0, task.length - 1); + // prevent dead-locks + var len = requires.length; + var dep; + while (len--) { + if (!(dep = tasks[requires[len]])) { + throw new Error('Has nonexistent dependency in ' + requires.join(', ')); + } + if (_isArray(dep) && _indexOf(dep, k) >= 0) { + throw new Error('Has cyclic dependencies'); + } + } + function ready() { + return runningTasks < concurrency && _reduce(requires, function (a, x) { + return (a && results.hasOwnProperty(x)); + }, true) && !results.hasOwnProperty(k); + } + if (ready()) { + runningTasks++; + task[task.length - 1](taskCallback, results); + } + else { + addListener(listener); + } + function listener() { + if (ready()) { + runningTasks++; + removeListener(listener); + task[task.length - 1](taskCallback, results); + } + } + }); + }; + + + + async.retry = function(times, task, callback) { + var DEFAULT_TIMES = 5; + var DEFAULT_INTERVAL = 0; + + var attempts = []; + + var opts = { + times: DEFAULT_TIMES, + interval: DEFAULT_INTERVAL + }; + + function parseTimes(acc, t){ + if(typeof t === 'number'){ + acc.times = parseInt(t, 10) || DEFAULT_TIMES; + } else if(typeof t === 'object'){ + acc.times = parseInt(t.times, 10) || DEFAULT_TIMES; + acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL; + } else { + throw new Error('Unsupported argument type for \'times\': ' + typeof t); + } + } + + var length = arguments.length; + if (length < 1 || length > 3) { + throw new Error('Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)'); + } else if (length <= 2 && typeof times === 'function') { + callback = task; + task = times; + } + if (typeof times !== 'function') { + parseTimes(opts, times); + } + opts.callback = callback; + opts.task = task; + + function wrappedTask(wrappedCallback, wrappedResults) { + function retryAttempt(task, finalAttempt) { + return function(seriesCallback) { + task(function(err, result){ + seriesCallback(!err || finalAttempt, {err: err, result: result}); + }, wrappedResults); + }; + } + + function retryInterval(interval){ + return function(seriesCallback){ + setTimeout(function(){ + seriesCallback(null); + }, interval); + }; + } + + while (opts.times) { + + var finalAttempt = !(opts.times-=1); + attempts.push(retryAttempt(opts.task, finalAttempt)); + if(!finalAttempt && opts.interval > 0){ + attempts.push(retryInterval(opts.interval)); + } + } + + async.series(attempts, function(done, data){ + data = data[data.length - 1]; + (wrappedCallback || opts.callback)(data.err, data.result); + }); + } + + // If a callback is passed, run this as a controll flow + return opts.callback ? wrappedTask() : wrappedTask; + }; + + async.waterfall = function (tasks, callback) { + callback = _once(callback || noop); + if (!_isArray(tasks)) { + var err = new Error('First argument to waterfall must be an array of functions'); + return callback(err); + } + if (!tasks.length) { + return callback(); + } + function wrapIterator(iterator) { + return _restParam(function (err, args) { + if (err) { + callback.apply(null, [err].concat(args)); + } + else { + var next = iterator.next(); + if (next) { + args.push(wrapIterator(next)); + } + else { + args.push(callback); + } + ensureAsync(iterator).apply(null, args); + } + }); + } + wrapIterator(async.iterator(tasks))(); + }; + + function _parallel(eachfn, tasks, callback) { + callback = callback || noop; + var results = _isArrayLike(tasks) ? [] : {}; + + eachfn(tasks, function (task, key, callback) { + task(_restParam(function (err, args) { + if (args.length <= 1) { + args = args[0]; + } + results[key] = args; + callback(err); + })); + }, function (err) { + callback(err, results); + }); + } + + async.parallel = function (tasks, callback) { + _parallel(async.eachOf, tasks, callback); + }; + + async.parallelLimit = function(tasks, limit, callback) { + _parallel(_eachOfLimit(limit), tasks, callback); + }; + + async.series = function(tasks, callback) { + _parallel(async.eachOfSeries, tasks, callback); + }; + + async.iterator = function (tasks) { + function makeCallback(index) { + function fn() { + if (tasks.length) { + tasks[index].apply(null, arguments); + } + return fn.next(); + } + fn.next = function () { + return (index < tasks.length - 1) ? makeCallback(index + 1): null; + }; + return fn; + } + return makeCallback(0); + }; + + async.apply = _restParam(function (fn, args) { + return _restParam(function (callArgs) { + return fn.apply( + null, args.concat(callArgs) + ); + }); + }); + + function _concat(eachfn, arr, fn, callback) { + var result = []; + eachfn(arr, function (x, index, cb) { + fn(x, function (err, y) { + result = result.concat(y || []); + cb(err); + }); + }, function (err) { + callback(err, result); + }); + } + async.concat = doParallel(_concat); + async.concatSeries = doSeries(_concat); + + async.whilst = function (test, iterator, callback) { + callback = callback || noop; + if (test()) { + var next = _restParam(function(err, args) { + if (err) { + callback(err); + } else if (test.apply(this, args)) { + iterator(next); + } else { + callback.apply(null, [null].concat(args)); + } + }); + iterator(next); + } else { + callback(null); + } + }; + + async.doWhilst = function (iterator, test, callback) { + var calls = 0; + return async.whilst(function() { + return ++calls <= 1 || test.apply(this, arguments); + }, iterator, callback); + }; + + async.until = function (test, iterator, callback) { + return async.whilst(function() { + return !test.apply(this, arguments); + }, iterator, callback); + }; + + async.doUntil = function (iterator, test, callback) { + return async.doWhilst(iterator, function() { + return !test.apply(this, arguments); + }, callback); + }; + + async.during = function (test, iterator, callback) { + callback = callback || noop; + + var next = _restParam(function(err, args) { + if (err) { + callback(err); + } else { + args.push(check); + test.apply(this, args); + } + }); + + var check = function(err, truth) { + if (err) { + callback(err); + } else if (truth) { + iterator(next); + } else { + callback(null); + } + }; + + test(check); + }; + + async.doDuring = function (iterator, test, callback) { + var calls = 0; + async.during(function(next) { + if (calls++ < 1) { + next(null, true); + } else { + test.apply(this, arguments); + } + }, iterator, callback); + }; + + function _queue(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } + else if(concurrency === 0) { + throw new Error('Concurrency must not be zero'); + } + function _insert(q, data, pos, callback) { + if (callback != null && typeof callback !== "function") { + throw new Error("task callback must be a function"); + } + q.started = true; + if (!_isArray(data)) { + data = [data]; + } + if(data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + return async.setImmediate(function() { + q.drain(); + }); + } + _arrayEach(data, function(task) { + var item = { + data: task, + callback: callback || noop + }; + + if (pos) { + q.tasks.unshift(item); + } else { + q.tasks.push(item); + } + + if (q.tasks.length === q.concurrency) { + q.saturated(); + } + }); + async.setImmediate(q.process); + } + function _next(q, tasks) { + return function(){ + workers -= 1; + + var removed = false; + var args = arguments; + _arrayEach(tasks, function (task) { + _arrayEach(workersList, function (worker, index) { + if (worker === task && !removed) { + workersList.splice(index, 1); + removed = true; + } + }); + + task.callback.apply(task, args); + }); + if (q.tasks.length + workers === 0) { + q.drain(); + } + q.process(); + }; + } + + var workers = 0; + var workersList = []; + var q = { + tasks: [], + concurrency: concurrency, + payload: payload, + saturated: noop, + empty: noop, + drain: noop, + started: false, + paused: false, + push: function (data, callback) { + _insert(q, data, false, callback); + }, + kill: function () { + q.drain = noop; + q.tasks = []; + }, + unshift: function (data, callback) { + _insert(q, data, true, callback); + }, + process: function () { + while(!q.paused && workers < q.concurrency && q.tasks.length){ + + var tasks = q.payload ? + q.tasks.splice(0, q.payload) : + q.tasks.splice(0, q.tasks.length); + + var data = _map(tasks, function (task) { + return task.data; + }); + + if (q.tasks.length === 0) { + q.empty(); + } + workers += 1; + workersList.push(tasks[0]); + var cb = only_once(_next(q, tasks)); + worker(data, cb); + } + }, + length: function () { + return q.tasks.length; + }, + running: function () { + return workers; + }, + workersList: function () { + return workersList; + }, + idle: function() { + return q.tasks.length + workers === 0; + }, + pause: function () { + q.paused = true; + }, + resume: function () { + if (q.paused === false) { return; } + q.paused = false; + var resumeCount = Math.min(q.concurrency, q.tasks.length); + // Need to call q.process once per concurrent + // worker to preserve full concurrency after pause + for (var w = 1; w <= resumeCount; w++) { + async.setImmediate(q.process); + } + } + }; + return q; + } + + async.queue = function (worker, concurrency) { + var q = _queue(function (items, cb) { + worker(items[0], cb); + }, concurrency, 1); + + return q; + }; + + async.priorityQueue = function (worker, concurrency) { + + function _compareTasks(a, b){ + return a.priority - b.priority; + } + + function _binarySearch(sequence, item, compare) { + var beg = -1, + end = sequence.length - 1; + while (beg < end) { + var mid = beg + ((end - beg + 1) >>> 1); + if (compare(item, sequence[mid]) >= 0) { + beg = mid; + } else { + end = mid - 1; + } + } + return beg; + } + + function _insert(q, data, priority, callback) { + if (callback != null && typeof callback !== "function") { + throw new Error("task callback must be a function"); + } + q.started = true; + if (!_isArray(data)) { + data = [data]; + } + if(data.length === 0) { + // call drain immediately if there are no tasks + return async.setImmediate(function() { + q.drain(); + }); + } + _arrayEach(data, function(task) { + var item = { + data: task, + priority: priority, + callback: typeof callback === 'function' ? callback : noop + }; + + q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); + + if (q.tasks.length === q.concurrency) { + q.saturated(); + } + async.setImmediate(q.process); + }); + } + + // Start with a normal queue + var q = async.queue(worker, concurrency); + + // Override push to accept second parameter representing priority + q.push = function (data, priority, callback) { + _insert(q, data, priority, callback); + }; + + // Remove unshift function + delete q.unshift; + + return q; + }; + + async.cargo = function (worker, payload) { + return _queue(worker, 1, payload); + }; + + function _console_fn(name) { + return _restParam(function (fn, args) { + fn.apply(null, args.concat([_restParam(function (err, args) { + if (typeof console === 'object') { + if (err) { + if (console.error) { + console.error(err); + } + } + else if (console[name]) { + _arrayEach(args, function (x) { + console[name](x); + }); + } + } + })])); + }); + } + async.log = _console_fn('log'); + async.dir = _console_fn('dir'); + /*async.info = _console_fn('info'); + async.warn = _console_fn('warn'); + async.error = _console_fn('error');*/ + + async.memoize = function (fn, hasher) { + var memo = {}; + var queues = {}; + var has = Object.prototype.hasOwnProperty; + hasher = hasher || identity; + var memoized = _restParam(function memoized(args) { + var callback = args.pop(); + var key = hasher.apply(null, args); + if (has.call(memo, key)) { + async.setImmediate(function () { + callback.apply(null, memo[key]); + }); + } + else if (has.call(queues, key)) { + queues[key].push(callback); + } + else { + queues[key] = [callback]; + fn.apply(null, args.concat([_restParam(function (args) { + memo[key] = args; + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i].apply(null, args); + } + })])); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + }; + + async.unmemoize = function (fn) { + return function () { + return (fn.unmemoized || fn).apply(null, arguments); + }; + }; + + function _times(mapper) { + return function (count, iterator, callback) { + mapper(_range(count), iterator, callback); + }; + } + + async.times = _times(async.map); + async.timesSeries = _times(async.mapSeries); + async.timesLimit = function (count, limit, iterator, callback) { + return async.mapLimit(_range(count), limit, iterator, callback); + }; + + async.seq = function (/* functions... */) { + var fns = arguments; + return _restParam(function (args) { + var that = this; + + var callback = args[args.length - 1]; + if (typeof callback == 'function') { + args.pop(); + } else { + callback = noop; + } + + async.reduce(fns, args, function (newargs, fn, cb) { + fn.apply(that, newargs.concat([_restParam(function (err, nextargs) { + cb(err, nextargs); + })])); + }, + function (err, results) { + callback.apply(that, [err].concat(results)); + }); + }); + }; + + async.compose = function (/* functions... */) { + return async.seq.apply(null, Array.prototype.reverse.call(arguments)); + }; + + + function _applyEach(eachfn) { + return _restParam(function(fns, args) { + var go = _restParam(function(args) { + var that = this; + var callback = args.pop(); + return eachfn(fns, function (fn, _, cb) { + fn.apply(that, args.concat([cb])); + }, + callback); + }); + if (args.length) { + return go.apply(this, args); + } + else { + return go; + } + }); + } + + async.applyEach = _applyEach(async.eachOf); + async.applyEachSeries = _applyEach(async.eachOfSeries); + + + async.forever = function (fn, callback) { + var done = only_once(callback || noop); + var task = ensureAsync(fn); + function next(err) { + if (err) { + return done(err); + } + task(next); + } + next(); + }; + + function ensureAsync(fn) { + return _restParam(function (args) { + var callback = args.pop(); + args.push(function () { + var innerArgs = arguments; + if (sync) { + async.setImmediate(function () { + callback.apply(null, innerArgs); + }); + } else { + callback.apply(null, innerArgs); + } + }); + var sync = true; + fn.apply(this, args); + sync = false; + }); + } + + async.ensureAsync = ensureAsync; + + async.constant = _restParam(function(values) { + var args = [null].concat(values); + return function (callback) { + return callback.apply(this, args); + }; + }); + + async.wrapSync = + async.asyncify = function asyncify(func) { + return _restParam(function (args) { + var callback = args.pop(); + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (_isObject(result) && typeof result.then === "function") { + result.then(function(value) { + callback(null, value); + })["catch"](function(err) { + callback(err.message ? err : new Error(err)); + }); + } else { + callback(null, result); + } + }); + }; + + // Node.js + if (typeof module === 'object' && module.exports) { + module.exports = async; + } + // AMD / RequireJS + else if (typeof define === 'function' && define.amd) { + define([], function () { + return async; + }); + } + // included directly via + +``` + +### With browserify + +Engine.IO is a commonjs module, which means you can include it by using +`require` on the browser and package using [browserify](http://browserify.org/): + +1. install the client package + + ```bash + $ npm install engine.io-client + ``` + +1. write your app code + + ```js + var socket = require('engine.io-client')('ws://localhost'); + socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); + }); + ``` + +1. build your app bundle + + ```bash + $ browserify app.js > bundle.js + ``` + +1. include on your page + + ```html + + ``` + +### Sending and receiving binary + +```html + + +``` + +### Node.JS + +Add `engine.io-client` to your `package.json` and then: + +```js +var socket = require('engine.io-client')('ws://localhost'); +socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); +}); +``` + +### Node.js with certificates +```js +var opts = { + key: fs.readFileSync('test/fixtures/client.key'), + cert: fs.readFileSync('test/fixtures/client.crt'), + ca: fs.readFileSync('test/fixtures/ca.crt') +}; + +var socket = require('engine.io-client')('ws://localhost', opts); +socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); +}); +``` + +### Node.js with extraHeaders +```js +var opts = { + extraHeaders: { + 'X-Custom-Header-For-My-Project': 'my-secret-access-token', + 'Cookie': 'user_session=NI2JlCKF90aE0sJZD9ZzujtdsUqNYSBYxzlTsvdSUe35ZzdtVRGqYFr0kdGxbfc5gUOkR9RGp20GVKza; path=/; expires=Tue, 07-Apr-2015 18:18:08 GMT; secure; HttpOnly' + } +}; + +var socket = require('engine.io-client')('ws://localhost', opts); +socket.on('open', function(){ + socket.on('message', function(data){}); + socket.on('close', function(){}); +}); +``` + +## Features + +- Lightweight +- Runs on browser and node.js seamlessly +- Transports are independent of `Engine` + - Easy to debug + - Easy to unit test +- Runs inside HTML5 WebWorker +- Can send and receive binary data + - Receives as ArrayBuffer or Blob when in browser, and Buffer or ArrayBuffer + in Node + - When XHR2 or WebSockets are used, binary is emitted directly. Otherwise + binary is encoded into base64 strings, and decoded when binary types are + supported. + - With browsers that don't support ArrayBuffer, an object { base64: true, + data: dataAsBase64String } is emitted on the `message` event. + +## API + +### Socket + +The client class. Mixes in [Emitter](http://github.com/component/emitter). +Exposed as `eio` in the browser standalone build. + +#### Properties + +- `protocol` _(Number)_: protocol revision number +- `binaryType` _(String)_ : can be set to 'arraybuffer' or 'blob' in browsers, + and `buffer` or `arraybuffer` in Node. Blob is only used in browser if it's + supported. + +#### Events + +- `open` + - Fired upon successful connection. +- `message` + - Fired when data is received from the server. + - **Arguments** + - `String` | `ArrayBuffer`: utf-8 encoded data or ArrayBuffer containing + binary data +- `close` + - Fired upon disconnection. In compliance with the WebSocket API spec, this event may be + fired even if the `open` event does not occur (i.e. due to connection error or `close()`). +- `error` + - Fired when an error occurs. +- `flush` + - Fired upon completing a buffer flush +- `drain` + - Fired after `drain` event of transport if writeBuffer is empty +- `upgradeError` + - Fired if an error occurs with a transport we're trying to upgrade to. +- `upgrade` + - Fired upon upgrade success, after the new transport is set +- `ping` + - Fired upon _flushing_ a ping packet (ie: actual packet write out) +- `pong` + - Fired upon receiving a pong packet. + +#### Methods + +- **constructor** + - Initializes the client + - **Parameters** + - `String` uri + - `Object`: optional, options object + - **Options** + - `agent` (`http.Agent`): `http.Agent` to use, defaults to `false` (NodeJS only) + - `upgrade` (`Boolean`): defaults to true, whether the client should try + to upgrade the transport from long-polling to something better. + - `forceJSONP` (`Boolean`): forces JSONP for polling transport. + - `jsonp` (`Boolean`): determines whether to use JSONP when + necessary for polling. If disabled (by settings to false) an error will + be emitted (saying "No transports available") if no other transports + are available. If another transport is available for opening a + connection (e.g. WebSocket) that transport + will be used instead. + - `forceBase64` (`Boolean`): forces base 64 encoding for polling transport even when XHR2 responseType is available and WebSocket even if the used standard supports binary. + - `enablesXDR` (`Boolean`): enables XDomainRequest for IE8 to avoid loading bar flashing with click sound. default to `false` because XDomainRequest has a flaw of not sending cookie. + - `timestampRequests` (`Boolean`): whether to add the timestamp with each + transport request. Note: polling requests are always stamped unless this + option is explicitly set to `false` (`false`) + - `timestampParam` (`String`): timestamp parameter (`t`) + - `policyPort` (`Number`): port the policy server listens on (`843`) + - `path` (`String`): path to connect to, default is `/engine.io` + - `transports` (`Array`): a list of transports to try (in order). + Defaults to `['polling', 'websocket']`. `Engine` + always attempts to connect directly with the first one, provided the + feature detection test for it passes. + - `transportOptions` (`Object`): hash of options, indexed by transport name, overriding the common options for the given transport + - `rememberUpgrade` (`Boolean`): defaults to false. + If true and if the previous websocket connection to the server succeeded, + the connection attempt will bypass the normal upgrade process and will initially + try websocket. A connection attempt following a transport error will use the + normal upgrade process. It is recommended you turn this on only when using + SSL/TLS connections, or if you know that your network does not block websockets. + - `pfx` (`String`): Certificate, Private key and CA certificates to use for SSL. Can be used in Node.js client environment to manually specify certificate information. + - `key` (`String`): Private key to use for SSL. Can be used in Node.js client environment to manually specify certificate information. + - `passphrase` (`String`): A string of passphrase for the private key or pfx. Can be used in Node.js client environment to manually specify certificate information. + - `cert` (`String`): Public x509 certificate to use. Can be used in Node.js client environment to manually specify certificate information. + - `ca` (`String`|`Array`): An authority certificate or array of authority certificates to check the remote host against.. Can be used in Node.js client environment to manually specify certificate information. + - `ciphers` (`String`): A string describing the ciphers to use or exclude. Consult the [cipher format list](http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT) for details on the format. Can be used in Node.js client environment to manually specify certificate information. + - `rejectUnauthorized` (`Boolean`): If true, the server certificate is verified against the list of supplied CAs. An 'error' event is emitted if verification fails. Verification happens at the connection level, before the HTTP request is sent. Can be used in Node.js client environment to manually specify certificate information. + - `perMessageDeflate` (`Object|Boolean`): parameters of the WebSocket permessage-deflate extension + (see [ws module](https://github.com/einaros/ws) api docs). Set to `false` to disable. (`true`) + - `threshold` (`Number`): data is compressed only if the byte size is above this value. This option is ignored on the browser. (`1024`) + - `extraHeaders` (`Object`): Headers that will be passed for each request to the server (via xhr-polling and via websockets). These values then can be used during handshake or for special proxies. Can only be used in Node.js client environment. + - `onlyBinaryUpgrades` (`Boolean`): whether transport upgrades should be restricted to transports supporting binary data (`false`) + - `forceNode` (`Boolean`): Uses NodeJS implementation for websockets - even if there is a native Browser-Websocket available, which is preferred by default over the NodeJS implementation. (This is useful when using hybrid platforms like nw.js or electron) (`false`, NodeJS only) + - `localAddress` (`String`): the local IP address to connect to + - **Polling-only options** + - `requestTimeout` (`Number`): Timeout for xhr-polling requests in milliseconds (`0`) + - **Websocket-only options** + - `protocols` (`Array`): a list of subprotocols (see [MDN reference](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#Subprotocols)) +- `send` + - Sends a message to the server + - **Parameters** + - `String` | `ArrayBuffer` | `ArrayBufferView` | `Blob`: data to send + - `Object`: optional, options object + - `Function`: optional, callback upon `drain` + - **Options** + - `compress` (`Boolean`): whether to compress sending data. This option is ignored and forced to be `true` on the browser. (`true`) +- `close` + - Disconnects the client. + +### Transport + +The transport class. Private. _Inherits from EventEmitter_. + +#### Events + +- `poll`: emitted by polling transports upon starting a new request +- `pollComplete`: emitted by polling transports upon completing a request +- `drain`: emitted by polling transports upon a buffer drain + +## Tests + +`engine.io-client` is used to test +[engine](http://github.com/socketio/engine.io). Running the `engine.io` +test suite ensures the client works and vice-versa. + +Browser tests are run using [zuul](https://github.com/defunctzombie/zuul). You can +run the tests locally using the following command. + +``` +./node_modules/.bin/zuul --local 8080 -- test/index.js +``` + +Additionally, `engine.io-client` has a standalone test suite you can run +with `make test` which will run node.js and browser tests. You must have zuul setup with +a saucelabs account. + +## Support + +The support channels for `engine.io-client` are the same as `socket.io`: + - irc.freenode.net **#socket.io** + - [Google Groups](http://groups.google.com/group/socket_io) + - [Website](http://socket.io) + +## Development + +To contribute patches, run tests or benchmarks, make sure to clone the +repository: + +```bash +git clone git://github.com/socketio/engine.io-client.git +``` + +Then: + +```bash +cd engine.io-client +npm install +``` + +See the `Tests` section above for how to run tests before submitting any patches. + +## License + +MIT - Copyright (c) 2014 Automattic, Inc. diff --git a/wrt/node_modules/engine.io-client/engine.io.js b/wrt/node_modules/engine.io-client/engine.io.js new file mode 100644 index 0000000..0109c17 --- /dev/null +++ b/wrt/node_modules/engine.io-client/engine.io.js @@ -0,0 +1,4707 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["eio"] = factory(); + else + root["eio"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = __webpack_require__(1); + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = __webpack_require__(2); + + /** + * Exports parser + * + * @api public + * + */ + module.exports.parser = __webpack_require__(9); + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + /** + * Module dependencies. + */ + + var transports = __webpack_require__(3); + var Emitter = __webpack_require__(19); + var debug = __webpack_require__(23)('engine.io-client:socket'); + var index = __webpack_require__(30); + var parser = __webpack_require__(9); + var parseuri = __webpack_require__(31); + var parsejson = __webpack_require__(32); + var parseqs = __webpack_require__(20); + + /** + * Module exports. + */ + + module.exports = Socket; + + /** + * Socket constructor. + * + * @param {String|Object} uri or options + * @param {Object} options + * @api public + */ + + function Socket(uri, opts) { + if (!(this instanceof Socket)) return new Socket(uri, opts); + + opts = opts || {}; + + if (uri && 'object' === (typeof uri === 'undefined' ? 'undefined' : _typeof(uri))) { + opts = uri; + uri = null; + } + + if (uri) { + uri = parseuri(uri); + opts.hostname = uri.host; + opts.secure = uri.protocol === 'https' || uri.protocol === 'wss'; + opts.port = uri.port; + if (uri.query) opts.query = uri.query; + } else if (opts.host) { + opts.hostname = parseuri(opts.host).host; + } + + this.secure = null != opts.secure ? opts.secure : global.location && 'https:' === location.protocol; + + if (opts.hostname && !opts.port) { + // if no port is specified manually, use the protocol default + opts.port = this.secure ? '443' : '80'; + } + + this.agent = opts.agent || false; + this.hostname = opts.hostname || (global.location ? location.hostname : 'localhost'); + this.port = opts.port || (global.location && location.port ? location.port : this.secure ? 443 : 80); + this.query = opts.query || {}; + if ('string' === typeof this.query) this.query = parseqs.decode(this.query); + this.upgrade = false !== opts.upgrade; + this.path = (opts.path || '/engine.io').replace(/\/$/, '') + '/'; + this.forceJSONP = !!opts.forceJSONP; + this.jsonp = false !== opts.jsonp; + this.forceBase64 = !!opts.forceBase64; + this.enablesXDR = !!opts.enablesXDR; + this.timestampParam = opts.timestampParam || 't'; + this.timestampRequests = opts.timestampRequests; + this.transports = opts.transports || ['polling', 'websocket']; + this.transportOptions = opts.transportOptions || {}; + this.readyState = ''; + this.writeBuffer = []; + this.prevBufferLen = 0; + this.policyPort = opts.policyPort || 843; + this.rememberUpgrade = opts.rememberUpgrade || false; + this.binaryType = null; + this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades; + this.perMessageDeflate = false !== opts.perMessageDeflate ? opts.perMessageDeflate || {} : false; + + if (true === this.perMessageDeflate) this.perMessageDeflate = {}; + if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) { + this.perMessageDeflate.threshold = 1024; + } + + // SSL options for Node.js client + this.pfx = opts.pfx || null; + this.key = opts.key || null; + this.passphrase = opts.passphrase || null; + this.cert = opts.cert || null; + this.ca = opts.ca || null; + this.ciphers = opts.ciphers || null; + this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized; + this.forceNode = !!opts.forceNode; + + // other options for Node.js client + var freeGlobal = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global; + if (freeGlobal.global === freeGlobal) { + if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) { + this.extraHeaders = opts.extraHeaders; + } + + if (opts.localAddress) { + this.localAddress = opts.localAddress; + } + } + + // set on handshake + this.id = null; + this.upgrades = null; + this.pingInterval = null; + this.pingTimeout = null; + + // set on heartbeat + this.pingIntervalTimer = null; + this.pingTimeoutTimer = null; + + this.open(); + } + + Socket.priorWebsocketSuccess = false; + + /** + * Mix in `Emitter`. + */ + + Emitter(Socket.prototype); + + /** + * Protocol version. + * + * @api public + */ + + Socket.protocol = parser.protocol; // this is an int + + /** + * Expose deps for legacy compatibility + * and standalone browser access. + */ + + Socket.Socket = Socket; + Socket.Transport = __webpack_require__(8); + Socket.transports = __webpack_require__(3); + Socket.parser = __webpack_require__(9); + + /** + * Creates transport of the given type. + * + * @param {String} transport name + * @return {Transport} + * @api private + */ + + Socket.prototype.createTransport = function (name) { + debug('creating transport "%s"', name); + var query = clone(this.query); + + // append engine.io protocol identifier + query.EIO = parser.protocol; + + // transport name + query.transport = name; + + // per-transport options + var options = this.transportOptions[name] || {}; + + // session id if we already have one + if (this.id) query.sid = this.id; + + var transport = new transports[name]({ + query: query, + socket: this, + agent: options.agent || this.agent, + hostname: options.hostname || this.hostname, + port: options.port || this.port, + secure: options.secure || this.secure, + path: options.path || this.path, + forceJSONP: options.forceJSONP || this.forceJSONP, + jsonp: options.jsonp || this.jsonp, + forceBase64: options.forceBase64 || this.forceBase64, + enablesXDR: options.enablesXDR || this.enablesXDR, + timestampRequests: options.timestampRequests || this.timestampRequests, + timestampParam: options.timestampParam || this.timestampParam, + policyPort: options.policyPort || this.policyPort, + pfx: options.pfx || this.pfx, + key: options.key || this.key, + passphrase: options.passphrase || this.passphrase, + cert: options.cert || this.cert, + ca: options.ca || this.ca, + ciphers: options.ciphers || this.ciphers, + rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized, + perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate, + extraHeaders: options.extraHeaders || this.extraHeaders, + forceNode: options.forceNode || this.forceNode, + localAddress: options.localAddress || this.localAddress, + requestTimeout: options.requestTimeout || this.requestTimeout, + protocols: options.protocols || void 0 + }); + + return transport; + }; + + function clone(obj) { + var o = {}; + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + o[i] = obj[i]; + } + } + return o; + } + + /** + * Initializes transport to use and starts probe. + * + * @api private + */ + Socket.prototype.open = function () { + var transport; + if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) { + transport = 'websocket'; + } else if (0 === this.transports.length) { + // Emit error on next tick so it can be listened to + var self = this; + setTimeout(function () { + self.emit('error', 'No transports available'); + }, 0); + return; + } else { + transport = this.transports[0]; + } + this.readyState = 'opening'; + + // Retry with the next transport if the transport is disabled (jsonp: false) + try { + transport = this.createTransport(transport); + } catch (e) { + this.transports.shift(); + this.open(); + return; + } + + transport.open(); + this.setTransport(transport); + }; + + /** + * Sets the current transport. Disables the existing one (if any). + * + * @api private + */ + + Socket.prototype.setTransport = function (transport) { + debug('setting transport %s', transport.name); + var self = this; + + if (this.transport) { + debug('clearing existing transport %s', this.transport.name); + this.transport.removeAllListeners(); + } + + // set up transport + this.transport = transport; + + // set up transport listeners + transport.on('drain', function () { + self.onDrain(); + }).on('packet', function (packet) { + self.onPacket(packet); + }).on('error', function (e) { + self.onError(e); + }).on('close', function () { + self.onClose('transport close'); + }); + }; + + /** + * Probes a transport. + * + * @param {String} transport name + * @api private + */ + + Socket.prototype.probe = function (name) { + debug('probing transport "%s"', name); + var transport = this.createTransport(name, { probe: 1 }); + var failed = false; + var self = this; + + Socket.priorWebsocketSuccess = false; + + function onTransportOpen() { + if (self.onlyBinaryUpgrades) { + var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary; + failed = failed || upgradeLosesBinary; + } + if (failed) return; + + debug('probe transport "%s" opened', name); + transport.send([{ type: 'ping', data: 'probe' }]); + transport.once('packet', function (msg) { + if (failed) return; + if ('pong' === msg.type && 'probe' === msg.data) { + debug('probe transport "%s" pong', name); + self.upgrading = true; + self.emit('upgrading', transport); + if (!transport) return; + Socket.priorWebsocketSuccess = 'websocket' === transport.name; + + debug('pausing current transport "%s"', self.transport.name); + self.transport.pause(function () { + if (failed) return; + if ('closed' === self.readyState) return; + debug('changing transport and sending upgrade packet'); + + cleanup(); + + self.setTransport(transport); + transport.send([{ type: 'upgrade' }]); + self.emit('upgrade', transport); + transport = null; + self.upgrading = false; + self.flush(); + }); + } else { + debug('probe transport "%s" failed', name); + var err = new Error('probe error'); + err.transport = transport.name; + self.emit('upgradeError', err); + } + }); + } + + function freezeTransport() { + if (failed) return; + + // Any callback called by transport should be ignored since now + failed = true; + + cleanup(); + + transport.close(); + transport = null; + } + + // Handle any error that happens while probing + function onerror(err) { + var error = new Error('probe error: ' + err); + error.transport = transport.name; + + freezeTransport(); + + debug('probe transport "%s" failed because of error: %s', name, err); + + self.emit('upgradeError', error); + } + + function onTransportClose() { + onerror('transport closed'); + } + + // When the socket is closed while we're probing + function onclose() { + onerror('socket closed'); + } + + // When the socket is upgraded while we're probing + function onupgrade(to) { + if (transport && to.name !== transport.name) { + debug('"%s" works - aborting "%s"', to.name, transport.name); + freezeTransport(); + } + } + + // Remove all listeners on the transport and on self + function cleanup() { + transport.removeListener('open', onTransportOpen); + transport.removeListener('error', onerror); + transport.removeListener('close', onTransportClose); + self.removeListener('close', onclose); + self.removeListener('upgrading', onupgrade); + } + + transport.once('open', onTransportOpen); + transport.once('error', onerror); + transport.once('close', onTransportClose); + + this.once('close', onclose); + this.once('upgrading', onupgrade); + + transport.open(); + }; + + /** + * Called when connection is deemed open. + * + * @api public + */ + + Socket.prototype.onOpen = function () { + debug('socket open'); + this.readyState = 'open'; + Socket.priorWebsocketSuccess = 'websocket' === this.transport.name; + this.emit('open'); + this.flush(); + + // we check for `readyState` in case an `open` + // listener already closed the socket + if ('open' === this.readyState && this.upgrade && this.transport.pause) { + debug('starting upgrade probes'); + for (var i = 0, l = this.upgrades.length; i < l; i++) { + this.probe(this.upgrades[i]); + } + } + }; + + /** + * Handles a packet. + * + * @api private + */ + + Socket.prototype.onPacket = function (packet) { + if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) { + debug('socket receive: type "%s", data "%s"', packet.type, packet.data); + + this.emit('packet', packet); + + // Socket is live - any packet counts + this.emit('heartbeat'); + + switch (packet.type) { + case 'open': + this.onHandshake(parsejson(packet.data)); + break; + + case 'pong': + this.setPing(); + this.emit('pong'); + break; + + case 'error': + var err = new Error('server error'); + err.code = packet.data; + this.onError(err); + break; + + case 'message': + this.emit('data', packet.data); + this.emit('message', packet.data); + break; + } + } else { + debug('packet received with socket readyState "%s"', this.readyState); + } + }; + + /** + * Called upon handshake completion. + * + * @param {Object} handshake obj + * @api private + */ + + Socket.prototype.onHandshake = function (data) { + this.emit('handshake', data); + this.id = data.sid; + this.transport.query.sid = data.sid; + this.upgrades = this.filterUpgrades(data.upgrades); + this.pingInterval = data.pingInterval; + this.pingTimeout = data.pingTimeout; + this.onOpen(); + // In case open handler closes socket + if ('closed' === this.readyState) return; + this.setPing(); + + // Prolong liveness of socket on heartbeat + this.removeListener('heartbeat', this.onHeartbeat); + this.on('heartbeat', this.onHeartbeat); + }; + + /** + * Resets ping timeout. + * + * @api private + */ + + Socket.prototype.onHeartbeat = function (timeout) { + clearTimeout(this.pingTimeoutTimer); + var self = this; + self.pingTimeoutTimer = setTimeout(function () { + if ('closed' === self.readyState) return; + self.onClose('ping timeout'); + }, timeout || self.pingInterval + self.pingTimeout); + }; + + /** + * Pings server every `this.pingInterval` and expects response + * within `this.pingTimeout` or closes connection. + * + * @api private + */ + + Socket.prototype.setPing = function () { + var self = this; + clearTimeout(self.pingIntervalTimer); + self.pingIntervalTimer = setTimeout(function () { + debug('writing ping packet - expecting pong within %sms', self.pingTimeout); + self.ping(); + self.onHeartbeat(self.pingTimeout); + }, self.pingInterval); + }; + + /** + * Sends a ping packet. + * + * @api private + */ + + Socket.prototype.ping = function () { + var self = this; + this.sendPacket('ping', function () { + self.emit('ping'); + }); + }; + + /** + * Called on `drain` event + * + * @api private + */ + + Socket.prototype.onDrain = function () { + this.writeBuffer.splice(0, this.prevBufferLen); + + // setting prevBufferLen = 0 is very important + // for example, when upgrading, upgrade packet is sent over, + // and a nonzero prevBufferLen could cause problems on `drain` + this.prevBufferLen = 0; + + if (0 === this.writeBuffer.length) { + this.emit('drain'); + } else { + this.flush(); + } + }; + + /** + * Flush write buffers. + * + * @api private + */ + + Socket.prototype.flush = function () { + if ('closed' !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { + debug('flushing %d packets in socket', this.writeBuffer.length); + this.transport.send(this.writeBuffer); + // keep track of current length of writeBuffer + // splice writeBuffer and callbackBuffer on `drain` + this.prevBufferLen = this.writeBuffer.length; + this.emit('flush'); + } + }; + + /** + * Sends a message. + * + * @param {String} message. + * @param {Function} callback function. + * @param {Object} options. + * @return {Socket} for chaining. + * @api public + */ + + Socket.prototype.write = Socket.prototype.send = function (msg, options, fn) { + this.sendPacket('message', msg, options, fn); + return this; + }; + + /** + * Sends a packet. + * + * @param {String} packet type. + * @param {String} data. + * @param {Object} options. + * @param {Function} callback function. + * @api private + */ + + Socket.prototype.sendPacket = function (type, data, options, fn) { + if ('function' === typeof data) { + fn = data; + data = undefined; + } + + if ('function' === typeof options) { + fn = options; + options = null; + } + + if ('closing' === this.readyState || 'closed' === this.readyState) { + return; + } + + options = options || {}; + options.compress = false !== options.compress; + + var packet = { + type: type, + data: data, + options: options + }; + this.emit('packetCreate', packet); + this.writeBuffer.push(packet); + if (fn) this.once('flush', fn); + this.flush(); + }; + + /** + * Closes the connection. + * + * @api private + */ + + Socket.prototype.close = function () { + if ('opening' === this.readyState || 'open' === this.readyState) { + this.readyState = 'closing'; + + var self = this; + + if (this.writeBuffer.length) { + this.once('drain', function () { + if (this.upgrading) { + waitForUpgrade(); + } else { + close(); + } + }); + } else if (this.upgrading) { + waitForUpgrade(); + } else { + close(); + } + } + + function close() { + self.onClose('forced close'); + debug('socket closing - telling transport to close'); + self.transport.close(); + } + + function cleanupAndClose() { + self.removeListener('upgrade', cleanupAndClose); + self.removeListener('upgradeError', cleanupAndClose); + close(); + } + + function waitForUpgrade() { + // wait for upgrade to finish since we can't send packets while pausing a transport + self.once('upgrade', cleanupAndClose); + self.once('upgradeError', cleanupAndClose); + } + + return this; + }; + + /** + * Called upon transport error + * + * @api private + */ + + Socket.prototype.onError = function (err) { + debug('socket error %j', err); + Socket.priorWebsocketSuccess = false; + this.emit('error', err); + this.onClose('transport error', err); + }; + + /** + * Called upon transport close. + * + * @api private + */ + + Socket.prototype.onClose = function (reason, desc) { + if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) { + debug('socket close with reason: "%s"', reason); + var self = this; + + // clear timers + clearTimeout(this.pingIntervalTimer); + clearTimeout(this.pingTimeoutTimer); + + // stop event from firing again for transport + this.transport.removeAllListeners('close'); + + // ensure transport won't stay open + this.transport.close(); + + // ignore further transport communication + this.transport.removeAllListeners(); + + // set ready state + this.readyState = 'closed'; + + // clear session id + this.id = null; + + // emit close event + this.emit('close', reason, desc); + + // clean buffers after, so users can still + // grab the buffers on `close` event + self.writeBuffer = []; + self.prevBufferLen = 0; + } + }; + + /** + * Filters upgrades, returning only those matching client transports. + * + * @param {Array} server upgrades + * @api private + * + */ + + Socket.prototype.filterUpgrades = function (upgrades) { + var filteredUpgrades = []; + for (var i = 0, j = upgrades.length; i < j; i++) { + if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]); + } + return filteredUpgrades; + }; + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + /** + * Module dependencies + */ + + var XMLHttpRequest = __webpack_require__(4); + var XHR = __webpack_require__(6); + var JSONP = __webpack_require__(27); + var websocket = __webpack_require__(28); + + /** + * Export transports. + */ + + exports.polling = polling; + exports.websocket = websocket; + + /** + * Polling transport polymorphic constructor. + * Decides on xhr vs jsonp based on feature detection. + * + * @api private + */ + + function polling(opts) { + var xhr; + var xd = false; + var xs = false; + var jsonp = false !== opts.jsonp; + + if (global.location) { + var isSSL = 'https:' === location.protocol; + var port = location.port; + + // some user agents have empty `location.port` + if (!port) { + port = isSSL ? 443 : 80; + } + + xd = opts.hostname !== location.hostname || port !== opts.port; + xs = opts.secure !== isSSL; + } + + opts.xdomain = xd; + opts.xscheme = xs; + xhr = new XMLHttpRequest(opts); + + if ('open' in xhr && !opts.forceJSONP) { + return new XHR(opts); + } else { + if (!jsonp) throw new Error('JSONP disabled'); + return new JSONP(opts); + } + } + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + // browser shim for xmlhttprequest module + + var hasCORS = __webpack_require__(5); + + module.exports = function (opts) { + var xdomain = opts.xdomain; + + // scheme must be same when usign XDomainRequest + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + var xscheme = opts.xscheme; + + // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default. + // https://github.com/Automattic/engine.io-client/pull/217 + var enablesXDR = opts.enablesXDR; + + // XMLHttpRequest can be disabled on IE + try { + if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { + return new XMLHttpRequest(); + } + } catch (e) {} + + // Use XDomainRequest for IE8 if enablesXDR is true + // because loading bar keeps flashing when using jsonp-polling + // https://github.com/yujiosaka/socke.io-ie8-loading-example + try { + if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) { + return new XDomainRequest(); + } + } catch (e) {} + + if (!xdomain) { + try { + return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP'); + } catch (e) {} + } + }; + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 5 */ +/***/ function(module, exports) { + + + /** + * Module exports. + * + * Logic borrowed from Modernizr: + * + * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js + */ + + try { + module.exports = typeof XMLHttpRequest !== 'undefined' && + 'withCredentials' in new XMLHttpRequest(); + } catch (err) { + // if XMLHttp support is disabled in IE then it will throw + // when trying to create + module.exports = false; + } + + +/***/ }, +/* 6 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + /** + * Module requirements. + */ + + var XMLHttpRequest = __webpack_require__(4); + var Polling = __webpack_require__(7); + var Emitter = __webpack_require__(19); + var inherit = __webpack_require__(21); + var debug = __webpack_require__(23)('engine.io-client:polling-xhr'); + + /** + * Module exports. + */ + + module.exports = XHR; + module.exports.Request = Request; + + /** + * Empty function + */ + + function empty() {} + + /** + * XHR Polling constructor. + * + * @param {Object} opts + * @api public + */ + + function XHR(opts) { + Polling.call(this, opts); + this.requestTimeout = opts.requestTimeout; + this.extraHeaders = opts.extraHeaders; + + if (global.location) { + var isSSL = 'https:' === location.protocol; + var port = location.port; + + // some user agents have empty `location.port` + if (!port) { + port = isSSL ? 443 : 80; + } + + this.xd = opts.hostname !== global.location.hostname || port !== opts.port; + this.xs = opts.secure !== isSSL; + } + } + + /** + * Inherits from Polling. + */ + + inherit(XHR, Polling); + + /** + * XHR supports binary + */ + + XHR.prototype.supportsBinary = true; + + /** + * Creates a request. + * + * @param {String} method + * @api private + */ + + XHR.prototype.request = function (opts) { + opts = opts || {}; + opts.uri = this.uri(); + opts.xd = this.xd; + opts.xs = this.xs; + opts.agent = this.agent || false; + opts.supportsBinary = this.supportsBinary; + opts.enablesXDR = this.enablesXDR; + + // SSL options for Node.js client + opts.pfx = this.pfx; + opts.key = this.key; + opts.passphrase = this.passphrase; + opts.cert = this.cert; + opts.ca = this.ca; + opts.ciphers = this.ciphers; + opts.rejectUnauthorized = this.rejectUnauthorized; + opts.requestTimeout = this.requestTimeout; + + // other options for Node.js client + opts.extraHeaders = this.extraHeaders; + + return new Request(opts); + }; + + /** + * Sends data. + * + * @param {String} data to send. + * @param {Function} called upon flush. + * @api private + */ + + XHR.prototype.doWrite = function (data, fn) { + var isBinary = typeof data !== 'string' && data !== undefined; + var req = this.request({ method: 'POST', data: data, isBinary: isBinary }); + var self = this; + req.on('success', fn); + req.on('error', function (err) { + self.onError('xhr post error', err); + }); + this.sendXhr = req; + }; + + /** + * Starts a poll cycle. + * + * @api private + */ + + XHR.prototype.doPoll = function () { + debug('xhr poll'); + var req = this.request(); + var self = this; + req.on('data', function (data) { + self.onData(data); + }); + req.on('error', function (err) { + self.onError('xhr poll error', err); + }); + this.pollXhr = req; + }; + + /** + * Request constructor + * + * @param {Object} options + * @api public + */ + + function Request(opts) { + this.method = opts.method || 'GET'; + this.uri = opts.uri; + this.xd = !!opts.xd; + this.xs = !!opts.xs; + this.async = false !== opts.async; + this.data = undefined !== opts.data ? opts.data : null; + this.agent = opts.agent; + this.isBinary = opts.isBinary; + this.supportsBinary = opts.supportsBinary; + this.enablesXDR = opts.enablesXDR; + this.requestTimeout = opts.requestTimeout; + + // SSL options for Node.js client + this.pfx = opts.pfx; + this.key = opts.key; + this.passphrase = opts.passphrase; + this.cert = opts.cert; + this.ca = opts.ca; + this.ciphers = opts.ciphers; + this.rejectUnauthorized = opts.rejectUnauthorized; + + // other options for Node.js client + this.extraHeaders = opts.extraHeaders; + + this.create(); + } + + /** + * Mix in `Emitter`. + */ + + Emitter(Request.prototype); + + /** + * Creates the XHR object and sends the request. + * + * @api private + */ + + Request.prototype.create = function () { + var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR }; + + // SSL options for Node.js client + opts.pfx = this.pfx; + opts.key = this.key; + opts.passphrase = this.passphrase; + opts.cert = this.cert; + opts.ca = this.ca; + opts.ciphers = this.ciphers; + opts.rejectUnauthorized = this.rejectUnauthorized; + + var xhr = this.xhr = new XMLHttpRequest(opts); + var self = this; + + try { + debug('xhr open %s: %s', this.method, this.uri); + xhr.open(this.method, this.uri, this.async); + try { + if (this.extraHeaders) { + xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true); + for (var i in this.extraHeaders) { + if (this.extraHeaders.hasOwnProperty(i)) { + xhr.setRequestHeader(i, this.extraHeaders[i]); + } + } + } + } catch (e) {} + + if ('POST' === this.method) { + try { + if (this.isBinary) { + xhr.setRequestHeader('Content-type', 'application/octet-stream'); + } else { + xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8'); + } + } catch (e) {} + } + + try { + xhr.setRequestHeader('Accept', '*/*'); + } catch (e) {} + + // ie6 check + if ('withCredentials' in xhr) { + xhr.withCredentials = true; + } + + if (this.requestTimeout) { + xhr.timeout = this.requestTimeout; + } + + if (this.hasXDR()) { + xhr.onload = function () { + self.onLoad(); + }; + xhr.onerror = function () { + self.onError(xhr.responseText); + }; + } else { + xhr.onreadystatechange = function () { + if (xhr.readyState === 2) { + var contentType; + try { + contentType = xhr.getResponseHeader('Content-Type'); + } catch (e) {} + if (contentType === 'application/octet-stream') { + xhr.responseType = 'arraybuffer'; + } + } + if (4 !== xhr.readyState) return; + if (200 === xhr.status || 1223 === xhr.status) { + self.onLoad(); + } else { + // make sure the `error` event handler that's user-set + // does not throw in the same tick and gets caught here + setTimeout(function () { + self.onError(xhr.status); + }, 0); + } + }; + } + + debug('xhr data %s', this.data); + xhr.send(this.data); + } catch (e) { + // Need to defer since .create() is called directly fhrom the constructor + // and thus the 'error' event can only be only bound *after* this exception + // occurs. Therefore, also, we cannot throw here at all. + setTimeout(function () { + self.onError(e); + }, 0); + return; + } + + if (global.document) { + this.index = Request.requestsCount++; + Request.requests[this.index] = this; + } + }; + + /** + * Called upon successful response. + * + * @api private + */ + + Request.prototype.onSuccess = function () { + this.emit('success'); + this.cleanup(); + }; + + /** + * Called if we have data. + * + * @api private + */ + + Request.prototype.onData = function (data) { + this.emit('data', data); + this.onSuccess(); + }; + + /** + * Called upon error. + * + * @api private + */ + + Request.prototype.onError = function (err) { + this.emit('error', err); + this.cleanup(true); + }; + + /** + * Cleans up house. + * + * @api private + */ + + Request.prototype.cleanup = function (fromError) { + if ('undefined' === typeof this.xhr || null === this.xhr) { + return; + } + // xmlhttprequest + if (this.hasXDR()) { + this.xhr.onload = this.xhr.onerror = empty; + } else { + this.xhr.onreadystatechange = empty; + } + + if (fromError) { + try { + this.xhr.abort(); + } catch (e) {} + } + + if (global.document) { + delete Request.requests[this.index]; + } + + this.xhr = null; + }; + + /** + * Called upon load. + * + * @api private + */ + + Request.prototype.onLoad = function () { + var data; + try { + var contentType; + try { + contentType = this.xhr.getResponseHeader('Content-Type'); + } catch (e) {} + if (contentType === 'application/octet-stream') { + data = this.xhr.response || this.xhr.responseText; + } else { + data = this.xhr.responseText; + } + } catch (e) { + this.onError(e); + } + if (null != data) { + this.onData(data); + } + }; + + /** + * Check if it has XDomainRequest. + * + * @api private + */ + + Request.prototype.hasXDR = function () { + return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR; + }; + + /** + * Aborts the request. + * + * @api public + */ + + Request.prototype.abort = function () { + this.cleanup(); + }; + + /** + * Aborts pending requests when unloading the window. This is needed to prevent + * memory leaks (e.g. when using IE) and to ensure that no spurious error is + * emitted. + */ + + Request.requestsCount = 0; + Request.requests = {}; + + if (global.document) { + if (global.attachEvent) { + global.attachEvent('onunload', unloadHandler); + } else if (global.addEventListener) { + global.addEventListener('beforeunload', unloadHandler, false); + } + } + + function unloadHandler() { + for (var i in Request.requests) { + if (Request.requests.hasOwnProperty(i)) { + Request.requests[i].abort(); + } + } + } + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Module dependencies. + */ + + var Transport = __webpack_require__(8); + var parseqs = __webpack_require__(20); + var parser = __webpack_require__(9); + var inherit = __webpack_require__(21); + var yeast = __webpack_require__(22); + var debug = __webpack_require__(23)('engine.io-client:polling'); + + /** + * Module exports. + */ + + module.exports = Polling; + + /** + * Is XHR2 supported? + */ + + var hasXHR2 = function () { + var XMLHttpRequest = __webpack_require__(4); + var xhr = new XMLHttpRequest({ xdomain: false }); + return null != xhr.responseType; + }(); + + /** + * Polling interface. + * + * @param {Object} opts + * @api private + */ + + function Polling(opts) { + var forceBase64 = opts && opts.forceBase64; + if (!hasXHR2 || forceBase64) { + this.supportsBinary = false; + } + Transport.call(this, opts); + } + + /** + * Inherits from Transport. + */ + + inherit(Polling, Transport); + + /** + * Transport name. + */ + + Polling.prototype.name = 'polling'; + + /** + * Opens the socket (triggers polling). We write a PING message to determine + * when the transport is open. + * + * @api private + */ + + Polling.prototype.doOpen = function () { + this.poll(); + }; + + /** + * Pauses polling. + * + * @param {Function} callback upon buffers are flushed and transport is paused + * @api private + */ + + Polling.prototype.pause = function (onPause) { + var self = this; + + this.readyState = 'pausing'; + + function pause() { + debug('paused'); + self.readyState = 'paused'; + onPause(); + } + + if (this.polling || !this.writable) { + var total = 0; + + if (this.polling) { + debug('we are currently polling - waiting to pause'); + total++; + this.once('pollComplete', function () { + debug('pre-pause polling complete'); + --total || pause(); + }); + } + + if (!this.writable) { + debug('we are currently writing - waiting to pause'); + total++; + this.once('drain', function () { + debug('pre-pause writing complete'); + --total || pause(); + }); + } + } else { + pause(); + } + }; + + /** + * Starts polling cycle. + * + * @api public + */ + + Polling.prototype.poll = function () { + debug('polling'); + this.polling = true; + this.doPoll(); + this.emit('poll'); + }; + + /** + * Overloads onData to detect payloads. + * + * @api private + */ + + Polling.prototype.onData = function (data) { + var self = this; + debug('polling got data %s', data); + var callback = function callback(packet, index, total) { + // if its the first message we consider the transport open + if ('opening' === self.readyState) { + self.onOpen(); + } + + // if its a close packet, we close the ongoing requests + if ('close' === packet.type) { + self.onClose(); + return false; + } + + // otherwise bypass onData and handle the message + self.onPacket(packet); + }; + + // decode payload + parser.decodePayload(data, this.socket.binaryType, callback); + + // if an event did not trigger closing + if ('closed' !== this.readyState) { + // if we got data we're not polling + this.polling = false; + this.emit('pollComplete'); + + if ('open' === this.readyState) { + this.poll(); + } else { + debug('ignoring poll - transport state "%s"', this.readyState); + } + } + }; + + /** + * For polling, send a close packet. + * + * @api private + */ + + Polling.prototype.doClose = function () { + var self = this; + + function close() { + debug('writing close packet'); + self.write([{ type: 'close' }]); + } + + if ('open' === this.readyState) { + debug('transport open - closing'); + close(); + } else { + // in case we're trying to close while + // handshaking is in progress (GH-164) + debug('transport not open - deferring close'); + this.once('open', close); + } + }; + + /** + * Writes a packets payload. + * + * @param {Array} data packets + * @param {Function} drain callback + * @api private + */ + + Polling.prototype.write = function (packets) { + var self = this; + this.writable = false; + var callbackfn = function callbackfn() { + self.writable = true; + self.emit('drain'); + }; + + parser.encodePayload(packets, this.supportsBinary, function (data) { + self.doWrite(data, callbackfn); + }); + }; + + /** + * Generates uri for connection. + * + * @api private + */ + + Polling.prototype.uri = function () { + var query = this.query || {}; + var schema = this.secure ? 'https' : 'http'; + var port = ''; + + // cache busting is forced + if (false !== this.timestampRequests) { + query[this.timestampParam] = yeast(); + } + + if (!this.supportsBinary && !query.sid) { + query.b64 = 1; + } + + query = parseqs.encode(query); + + // avoid port if default for schema + if (this.port && ('https' === schema && Number(this.port) !== 443 || 'http' === schema && Number(this.port) !== 80)) { + port = ':' + this.port; + } + + // prepend ? to query + if (query.length) { + query = '?' + query; + } + + var ipv6 = this.hostname.indexOf(':') !== -1; + return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query; + }; + +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Module dependencies. + */ + + var parser = __webpack_require__(9); + var Emitter = __webpack_require__(19); + + /** + * Module exports. + */ + + module.exports = Transport; + + /** + * Transport abstract constructor. + * + * @param {Object} options. + * @api private + */ + + function Transport(opts) { + this.path = opts.path; + this.hostname = opts.hostname; + this.port = opts.port; + this.secure = opts.secure; + this.query = opts.query; + this.timestampParam = opts.timestampParam; + this.timestampRequests = opts.timestampRequests; + this.readyState = ''; + this.agent = opts.agent || false; + this.socket = opts.socket; + this.enablesXDR = opts.enablesXDR; + + // SSL options for Node.js client + this.pfx = opts.pfx; + this.key = opts.key; + this.passphrase = opts.passphrase; + this.cert = opts.cert; + this.ca = opts.ca; + this.ciphers = opts.ciphers; + this.rejectUnauthorized = opts.rejectUnauthorized; + this.forceNode = opts.forceNode; + + // other options for Node.js client + this.extraHeaders = opts.extraHeaders; + this.localAddress = opts.localAddress; + } + + /** + * Mix in `Emitter`. + */ + + Emitter(Transport.prototype); + + /** + * Emits an error. + * + * @param {String} str + * @return {Transport} for chaining + * @api public + */ + + Transport.prototype.onError = function (msg, desc) { + var err = new Error(msg); + err.type = 'TransportError'; + err.description = desc; + this.emit('error', err); + return this; + }; + + /** + * Opens the transport. + * + * @api public + */ + + Transport.prototype.open = function () { + if ('closed' === this.readyState || '' === this.readyState) { + this.readyState = 'opening'; + this.doOpen(); + } + + return this; + }; + + /** + * Closes the transport. + * + * @api private + */ + + Transport.prototype.close = function () { + if ('opening' === this.readyState || 'open' === this.readyState) { + this.doClose(); + this.onClose(); + } + + return this; + }; + + /** + * Sends multiple packets. + * + * @param {Array} packets + * @api private + */ + + Transport.prototype.send = function (packets) { + if ('open' === this.readyState) { + this.write(packets); + } else { + throw new Error('Transport not open'); + } + }; + + /** + * Called upon open + * + * @api private + */ + + Transport.prototype.onOpen = function () { + this.readyState = 'open'; + this.writable = true; + this.emit('open'); + }; + + /** + * Called with data. + * + * @param {String} data + * @api private + */ + + Transport.prototype.onData = function (data) { + var packet = parser.decodePacket(data, this.socket.binaryType); + this.onPacket(packet); + }; + + /** + * Called with a decoded packet. + */ + + Transport.prototype.onPacket = function (packet) { + this.emit('packet', packet); + }; + + /** + * Called upon close. + * + * @api private + */ + + Transport.prototype.onClose = function () { + this.readyState = 'closed'; + this.emit('close'); + }; + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {/** + * Module dependencies. + */ + + var keys = __webpack_require__(10); + var hasBinary = __webpack_require__(11); + var sliceBuffer = __webpack_require__(13); + var after = __webpack_require__(14); + var utf8 = __webpack_require__(15); + + var base64encoder; + if (global && global.ArrayBuffer) { + base64encoder = __webpack_require__(17); + } + + /** + * Check if we are running an android browser. That requires us to use + * ArrayBuffer with polling transports... + * + * http://ghinda.net/jpeg-blob-ajax-android/ + */ + + var isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent); + + /** + * Check if we are running in PhantomJS. + * Uploading a Blob with PhantomJS does not work correctly, as reported here: + * https://github.com/ariya/phantomjs/issues/11395 + * @type boolean + */ + var isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent); + + /** + * When true, avoids using Blobs to encode payloads. + * @type boolean + */ + var dontSendBlobs = isAndroid || isPhantomJS; + + /** + * Current protocol version. + */ + + exports.protocol = 3; + + /** + * Packet types. + */ + + var packets = exports.packets = { + open: 0 // non-ws + , close: 1 // non-ws + , ping: 2 + , pong: 3 + , message: 4 + , upgrade: 5 + , noop: 6 + }; + + var packetslist = keys(packets); + + /** + * Premade error packet. + */ + + var err = { type: 'error', data: 'parser error' }; + + /** + * Create a blob api even for blob builder when vendor prefixes exist + */ + + var Blob = __webpack_require__(18); + + /** + * Encodes a packet. + * + * [ ] + * + * Example: + * + * 5hello world + * 3 + * 4 + * + * Binary is encoded in an identical principle + * + * @api private + */ + + exports.encodePacket = function (packet, supportsBinary, utf8encode, callback) { + if (typeof supportsBinary === 'function') { + callback = supportsBinary; + supportsBinary = false; + } + + if (typeof utf8encode === 'function') { + callback = utf8encode; + utf8encode = null; + } + + var data = (packet.data === undefined) + ? undefined + : packet.data.buffer || packet.data; + + if (global.ArrayBuffer && data instanceof ArrayBuffer) { + return encodeArrayBuffer(packet, supportsBinary, callback); + } else if (Blob && data instanceof global.Blob) { + return encodeBlob(packet, supportsBinary, callback); + } + + // might be an object with { base64: true, data: dataAsBase64String } + if (data && data.base64) { + return encodeBase64Object(packet, callback); + } + + // Sending data as a utf-8 string + var encoded = packets[packet.type]; + + // data fragment is optional + if (undefined !== packet.data) { + encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data); + } + + return callback('' + encoded); + + }; + + function encodeBase64Object(packet, callback) { + // packet data is an object { base64: true, data: dataAsBase64String } + var message = 'b' + exports.packets[packet.type] + packet.data.data; + return callback(message); + } + + /** + * Encode packet helpers for binary types + */ + + function encodeArrayBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + var data = packet.data; + var contentArray = new Uint8Array(data); + var resultBuffer = new Uint8Array(1 + data.byteLength); + + resultBuffer[0] = packets[packet.type]; + for (var i = 0; i < contentArray.length; i++) { + resultBuffer[i+1] = contentArray[i]; + } + + return callback(resultBuffer.buffer); + } + + function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + var fr = new FileReader(); + fr.onload = function() { + packet.data = fr.result; + exports.encodePacket(packet, supportsBinary, true, callback); + }; + return fr.readAsArrayBuffer(packet.data); + } + + function encodeBlob(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + if (dontSendBlobs) { + return encodeBlobAsArrayBuffer(packet, supportsBinary, callback); + } + + var length = new Uint8Array(1); + length[0] = packets[packet.type]; + var blob = new Blob([length.buffer, packet.data]); + + return callback(blob); + } + + /** + * Encodes a packet with binary data in a base64 string + * + * @param {Object} packet, has `type` and `data` + * @return {String} base64 encoded message + */ + + exports.encodeBase64Packet = function(packet, callback) { + var message = 'b' + exports.packets[packet.type]; + if (Blob && packet.data instanceof global.Blob) { + var fr = new FileReader(); + fr.onload = function() { + var b64 = fr.result.split(',')[1]; + callback(message + b64); + }; + return fr.readAsDataURL(packet.data); + } + + var b64data; + try { + b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data)); + } catch (e) { + // iPhone Safari doesn't let you apply with typed arrays + var typed = new Uint8Array(packet.data); + var basic = new Array(typed.length); + for (var i = 0; i < typed.length; i++) { + basic[i] = typed[i]; + } + b64data = String.fromCharCode.apply(null, basic); + } + message += global.btoa(b64data); + return callback(message); + }; + + /** + * Decodes a packet. Changes format to Blob if requested. + * + * @return {Object} with `type` and `data` (if any) + * @api private + */ + + exports.decodePacket = function (data, binaryType, utf8decode) { + if (data === undefined) { + return err; + } + // String data + if (typeof data === 'string') { + if (data.charAt(0) === 'b') { + return exports.decodeBase64Packet(data.substr(1), binaryType); + } + + if (utf8decode) { + data = tryDecode(data); + if (data === false) { + return err; + } + } + var type = data.charAt(0); + + if (Number(type) != type || !packetslist[type]) { + return err; + } + + if (data.length > 1) { + return { type: packetslist[type], data: data.substring(1) }; + } else { + return { type: packetslist[type] }; + } + } + + var asArray = new Uint8Array(data); + var type = asArray[0]; + var rest = sliceBuffer(data, 1); + if (Blob && binaryType === 'blob') { + rest = new Blob([rest]); + } + return { type: packetslist[type], data: rest }; + }; + + function tryDecode(data) { + try { + data = utf8.decode(data, { strict: false }); + } catch (e) { + return false; + } + return data; + } + + /** + * Decodes a packet encoded in a base64 string + * + * @param {String} base64 encoded message + * @return {Object} with `type` and `data` (if any) + */ + + exports.decodeBase64Packet = function(msg, binaryType) { + var type = packetslist[msg.charAt(0)]; + if (!base64encoder) { + return { type: type, data: { base64: true, data: msg.substr(1) } }; + } + + var data = base64encoder.decode(msg.substr(1)); + + if (binaryType === 'blob' && Blob) { + data = new Blob([data]); + } + + return { type: type, data: data }; + }; + + /** + * Encodes multiple messages (payload). + * + * :data + * + * Example: + * + * 11:hello world2:hi + * + * If any contents are binary, they will be encoded as base64 strings. Base64 + * encoded strings are marked with a b before the length specifier + * + * @param {Array} packets + * @api private + */ + + exports.encodePayload = function (packets, supportsBinary, callback) { + if (typeof supportsBinary === 'function') { + callback = supportsBinary; + supportsBinary = null; + } + + var isBinary = hasBinary(packets); + + if (supportsBinary && isBinary) { + if (Blob && !dontSendBlobs) { + return exports.encodePayloadAsBlob(packets, callback); + } + + return exports.encodePayloadAsArrayBuffer(packets, callback); + } + + if (!packets.length) { + return callback('0:'); + } + + function setLengthHeader(message) { + return message.length + ':' + message; + } + + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) { + doneCallback(null, setLengthHeader(message)); + }); + } + + map(packets, encodeOne, function(err, results) { + return callback(results.join('')); + }); + }; + + /** + * Async array map using after + */ + + function map(ary, each, done) { + var result = new Array(ary.length); + var next = after(ary.length, done); + + var eachWithIndex = function(i, el, cb) { + each(el, function(error, msg) { + result[i] = msg; + cb(error, result); + }); + }; + + for (var i = 0; i < ary.length; i++) { + eachWithIndex(i, ary[i], next); + } + } + + /* + * Decodes data when a payload is maybe expected. Possible binary contents are + * decoded from their base64 representation + * + * @param {String} data, callback method + * @api public + */ + + exports.decodePayload = function (data, binaryType, callback) { + if (typeof data !== 'string') { + return exports.decodePayloadAsBinary(data, binaryType, callback); + } + + if (typeof binaryType === 'function') { + callback = binaryType; + binaryType = null; + } + + var packet; + if (data === '') { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + var length = '', n, msg; + + for (var i = 0, l = data.length; i < l; i++) { + var chr = data.charAt(i); + + if (chr !== ':') { + length += chr; + continue; + } + + if (length === '' || (length != (n = Number(length)))) { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + msg = data.substr(i + 1, n); + + if (length != msg.length) { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + if (msg.length) { + packet = exports.decodePacket(msg, binaryType, false); + + if (err.type === packet.type && err.data === packet.data) { + // parser error in individual packet - ignoring payload + return callback(err, 0, 1); + } + + var ret = callback(packet, i + n, l); + if (false === ret) return; + } + + // advance cursor + i += n; + length = ''; + } + + if (length !== '') { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + }; + + /** + * Encodes multiple messages (payload) as binary. + * + * <1 = binary, 0 = string>[...] + * + * Example: + * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers + * + * @param {Array} packets + * @return {ArrayBuffer} encoded payload + * @api private + */ + + exports.encodePayloadAsArrayBuffer = function(packets, callback) { + if (!packets.length) { + return callback(new ArrayBuffer(0)); + } + + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, true, true, function(data) { + return doneCallback(null, data); + }); + } + + map(packets, encodeOne, function(err, encodedPackets) { + var totalLength = encodedPackets.reduce(function(acc, p) { + var len; + if (typeof p === 'string'){ + len = p.length; + } else { + len = p.byteLength; + } + return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2 + }, 0); + + var resultArray = new Uint8Array(totalLength); + + var bufferIndex = 0; + encodedPackets.forEach(function(p) { + var isString = typeof p === 'string'; + var ab = p; + if (isString) { + var view = new Uint8Array(p.length); + for (var i = 0; i < p.length; i++) { + view[i] = p.charCodeAt(i); + } + ab = view.buffer; + } + + if (isString) { // not true binary + resultArray[bufferIndex++] = 0; + } else { // true binary + resultArray[bufferIndex++] = 1; + } + + var lenStr = ab.byteLength.toString(); + for (var i = 0; i < lenStr.length; i++) { + resultArray[bufferIndex++] = parseInt(lenStr[i]); + } + resultArray[bufferIndex++] = 255; + + var view = new Uint8Array(ab); + for (var i = 0; i < view.length; i++) { + resultArray[bufferIndex++] = view[i]; + } + }); + + return callback(resultArray.buffer); + }); + }; + + /** + * Encode as Blob + */ + + exports.encodePayloadAsBlob = function(packets, callback) { + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, true, true, function(encoded) { + var binaryIdentifier = new Uint8Array(1); + binaryIdentifier[0] = 1; + if (typeof encoded === 'string') { + var view = new Uint8Array(encoded.length); + for (var i = 0; i < encoded.length; i++) { + view[i] = encoded.charCodeAt(i); + } + encoded = view.buffer; + binaryIdentifier[0] = 0; + } + + var len = (encoded instanceof ArrayBuffer) + ? encoded.byteLength + : encoded.size; + + var lenStr = len.toString(); + var lengthAry = new Uint8Array(lenStr.length + 1); + for (var i = 0; i < lenStr.length; i++) { + lengthAry[i] = parseInt(lenStr[i]); + } + lengthAry[lenStr.length] = 255; + + if (Blob) { + var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]); + doneCallback(null, blob); + } + }); + } + + map(packets, encodeOne, function(err, results) { + return callback(new Blob(results)); + }); + }; + + /* + * Decodes data when a payload is maybe expected. Strings are decoded by + * interpreting each byte as a key code for entries marked to start with 0. See + * description of encodePayloadAsBinary + * + * @param {ArrayBuffer} data, callback method + * @api public + */ + + exports.decodePayloadAsBinary = function (data, binaryType, callback) { + if (typeof binaryType === 'function') { + callback = binaryType; + binaryType = null; + } + + var bufferTail = data; + var buffers = []; + + while (bufferTail.byteLength > 0) { + var tailArray = new Uint8Array(bufferTail); + var isString = tailArray[0] === 0; + var msgLength = ''; + + for (var i = 1; ; i++) { + if (tailArray[i] === 255) break; + + // 310 = char length of Number.MAX_VALUE + if (msgLength.length > 310) { + return callback(err, 0, 1); + } + + msgLength += tailArray[i]; + } + + bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length); + msgLength = parseInt(msgLength); + + var msg = sliceBuffer(bufferTail, 0, msgLength); + if (isString) { + try { + msg = String.fromCharCode.apply(null, new Uint8Array(msg)); + } catch (e) { + // iPhone Safari doesn't let you apply to typed arrays + var typed = new Uint8Array(msg); + msg = ''; + for (var i = 0; i < typed.length; i++) { + msg += String.fromCharCode(typed[i]); + } + } + } + + buffers.push(msg); + bufferTail = sliceBuffer(bufferTail, msgLength); + } + + var total = buffers.length; + buffers.forEach(function(buffer, i) { + callback(exports.decodePacket(buffer, binaryType, true), i, total); + }); + }; + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + + /** + * Gets the keys for an object. + * + * @return {Array} keys + * @api private + */ + + module.exports = Object.keys || function keys (obj){ + var arr = []; + var has = Object.prototype.hasOwnProperty; + + for (var i in obj) { + if (has.call(obj, i)) { + arr.push(i); + } + } + return arr; + }; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {/* global Blob File */ + + /* + * Module requirements. + */ + + var isArray = __webpack_require__(12); + + var toString = Object.prototype.toString; + var withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]'; + var withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]'; + + /** + * Module exports. + */ + + module.exports = hasBinary; + + /** + * Checks for binary data. + * + * Supports Buffer, ArrayBuffer, Blob and File. + * + * @param {Object} anything + * @api public + */ + + function hasBinary (obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + + if (isArray(obj)) { + for (var i = 0, l = obj.length; i < l; i++) { + if (hasBinary(obj[i])) { + return true; + } + } + return false; + } + + if ((typeof global.Buffer === 'function' && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) || + (typeof global.ArrayBuffer === 'function' && obj instanceof ArrayBuffer) || + (withNativeBlob && obj instanceof Blob) || + (withNativeFile && obj instanceof File) + ) { + return true; + } + + // see: https://github.com/Automattic/has-binary/pull/4 + if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) { + return hasBinary(obj.toJSON(), true); + } + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) { + return true; + } + } + + return false; + } + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 12 */ +/***/ function(module, exports) { + + var toString = {}.toString; + + module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; + }; + + +/***/ }, +/* 13 */ +/***/ function(module, exports) { + + /** + * An abstraction for slicing an arraybuffer even when + * ArrayBuffer.prototype.slice is not supported + * + * @api public + */ + + module.exports = function(arraybuffer, start, end) { + var bytes = arraybuffer.byteLength; + start = start || 0; + end = end || bytes; + + if (arraybuffer.slice) { return arraybuffer.slice(start, end); } + + if (start < 0) { start += bytes; } + if (end < 0) { end += bytes; } + if (end > bytes) { end = bytes; } + + if (start >= bytes || start >= end || bytes === 0) { + return new ArrayBuffer(0); + } + + var abv = new Uint8Array(arraybuffer); + var result = new Uint8Array(end - start); + for (var i = start, ii = 0; i < end; i++, ii++) { + result[ii] = abv[i]; + } + return result.buffer; + }; + + +/***/ }, +/* 14 */ +/***/ function(module, exports) { + + module.exports = after + + function after(count, callback, err_cb) { + var bail = false + err_cb = err_cb || noop + proxy.count = count + + return (count === 0) ? callback() : proxy + + function proxy(err, result) { + if (proxy.count <= 0) { + throw new Error('after called too many times') + } + --proxy.count + + // after first error, rest are passed to err_cb + if (err) { + bail = true + callback(err) + // future error callbacks will go to error handler + callback = err_cb + } else if (proxy.count === 0 && !bail) { + callback(null, result) + } + } + } + + function noop() {} + + +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/utf8js v2.1.2 by @mathias */ + ;(function(root) { + + // Detect free variables `exports` + var freeExports = typeof exports == 'object' && exports; + + // Detect free variable `module` + var freeModule = typeof module == 'object' && module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, + // and use it as `root` + var freeGlobal = typeof global == 'object' && global; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + var stringFromCharCode = String.fromCharCode; + + // Taken from https://mths.be/punycode + function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + var value; + var extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + // Taken from https://mths.be/punycode + function ucs2encode(array) { + var length = array.length; + var index = -1; + var value; + var output = ''; + while (++index < length) { + value = array[index]; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + } + return output; + } + + function checkScalarValue(codePoint, strict) { + if (codePoint >= 0xD800 && codePoint <= 0xDFFF) { + if (strict) { + throw Error( + 'Lone surrogate U+' + codePoint.toString(16).toUpperCase() + + ' is not a scalar value' + ); + } + return false; + } + return true; + } + /*--------------------------------------------------------------------------*/ + + function createByte(codePoint, shift) { + return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80); + } + + function encodeCodePoint(codePoint, strict) { + if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence + return stringFromCharCode(codePoint); + } + var symbol = ''; + if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence + symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0); + } + else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence + if (!checkScalarValue(codePoint, strict)) { + codePoint = 0xFFFD; + } + symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0); + symbol += createByte(codePoint, 6); + } + else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence + symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0); + symbol += createByte(codePoint, 12); + symbol += createByte(codePoint, 6); + } + symbol += stringFromCharCode((codePoint & 0x3F) | 0x80); + return symbol; + } + + function utf8encode(string, opts) { + opts = opts || {}; + var strict = false !== opts.strict; + + var codePoints = ucs2decode(string); + var length = codePoints.length; + var index = -1; + var codePoint; + var byteString = ''; + while (++index < length) { + codePoint = codePoints[index]; + byteString += encodeCodePoint(codePoint, strict); + } + return byteString; + } + + /*--------------------------------------------------------------------------*/ + + function readContinuationByte() { + if (byteIndex >= byteCount) { + throw Error('Invalid byte index'); + } + + var continuationByte = byteArray[byteIndex] & 0xFF; + byteIndex++; + + if ((continuationByte & 0xC0) == 0x80) { + return continuationByte & 0x3F; + } + + // If we end up here, it’s not a continuation byte + throw Error('Invalid continuation byte'); + } + + function decodeSymbol(strict) { + var byte1; + var byte2; + var byte3; + var byte4; + var codePoint; + + if (byteIndex > byteCount) { + throw Error('Invalid byte index'); + } + + if (byteIndex == byteCount) { + return false; + } + + // Read first byte + byte1 = byteArray[byteIndex] & 0xFF; + byteIndex++; + + // 1-byte sequence (no continuation bytes) + if ((byte1 & 0x80) == 0) { + return byte1; + } + + // 2-byte sequence + if ((byte1 & 0xE0) == 0xC0) { + byte2 = readContinuationByte(); + codePoint = ((byte1 & 0x1F) << 6) | byte2; + if (codePoint >= 0x80) { + return codePoint; + } else { + throw Error('Invalid continuation byte'); + } + } + + // 3-byte sequence (may include unpaired surrogates) + if ((byte1 & 0xF0) == 0xE0) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3; + if (codePoint >= 0x0800) { + return checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD; + } else { + throw Error('Invalid continuation byte'); + } + } + + // 4-byte sequence + if ((byte1 & 0xF8) == 0xF0) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + byte4 = readContinuationByte(); + codePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) | + (byte3 << 0x06) | byte4; + if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) { + return codePoint; + } + } + + throw Error('Invalid UTF-8 detected'); + } + + var byteArray; + var byteCount; + var byteIndex; + function utf8decode(byteString, opts) { + opts = opts || {}; + var strict = false !== opts.strict; + + byteArray = ucs2decode(byteString); + byteCount = byteArray.length; + byteIndex = 0; + var codePoints = []; + var tmp; + while ((tmp = decodeSymbol(strict)) !== false) { + codePoints.push(tmp); + } + return ucs2encode(codePoints); + } + + /*--------------------------------------------------------------------------*/ + + var utf8 = { + 'version': '2.1.2', + 'encode': utf8encode, + 'decode': utf8decode + }; + + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return utf8; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = utf8; + } else { // in Narwhal or RingoJS v0.7.0- + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + for (var key in utf8) { + hasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]); + } + } + } else { // in Rhino or a web browser + root.utf8 = utf8; + } + + }(this)); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16)(module), (function() { return this; }()))) + +/***/ }, +/* 16 */ +/***/ function(module, exports) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }, +/* 17 */ +/***/ function(module, exports) { + + /* + * base64-arraybuffer + * https://github.com/niklasvh/base64-arraybuffer + * + * Copyright (c) 2012 Niklas von Hertzen + * Licensed under the MIT license. + */ + (function(){ + "use strict"; + + var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + // Use a lookup table to find the index. + var lookup = new Uint8Array(256); + for (var i = 0; i < chars.length; i++) { + lookup[chars.charCodeAt(i)] = i; + } + + exports.encode = function(arraybuffer) { + var bytes = new Uint8Array(arraybuffer), + i, len = bytes.length, base64 = ""; + + for (i = 0; i < len; i+=3) { + base64 += chars[bytes[i] >> 2]; + base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)]; + base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)]; + base64 += chars[bytes[i + 2] & 63]; + } + + if ((len % 3) === 2) { + base64 = base64.substring(0, base64.length - 1) + "="; + } else if (len % 3 === 1) { + base64 = base64.substring(0, base64.length - 2) + "=="; + } + + return base64; + }; + + exports.decode = function(base64) { + var bufferLength = base64.length * 0.75, + len = base64.length, i, p = 0, + encoded1, encoded2, encoded3, encoded4; + + if (base64[base64.length - 1] === "=") { + bufferLength--; + if (base64[base64.length - 2] === "=") { + bufferLength--; + } + } + + var arraybuffer = new ArrayBuffer(bufferLength), + bytes = new Uint8Array(arraybuffer); + + for (i = 0; i < len; i+=4) { + encoded1 = lookup[base64.charCodeAt(i)]; + encoded2 = lookup[base64.charCodeAt(i+1)]; + encoded3 = lookup[base64.charCodeAt(i+2)]; + encoded4 = lookup[base64.charCodeAt(i+3)]; + + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + + return arraybuffer; + }; + })(); + + +/***/ }, +/* 18 */ +/***/ function(module, exports) { + + /* WEBPACK VAR INJECTION */(function(global) {/** + * Create a blob builder even when vendor prefixes exist + */ + + var BlobBuilder = global.BlobBuilder + || global.WebKitBlobBuilder + || global.MSBlobBuilder + || global.MozBlobBuilder; + + /** + * Check if Blob constructor is supported + */ + + var blobSupported = (function() { + try { + var a = new Blob(['hi']); + return a.size === 2; + } catch(e) { + return false; + } + })(); + + /** + * Check if Blob constructor supports ArrayBufferViews + * Fails in Safari 6, so we need to map to ArrayBuffers there. + */ + + var blobSupportsArrayBufferView = blobSupported && (function() { + try { + var b = new Blob([new Uint8Array([1,2])]); + return b.size === 2; + } catch(e) { + return false; + } + })(); + + /** + * Check if BlobBuilder is supported + */ + + var blobBuilderSupported = BlobBuilder + && BlobBuilder.prototype.append + && BlobBuilder.prototype.getBlob; + + /** + * Helper function that maps ArrayBufferViews to ArrayBuffers + * Used by BlobBuilder constructor and old browsers that didn't + * support it in the Blob constructor. + */ + + function mapArrayBufferViews(ary) { + for (var i = 0; i < ary.length; i++) { + var chunk = ary[i]; + if (chunk.buffer instanceof ArrayBuffer) { + var buf = chunk.buffer; + + // if this is a subarray, make a copy so we only + // include the subarray region from the underlying buffer + if (chunk.byteLength !== buf.byteLength) { + var copy = new Uint8Array(chunk.byteLength); + copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength)); + buf = copy.buffer; + } + + ary[i] = buf; + } + } + } + + function BlobBuilderConstructor(ary, options) { + options = options || {}; + + var bb = new BlobBuilder(); + mapArrayBufferViews(ary); + + for (var i = 0; i < ary.length; i++) { + bb.append(ary[i]); + } + + return (options.type) ? bb.getBlob(options.type) : bb.getBlob(); + }; + + function BlobConstructor(ary, options) { + mapArrayBufferViews(ary); + return new Blob(ary, options || {}); + }; + + module.exports = (function() { + if (blobSupported) { + return blobSupportsArrayBufferView ? global.Blob : BlobConstructor; + } else if (blobBuilderSupported) { + return BlobBuilderConstructor; + } else { + return undefined; + } + })(); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + + /** + * Expose `Emitter`. + */ + + if (true) { + module.exports = Emitter; + } + + /** + * Initialize a new `Emitter`. + * + * @api public + */ + + function Emitter(obj) { + if (obj) return mixin(obj); + }; + + /** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + + function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; + } + + /** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.on = + Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; + }; + + /** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; + }; + + /** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + + Emitter.prototype.off = + Emitter.prototype.removeListener = + Emitter.prototype.removeAllListeners = + Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; + }; + + /** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + + Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks['$' + event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; + }; + + /** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + + Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; + }; + + /** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + + Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; + }; + + +/***/ }, +/* 20 */ +/***/ function(module, exports) { + + /** + * Compiles a querystring + * Returns string representation of the object + * + * @param {Object} + * @api private + */ + + exports.encode = function (obj) { + var str = ''; + + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + if (str.length) str += '&'; + str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); + } + } + + return str; + }; + + /** + * Parses a simple querystring into an object + * + * @param {String} qs + * @api private + */ + + exports.decode = function(qs){ + var qry = {}; + var pairs = qs.split('&'); + for (var i = 0, l = pairs.length; i < l; i++) { + var pair = pairs[i].split('='); + qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + return qry; + }; + + +/***/ }, +/* 21 */ +/***/ function(module, exports) { + + + module.exports = function(a, b){ + var fn = function(){}; + fn.prototype = b.prototype; + a.prototype = new fn; + a.prototype.constructor = a; + }; + +/***/ }, +/* 22 */ +/***/ function(module, exports) { + + 'use strict'; + + var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('') + , length = 64 + , map = {} + , seed = 0 + , i = 0 + , prev; + + /** + * Return a string representing the specified number. + * + * @param {Number} num The number to convert. + * @returns {String} The string representation of the number. + * @api public + */ + function encode(num) { + var encoded = ''; + + do { + encoded = alphabet[num % length] + encoded; + num = Math.floor(num / length); + } while (num > 0); + + return encoded; + } + + /** + * Return the integer value specified by the given string. + * + * @param {String} str The string to convert. + * @returns {Number} The integer value represented by the string. + * @api public + */ + function decode(str) { + var decoded = 0; + + for (i = 0; i < str.length; i++) { + decoded = decoded * length + map[str.charAt(i)]; + } + + return decoded; + } + + /** + * Yeast: A tiny growing id generator. + * + * @returns {String} A unique id. + * @api public + */ + function yeast() { + var now = encode(+new Date()); + + if (now !== prev) return seed = 0, prev = now; + return now +'.'+ encode(seed++); + } + + // + // Map each character to its index. + // + for (; i < length; i++) map[alphabet[i]] = i; + + // + // Expose the `yeast`, `encode` and `decode` functions. + // + yeast.encode = encode; + yeast.decode = decode; + module.exports = yeast; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + + exports = module.exports = __webpack_require__(25); + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + + /** + * Colors. + */ + + exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' + ]; + + /** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + + function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); + } + + /** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + + exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } + }; + + + /** + * Colorize log arguments if enabled. + * + * @api public + */ + + function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); + } + + /** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + + function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); + } + + /** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + + function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} + } + + /** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + + function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; + } + + /** + * Enable namespaces listed in `localStorage.debug` initially. + */ + + exports.enable(load()); + + /** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + + function localstorage() { + try { + return window.localStorage; + } catch (e) {} + } + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24))) + +/***/ }, +/* 24 */ +/***/ function(module, exports) { + + // shim for using process in browser + var process = module.exports = {}; + + // cached from whatever global is present so that test runners that stub it + // don't break things. But we need to wrap it in a try catch in case it is + // wrapped in strict mode code which doesn't define any globals. It's inside a + // function because try/catches deoptimize in certain engines. + + var cachedSetTimeout; + var cachedClearTimeout; + + function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); + } + function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); + } + (function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } + } ()) + function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + + } + function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + + } + var queue = []; + var draining = false; + var currentQueue; + var queueIndex = -1; + + function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } + } + + function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); + } + + process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } + }; + + // v8 likes predictible objects + function Item(fun, array) { + this.fun = fun; + this.array = array; + } + Item.prototype.run = function () { + this.fun.apply(null, this.array); + }; + process.title = 'browser'; + process.browser = true; + process.env = {}; + process.argv = []; + process.version = ''; // empty string to avoid regexp issues + process.versions = {}; + + function noop() {} + + process.on = noop; + process.addListener = noop; + process.once = noop; + process.off = noop; + process.removeListener = noop; + process.removeAllListeners = noop; + process.emit = noop; + process.prependListener = noop; + process.prependOnceListener = noop; + + process.listeners = function (name) { return [] } + + process.binding = function (name) { + throw new Error('process.binding is not supported'); + }; + + process.cwd = function () { return '/' }; + process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); + }; + process.umask = function() { return 0; }; + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + + /** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + + exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; + exports.coerce = coerce; + exports.disable = disable; + exports.enable = enable; + exports.enabled = enabled; + exports.humanize = __webpack_require__(26); + + /** + * The currently active debug mode names, and names to skip. + */ + + exports.names = []; + exports.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + + exports.formatters = {}; + + /** + * Previous log timestamp. + */ + + var prevTime; + + /** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + + function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; + } + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + + function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + + function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @api public + */ + + function disable() { + exports.enable(''); + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + + function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + + function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; + } + + +/***/ }, +/* 26 */ +/***/ function(module, exports) { + + /** + * Helpers. + */ + + var s = 1000; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var y = d * 365.25; + + /** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + + module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); + }; + + /** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } + } + + /** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + + function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; + } + + /** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + + function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; + } + + /** + * Pluralization helper. + */ + + function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; + } + + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + /** + * Module requirements. + */ + + var Polling = __webpack_require__(7); + var inherit = __webpack_require__(21); + + /** + * Module exports. + */ + + module.exports = JSONPPolling; + + /** + * Cached regular expressions. + */ + + var rNewline = /\n/g; + var rEscapedNewline = /\\n/g; + + /** + * Global JSONP callbacks. + */ + + var callbacks; + + /** + * Noop. + */ + + function empty() {} + + /** + * JSONP Polling constructor. + * + * @param {Object} opts. + * @api public + */ + + function JSONPPolling(opts) { + Polling.call(this, opts); + + this.query = this.query || {}; + + // define global callbacks array if not present + // we do this here (lazily) to avoid unneeded global pollution + if (!callbacks) { + // we need to consider multiple engines in the same page + if (!global.___eio) global.___eio = []; + callbacks = global.___eio; + } + + // callback identifier + this.index = callbacks.length; + + // add callback to jsonp global + var self = this; + callbacks.push(function (msg) { + self.onData(msg); + }); + + // append to query string + this.query.j = this.index; + + // prevent spurious errors from being emitted when the window is unloaded + if (global.document && global.addEventListener) { + global.addEventListener('beforeunload', function () { + if (self.script) self.script.onerror = empty; + }, false); + } + } + + /** + * Inherits from Polling. + */ + + inherit(JSONPPolling, Polling); + + /* + * JSONP only supports binary as base64 encoded strings + */ + + JSONPPolling.prototype.supportsBinary = false; + + /** + * Closes the socket. + * + * @api private + */ + + JSONPPolling.prototype.doClose = function () { + if (this.script) { + this.script.parentNode.removeChild(this.script); + this.script = null; + } + + if (this.form) { + this.form.parentNode.removeChild(this.form); + this.form = null; + this.iframe = null; + } + + Polling.prototype.doClose.call(this); + }; + + /** + * Starts a poll cycle. + * + * @api private + */ + + JSONPPolling.prototype.doPoll = function () { + var self = this; + var script = document.createElement('script'); + + if (this.script) { + this.script.parentNode.removeChild(this.script); + this.script = null; + } + + script.async = true; + script.src = this.uri(); + script.onerror = function (e) { + self.onError('jsonp poll error', e); + }; + + var insertAt = document.getElementsByTagName('script')[0]; + if (insertAt) { + insertAt.parentNode.insertBefore(script, insertAt); + } else { + (document.head || document.body).appendChild(script); + } + this.script = script; + + var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent); + + if (isUAgecko) { + setTimeout(function () { + var iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + document.body.removeChild(iframe); + }, 100); + } + }; + + /** + * Writes with a hidden iframe. + * + * @param {String} data to send + * @param {Function} called upon flush. + * @api private + */ + + JSONPPolling.prototype.doWrite = function (data, fn) { + var self = this; + + if (!this.form) { + var form = document.createElement('form'); + var area = document.createElement('textarea'); + var id = this.iframeId = 'eio_iframe_' + this.index; + var iframe; + + form.className = 'socketio'; + form.style.position = 'absolute'; + form.style.top = '-1000px'; + form.style.left = '-1000px'; + form.target = id; + form.method = 'POST'; + form.setAttribute('accept-charset', 'utf-8'); + area.name = 'd'; + form.appendChild(area); + document.body.appendChild(form); + + this.form = form; + this.area = area; + } + + this.form.action = this.uri(); + + function complete() { + initIframe(); + fn(); + } + + function initIframe() { + if (self.iframe) { + try { + self.form.removeChild(self.iframe); + } catch (e) { + self.onError('jsonp polling iframe removal error', e); + } + } + + try { + // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) + var html = '