im getting this error log while installing grunt reload...how could i fix this issues
0 info it worked if it ends with ok
1 verbose cli [ 'C:\Program Files\nodejs\node.exe',
1 verbose cli 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js',
1 verbose cli 'install',
1 verbose cli 'grunt-reload' ]
2 info using npm@1.1.62
3 info using node@v0.8.11
4 verbose node symlink C:\Program Files\nodejs\node.exe
5 verbose read json C:\xampp\htdocs\tw2013\tw2013\package.json
6 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-coffee\package.json
7 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-coffeelint\package.json
8 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-compass\package.json
9 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-contrib-copy\package.json
10 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-contrib-requirejs\package.json
11 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-crusher\package.json
12 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json
13 verbose read json C:\xampp\htdocs\tw2013\tw2013\package.json
14 verbose cache add [ 'grunt-reload', null ]
15 silly cache add name=undefined spec="grunt-reload" args=["grunt-reload",null]
16 verbose parsed url { pathname: 'grunt-reload',
16 verbose parsed url path: 'grunt-reload',
16 verbose parsed url href: 'grunt-reload' }
17 silly lockFile 7aeece79-grunt-reload grunt-reload
18 verbose lock grunt-reload C:\Users\Touchweb-31\AppData\Roaming\npm-cache\7aeece79-grunt-reload.lock
19 silly lockFile 7aeece79-grunt-reload grunt-reload
20 verbose addNamed [ 'grunt-reload', '' ]
21 verbose addNamed [ null, '' ]
22 silly lockFile b22a81de-grunt-reload grunt-reload@
23 verbose lock grunt-reload@ C:\Users\Touchweb-31\AppData\Roaming\npm-cache\b22a81de-grunt-reload.lock
24 silly addNameRange { name: 'grunt-reload', range: '', hasData: false }
25 verbose url raw grunt-reload
26 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-reload' ]
27 verbose url resolved https://registry.npmjs.org/grunt-reload
28 info trying registry request attempt 1 at 12:27:33
29 verbose etag "3SBHZM3S00PGF7ZL395ZB1C3Y"
30 http GET https://registry.npmjs.org/grunt-reload
31 http 304 https://registry.npmjs.org/grunt-reload
32 silly registry.get cb [ 304,
32 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)',
32 silly registry.get etag: '"3SBHZM3S00PGF7ZL395ZB1C3Y"',
32 silly registry.get date: 'Tue, 22 Jan 2013 06:56:03 GMT',
32 silly registry.get 'content-length': '0' } ]
33 verbose etag grunt-reload from cache
34 silly addNameRange number 2 { name: 'grunt-reload', range: '', hasData: true }
35 silly addNameRange versions [ 'grunt-reload', [ '0.1.0', '0.1.1', '0.1.2', '0.2.0' ] ]
36 verbose addNamed [ 'grunt-reload', '0.2.0' ]
37 verbose addNamed [ '0.2.0', '0.2.0' ]
38 silly lockFile 776df626-grunt-reload-0-2-0 grunt-reload@0.2.0
39 verbose lock grunt-reload@0.2.0 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\776df626-grunt-reload-0-2-0.lock
40 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt-reload\0.2.0\package\package.json
41 silly lockFile 776df626-grunt-reload-0-2-0 grunt-reload@0.2.0
42 silly lockFile b22a81de-grunt-reload grunt-reload@
43 silly resolved [ { name: 'grunt-reload',
43 silly resolved description: 'A grunt task that enables live reloading of updated watch files in the browser.',
43 silly resolved version: '0.2.0',
43 silly resolved homepage: 'https://github.com/webxl/grunt-reload',
43 silly resolved author:
43 silly resolved { name: 'Matt Motherway',
43 silly resolved email: 'mm@webxl.net',
43 silly resolved url: 'http://webxl.net' },
43 silly resolved repository: { type: 'git', url: 'git://github.com/webxl/grunt-reload.git' },
43 silly resolved bugs: { url: 'https://github.com/webxl/grunt-reload/issues' },
43 silly resolved licenses: [ [Object] ],
43 silly resolved main: 'grunt.js',
43 silly resolved bin: { 'grunt-reload': 'bin/grunt-reload' },
43 silly resolved engines: { node: '>=0.6.0' },
43 silly resolved scripts: { test: 'grunt test' },
43 silly resolved dependencies:
43 silly resolved { grunt: '>=0.3.9',
43 silly resolved connect: '~2.3.0',
43 silly resolved buffers: '0.1.1',
43 silly resolved 'http-proxy': '0.8.0',
43 silly resolved websocket: '~1.0.6' },
43 silly resolved devDependencies: { grunt: '>=0.3.9' },
43 silly resolved keywords: [ 'gruntplugin', 'reload' ],
43 silly resolved readme: '# grunt-reload\n\nA grunt task that enables live reloading of updated watch files in the browser.\n\n## Getting Started\nInstall this grunt plugin next to your project\'s [grunt.js gruntfile][getting_started] with: npm install grunt-reload\n\nThen add this line to your project\'s grunt.js gruntfile:\n\njavascript\ngrunt.loadNpmTasks(\'grunt-reload\');\n\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n\nThis plugin provides two grunt tasks: \'reload\' and \'reloadServer\'. \'reload\' is designed to be called via the watch task configuration. \'reloadServer\' is designed to be called on the command-line along with the watch task.\n\nThe reload task tells the page to refresh itself via websocket connection between the reloadServer task and the reloadClient.js that is appended to the requested html file. When the watch task detects a changed file, it will process its configured tasks, which should include the \'reload\' task if it is setup like the example below.\n\nConfiguration:\n\n* port: (number, default: 8001) Reverse proxy listens on this port. This is necessary for including reload client javascript.\n* proxy: (object, optional) If present, this config object will enable a reverse proxy to your development server\'s content\n * host: (string, default: \'localhost\') development server hostname\n * port: (number, default: server.port or 80) development server port\n * includeReloadScript: (boolean, default: true) includes the client js to listen for reload commands\n* iframe: (object, optional)\n * target: (string) URL of development server\n* liveReload: (boolean, only required for LiveReload 2.x)\n\n## Reload methods\n\nProxy\n\nThis will automatically append the script to the requested HTML file. Here\'s how you would use grunt-reload with grunt-less:\n\njavascript\n// project configuration\ngrunt.initConfig({\n lint: {\n all:[\'js/*.js\']\n },\n reload: {\n port: 6001,\n proxy: {\n host: \'localhost\'\n }\n },\n watch:{\n files:[\'index.html\', \'style.less\'],\n tasks:\'default reload\'\n }\n\n});\n\ngrunt.loadNpmTasks(\'grunt-less\');\ngrunt.loadNpmTasks(\'grunt-reload\');\n\ngrunt.registerTask(\'default\', \'lint less\');\n\n\nIFrame\n\nUse this method if you don\'t want to muck around with your server\'s response.\n\njavascript\n...\n iframe: {\n target: \'http://localhost:9999\'\n }\n...\n\n\nYour iframe\'d dev site in this instance would be available at the default http://localhost:8001\n\n__LiveReload extension\n\nThis is useful if you want to reload CSS files in place in addition to the entire page when files change. It requires a LiveReload extension. In-line reloading of CSS requires grunt 4.0.\n\nSet the reload server to listen on LiveReload\'s default port:\n\njavascript\n...\n port: 35729, // LR default\n liveReload: {}\n...\n\n\nMake sure you enable LR in your browser (click the LR button in Chrome)\n\nManual include\n\nIf you prefer hard-coding over proxies, extensions, and iframes, you can just do this:\n\n`html\n\n\n\n\nThis makes the reload client work from any address.\n\n## Usage\n\ngrunt reload watch\n\nIf you want to run a static server using the bundled server task, and enable reloading, you can configure something like this:\n\njavascript\n...\n reload: {\n port: 6001,\n proxy: {\n host: \'localhost\',\n port: 8000 // should match server.port config\n }\n },\n watch:{\n files:[\'index.html\', \'style.less\'],\n tasks:\'lint less reload\'\n }\n...\ngrunt.registerTask(\'default\', \'server reload watch\');\n\n\nThen just run:\n\ngrunt\n\n\n## TODO\n\* ~~reload resources without refreshing entire page~~ use [LiveReload extensions](http://help.livereload.com/kb/general-use/browser-extensions) and grunt 4.x alpha\n\* ~~add option to run standalone web server for project~~ use server task for now\n\* write chrome extension to reload resources (css, images, templates)\n \* the includeReloadScript & proxy options will probably become the fallback method of attaching the client\n \* may allow one of three attach methods: extension, iframe, or proxy\n\n## Release History\n\* **06/15/2012 - 0.2.0**: Added support for grunt 4.0, [LiveReload extensions](http://help.livereload.com/kb/general-use/browser-extensions), iframes, and custom targets\n\* **06/04/2012 - 0.1.2**: Removed connect 1.x requirement (no longer using connect.router). Added test. Clean up.\n\* **06/03/2012 - 0.1.1**: Fixes \'socket hang up\' error.\n\* **05/27/2012 - 0.1.0**: Initial release.\n\n## License\nCopyright (c) 2012 webxl \nLicensed under the MIT license.\n', 43 silly resolved _id: 'grunt-reload@0.2.0', 43 silly resolved _from: 'grunt-reload' } ] 44 info install grunt-reload@0.2.0 into C:\xampp\htdocs\tw2013\tw2013 45 info installOne grunt-reload@0.2.0 46 verbose from cache C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt-reload\0.2.0\package\package.json 47 info C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload unbuild 48 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 49 verbose tar unpack C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt-reload\0.2.0\package.tgz 50 silly lockFile 36e373c3-tw2013-node-modules-grunt-reload C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload 51 verbose lock C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload C:\Users\Touchweb-31\AppData\Roaming\npm-cache\36e373c3-tw2013-node-modules-grunt-reload.lock 52 silly gunzTarPerm modes [ '755', '644' ] 53 silly gunzTarPerm extractEntry package.json 54 silly gunzTarPerm modified mode [ 'package.json', 438, 420 ] 55 silly gunzTarPerm extractEntry .npmignore 56 silly gunzTarPerm modified mode [ '.npmignore', 438, 420 ] 57 silly gunzTarPerm extractEntry README.md 58 silly gunzTarPerm modified mode [ 'README.md', 438, 420 ] 59 silly gunzTarPerm extractEntry grunt.js 60 silly gunzTarPerm modified mode [ 'grunt.js', 438, 420 ] 61 silly gunzTarPerm extractEntry .idea/.name 62 silly gunzTarPerm modified mode [ '.idea/.name', 438, 420 ] 63 silly gunzTarPerm extractEntry .idea/encodings.xml 64 silly gunzTarPerm modified mode [ '.idea/encodings.xml', 438, 420 ] 65 silly gunzTarPerm extractEntry .idea/grunt-reload.iml 66 silly gunzTarPerm modified mode [ '.idea/grunt-reload.iml', 438, 420 ] 67 silly gunzTarPerm extractEntry .idea/misc.xml 68 silly gunzTarPerm modified mode [ '.idea/misc.xml', 438, 420 ] 69 silly gunzTarPerm extractEntry .idea/modules.xml 70 silly gunzTarPerm modified mode [ '.idea/modules.xml', 438, 420 ] 71 silly gunzTarPerm extractEntry .idea/scopes/scope_settings.xml 72 silly gunzTarPerm modified mode [ '.idea/scopes/scope_settings.xml', 438, 420 ] 73 silly gunzTarPerm extractEntry .idea/vcs.xml 74 silly gunzTarPerm modified mode [ '.idea/vcs.xml', 438, 420 ] 75 silly gunzTarPerm extractEntry .idea/workspace.xml 76 silly gunzTarPerm modified mode [ '.idea/workspace.xml', 438, 420 ] 77 silly gunzTarPerm extractEntry bin/grunt-reload 78 silly gunzTarPerm modified mode [ 'bin/grunt-reload', 438, 420 ] 79 silly gunzTarPerm extractEntry LICENSE-MIT 80 silly gunzTarPerm modified mode [ 'LICENSE-MIT', 438, 420 ] 81 silly gunzTarPerm extractEntry tasks/reload.js 82 silly gunzTarPerm modified mode [ 'tasks/reload.js', 438, 420 ] 83 silly gunzTarPerm extractEntry tasks/reloadServer.js 84 silly gunzTarPerm modified mode [ 'tasks/reloadServer.js', 438, 420 ] 85 silly gunzTarPerm extractEntry tasks/include/reloadClient.js 86 silly gunzTarPerm modified mode [ 'tasks/include/reloadClient.js', 438, 420 ] 87 silly gunzTarPerm extractEntry test/grunt.js 88 silly gunzTarPerm modified mode [ 'test/grunt.js', 438, 420 ] 89 silly gunzTarPerm extractEntry test/reload_test.js 90 silly gunzTarPerm modified mode [ 'test/reload_test.js', 438, 420 ] 91 silly gunzTarPerm extractEntry test/included.html 92 silly gunzTarPerm modified mode [ 'test/included.html', 438, 420 ] 93 silly gunzTarPerm extractEntry test/index.html 94 silly gunzTarPerm modified mode [ 'test/index.html', 438, 420 ] 95 silly gunzTarPerm extractEntry test/style.css 96 silly gunzTarPerm modified mode [ 'test/style.css', 438, 420 ] 97 silly gunzTarPerm extractEntry test/tasks/trigger.js 98 silly gunzTarPerm modified mode [ 'test/tasks/trigger.js', 438, 420 ] 99 silly gunzTarPerm extractEntry test/trigger.html 100 silly gunzTarPerm modified mode [ 'test/trigger.html', 438, 420 ] 101 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 102 silly lockFile 36e373c3-tw2013-node-modules-grunt-reload C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload 103 info preinstall grunt-reload@0.2.0 104 verbose from cache C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 105 verbose readDependencies using package.json deps 106 verbose from cache C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 107 verbose readDependencies using package.json deps 108 verbose cache add [ 'grunt@>=0.3.9', null ] 109 silly cache add name=undefined spec="grunt@>=0.3.9" args=["grunt@>=0.3.9",null] 110 verbose parsed url { pathname: 'grunt@%3E=0.3.9', 110 verbose parsed url path: 'grunt@%3E=0.3.9', 110 verbose parsed url href: 'grunt@%3E=0.3.9' } 111 silly cache add name="grunt" spec=">=0.3.9" args=["grunt",">=0.3.9"] 112 verbose parsed url { pathname: '%3E=0.3.9', path: '%3E=0.3.9', href: '%3E=0.3.9' } 113 verbose addNamed [ 'grunt', '>=0.3.9' ] 114 verbose addNamed [ null, '>=0.3.9' ] 115 silly lockFile f7d73612-grunt-0-3-9 grunt@>=0.3.9 116 verbose lock grunt@>=0.3.9 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\f7d73612-grunt-0-3-9.lock 117 verbose cache add [ 'connect@~2.3.0', null ] 118 silly cache add name=undefined spec="connect@~2.3.0" args=["connect@~2.3.0",null] 119 verbose parsed url { pathname: 'connect@~2.3.0', 119 verbose parsed url path: 'connect@~2.3.0', 119 verbose parsed url href: 'connect@~2.3.0' } 120 silly cache add name="connect" spec="~2.3.0" args=["connect","~2.3.0"] 121 verbose parsed url { pathname: '~2.3.0', path: '~2.3.0', href: '~2.3.0' } 122 verbose addNamed [ 'connect', '~2.3.0' ] 123 verbose addNamed [ null, '>=2.3.0- <2.4.0-' ] 124 silly lockFile 84594d79-connect-2-3-0 connect@~2.3.0 125 verbose lock connect@~2.3.0 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\84594d79-connect-2-3-0.lock 126 verbose cache add [ 'buffers@0.1.1', null ] 127 silly cache add name=undefined spec="buffers@0.1.1" args=["buffers@0.1.1",null] 128 verbose parsed url { pathname: 'buffers@0.1.1', 128 verbose parsed url path: 'buffers@0.1.1', 128 verbose parsed url href: 'buffers@0.1.1' } 129 silly cache add name="buffers" spec="0.1.1" args=["buffers","0.1.1"] 130 verbose parsed url { pathname: '0.1.1', path: '0.1.1', href: '0.1.1' } 131 verbose addNamed [ 'buffers', '0.1.1' ] 132 verbose addNamed [ '0.1.1', '0.1.1' ] 133 silly lockFile 053c3510-buffers-0-1-1 buffers@0.1.1 134 verbose lock buffers@0.1.1 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\053c3510-buffers-0-1-1.lock 135 verbose cache add [ 'http-proxy@0.8.0', null ] 136 silly cache add name=undefined spec="http-proxy@0.8.0" args=["http-proxy@0.8.0",null] 137 verbose parsed url { pathname: 'http-proxy@0.8.0', 137 verbose parsed url path: 'http-proxy@0.8.0', 137 verbose parsed url href: 'http-proxy@0.8.0' } 138 silly cache add name="http-proxy" spec="0.8.0" args=["http-proxy","0.8.0"] 139 verbose parsed url { pathname: '0.8.0', path: '0.8.0', href: '0.8.0' } 140 verbose addNamed [ 'http-proxy', '0.8.0' ] 141 verbose addNamed [ '0.8.0', '0.8.0' ] 142 silly lockFile 9b958c35-http-proxy-0-8-0 http-proxy@0.8.0 143 verbose lock http-proxy@0.8.0 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\9b958c35-http-proxy-0-8-0.lock 144 verbose cache add [ 'websocket@~1.0.6', null ] 145 silly cache add name=undefined spec="websocket@~1.0.6" args=["websocket@~1.0.6",null] 146 verbose parsed url { pathname: 'websocket@~1.0.6', 146 verbose parsed url path: 'websocket@~1.0.6', 146 verbose parsed url href: 'websocket@~1.0.6' } 147 silly cache add name="websocket" spec="~1.0.6" args=["websocket","~1.0.6"] 148 verbose parsed url { pathname: '~1.0.6', path: '~1.0.6', href: '~1.0.6' } 149 verbose addNamed [ 'websocket', '~1.0.6' ] 150 verbose addNamed [ null, '>=1.0.6- <1.1.0-' ] 151 silly lockFile 0e8f329a-websocket-1-0-6 websocket@~1.0.6 152 verbose lock websocket@~1.0.6 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\0e8f329a-websocket-1-0-6.lock 153 silly addNameRange { name: 'grunt', range: '>=0.3.9', hasData: false } 154 silly addNameRange { name: 'connect', range: '>=2.3.0- <2.4.0-', hasData: false } 155 silly addNameRange { name: 'websocket', range: '>=1.0.6- <1.1.0-', hasData: false } 156 verbose url raw grunt 157 verbose url resolving [ 'https://registry.npmjs.org/', './grunt' ] 158 verbose url resolved https://registry.npmjs.org/grunt 159 info trying registry request attempt 1 at 12:27:36 160 verbose etag "6Z36AK0BENSYE65B2WYW9NIAR" 161 http GET https://registry.npmjs.org/grunt 162 verbose url raw buffers/0.1.1 163 verbose url resolving [ 'https://registry.npmjs.org/', './buffers/0.1.1' ] 164 verbose url resolved https://registry.npmjs.org/buffers/0.1.1 165 info trying registry request attempt 1 at 12:27:36 166 verbose etag "4NSZXPGWAKD4WGIZXIYZURXBH" 167 http GET https://registry.npmjs.org/buffers/0.1.1 168 verbose url raw http-proxy/0.8.0 169 verbose url resolving [ 'https://registry.npmjs.org/', './http-proxy/0.8.0' ] 170 verbose url resolved https://registry.npmjs.org/http-proxy/0.8.0 171 info trying registry request attempt 1 at 12:27:36 172 verbose etag "CXBLTYEBW2Z5P56UAU2CR65GA" 173 http GET https://registry.npmjs.org/http-proxy/0.8.0 174 verbose url raw connect 175 verbose url resolving [ 'https://registry.npmjs.org/', './connect' ] 176 verbose url resolved https://registry.npmjs.org/connect 177 info trying registry request attempt 1 at 12:27:36 178 verbose etag "7JTJQXLJUJDVMPHCBJ7IX3752" 179 http GET https://registry.npmjs.org/connect 180 verbose url raw websocket 181 verbose url resolving [ 'https://registry.npmjs.org/', './websocket' ] 182 verbose url resolved https://registry.npmjs.org/websocket 183 info trying registry request attempt 1 at 12:27:36 184 verbose etag "CSKVJCAEW114LO1X76D9QH8NU" 185 http GET https://registry.npmjs.org/websocket 186 http 304 https://registry.npmjs.org/http-proxy/0.8.0 187 silly registry.get cb [ 304, 187 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 187 silly registry.get etag: '"CXBLTYEBW2Z5P56UAU2CR65GA"', 187 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 187 silly registry.get 'content-length': '0' } ] 188 verbose etag http-proxy/0.8.0 from cache 189 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\http-proxy\0.8.0\package\package.json 190 http 304 https://registry.npmjs.org/grunt 191 silly registry.get cb [ 304, 191 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 191 silly registry.get etag: '"6Z36AK0BENSYE65B2WYW9NIAR"', 191 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 191 silly registry.get 'content-length': '0' } ] 192 verbose etag grunt from cache 193 silly lockFile 9b958c35-http-proxy-0-8-0 http-proxy@0.8.0 194 silly addNameRange number 2 { name: 'grunt', range: '>=0.3.9', hasData: true } 195 silly addNameRange versions [ 'grunt', 195 silly addNameRange [ '0.1.0', 195 silly addNameRange '0.1.1', 195 silly addNameRange '0.1.2', 195 silly addNameRange '0.2.0', 195 silly addNameRange '0.2.1', 195 silly addNameRange '0.2.2', 195 silly addNameRange '0.2.3', 195 silly addNameRange '0.2.4', 195 silly addNameRange '0.2.5', 195 silly addNameRange '0.2.6', 195 silly addNameRange '0.2.7', 195 silly addNameRange '0.2.8', 195 silly addNameRange '0.2.9', 195 silly addNameRange '0.2.10', 195 silly addNameRange '0.2.11', 195 silly addNameRange '0.2.12', 195 silly addNameRange '0.2.13', 195 silly addNameRange '0.2.14', 195 silly addNameRange '0.2.15', 195 silly addNameRange '0.3.0', 195 silly addNameRange '0.3.1', 195 silly addNameRange '0.3.2', 195 silly addNameRange '0.3.3', 195 silly addNameRange '0.3.4', 195 silly addNameRange '0.3.5', 195 silly addNameRange '0.3.6', 195 silly addNameRange '0.3.7', 195 silly addNameRange '0.3.8', 195 silly addNameRange '0.3.9', 195 silly addNameRange '0.3.10', 195 silly addNameRange '0.3.11', 195 silly addNameRange '0.3.12', 195 silly addNameRange '0.3.13a', 195 silly addNameRange '0.3.13', 195 silly addNameRange '0.3.14', 195 silly addNameRange '0.3.15', 195 silly addNameRange '0.3.16', 195 silly addNameRange '0.3.17', 195 silly addNameRange '0.4.0a', 195 silly addNameRange '0.4.0rc1', 195 silly addNameRange '0.4.0rc2', 195 silly addNameRange '0.4.0rc3', 195 silly addNameRange '0.4.0rc4', 195 silly addNameRange '0.4.0rc5', 195 silly addNameRange '0.4.0rc6', 195 silly addNameRange '0.4.0rc7' ] ] 196 verbose addNamed [ 'grunt', '0.3.17' ] 197 verbose addNamed [ '0.3.17', '0.3.17' ] 198 silly lockFile b40ea710-grunt-0-3-17 grunt@0.3.17 199 verbose lock grunt@0.3.17 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\b40ea710-grunt-0-3-17.lock 200 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt\0.3.17\package\package.json 201 silly lockFile b40ea710-grunt-0-3-17 grunt@0.3.17 202 silly lockFile f7d73612-grunt-0-3-9 grunt@>=0.3.9 203 http 304 https://registry.npmjs.org/websocket 204 silly registry.get cb [ 304, 204 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 204 silly registry.get etag: '"CSKVJCAEW114LO1X76D9QH8NU"', 204 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 204 silly registry.get 'content-length': '0' } ] 205 verbose etag websocket from cache 206 silly addNameRange number 2 { name: 'websocket', range: '>=1.0.6- <1.1.0-', hasData: true } 207 silly addNameRange versions [ 'websocket', 207 silly addNameRange [ '0.0.1', 207 silly addNameRange '0.0.2', 207 silly addNameRange '0.0.3', 207 silly addNameRange '0.0.4', 207 silly addNameRange '0.0.5', 207 silly addNameRange '0.0.6', 207 silly addNameRange '0.0.7', 207 silly addNameRange '0.0.8', 207 silly addNameRange '0.0.9', 207 silly addNameRange '0.0.10', 207 silly addNameRange '0.0.11', 207 silly addNameRange '0.0.12', 207 silly addNameRange '0.0.13', 207 silly addNameRange '0.0.14', 207 silly addNameRange '0.0.15', 207 silly addNameRange '0.0.16', 207 silly addNameRange '0.0.17', 207 silly addNameRange '0.0.18', 207 silly addNameRange '0.0.19', 207 silly addNameRange '0.0.20', 207 silly addNameRange '1.0.0', 207 silly addNameRange '1.0.1', 207 silly addNameRange '1.0.2', 207 silly addNameRange '1.0.3', 207 silly addNameRange '1.0.4', 207 silly addNameRange '1.0.5', 207 silly addNameRange '1.0.6', 207 silly addNameRange '1.0.7', 207 silly addNameRange '1.0.8' ] ] 208 verbose addNamed [ 'websocket', '1.0.8' ] 209 verbose addNamed [ '1.0.8', '1.0.8' ] 210 silly lockFile d35370f3-websocket-1-0-8 websocket@1.0.8 211 verbose lock websocket@1.0.8 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\d35370f3-websocket-1-0-8.lock 212 http 304 https://registry.npmjs.org/buffers/0.1.1 213 silly registry.get cb [ 304, 213 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 213 silly registry.get etag: '"4NSZXPGWAKD4WGIZXIYZURXBH"', 213 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 213 silly registry.get 'content-length': '0' } ] 214 verbose etag buffers/0.1.1 from cache 215 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\websocket\1.0.8\package\package.json 216 silly lockFile d35370f3-websocket-1-0-8 websocket@1.0.8 217 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\buffers\0.1.1\package\package.json 218 silly lockFile 0e8f329a-websocket-1-0-6 websocket@~1.0.6 219 silly lockFile 053c3510-buffers-0-1-1 buffers@0.1.1 220 http 304 https://registry.npmjs.org/connect 221 silly registry.get cb [ 304, 221 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 221 silly registry.get etag: '"7JTJQXLJUJDVMPHCBJ7IX3752"', 221 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 221 silly registry.get 'content-length': '0' } ] 222 verbose etag connect from cache 223 silly addNameRange number 2 { name: 'connect', range: '>=2.3.0- <2.4.0-', hasData: true } 224 silly addNameRange versions [ 'connect', 224 silly addNameRange [ '0.0.1', 224 silly addNameRange '0.0.2', 224 silly addNameRange '0.0.3', 224 silly addNameRange '0.0.4', 224 silly addNameRange '0.0.5', 224 silly addNameRange '0.0.6', 224 silly addNameRange '0.1.0', 224 silly addNameRange '0.2.0', 224 silly addNameRange '0.2.1', 224 silly addNameRange '0.2.2', 224 silly addNameRange '0.2.3', 224 silly addNameRange '0.2.4', 224 silly addNameRange '0.2.5', 224 silly addNameRange '0.2.6', 224 silly addNameRange '0.2.7', 224 silly addNameRange '0.3.0', 224 silly addNameRange '0.4.0', 224 silly addNameRange '0.5.0', 224 silly addNameRange '0.5.1', 224 silly addNameRange '0.5.2', 224 silly addNameRange '0.5.3', 224 silly addNameRange '0.5.4', 224 silly addNameRange '0.5.5', 224 silly addNameRange '0.5.6', 224 silly addNameRange '0.5.7', 224 silly addNameRange '0.5.8', 224 silly addNameRange '0.5.9', 224 silly addNameRange '0.5.10', 224 silly addNameRange '1.0.0', 224 silly addNameRange '1.0.1', 224 silly addNameRange '1.0.2', 224 silly addNameRange '1.0.3', 224 silly addNameRange '1.0.4', 224 silly addNameRange '1.0.5', 224 silly addNameRange '1.0.6', 224 silly addNameRange '1.1.0', 224 silly addNameRange '1.1.1', 224 silly addNameRange '1.1.2', 224 silly addNameRange '1.1.3', 224 silly addNameRange '1.1.4', 224 silly addNameRange '1.1.5', 224 silly addNameRange '1.2.0', 224 silly addNameRange '1.2.1', 224 silly addNameRange '1.2.2', 224 silly addNameRange '1.2.3', 224 silly addNameRange '1.3.0', 224 silly addNameRange '1.4.0', 224 silly addNameRange '1.4.1', 224 silly addNameRange '1.4.2', 224 silly addNameRange '1.4.3', 224 silly addNameRange '1.4.4', 224 silly addNameRange '1.4.5', 224 silly addNameRange '1.4.6', 224 silly addNameRange '1.5.0', 224 silly addNameRange '1.5.1', 224 silly addNameRange '1.5.2', 224 silly addNameRange '1.6.0', 224 silly addNameRange '1.6.1', 224 silly addNameRange '1.6.2', 224 silly addNameRange '1.6.3', 224 silly addNameRange '1.6.4', 224 silly addNameRange '1.7.0', 224 silly addNameRange '1.7.1', 224 silly addNameRange '1.7.2', 224 silly addNameRange '1.7.3', 224 silly addNameRange '1.8.0', 224 silly addNameRange '1.8.1', 224 silly addNameRange '1.8.2', 224 silly addNameRange '1.8.3', 224 silly addNameRange '1.8.4', 224 silly addNameRange '1.8.5', 224 silly addNameRange '2.0.0', 224 silly addNameRange '2.0.1', 224 silly addNameRange '2.0.2', 224 silly addNameRange '2.0.3', 224 silly addNameRange '1.8.6', 224 silly addNameRange '2.1.0', 224 silly addNameRange '2.1.1', 224 silly addNameRange '2.1.2', 224 silly addNameRange '1.8.7', 224 silly addNameRange '2.1.3', 224 silly addNameRange '2.2.0', 224 silly addNameRange '2.2.1', 224 silly addNameRange '2.2.2', 224 silly addNameRange '2.3.0', 224 silly addNameRange '2.3.1', 224 silly addNameRange '2.3.2', 224 silly addNameRange '2.3.3', 224 silly addNameRange '1.9.0', 224 silly addNameRange '1.9.1', 224 silly addNameRange '2.3.4', 224 silly addNameRange '2.3.5', 224 silly addNameRange '2.3.6', 224 silly addNameRange '2.3.7', 224 silly addNameRange '1.9.2', 224 silly addNameRange '2.3.8', 224 silly addNameRange '2.3.9', 224 silly addNameRange '2.4.0', 224 silly addNameRange '2.4.1', 224 silly addNameRange '2.4.2', 224 silly addNameRange '2.4.3', 224 silly addNameRange '2.4.4', 224 silly addNameRange '2.4.5', 224 silly addNameRange '2.4.6', 224 silly addNameRange '2.5.0', 224 silly addNameRange '2.6.0', 224 silly addNameRange '2.6.1', 224 silly addNameRange '2.6.2', 224 silly addNameRange '2.7.0', 224 silly addNameRange '2.7.1', 224 silly addNameRange '2.7.2' ] ] 225 verbose addNamed [ 'connect', '2.3.9' ] 226 verbose addNamed [ '2.3.9', '2.3.9' ] 227 silly lockFile 8ce732b1-connect-2-3-9 connect@2.3.9 228 verbose lock connect@2.3.9 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\8ce732b1-connect-2-3-9.lock 229 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\connect\2.3.9\package\package.json 230 warn package.json connect@2.3.9 No README.md file found! 231 silly lockFile 8ce732b1-connect-2-3-9 connect@2.3.9 232 silly lockFile 84594d79-connect-2-3-0 connect@~2.3.0 233 silly resolved [ { name: 'http-proxy', 233 silly resolved version: '0.8.0', 233 silly resolved description: 'A full-featured http reverse proxy for node.js', 233 silly resolved author: { name: 'Charlie Robbins', email: 'charlie.robbins@gmail.com' }, 233 silly resolved contributors: [ [Object], [Object], [Object], [Object] ], 233 silly resolved repository: 233 silly resolved { type: 'git', 233 silly resolved url: 'http://github.com/nodejitsu/node-http-proxy.git' }, 233 silly resolved keywords: [ 'reverse', 'proxy', 'http' ], 233 silly resolved dependencies: { colors: '0.x.x', optimist: '0.2.x', pkginfo: '0.2.x' }, 233 silly resolved devDependencies: 233 silly resolved { request: '1.9.x', 233 silly resolved vows: '0.5.x', 233 silly resolved async: '0.1.x', 233 silly resolved 'socket.io': '0.6.x' }, 233 silly resolved main: './lib/node-http-proxy', 233 silly resolved bin: { 'node-http-proxy': './bin/node-http-proxy' }, 233 silly resolved scripts: 233 silly resolved { test: 'npm run-script test-http && npm run-script test-https && npm run-script test-core', 233 silly resolved 'test-http': 'vows --spec && vows --spec --target=secure', 233 silly resolved 'test-https': 'vows --spec --source=secure && vows --spec --source=secure --target=secure', 233 silly resolved 'test-core': 'test/core/run' }, 233 silly resolved engines: { node: '>= 0.6.6' }, 233 silly resolved readme: '# node-http-proxy\n\n<img src="http://i.imgur.com/8fTt9.png" />\n\n## Battle-hardened node.js http proxy\n\n### Features\n\n\* Reverse proxies incoming http.ServerRequest streams\n\* Can be used as a CommonJS module in node.js\n\* Uses event buffering to support application latency in proxied requests\n\* Reverse or Forward Proxy based on simple JSON-based configuration\n\* Supports [WebSockets][1]\n\* Supports [HTTPS][2]\n\* Minimal request overhead and latency\n\* Full suite of functional tests\n\* Battled-hardened through __production usage__ @ [nodejitsu.com][0]\n\* Written entirely in Javascript\n\* Easy to use API\n\n### When to use node-http-proxy\n\nLet\'s suppose you were running multiple http application servers, but you only wanted to expose one machine to the internet. You could setup node-http-proxy on that one machine and then reverse-proxy the incoming http requests to locally running services which were not exposed to the outside network. \n\n### Installing npm (node package manager)\n\n\ncurl http://npmjs.org/install.sh | sh\n\n\n### Installing node-http-proxy\n\n\nnpm install http-proxy\n\n\n## Using node-http-proxy\n\nThere are several ways to use node-http-proxy; the library is designed to be flexible so that it can be used by itself, or in conjunction with other node.js libraries / tools:\n\n1. Standalone HTTP Proxy server\n2. Inside of another HTTP server (like Connect)\n3. In conjunction with a Proxy Routing Table\n4. As a forward-proxy with a reverse proxy \n5. From the command-line as a long running process\n6. customized with 3rd party middleware.\n\nIn each of these scenarios node-http-proxy can handle any of these types of requests:\n\n1. HTTP Requests (http://)\n2. HTTPS Requests (https://)\n3. WebSocket Requests (ws://)\n4. Secure WebSocket Requests (wss://)\n\nSee the [examples][3] for more working sample code.\n\n### Setup a basic stand-alone proxy server\n\njs\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n//\n// Create your proxy server\n//\nhttpProxy.createServer(9000, \'localhost\').listen(8000);\n\n//\n// Create your target server\n//\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied!\' + \'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000);\n\n\n### Setup a stand-alone proxy server with custom server logic\n\njs\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n \n//\n// Create a proxy server with custom application logic\n//\nhttpProxy.createServer(function (req, res, proxy) {\n //\n // Put your custom server logic here\n //\n proxy.proxyRequest(req, res, {\n host: \'localhost\',\n port: 9000\n });\n}).listen(8000);\n\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied: \' + req.url +\'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000);\n\n\n### Setup a stand-alone proxy server with latency (e.g. IO, etc)\n\njs\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n\n//\n// Create a proxy server with custom application logic\n//\nhttpProxy.createServer(function (req, res, proxy) {\n //\n // Buffer the request so that data and end events\n // are not lost during async operation(s).\n //\n var buffer = httpProxy.buffer(req);\n \n //\n // Wait for two seconds then respond: this simulates\n // performing async actions before proxying a request\n //\n setTimeout(function () {\n proxy.proxyRequest(req, res, {\n host: \'localhost\',\n port: 9000, \n buffer: buffer\n }); \n }, 2000);\n}).listen(8000);\n\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied: \' + req.url +\'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000);\n\n\n### Proxy requests within another http server\n\njs\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n \n//\n// Create a new instance of HttProxy to use in your server\n//\nvar proxy = new httpProxy.RoutingProxy();\n\n//\n// Create a regular http server and proxy its handler\n//\nhttp.createServer(function (req, res) {\n //\n // Put your custom server logic here, then proxy\n //\n proxy.proxyRequest(req, res, {\n host: \'localhost\',\n port: 9000\n });\n}).listen(8001);\n\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied: \' + req.url +\'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000); \n\n\n### Proxy requests using a ProxyTable\nA Proxy Table is a simple lookup table that maps incoming requests to proxy target locations. Take a look at an example of the options you need to pass to httpProxy.createServer:\n\njs\nvar options = {\n router: {\n \'foo.com/baz\': \'127.0.0.1:8001\',\n \'foo.com/buz\': \'127.0.0.1:8002\',\n \'bar.com/buz\': \'127.0.0.1:8003\'\n }\n};\n\n\nThe above route table will take incoming requests to \'foo.com/baz\' and forward them to \'127.0.0.1:8001\'. Likewise it will take incoming requests to \'foo.com/buz\' and forward them to \'127.0.0.1:8002\'. The routes themselves are later converted to regular expressions to enable more complex matching functionality. We can create a proxy server with these options by using the following code:\n\njs\nvar proxyServer = httpProxy.createServer(options);\nproxyServer.listen(80);\n\n\n### Proxy requests using a \'Hostname Only\' ProxyTable\nAs mentioned in the previous section, all routes passes to the ProxyTable are by default converted to regular expressions that are evaluated at proxy-time. This is good for complex URL rewriting of proxy requests, but less efficient when one simply wants to do pure hostname routing based on the HTTP \'Host\' header. If you are only concerned with hostname routing, you change the lookup used by the internal ProxyTable:\n\njs\nvar options = {\n hostnameOnly: true,\n router: {\n \'foo.com\': \'127.0.0.1:8001\',\n \'bar.com\': \'127.0.0.1:8002\'\n }\n}\n\n\nNotice here that I have not included paths on the individual domains because this is not possible when using only the HTTP \'Host\' header. Care to learn more? See [RFC2616: HTTP/1.1, Section 14.23, "Host"][4].\n\n### Proxy requests with an additional forward proxy\nSometimes in addition to a reverse proxy, you may want your front-facing server to forward traffic to another location. For example, if you wanted to load test your staging environment. This is possible when using node-http-proxy using similar JSON-based configuration to a proxy table: \n\njs\nvar proxyServerWithForwarding = httpProxy.createServer(9000, \'localhost\', {\n forward: {\n port: 9000,\n host: \'staging.com\'\n }\n});\nproxyServerWithForwarding.listen(80);\n\n\nThe forwarding option can be used in conjunction with the proxy table options by simply including both the \'forward\' and \'router\' properties in the options passed to \'createServer\'.\n\n\n## Using HTTPS\nYou have all the full flexibility of node-http-proxy offers in HTTPS as well as HTTP. The two basic scenarios are: with a stand-alone proxy server or in conjunction with another HTTPS server.\n\n### Proxying to HTTP from HTTPS\nThis is probably the most common use-case for proxying in conjunction with HTTPS. You have some front-facing HTTPS server, but all of your internal traffic is HTTP. In this way, you can reduce the number of servers to which your CA and other important security files are deployed and reduce the computational overhead from HTTPS traffic. \n\nUsing HTTPS innode-http-proxyis relatively straight-forward:\n \njs\nvar fs = require(\'fs\'),\n http = require(\'http\'),\n https = require(\'https\'),\n httpProxy = require(\'http-proxy\');\n \nvar options = {\n https: {\n key: fs.readFileSync(\'path/to/your/key.pem\', \'utf8\'),\n cert: fs.readFileSync(\'path/to/your/cert.pem\', \'utf8\')\n }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(8000, \'localhost\', options).listen(8001);\n\n//\n// Create an instance of HttpProxy to use with another HTTPS server\n//\nvar proxy = new httpProxy.HttpProxy({\n target: {\n host: \'localhost\', \n port: 8000\n }\n});\nhttps.createServer(options.https, function (req, res) {\n proxy.proxyRequest(req, res)\n}).listen(8002);\n\n//\n// Create the target HTTPS server for both cases\n//\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'hello https\n\');\n res.end();\n}).listen(8000);\n\n\n### Proxying to HTTPS from HTTPS\nProxying from HTTPS to HTTPS is essentially the same as proxying from HTTPS to HTTP, but you must include thetargetoption in when callinghttpProxy.createServeror instantiating a new instance ofHttpProxy.\n\njs\nvar fs = require(\'fs\'),\n https = require(\'https\'),\n httpProxy = require(\'http-proxy\');\n \nvar options = {\n https: {\n key: fs.readFileSync(\'path/to/your/key.pem\', \'utf8\'),\n cert: fs.readFileSync(\'path/to/your/cert.pem\', \'utf8\')\n },\n target: {\n https: true // This could also be an Object with key and cert properties\n }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(8000, \'localhost\', options).listen(8001);\n\n//\n// Create an instance of HttpProxy to use with another HTTPS server\n//\nvar proxy = new httpProxy.HttpProxy({ \n target: {\n host: \'localhost\', \n port: 8000,\n https: true\n }\n});\n\nhttps.createServer(options.https, function (req, res) {\n proxy.proxyRequest(req, res);\n}).listen(8002);\n\n//\n// Create the target HTTPS server for both cases\n//\nhttps.createServer(options.https, function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'hello https\n\');\n res.end();\n}).listen(8000);\n\n## Middleware\n\nnode-http-proxynow supports connect middleware. Add middleware functions to your createServer call:\n\njs\nhttpProxy.createServer(\n require(\'connect-gzip\').gzip(),\n 9000, \'localhost\'\n).listen(8000);\n\n\n## Proxying WebSockets\nWebsockets are handled automatically when usinghttpProxy.createServer(), but if you want to use it in conjunction with a stand-alone HTTP + WebSocket (such as [socket.io][5]) server here\'s how:\n\njs\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n \n//\n// Create an instance of node-http-proxy\n//\nvar proxy = new httpProxy.HttpProxy(\n target: {\n host: \'localhost\',\n port: 8000\n });\n\nvar server = http.createServer(function (req, res) {\n //\n // Proxy normal HTTP requests\n //\n proxy.proxyRequest(req, res);\n});\n\nserver.on(\'upgrade\', function(req, socket, head) {\n //\n // Proxy websocket requests too\n //\n proxy.proxyWebSocketRequest(req, socket, head);\n});\n\n\n### Configuring your Socket limits\n\nBy default,node-http-proxywill set a 100 socket limit for allhost:portproxy targets. You can change this in two ways: \n\n1. By passing themaxSocketsoption tohttpProxy.createServer()\n2. By callinghttpProxy.setMaxSockets(n), wherenis the number of sockets you with to use. \n\n## Using node-http-proxy from the command line\nWhen you install this package with npm, a node-http-proxy binary will become available to you. Using this binary is easy with some simple options:\n\njs\nusage: node-http-proxy [options] \n\nAll options should be set with the syntax --option=value\n\noptions:\n --port PORT Port that the proxy server should run on\n --target HOST:PORT Location of the server the proxy will target\n --config OUTFILE Location of the configuration file for the proxy server\n --silent Silence the log output from the proxy server\n -h, --help You\'re staring at it\n\n\n<br/>\n## Why doesn\'t node-http-proxy have more advanced features like x, y, or z?\n\nIf you have a suggestion for a feature currently not supported, feel free to open a [support issue][6]. node-http-proxy is designed to just proxy http requests from one server to another, but we will be soon releasing many other complimentary projects that can be used in conjunction with node-http-proxy.\n\n## Run Tests\nThe test suite is designed to fully cover the combinatoric possibilities of HTTP and HTTPS proxying:\n\n1. HTTP --> HTTP\n2. HTTPS --> HTTP\n3. HTTPS --> HTTPS\n4. HTTP --> HTTPS\n\n\nvows test/-test.js --spec\nvows test/-test.js --spec --https\nvows test/-test.js --spec --https --target=https\nvows test/-test.js --spec --target=https\n\n\n<br/>\n### License\n\n(The MIT License)\n\nCopyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n"Software"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n[0]: http://nodejitsu.com\n[1]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/web-socket-proxy.js\n[2]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/basic-proxy-https.js\n[3]: https://github.com/nodejitsu/node-http-proxy/tree/v0.5.0/examples\n[4]: http://www.ietf.org/rfc/rfc2616.txt\n[5]: http://socket.io\n[6]: http://github.com/nodejitsu/node-http-proxy/issues\n', 233 silly resolved _id: 'http-proxy@0.8.0', 233 silly resolved _from: 'http-proxy@0.8.0' }, 233 silly resolved { name: 'grunt', 233 silly resolved description: 'A task-based command line build tool for JavaScript projects.', 233 silly resolved version: '0.3.17', 233 silly resolved author: { name: '"Cowboy" Ben Alman', url: 'http://benalman.com/' }, 233 silly resolved homepage: 'http://github.com/gruntjs/grunt', 233 silly resolved repository: { type: 'git', url: 'git://github.com/gruntjs/grunt.git' }, 233 silly resolved bugs: { url: 'http://github.com/gruntjs/grunt/issues' }, 233 silly resolved licenses: [ [Object] ], 233 silly resolved main: 'lib/grunt', 233 silly resolved bin: { grunt: 'bin/grunt' }, 233 silly resolved scripts: { test: 'grunt test' }, 233 silly resolved engines: { node: '>= 0.6.0' }, 233 silly resolved preferGlobal: true, 233 silly resolved keywords: 233 silly resolved [ 'async', 233 silly resolved 'cli', 233 silly resolved 'minify', 233 silly resolved 'uglify', 233 silly resolved 'build', 233 silly resolved 'underscore', 233 silly resolved 'unit', 233 silly resolved 'test', 233 silly resolved 'qunit', 233 silly resolved 'nodeunit', 233 silly resolved 'server', 233 silly resolved 'init', 233 silly resolved 'scaffold', 233 silly resolved 'make', 233 silly resolved 'jake', 233 silly resolved 'tool' ], 233 silly resolved dependencies: 233 silly resolved { async: '~0.1.18', 233 silly resolved colors: '~0.6.0', 233 silly resolved connect: '~2.4.4', 233 silly resolved dateformat: '1.0.2-1.2.3', 233 silly resolved 'glob-whatev': '~0.1.4', 233 silly resolved hooker: '~0.2.3', 233 silly resolved jshint: '~0.9.1', 233 silly resolved nodeunit: '~0.7.4', 233 silly resolved nopt: '~1.0.10', 233 silly resolved prompt: '~0.1.12', 233 silly resolved semver: '~1.0.13', 233 silly resolved 'uglify-js': '~1.3.3', 233 silly resolved underscore: '~1.2.4', 233 silly resolved 'underscore.string': '~2.1.1', 233 silly resolved temporary: '~0.0.4', 233 silly resolved 'gzip-js': '~0.3.1' }, 233 silly resolved devDependencies: {}, 233 silly resolved readme: '# grunt\nGrunt is a task-based command line build tool for JavaScript projects.\n\n_Grunt is currently in beta. While I\'m already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and [make suggestions][issues] or [report bugs][issues]!_\n\n## Getting started\nBe sure to read the [getting started guide](/gruntjs/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project. In addition, check out the [example gruntfiles](/gruntjs/grunt/blob/master/docs/example_gruntfiles.md) which highlight a number of fairly common configurations.\n\n## Built-in tasks\nAs of now, grunt has the following predefined tasks that you can use in your project:\n\n\* [concat](/gruntjs/grunt/blob/master/docs/task_concat.md) - Concatenate files.\n\* [init](/gruntjs/grunt/blob/master/docs/task_init.md) - Generate project scaffolding from a predefined template.\n\* [lint](/gruntjs/grunt/blob/master/docs/task_lint.md) - Validate files with [JSHint][jshint].\n\* [min](/gruntjs/grunt/blob/master/docs/task_min.md) - Minify files with [UglifyJS][uglify].\n\* [qunit](/gruntjs/grunt/blob/master/docs/task_qunit.md) - Run [QUnit][qunit] unit tests in a headless [PhantomJS][phantom] instance.\n\* [server](/gruntjs/grunt/blob/master/docs/task_server.md) - Start a static web server.\n\* test - Run unit tests with [nodeunit][nodeunit].\n\* watch - Run predefined tasks whenever watched files change.\n\n_(More documentation forthcoming)_\n\n## Custom tasks\nIn addition to the built-in tasks, you can create your own tasks. Don\'t like a built-in task\'s default behavior? Override it. Check out the [grunt API documentation](/gruntjs/grunt/blob/master/docs/api.md) and the [built-in tasks source](/gruntjs/grunt/blob/master/tasks) for everything you need to know about creating custom tasks.\n\n## Documentation\nTake a look at the [documentation table of contents][docs] for all the things.\n\n## Why does grunt exist?\nDoing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that\'s maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.\n\nBeing primarily a JavaScript developer, I decided to use [Node.js][node] and [npm][npm] because the dependencies I most care about ([JSHint][jshint] and [UglifyJS][uglify]) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.\n\n## Installing grunt\n\nGrunt is available as an [npm][npm] module. If you install grunt globally vianpm install -g grunt, it will be available for use in all of your projects. Once grunt has been installed, you can typegrunt --helpat the command line for more information. And if you want to see grunt "grunt" itself, cd into grunt\'s directory and typegrunt\n\n_Note: in Windows, you may need to run grunt asgrunt.cmd. See the [FAQ](/gruntjs/grunt/blob/master/docs/faq.md) for more Windows-specific information._\n\nFor projects already using grunt, you\'re done. Otherwise, if you\'re adding grunt to an existing project or starting from scratch, check out the [getting started guide](/gruntjs/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project.\n\n## Release History\n_(Until v1.0.0, this will only be updated when major or breaking changes are made)_\n\n\* 2012/10/15 - v0.3.17 - Updating JSHint to 0.9.1. Better stack traces. And a few QUnit task fixes.\n\* 2012/10/01 - v0.3.16 - Updated URLs to reflect new website and source location. Tweaks to the "jquery" and "commonjs" init templates. Fixed an issue when exiting due to warning or fatal error.\n\* 2012/09/04 - v0.3.15 - Fixing a minor problem with renaming multi tasks.\n\* 2012/08/29 - v0.3.14 - Grunt plugins lacking package.json keywords should work again.\n\* 2012/08/27 - v0.3.13 - Fixed Node.js 0.8.x path.existsSync warning. Updated connect, nodeunit, uglify-js deps to latest. Updated docs. Grunt plugins generated with init:gruntplugin no longer include grunt as a dependency. Added preliminary support for "collection" plugins.\n\* 2012/07/30 - v0.3.12 - Fixing a bug in node 0.8.x where utils.spawn would terminate before receiving all child stdout.\n\* 2012/06/25 - v0.3.10 - Updating a few dependencies to work with node 0.8.x (0.6.x should still work).\n\* 2012/04/18 - v0.3.9 - The min task (via the uglify helper) now appends a semicolon to the end of the generated source.\n\* 2012/04/06 - v0.3.8 - Init template tweaks. Anchor links added to docs, along with grunt-internal docs task to generate them. The watch task now supports multiple targets with separate wildcards and tasks. Locally-installed grunt will override global grunt even when run from global "grunt" script.\n\* 2012/04/01 - v0.3.7 - Tweaked the behavior of the init templateexports.warnOnproperty and added more init template documentation. Fixed duplicate PhantomJS debug output in qunit task. Added useful nodeunit and qunit comments into init template generated test .js files.\n\* 2012/03/28 - v0.3.6 - Fixed a--helpscreen issue, a few grunt plugin related issues, and attempted to improve the overall grunt plugin docs and API.\n\* 2012/03/27 - v0.3.5 - Fixed a handful of weird Windows issues. Changed default m/d/yyyy dates to yyyy-mm-dd ISO 8601. Fixed some init task bugs, docs errata, and added a lot more content to the init task docs.\n\* 2012/03/26 - v0.3.3 - Added a "gruntfile" init template. Create a basic gruntfile in seconds withgrunt init:gruntfile. A few other minor fixes.\n\* 2012/03/25 - v0.3.2 - Init tasks can now specify a file matching wildcard for the initial "files exist" warning. The jQuery init template now has jQuery 1.7.2. Fixed a bug in thetask.expand*methods.\n\* 2012/03/25 - v0.3.1 - Added a few methods. Substantially reworked the init task and templates.\n\* 2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.\n\* 2012/02/03 - v0.2.14 - Added a server task (which starts a static webserver for your tasks). The qunit task now uses PhantomJS instead of Zombie.js (4768 of 4971 jQuery unit test pass, neat), and supports both file wildcards as well as http:// or https:// urls. (static webserver, anyone?). Grunt should no longer "hang" when done.\n\* 2012/01/29 - v0.2.5 - Added a "qunit" task as well as an init "jquery" template (as of now, there are also "node" and "commonjs" init templates).\n\* 2012/01/22 - v0.2.1 - Removed handlebars, templates are universally handled by underscore now. Changed init task template tags from <% %> to {% %}. Banners beginning with /_! will no longer be stripped.\n_ 2012/01/22 - v0.2.0 - Added "init" task with a sample template, reworked a lot of code. Hopefully it\'s backwards-compatible.\n\* 2012/01/11 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2012 "Cowboy" Ben Alman \nLicensed under the MIT license. \nhttps://github.com/gruntjs/grunt/blob/master/LICENSE-MIT\n\n\n[docs]: /gruntjs/grunt/blob/master/docs/toc.md\n[docs-init]: /gruntjs/grunt/blob/master/docs/task_init.md\n[issues]: /gruntjs/grunt/issues\n\n[node]: http://nodejs.org/\n[npm]: http://npmjs.org/\n[jshint]: http://www.jshint.com/\n[uglify]: https://github.com/mishoo/UglifyJS/\n[nodeunit]: https://github.com/caolan/nodeunit\n[qunit]: http://docs.jquery.com/QUnit\n[phantom]: http://www.phantomjs.org/\n', 233 silly resolved _id: 'grunt@0.3.17', 233 silly resolved _from: 'grunt@>=0.3.9' }, 233 silly resolved { name: 'websocket', 233 silly resolved description: 'Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.', 233 silly resolved keywords: 233 silly resolved [ 'websocket', 233 silly resolved 'websockets', 233 silly resolved 'socket', 233 silly resolved 'networking', 233 silly resolved 'comet', 233 silly resolved 'push' ], 233 silly resolved author: 233 silly resolved { name: 'Brian McKelvey', 233 silly resolved email: 'brian@worlize.com', 233 silly resolved url: 'https://www.worlize.com/' }, 233 silly resolved version: '1.0.8', 233 silly resolved repository: 233 silly resolved { type: 'git', 233 silly resolved url: 'http://github.com/Worlize/WebSocket-Node.git' }, 233 silly resolved engines: { node: '>=0.6.10' }, 233 silly resolved config: { verbose: false }, 233 silly resolved scripts: { install: 'node install.js' }, 233 silly resolved main: 'index', 233 silly resolved directories: { lib: './lib' }, 233 silly resolved readme: 'WebSocket Client & Server Implementation for Node\n=================================================\n\nOverview\n--------\nThis is a (mostly) pure JavaScript implementation of the WebSocket protocol versions 8 and 13 for Node. There are some example client and server applications that implement various interoperability testing protocols in the "test" folder.\n\nCurrent News\n------------\n\n- As of version 1.0.7, **_Native modules are now optional.**_ If they fail to compile, WebSocket-Node will still work but will not verify that received UTF-8 data is valid, and xor masking/unmasking of payload data for security purposes will not be as efficient as it is performed in JavaScript instead of native code.\n\n- Version 1.0.7 requires node v0.6.10, since that\'s the first version that I can manage to successfully build the native extensions with node-gyp through npm. If anyone can figure out how to build native extensions in a way that works with both older and newer versions of Node, I\'m happy to accept a patch!\n\n- If you want to support Unicode characters outside the Basic Multilingual Plane (BMP) you must use Node v0.8.x, which added support for representing these characters as surrogate pairs inside JavaScript strings. Under Node v0.6.x, characters with code points greater than 65535 (greater than a 16-bit unsigned value) will have their code point truncated, resulting in seemingly unpredictable characters being returned.\n\n- WebSocket-Node was already [one of the fastest WebSocket libraries for Node](http://hobbycoding.posterous.com/websockt-binary-data-transfer-benchmark-rsult), and thanks to a small patch from [kazuyukitanimura](https://github.com/kazuyukitanimura), this library is now [up to 200% faster](http://hobbycoding.posterous.com/how-to-make-websocket-work-2x-faster-on-nodej) as of version 1.0.3!\n\nChangelog\n---------\n\nCurrent Version: 1.0.7\n\n[View the changelog](https://github.com/Worlize/WebSocket-Node/blob/master/CHANGELOG.md)\n\nBrowser Support\n---------------\n\n\* Firefox 7-9 (Old) (Protocol Version 8)\n\* Firefox 10+ (Protocol Version 13)\n\* Chrome 14,15 (Old) (Protocol Version 8)\n\* Chrome 16+ (Protocol Version 13)\n\* Internet Explorer 10 (Preview) (Protocol Version 13)\n\* Safari 6 (Protocol Version 13)\n\n**_Safari older than 6.0 is not supported since it uses a very old draft of WebSockets**_\n\nI made a decision early on to explicitly avoid maintaining multiple slightly different copies of the same code just to support the browsers currently in the wild. The major browsers that support WebSocket are on a rapid-release schedule (with the exception of Safari) and now that the final version of the protocol has been [published as an official RFC](http://datatracker.ietf.org/doc/rfc6455/), it won\'t be long before support in the wild stabilizes on that version. My client application is in Flash/ActionScript 3, so for my purposes I\'m not dependent on the browser implementations. _I made an exception to my stated intention here to support protocol version 8 along with 13, since only one minor thing changed and it was trivial to handle conditionally._ The library now interoperates with other clients and servers implementing draft -08 all the way up through the final RFC.\n\n**_If you need to simultaneously support legacy browser versions that had implemented draft-75/draft-76/draft-00, take a look here: https://gist.github.com/1428579**_\n\nFor a WebSocket client written in ActionScript 3, see my [AS3WebScocket](https://github.com/Worlize/AS3WebSocket) project.\n\nBenchmarks\n----------\nThere are some basic benchmarking sections in the Autobahn test suite. I\'ve put up a [benchmark page](http://worlize.github.com/WebSocket-Node/benchmarks/) that shows the results from the Autobahn tests run against AutobahnServer 0.4.10, WebSocket-Node 1.0.2, WebSocket-Node 1.0.4, and ws 0.3.4.\n\nAutobahn Tests\n--------------\nThe very complete [Autobahn Test Suite](http://www.tavendo.de/autobahn/testsuite.html) is used by most WebSocket implementations to test spec compliance and interoperability.\n\n**Note about failing UTF-8 tests:** There are some UTF-8 validation tests that fail due to the fact that according to the ECMAScript spec, V8 and subsequently Node cannot support Unicode characters outside the BMP (Basic Multilingual Plane.) JavaScript\'s String.fromCharCode() function truncates all code points to 16-bit, so you cannot decode higher plane code points in JavaScript. Google\'s V8 uses UCS-2 as its internal string representation, and [they have no intention to change that any time soon](http://code.google.com/p/v8/issues/detail?id=761), so it is not possible to decode higher plane code points in C++, to the best of my knowledge, because those characters are not representable in UCS-2 anyway. The Autobahn Test Suite requires that all valid Unicode code points survive a complete round trip, including code points that represent non-existent characters and characters above the BMP. Since JavaScript cannot represent any characters with a code point >= 65535, no JavaScript implementation of WebSockets can pass these UTF-8 tests without using a cheat, such as echoing back the original binary data without decoding and re-encoding the UTF-8 data, which is not representative of real-world practical application. **_I do not consider this to be a problem in the majority of circumstances**_ since it is very unlikely to cause major issues in any real-world application as long as you don\'t need to use characters outside the BMP.\n**Update:** This issue seems to have been resolved in the version of V8 used in Node 0.8.x. I believe they are using surrogate-pairs to accommodate characters that are outside the BMP, but I haven\'t looked into it.\n\n- [View Server Test Results](http://worlize.github.com/WebSocket-Node/test-report/servers/)\n- [View Client Test Results](http://worlize.github.com/WebSocket-Node/test-report/clients/)\n\nNotes\n-----\nThis library has been used in production on [worlize.com](https://www.worlize.com) since April 2011 and seems to be stable. Your mileage may vary.\n\n**Tested with the following node versions:**\n\n- 0.6.18\n- 0.8.6\n\nIt may work in earlier or later versions but I\'m not actively testing it outside of the listed versions. YMMV.\n\nDocumentation\n=============\n\nFor more complete documentation, see the [Documentation Wiki](https://github.com/Worlize/WebSocket-Node/wiki/Documentation).\n\nInstallation\n------------\n\nA few users have reported difficulties building the native extensions without first manually installing node-gyp. If you have trouble building the native extensions, make sure you\'ve got a C++ compiler, and have donenpm install -g node-gyp` first. \n\nNative extensions are optional, however, and WebSocket-Node will work even if the extensions cannot be compiled.\n\nIn your project root:\n\n $ npm install websocket\n \nThen in your code:\n\
im getting this error log while installing grunt reload...how could i fix this issues
0 info it worked if it ends with ok 1 verbose cli [ 'C:\Program Files\nodejs\node.exe', 1 verbose cli 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js', 1 verbose cli 'install', 1 verbose cli 'grunt-reload' ] 2 info using npm@1.1.62 3 info using node@v0.8.11 4 verbose node symlink C:\Program Files\nodejs\node.exe 5 verbose read json C:\xampp\htdocs\tw2013\tw2013\package.json 6 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-coffee\package.json 7 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-coffeelint\package.json 8 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-compass\package.json 9 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-contrib-copy\package.json 10 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-contrib-requirejs\package.json 11 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-crusher\package.json 12 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 13 verbose read json C:\xampp\htdocs\tw2013\tw2013\package.json 14 verbose cache add [ 'grunt-reload', null ] 15 silly cache add name=undefined spec="grunt-reload" args=["grunt-reload",null] 16 verbose parsed url { pathname: 'grunt-reload', 16 verbose parsed url path: 'grunt-reload', 16 verbose parsed url href: 'grunt-reload' } 17 silly lockFile 7aeece79-grunt-reload grunt-reload 18 verbose lock grunt-reload C:\Users\Touchweb-31\AppData\Roaming\npm-cache\7aeece79-grunt-reload.lock 19 silly lockFile 7aeece79-grunt-reload grunt-reload 20 verbose addNamed [ 'grunt-reload', '' ] 21 verbose addNamed [ null, '' ] 22 silly lockFile b22a81de-grunt-reload grunt-reload@ 23 verbose lock grunt-reload@ C:\Users\Touchweb-31\AppData\Roaming\npm-cache\b22a81de-grunt-reload.lock 24 silly addNameRange { name: 'grunt-reload', range: '', hasData: false } 25 verbose url raw grunt-reload 26 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-reload' ] 27 verbose url resolved https://registry.npmjs.org/grunt-reload 28 info trying registry request attempt 1 at 12:27:33 29 verbose etag "3SBHZM3S00PGF7ZL395ZB1C3Y" 30 http GET https://registry.npmjs.org/grunt-reload 31 http 304 https://registry.npmjs.org/grunt-reload 32 silly registry.get cb [ 304, 32 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 32 silly registry.get etag: '"3SBHZM3S00PGF7ZL395ZB1C3Y"', 32 silly registry.get date: 'Tue, 22 Jan 2013 06:56:03 GMT', 32 silly registry.get 'content-length': '0' } ] 33 verbose etag grunt-reload from cache 34 silly addNameRange number 2 { name: 'grunt-reload', range: '', hasData: true } 35 silly addNameRange versions [ 'grunt-reload', [ '0.1.0', '0.1.1', '0.1.2', '0.2.0' ] ] 36 verbose addNamed [ 'grunt-reload', '0.2.0' ] 37 verbose addNamed [ '0.2.0', '0.2.0' ] 38 silly lockFile 776df626-grunt-reload-0-2-0 grunt-reload@0.2.0 39 verbose lock grunt-reload@0.2.0 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\776df626-grunt-reload-0-2-0.lock 40 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt-reload\0.2.0\package\package.json 41 silly lockFile 776df626-grunt-reload-0-2-0 grunt-reload@0.2.0 42 silly lockFile b22a81de-grunt-reload grunt-reload@ 43 silly resolved [ { name: 'grunt-reload', 43 silly resolved description: 'A grunt task that enables live reloading of updated watch files in the browser.', 43 silly resolved version: '0.2.0', 43 silly resolved homepage: 'https://github.com/webxl/grunt-reload', 43 silly resolved author: 43 silly resolved { name: 'Matt Motherway', 43 silly resolved email: 'mm@webxl.net', 43 silly resolved url: 'http://webxl.net' }, 43 silly resolved repository: { type: 'git', url: 'git://github.com/webxl/grunt-reload.git' }, 43 silly resolved bugs: { url: 'https://github.com/webxl/grunt-reload/issues' }, 43 silly resolved licenses: [ [Object] ], 43 silly resolved main: 'grunt.js', 43 silly resolved bin: { 'grunt-reload': 'bin/grunt-reload' }, 43 silly resolved engines: { node: '>=0.6.0' }, 43 silly resolved scripts: { test: 'grunt test' }, 43 silly resolved dependencies: 43 silly resolved { grunt: '>=0.3.9', 43 silly resolved connect: '~2.3.0', 43 silly resolved buffers: '0.1.1', 43 silly resolved 'http-proxy': '0.8.0', 43 silly resolved websocket: '~1.0.6' }, 43 silly resolved devDependencies: { grunt: '>=0.3.9' }, 43 silly resolved keywords: [ 'gruntplugin', 'reload' ], 43 silly resolved readme: '# grunt-reload\n\nA grunt task that enables live reloading of updated watch files in the browser.\n\n## Getting Started\nInstall this grunt plugin next to your project\'s [grunt.js gruntfile][getting_started] with:
npm install grunt-reload
\n\nThen add this line to your project\'sgrunt.js
gruntfile:\n\njavascript\ngrunt.loadNpmTasks(\'grunt-reload\');\n
\n\n[grunt]: https://github.com/cowboy/grunt\n[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md\n\n## Documentation\n\nThis plugin provides two grunt tasks: \'reload\' and \'reloadServer\'. \'reload\' is designed to be called via the watch task configuration. \'reloadServer\' is designed to be called on the command-line along with the watch task.\n\nThe reload task tells the page to refresh itself via websocket connection between the reloadServer task and the reloadClient.js that is appended to the requested html file. When the watch task detects a changed file, it will process its configured tasks, which should include the \'reload\' task if it is setup like the example below.\n\nConfiguration:\n\n* port: (number, default: 8001) Reverse proxy listens on this port. This is necessary for including reload client javascript.\n* proxy: (object, optional) If present, this config object will enable a reverse proxy to your development server\'s content\n * host: (string, default: \'localhost\') development server hostname\n * port: (number, default: server.port or 80) development server port\n * includeReloadScript: (boolean, default: true) includes the client js to listen for reload commands\n* iframe: (object, optional)\n * target: (string) URL of development server\n* liveReload: (boolean, only required for LiveReload 2.x)\n\n## Reload methods\n\nProxy\n\nThis will automatically append the script to the requested HTML file. Here\'s how you would use grunt-reload with grunt-less:\n\njavascript\n// project configuration\ngrunt.initConfig({\n lint: {\n all:[\'js/*.js\']\n },\n reload: {\n port: 6001,\n proxy: {\n host: \'localhost\'\n }\n },\n watch:{\n files:[\'index.html\', \'style.less\'],\n tasks:\'default reload\'\n }\n\n});\n\ngrunt.loadNpmTasks(\'grunt-less\');\ngrunt.loadNpmTasks(\'grunt-reload\');\n\ngrunt.registerTask(\'default\', \'lint less\');\n
\n\nIFrame\n\nUse this method if you don\'t want to muck around with your server\'s response.\n\njavascript\n...\n iframe: {\n target: \'http://localhost:9999\'\n }\n...\n
\n\nYour iframe\'d dev site in this instance would be available at the default http://localhost:8001\n\n__LiveReload extension\n\nThis is useful if you want to reload CSS files in place in addition to the entire page when files change. It requires a LiveReload extension. In-line reloading of CSS requires grunt 4.0.\n\nSet the reload server to listen on LiveReload\'s default port:\n\njavascript\n...\n port: 35729, // LR default\n liveReload: {}\n...\n
\n\nMake sure you enable LR in your browser (click the LR button in Chrome)\n\nManual include\n\nIf you prefer hard-coding over proxies, extensions, and iframes, you can just do this:\n\n`html\n\n\n\n\nThis makes the reload client work from any address.\n\n## Usage\n\n
grunt reload watch\n\nIf you want to run a static server using the bundled server task, and enable reloading, you can configure something like this:\n\n
javascript\n...\n reload: {\n port: 6001,\n proxy: {\n host: \'localhost\',\n port: 8000 // should match server.port config\n }\n },\n watch:{\n files:[\'index.html\', \'style.less\'],\n tasks:\'lint less reload\'\n }\n...\ngrunt.registerTask(\'default\', \'server reload watch\');\n\n\nThen just run:\n\n
grunt\n\n\n## TODO\n\* ~~reload resources without refreshing entire page~~ use [LiveReload extensions](http://help.livereload.com/kb/general-use/browser-extensions) and grunt 4.x alpha\n\* ~~add option to run standalone web server for project~~ use server task for now\n\* write chrome extension to reload resources (css, images, templates)\n \* the includeReloadScript & proxy options will probably become the fallback method of attaching the client\n \* may allow one of three attach methods: extension, iframe, or proxy\n\n## Release History\n\* **06/15/2012 - 0.2.0**: Added support for grunt 4.0, [LiveReload extensions](http://help.livereload.com/kb/general-use/browser-extensions), iframes, and custom targets\n\* **06/04/2012 - 0.1.2**: Removed connect 1.x requirement (no longer using connect.router). Added test. Clean up.\n\* **06/03/2012 - 0.1.1**: Fixes \'socket hang up\' error.\n\* **05/27/2012 - 0.1.0**: Initial release.\n\n## License\nCopyright (c) 2012 webxl \nLicensed under the MIT license.\n', 43 silly resolved _id: 'grunt-reload@0.2.0', 43 silly resolved _from: 'grunt-reload' } ] 44 info install grunt-reload@0.2.0 into C:\xampp\htdocs\tw2013\tw2013 45 info installOne grunt-reload@0.2.0 46 verbose from cache C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt-reload\0.2.0\package\package.json 47 info C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload unbuild 48 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 49 verbose tar unpack C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt-reload\0.2.0\package.tgz 50 silly lockFile 36e373c3-tw2013-node-modules-grunt-reload C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload 51 verbose lock C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload C:\Users\Touchweb-31\AppData\Roaming\npm-cache\36e373c3-tw2013-node-modules-grunt-reload.lock 52 silly gunzTarPerm modes [ '755', '644' ] 53 silly gunzTarPerm extractEntry package.json 54 silly gunzTarPerm modified mode [ 'package.json', 438, 420 ] 55 silly gunzTarPerm extractEntry .npmignore 56 silly gunzTarPerm modified mode [ '.npmignore', 438, 420 ] 57 silly gunzTarPerm extractEntry README.md 58 silly gunzTarPerm modified mode [ 'README.md', 438, 420 ] 59 silly gunzTarPerm extractEntry grunt.js 60 silly gunzTarPerm modified mode [ 'grunt.js', 438, 420 ] 61 silly gunzTarPerm extractEntry .idea/.name 62 silly gunzTarPerm modified mode [ '.idea/.name', 438, 420 ] 63 silly gunzTarPerm extractEntry .idea/encodings.xml 64 silly gunzTarPerm modified mode [ '.idea/encodings.xml', 438, 420 ] 65 silly gunzTarPerm extractEntry .idea/grunt-reload.iml 66 silly gunzTarPerm modified mode [ '.idea/grunt-reload.iml', 438, 420 ] 67 silly gunzTarPerm extractEntry .idea/misc.xml 68 silly gunzTarPerm modified mode [ '.idea/misc.xml', 438, 420 ] 69 silly gunzTarPerm extractEntry .idea/modules.xml 70 silly gunzTarPerm modified mode [ '.idea/modules.xml', 438, 420 ] 71 silly gunzTarPerm extractEntry .idea/scopes/scope_settings.xml 72 silly gunzTarPerm modified mode [ '.idea/scopes/scope_settings.xml', 438, 420 ] 73 silly gunzTarPerm extractEntry .idea/vcs.xml 74 silly gunzTarPerm modified mode [ '.idea/vcs.xml', 438, 420 ] 75 silly gunzTarPerm extractEntry .idea/workspace.xml 76 silly gunzTarPerm modified mode [ '.idea/workspace.xml', 438, 420 ] 77 silly gunzTarPerm extractEntry bin/grunt-reload 78 silly gunzTarPerm modified mode [ 'bin/grunt-reload', 438, 420 ] 79 silly gunzTarPerm extractEntry LICENSE-MIT 80 silly gunzTarPerm modified mode [ 'LICENSE-MIT', 438, 420 ] 81 silly gunzTarPerm extractEntry tasks/reload.js 82 silly gunzTarPerm modified mode [ 'tasks/reload.js', 438, 420 ] 83 silly gunzTarPerm extractEntry tasks/reloadServer.js 84 silly gunzTarPerm modified mode [ 'tasks/reloadServer.js', 438, 420 ] 85 silly gunzTarPerm extractEntry tasks/include/reloadClient.js 86 silly gunzTarPerm modified mode [ 'tasks/include/reloadClient.js', 438, 420 ] 87 silly gunzTarPerm extractEntry test/grunt.js 88 silly gunzTarPerm modified mode [ 'test/grunt.js', 438, 420 ] 89 silly gunzTarPerm extractEntry test/reload_test.js 90 silly gunzTarPerm modified mode [ 'test/reload_test.js', 438, 420 ] 91 silly gunzTarPerm extractEntry test/included.html 92 silly gunzTarPerm modified mode [ 'test/included.html', 438, 420 ] 93 silly gunzTarPerm extractEntry test/index.html 94 silly gunzTarPerm modified mode [ 'test/index.html', 438, 420 ] 95 silly gunzTarPerm extractEntry test/style.css 96 silly gunzTarPerm modified mode [ 'test/style.css', 438, 420 ] 97 silly gunzTarPerm extractEntry test/tasks/trigger.js 98 silly gunzTarPerm modified mode [ 'test/tasks/trigger.js', 438, 420 ] 99 silly gunzTarPerm extractEntry test/trigger.html 100 silly gunzTarPerm modified mode [ 'test/trigger.html', 438, 420 ] 101 verbose read json C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 102 silly lockFile 36e373c3-tw2013-node-modules-grunt-reload C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload 103 info preinstall grunt-reload@0.2.0 104 verbose from cache C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 105 verbose readDependencies using package.json deps 106 verbose from cache C:\xampp\htdocs\tw2013\tw2013\node_modules\grunt-reload\package.json 107 verbose readDependencies using package.json deps 108 verbose cache add [ 'grunt@>=0.3.9', null ] 109 silly cache add name=undefined spec="grunt@>=0.3.9" args=["grunt@>=0.3.9",null] 110 verbose parsed url { pathname: 'grunt@%3E=0.3.9', 110 verbose parsed url path: 'grunt@%3E=0.3.9', 110 verbose parsed url href: 'grunt@%3E=0.3.9' } 111 silly cache add name="grunt" spec=">=0.3.9" args=["grunt",">=0.3.9"] 112 verbose parsed url { pathname: '%3E=0.3.9', path: '%3E=0.3.9', href: '%3E=0.3.9' } 113 verbose addNamed [ 'grunt', '>=0.3.9' ] 114 verbose addNamed [ null, '>=0.3.9' ] 115 silly lockFile f7d73612-grunt-0-3-9 grunt@>=0.3.9 116 verbose lock grunt@>=0.3.9 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\f7d73612-grunt-0-3-9.lock 117 verbose cache add [ 'connect@~2.3.0', null ] 118 silly cache add name=undefined spec="connect@~2.3.0" args=["connect@~2.3.0",null] 119 verbose parsed url { pathname: 'connect@~2.3.0', 119 verbose parsed url path: 'connect@~2.3.0', 119 verbose parsed url href: 'connect@~2.3.0' } 120 silly cache add name="connect" spec="~2.3.0" args=["connect","~2.3.0"] 121 verbose parsed url { pathname: '~2.3.0', path: '~2.3.0', href: '~2.3.0' } 122 verbose addNamed [ 'connect', '~2.3.0' ] 123 verbose addNamed [ null, '>=2.3.0- <2.4.0-' ] 124 silly lockFile 84594d79-connect-2-3-0 connect@~2.3.0 125 verbose lock connect@~2.3.0 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\84594d79-connect-2-3-0.lock 126 verbose cache add [ 'buffers@0.1.1', null ] 127 silly cache add name=undefined spec="buffers@0.1.1" args=["buffers@0.1.1",null] 128 verbose parsed url { pathname: 'buffers@0.1.1', 128 verbose parsed url path: 'buffers@0.1.1', 128 verbose parsed url href: 'buffers@0.1.1' } 129 silly cache add name="buffers" spec="0.1.1" args=["buffers","0.1.1"] 130 verbose parsed url { pathname: '0.1.1', path: '0.1.1', href: '0.1.1' } 131 verbose addNamed [ 'buffers', '0.1.1' ] 132 verbose addNamed [ '0.1.1', '0.1.1' ] 133 silly lockFile 053c3510-buffers-0-1-1 buffers@0.1.1 134 verbose lock buffers@0.1.1 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\053c3510-buffers-0-1-1.lock 135 verbose cache add [ 'http-proxy@0.8.0', null ] 136 silly cache add name=undefined spec="http-proxy@0.8.0" args=["http-proxy@0.8.0",null] 137 verbose parsed url { pathname: 'http-proxy@0.8.0', 137 verbose parsed url path: 'http-proxy@0.8.0', 137 verbose parsed url href: 'http-proxy@0.8.0' } 138 silly cache add name="http-proxy" spec="0.8.0" args=["http-proxy","0.8.0"] 139 verbose parsed url { pathname: '0.8.0', path: '0.8.0', href: '0.8.0' } 140 verbose addNamed [ 'http-proxy', '0.8.0' ] 141 verbose addNamed [ '0.8.0', '0.8.0' ] 142 silly lockFile 9b958c35-http-proxy-0-8-0 http-proxy@0.8.0 143 verbose lock http-proxy@0.8.0 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\9b958c35-http-proxy-0-8-0.lock 144 verbose cache add [ 'websocket@~1.0.6', null ] 145 silly cache add name=undefined spec="websocket@~1.0.6" args=["websocket@~1.0.6",null] 146 verbose parsed url { pathname: 'websocket@~1.0.6', 146 verbose parsed url path: 'websocket@~1.0.6', 146 verbose parsed url href: 'websocket@~1.0.6' } 147 silly cache add name="websocket" spec="~1.0.6" args=["websocket","~1.0.6"] 148 verbose parsed url { pathname: '~1.0.6', path: '~1.0.6', href: '~1.0.6' } 149 verbose addNamed [ 'websocket', '~1.0.6' ] 150 verbose addNamed [ null, '>=1.0.6- <1.1.0-' ] 151 silly lockFile 0e8f329a-websocket-1-0-6 websocket@~1.0.6 152 verbose lock websocket@~1.0.6 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\0e8f329a-websocket-1-0-6.lock 153 silly addNameRange { name: 'grunt', range: '>=0.3.9', hasData: false } 154 silly addNameRange { name: 'connect', range: '>=2.3.0- <2.4.0-', hasData: false } 155 silly addNameRange { name: 'websocket', range: '>=1.0.6- <1.1.0-', hasData: false } 156 verbose url raw grunt 157 verbose url resolving [ 'https://registry.npmjs.org/', './grunt' ] 158 verbose url resolved https://registry.npmjs.org/grunt 159 info trying registry request attempt 1 at 12:27:36 160 verbose etag "6Z36AK0BENSYE65B2WYW9NIAR" 161 http GET https://registry.npmjs.org/grunt 162 verbose url raw buffers/0.1.1 163 verbose url resolving [ 'https://registry.npmjs.org/', './buffers/0.1.1' ] 164 verbose url resolved https://registry.npmjs.org/buffers/0.1.1 165 info trying registry request attempt 1 at 12:27:36 166 verbose etag "4NSZXPGWAKD4WGIZXIYZURXBH" 167 http GET https://registry.npmjs.org/buffers/0.1.1 168 verbose url raw http-proxy/0.8.0 169 verbose url resolving [ 'https://registry.npmjs.org/', './http-proxy/0.8.0' ] 170 verbose url resolved https://registry.npmjs.org/http-proxy/0.8.0 171 info trying registry request attempt 1 at 12:27:36 172 verbose etag "CXBLTYEBW2Z5P56UAU2CR65GA" 173 http GET https://registry.npmjs.org/http-proxy/0.8.0 174 verbose url raw connect 175 verbose url resolving [ 'https://registry.npmjs.org/', './connect' ] 176 verbose url resolved https://registry.npmjs.org/connect 177 info trying registry request attempt 1 at 12:27:36 178 verbose etag "7JTJQXLJUJDVMPHCBJ7IX3752" 179 http GET https://registry.npmjs.org/connect 180 verbose url raw websocket 181 verbose url resolving [ 'https://registry.npmjs.org/', './websocket' ] 182 verbose url resolved https://registry.npmjs.org/websocket 183 info trying registry request attempt 1 at 12:27:36 184 verbose etag "CSKVJCAEW114LO1X76D9QH8NU" 185 http GET https://registry.npmjs.org/websocket 186 http 304 https://registry.npmjs.org/http-proxy/0.8.0 187 silly registry.get cb [ 304, 187 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 187 silly registry.get etag: '"CXBLTYEBW2Z5P56UAU2CR65GA"', 187 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 187 silly registry.get 'content-length': '0' } ] 188 verbose etag http-proxy/0.8.0 from cache 189 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\http-proxy\0.8.0\package\package.json 190 http 304 https://registry.npmjs.org/grunt 191 silly registry.get cb [ 304, 191 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 191 silly registry.get etag: '"6Z36AK0BENSYE65B2WYW9NIAR"', 191 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 191 silly registry.get 'content-length': '0' } ] 192 verbose etag grunt from cache 193 silly lockFile 9b958c35-http-proxy-0-8-0 http-proxy@0.8.0 194 silly addNameRange number 2 { name: 'grunt', range: '>=0.3.9', hasData: true } 195 silly addNameRange versions [ 'grunt', 195 silly addNameRange [ '0.1.0', 195 silly addNameRange '0.1.1', 195 silly addNameRange '0.1.2', 195 silly addNameRange '0.2.0', 195 silly addNameRange '0.2.1', 195 silly addNameRange '0.2.2', 195 silly addNameRange '0.2.3', 195 silly addNameRange '0.2.4', 195 silly addNameRange '0.2.5', 195 silly addNameRange '0.2.6', 195 silly addNameRange '0.2.7', 195 silly addNameRange '0.2.8', 195 silly addNameRange '0.2.9', 195 silly addNameRange '0.2.10', 195 silly addNameRange '0.2.11', 195 silly addNameRange '0.2.12', 195 silly addNameRange '0.2.13', 195 silly addNameRange '0.2.14', 195 silly addNameRange '0.2.15', 195 silly addNameRange '0.3.0', 195 silly addNameRange '0.3.1', 195 silly addNameRange '0.3.2', 195 silly addNameRange '0.3.3', 195 silly addNameRange '0.3.4', 195 silly addNameRange '0.3.5', 195 silly addNameRange '0.3.6', 195 silly addNameRange '0.3.7', 195 silly addNameRange '0.3.8', 195 silly addNameRange '0.3.9', 195 silly addNameRange '0.3.10', 195 silly addNameRange '0.3.11', 195 silly addNameRange '0.3.12', 195 silly addNameRange '0.3.13a', 195 silly addNameRange '0.3.13', 195 silly addNameRange '0.3.14', 195 silly addNameRange '0.3.15', 195 silly addNameRange '0.3.16', 195 silly addNameRange '0.3.17', 195 silly addNameRange '0.4.0a', 195 silly addNameRange '0.4.0rc1', 195 silly addNameRange '0.4.0rc2', 195 silly addNameRange '0.4.0rc3', 195 silly addNameRange '0.4.0rc4', 195 silly addNameRange '0.4.0rc5', 195 silly addNameRange '0.4.0rc6', 195 silly addNameRange '0.4.0rc7' ] ] 196 verbose addNamed [ 'grunt', '0.3.17' ] 197 verbose addNamed [ '0.3.17', '0.3.17' ] 198 silly lockFile b40ea710-grunt-0-3-17 grunt@0.3.17 199 verbose lock grunt@0.3.17 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\b40ea710-grunt-0-3-17.lock 200 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\grunt\0.3.17\package\package.json 201 silly lockFile b40ea710-grunt-0-3-17 grunt@0.3.17 202 silly lockFile f7d73612-grunt-0-3-9 grunt@>=0.3.9 203 http 304 https://registry.npmjs.org/websocket 204 silly registry.get cb [ 304, 204 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 204 silly registry.get etag: '"CSKVJCAEW114LO1X76D9QH8NU"', 204 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 204 silly registry.get 'content-length': '0' } ] 205 verbose etag websocket from cache 206 silly addNameRange number 2 { name: 'websocket', range: '>=1.0.6- <1.1.0-', hasData: true } 207 silly addNameRange versions [ 'websocket', 207 silly addNameRange [ '0.0.1', 207 silly addNameRange '0.0.2', 207 silly addNameRange '0.0.3', 207 silly addNameRange '0.0.4', 207 silly addNameRange '0.0.5', 207 silly addNameRange '0.0.6', 207 silly addNameRange '0.0.7', 207 silly addNameRange '0.0.8', 207 silly addNameRange '0.0.9', 207 silly addNameRange '0.0.10', 207 silly addNameRange '0.0.11', 207 silly addNameRange '0.0.12', 207 silly addNameRange '0.0.13', 207 silly addNameRange '0.0.14', 207 silly addNameRange '0.0.15', 207 silly addNameRange '0.0.16', 207 silly addNameRange '0.0.17', 207 silly addNameRange '0.0.18', 207 silly addNameRange '0.0.19', 207 silly addNameRange '0.0.20', 207 silly addNameRange '1.0.0', 207 silly addNameRange '1.0.1', 207 silly addNameRange '1.0.2', 207 silly addNameRange '1.0.3', 207 silly addNameRange '1.0.4', 207 silly addNameRange '1.0.5', 207 silly addNameRange '1.0.6', 207 silly addNameRange '1.0.7', 207 silly addNameRange '1.0.8' ] ] 208 verbose addNamed [ 'websocket', '1.0.8' ] 209 verbose addNamed [ '1.0.8', '1.0.8' ] 210 silly lockFile d35370f3-websocket-1-0-8 websocket@1.0.8 211 verbose lock websocket@1.0.8 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\d35370f3-websocket-1-0-8.lock 212 http 304 https://registry.npmjs.org/buffers/0.1.1 213 silly registry.get cb [ 304, 213 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 213 silly registry.get etag: '"4NSZXPGWAKD4WGIZXIYZURXBH"', 213 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 213 silly registry.get 'content-length': '0' } ] 214 verbose etag buffers/0.1.1 from cache 215 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\websocket\1.0.8\package\package.json 216 silly lockFile d35370f3-websocket-1-0-8 websocket@1.0.8 217 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\buffers\0.1.1\package\package.json 218 silly lockFile 0e8f329a-websocket-1-0-6 websocket@~1.0.6 219 silly lockFile 053c3510-buffers-0-1-1 buffers@0.1.1 220 http 304 https://registry.npmjs.org/connect 221 silly registry.get cb [ 304, 221 silly registry.get { server: 'CouchDB/1.2.1 (Erlang OTP/R15B)', 221 silly registry.get etag: '"7JTJQXLJUJDVMPHCBJ7IX3752"', 221 silly registry.get date: 'Tue, 22 Jan 2013 06:56:06 GMT', 221 silly registry.get 'content-length': '0' } ] 222 verbose etag connect from cache 223 silly addNameRange number 2 { name: 'connect', range: '>=2.3.0- <2.4.0-', hasData: true } 224 silly addNameRange versions [ 'connect', 224 silly addNameRange [ '0.0.1', 224 silly addNameRange '0.0.2', 224 silly addNameRange '0.0.3', 224 silly addNameRange '0.0.4', 224 silly addNameRange '0.0.5', 224 silly addNameRange '0.0.6', 224 silly addNameRange '0.1.0', 224 silly addNameRange '0.2.0', 224 silly addNameRange '0.2.1', 224 silly addNameRange '0.2.2', 224 silly addNameRange '0.2.3', 224 silly addNameRange '0.2.4', 224 silly addNameRange '0.2.5', 224 silly addNameRange '0.2.6', 224 silly addNameRange '0.2.7', 224 silly addNameRange '0.3.0', 224 silly addNameRange '0.4.0', 224 silly addNameRange '0.5.0', 224 silly addNameRange '0.5.1', 224 silly addNameRange '0.5.2', 224 silly addNameRange '0.5.3', 224 silly addNameRange '0.5.4', 224 silly addNameRange '0.5.5', 224 silly addNameRange '0.5.6', 224 silly addNameRange '0.5.7', 224 silly addNameRange '0.5.8', 224 silly addNameRange '0.5.9', 224 silly addNameRange '0.5.10', 224 silly addNameRange '1.0.0', 224 silly addNameRange '1.0.1', 224 silly addNameRange '1.0.2', 224 silly addNameRange '1.0.3', 224 silly addNameRange '1.0.4', 224 silly addNameRange '1.0.5', 224 silly addNameRange '1.0.6', 224 silly addNameRange '1.1.0', 224 silly addNameRange '1.1.1', 224 silly addNameRange '1.1.2', 224 silly addNameRange '1.1.3', 224 silly addNameRange '1.1.4', 224 silly addNameRange '1.1.5', 224 silly addNameRange '1.2.0', 224 silly addNameRange '1.2.1', 224 silly addNameRange '1.2.2', 224 silly addNameRange '1.2.3', 224 silly addNameRange '1.3.0', 224 silly addNameRange '1.4.0', 224 silly addNameRange '1.4.1', 224 silly addNameRange '1.4.2', 224 silly addNameRange '1.4.3', 224 silly addNameRange '1.4.4', 224 silly addNameRange '1.4.5', 224 silly addNameRange '1.4.6', 224 silly addNameRange '1.5.0', 224 silly addNameRange '1.5.1', 224 silly addNameRange '1.5.2', 224 silly addNameRange '1.6.0', 224 silly addNameRange '1.6.1', 224 silly addNameRange '1.6.2', 224 silly addNameRange '1.6.3', 224 silly addNameRange '1.6.4', 224 silly addNameRange '1.7.0', 224 silly addNameRange '1.7.1', 224 silly addNameRange '1.7.2', 224 silly addNameRange '1.7.3', 224 silly addNameRange '1.8.0', 224 silly addNameRange '1.8.1', 224 silly addNameRange '1.8.2', 224 silly addNameRange '1.8.3', 224 silly addNameRange '1.8.4', 224 silly addNameRange '1.8.5', 224 silly addNameRange '2.0.0', 224 silly addNameRange '2.0.1', 224 silly addNameRange '2.0.2', 224 silly addNameRange '2.0.3', 224 silly addNameRange '1.8.6', 224 silly addNameRange '2.1.0', 224 silly addNameRange '2.1.1', 224 silly addNameRange '2.1.2', 224 silly addNameRange '1.8.7', 224 silly addNameRange '2.1.3', 224 silly addNameRange '2.2.0', 224 silly addNameRange '2.2.1', 224 silly addNameRange '2.2.2', 224 silly addNameRange '2.3.0', 224 silly addNameRange '2.3.1', 224 silly addNameRange '2.3.2', 224 silly addNameRange '2.3.3', 224 silly addNameRange '1.9.0', 224 silly addNameRange '1.9.1', 224 silly addNameRange '2.3.4', 224 silly addNameRange '2.3.5', 224 silly addNameRange '2.3.6', 224 silly addNameRange '2.3.7', 224 silly addNameRange '1.9.2', 224 silly addNameRange '2.3.8', 224 silly addNameRange '2.3.9', 224 silly addNameRange '2.4.0', 224 silly addNameRange '2.4.1', 224 silly addNameRange '2.4.2', 224 silly addNameRange '2.4.3', 224 silly addNameRange '2.4.4', 224 silly addNameRange '2.4.5', 224 silly addNameRange '2.4.6', 224 silly addNameRange '2.5.0', 224 silly addNameRange '2.6.0', 224 silly addNameRange '2.6.1', 224 silly addNameRange '2.6.2', 224 silly addNameRange '2.7.0', 224 silly addNameRange '2.7.1', 224 silly addNameRange '2.7.2' ] ] 225 verbose addNamed [ 'connect', '2.3.9' ] 226 verbose addNamed [ '2.3.9', '2.3.9' ] 227 silly lockFile 8ce732b1-connect-2-3-9 connect@2.3.9 228 verbose lock connect@2.3.9 C:\Users\Touchweb-31\AppData\Roaming\npm-cache\8ce732b1-connect-2-3-9.lock 229 verbose read json C:\Users\Touchweb-31\AppData\Roaming\npm-cache\connect\2.3.9\package\package.json 230 warn package.json connect@2.3.9 No README.md file found! 231 silly lockFile 8ce732b1-connect-2-3-9 connect@2.3.9 232 silly lockFile 84594d79-connect-2-3-0 connect@~2.3.0 233 silly resolved [ { name: 'http-proxy', 233 silly resolved version: '0.8.0', 233 silly resolved description: 'A full-featured http reverse proxy for node.js', 233 silly resolved author: { name: 'Charlie Robbins', email: 'charlie.robbins@gmail.com' }, 233 silly resolved contributors: [ [Object], [Object], [Object], [Object] ], 233 silly resolved repository: 233 silly resolved { type: 'git', 233 silly resolved url: 'http://github.com/nodejitsu/node-http-proxy.git' }, 233 silly resolved keywords: [ 'reverse', 'proxy', 'http' ], 233 silly resolved dependencies: { colors: '0.x.x', optimist: '0.2.x', pkginfo: '0.2.x' }, 233 silly resolved devDependencies: 233 silly resolved { request: '1.9.x', 233 silly resolved vows: '0.5.x', 233 silly resolved async: '0.1.x', 233 silly resolved 'socket.io': '0.6.x' }, 233 silly resolved main: './lib/node-http-proxy', 233 silly resolved bin: { 'node-http-proxy': './bin/node-http-proxy' }, 233 silly resolved scripts: 233 silly resolved { test: 'npm run-script test-http && npm run-script test-https && npm run-script test-core', 233 silly resolved 'test-http': 'vows --spec && vows --spec --target=secure', 233 silly resolved 'test-https': 'vows --spec --source=secure && vows --spec --source=secure --target=secure', 233 silly resolved 'test-core': 'test/core/run' }, 233 silly resolved engines: { node: '>= 0.6.6' }, 233 silly resolved readme: '# node-http-proxy\n\n<img src="http://i.imgur.com/8fTt9.png" />\n\n## Battle-hardened node.js http proxy\n\n### Features\n\n\* Reverse proxies incoming http.ServerRequest streams\n\* Can be used as a CommonJS module in node.js\n\* Uses event buffering to support application latency in proxied requests\n\* Reverse or Forward Proxy based on simple JSON-based configuration\n\* Supports [WebSockets][1]\n\* Supports [HTTPS][2]\n\* Minimal request overhead and latency\n\* Full suite of functional tests\n\* Battled-hardened through __production usage__ @ [nodejitsu.com][0]\n\* Written entirely in Javascript\n\* Easy to use API\n\n### When to use node-http-proxy\n\nLet\'s suppose you were running multiple http application servers, but you only wanted to expose one machine to the internet. You could setup node-http-proxy on that one machine and then reverse-proxy the incoming http requests to locally running services which were not exposed to the outside network. \n\n### Installing npm (node package manager)\n\n
\ncurl http://npmjs.org/install.sh | sh\n\n\n### Installing node-http-proxy\n\n
\nnpm install http-proxy\n\n\n## Using node-http-proxy\n\nThere are several ways to use node-http-proxy; the library is designed to be flexible so that it can be used by itself, or in conjunction with other node.js libraries / tools:\n\n1. Standalone HTTP Proxy server\n2. Inside of another HTTP server (like Connect)\n3. In conjunction with a Proxy Routing Table\n4. As a forward-proxy with a reverse proxy \n5. From the command-line as a long running process\n6. customized with 3rd party middleware.\n\nIn each of these scenarios node-http-proxy can handle any of these types of requests:\n\n1. HTTP Requests (http://)\n2. HTTPS Requests (https://)\n3. WebSocket Requests (ws://)\n4. Secure WebSocket Requests (wss://)\n\nSee the [examples][3] for more working sample code.\n\n### Setup a basic stand-alone proxy server\n\n
js\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n//\n// Create your proxy server\n//\nhttpProxy.createServer(9000, \'localhost\').listen(8000);\n\n//\n// Create your target server\n//\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied!\' + \'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000);\n\n\n### Setup a stand-alone proxy server with custom server logic\n\n
js\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n \n//\n// Create a proxy server with custom application logic\n//\nhttpProxy.createServer(function (req, res, proxy) {\n //\n // Put your custom server logic here\n //\n proxy.proxyRequest(req, res, {\n host: \'localhost\',\n port: 9000\n });\n}).listen(8000);\n\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied: \' + req.url +\'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000);\n\n\n### Setup a stand-alone proxy server with latency (e.g. IO, etc)\n\n
js\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n\n//\n// Create a proxy server with custom application logic\n//\nhttpProxy.createServer(function (req, res, proxy) {\n //\n // Buffer the request so thatdata
andend
events\n // are not lost during async operation(s).\n //\n var buffer = httpProxy.buffer(req);\n \n //\n // Wait for two seconds then respond: this simulates\n // performing async actions before proxying a request\n //\n setTimeout(function () {\n proxy.proxyRequest(req, res, {\n host: \'localhost\',\n port: 9000, \n buffer: buffer\n }); \n }, 2000);\n}).listen(8000);\n\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied: \' + req.url +\'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000);\n\n\n### Proxy requests within another http server\n\n
js\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n \n//\n// Create a new instance of HttProxy to use in your server\n//\nvar proxy = new httpProxy.RoutingProxy();\n\n//\n// Create a regular http server and proxy its handler\n//\nhttp.createServer(function (req, res) {\n //\n // Put your custom server logic here, then proxy\n //\n proxy.proxyRequest(req, res, {\n host: \'localhost\',\n port: 9000\n });\n}).listen(8001);\n\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'request successfully proxied: \' + req.url +\'\n\' + JSON.stringify(req.headers, true, 2));\n res.end();\n}).listen(9000); \n\n\n### Proxy requests using a ProxyTable\nA Proxy Table is a simple lookup table that maps incoming requests to proxy target locations. Take a look at an example of the options you need to pass to httpProxy.createServer:\n\n
js\nvar options = {\n router: {\n \'foo.com/baz\': \'127.0.0.1:8001\',\n \'foo.com/buz\': \'127.0.0.1:8002\',\n \'bar.com/buz\': \'127.0.0.1:8003\'\n }\n};\n\n\nThe above route table will take incoming requests to \'foo.com/baz\' and forward them to \'127.0.0.1:8001\'. Likewise it will take incoming requests to \'foo.com/buz\' and forward them to \'127.0.0.1:8002\'. The routes themselves are later converted to regular expressions to enable more complex matching functionality. We can create a proxy server with these options by using the following code:\n\n
js\nvar proxyServer = httpProxy.createServer(options);\nproxyServer.listen(80);\n\n\n### Proxy requests using a \'Hostname Only\' ProxyTable\nAs mentioned in the previous section, all routes passes to the ProxyTable are by default converted to regular expressions that are evaluated at proxy-time. This is good for complex URL rewriting of proxy requests, but less efficient when one simply wants to do pure hostname routing based on the HTTP \'Host\' header. If you are only concerned with hostname routing, you change the lookup used by the internal ProxyTable:\n\n
js\nvar options = {\n hostnameOnly: true,\n router: {\n \'foo.com\': \'127.0.0.1:8001\',\n \'bar.com\': \'127.0.0.1:8002\'\n }\n}\n\n\nNotice here that I have not included paths on the individual domains because this is not possible when using only the HTTP \'Host\' header. Care to learn more? See [RFC2616: HTTP/1.1, Section 14.23, "Host"][4].\n\n### Proxy requests with an additional forward proxy\nSometimes in addition to a reverse proxy, you may want your front-facing server to forward traffic to another location. For example, if you wanted to load test your staging environment. This is possible when using node-http-proxy using similar JSON-based configuration to a proxy table: \n\n
js\nvar proxyServerWithForwarding = httpProxy.createServer(9000, \'localhost\', {\n forward: {\n port: 9000,\n host: \'staging.com\'\n }\n});\nproxyServerWithForwarding.listen(80);\n\n\nThe forwarding option can be used in conjunction with the proxy table options by simply including both the \'forward\' and \'router\' properties in the options passed to \'createServer\'.\n\n\n## Using HTTPS\nYou have all the full flexibility of node-http-proxy offers in HTTPS as well as HTTP. The two basic scenarios are: with a stand-alone proxy server or in conjunction with another HTTPS server.\n\n### Proxying to HTTP from HTTPS\nThis is probably the most common use-case for proxying in conjunction with HTTPS. You have some front-facing HTTPS server, but all of your internal traffic is HTTP. In this way, you can reduce the number of servers to which your CA and other important security files are deployed and reduce the computational overhead from HTTPS traffic. \n\nUsing HTTPS in
node-http-proxyis relatively straight-forward:\n \n
js\nvar fs = require(\'fs\'),\n http = require(\'http\'),\n https = require(\'https\'),\n httpProxy = require(\'http-proxy\');\n \nvar options = {\n https: {\n key: fs.readFileSync(\'path/to/your/key.pem\', \'utf8\'),\n cert: fs.readFileSync(\'path/to/your/cert.pem\', \'utf8\')\n }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(8000, \'localhost\', options).listen(8001);\n\n//\n// Create an instance of HttpProxy to use with another HTTPS server\n//\nvar proxy = new httpProxy.HttpProxy({\n target: {\n host: \'localhost\', \n port: 8000\n }\n});\nhttps.createServer(options.https, function (req, res) {\n proxy.proxyRequest(req, res)\n}).listen(8002);\n\n//\n// Create the target HTTPS server for both cases\n//\nhttp.createServer(function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'hello https\n\');\n res.end();\n}).listen(8000);\n\n\n### Proxying to HTTPS from HTTPS\nProxying from HTTPS to HTTPS is essentially the same as proxying from HTTPS to HTTP, but you must include the
targetoption in when calling
httpProxy.createServeror instantiating a new instance of
HttpProxy.\n\n
js\nvar fs = require(\'fs\'),\n https = require(\'https\'),\n httpProxy = require(\'http-proxy\');\n \nvar options = {\n https: {\n key: fs.readFileSync(\'path/to/your/key.pem\', \'utf8\'),\n cert: fs.readFileSync(\'path/to/your/cert.pem\', \'utf8\')\n },\n target: {\n https: true // This could also be an Object with key and cert properties\n }\n};\n\n//\n// Create a standalone HTTPS proxy server\n//\nhttpProxy.createServer(8000, \'localhost\', options).listen(8001);\n\n//\n// Create an instance of HttpProxy to use with another HTTPS server\n//\nvar proxy = new httpProxy.HttpProxy({ \n target: {\n host: \'localhost\', \n port: 8000,\n https: true\n }\n});\n\nhttps.createServer(options.https, function (req, res) {\n proxy.proxyRequest(req, res);\n}).listen(8002);\n\n//\n// Create the target HTTPS server for both cases\n//\nhttps.createServer(options.https, function (req, res) {\n res.writeHead(200, { \'Content-Type\': \'text/plain\' });\n res.write(\'hello https\n\');\n res.end();\n}).listen(8000);\n\n## Middleware\n\n
node-http-proxynow supports connect middleware. Add middleware functions to your createServer call:\n\n
js\nhttpProxy.createServer(\n require(\'connect-gzip\').gzip(),\n 9000, \'localhost\'\n).listen(8000);\n\n\n## Proxying WebSockets\nWebsockets are handled automatically when using
httpProxy.createServer(), but if you want to use it in conjunction with a stand-alone HTTP + WebSocket (such as [socket.io][5]) server here\'s how:\n\n
js\nvar http = require(\'http\'),\n httpProxy = require(\'http-proxy\');\n \n//\n// Create an instance of node-http-proxy\n//\nvar proxy = new httpProxy.HttpProxy(\n target: {\n host: \'localhost\',\n port: 8000\n });\n\nvar server = http.createServer(function (req, res) {\n //\n // Proxy normal HTTP requests\n //\n proxy.proxyRequest(req, res);\n});\n\nserver.on(\'upgrade\', function(req, socket, head) {\n //\n // Proxy websocket requests too\n //\n proxy.proxyWebSocketRequest(req, socket, head);\n});\n\n\n### Configuring your Socket limits\n\nBy default,
node-http-proxywill set a 100 socket limit for all
host:portproxy targets. You can change this in two ways: \n\n1. By passing the
maxSocketsoption to
httpProxy.createServer()\n2. By calling
httpProxy.setMaxSockets(n), where
nis the number of sockets you with to use. \n\n## Using node-http-proxy from the command line\nWhen you install this package with npm, a node-http-proxy binary will become available to you. Using this binary is easy with some simple options:\n\n
js\nusage: node-http-proxy [options] \n\nAll options should be set with the syntax --option=value\n\noptions:\n --port PORT Port that the proxy server should run on\n --target HOST:PORT Location of the server the proxy will target\n --config OUTFILE Location of the configuration file for the proxy server\n --silent Silence the log output from the proxy server\n -h, --help You\'re staring at it\n\n\n<br/>\n## Why doesn\'t node-http-proxy have more advanced features like x, y, or z?\n\nIf you have a suggestion for a feature currently not supported, feel free to open a [support issue][6]. node-http-proxy is designed to just proxy http requests from one server to another, but we will be soon releasing many other complimentary projects that can be used in conjunction with node-http-proxy.\n\n## Run Tests\nThe test suite is designed to fully cover the combinatoric possibilities of HTTP and HTTPS proxying:\n\n1. HTTP --> HTTP\n2. HTTPS --> HTTP\n3. HTTPS --> HTTPS\n4. HTTP --> HTTPS\n\n
\nvows test/-test.js --spec\nvows test/-test.js --spec --https\nvows test/-test.js --spec --https --target=https\nvows test/-test.js --spec --target=https\n\n\n<br/>\n### License\n\n(The MIT License)\n\nCopyright (c) 2010 Charlie Robbins, Mikeal Rogers, Fedor Indutny, & Marak Squires\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n"Software"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n[0]: http://nodejitsu.com\n[1]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/web-socket-proxy.js\n[2]: https://github.com/nodejitsu/node-http-proxy/blob/master/examples/basic-proxy-https.js\n[3]: https://github.com/nodejitsu/node-http-proxy/tree/v0.5.0/examples\n[4]: http://www.ietf.org/rfc/rfc2616.txt\n[5]: http://socket.io\n[6]: http://github.com/nodejitsu/node-http-proxy/issues\n', 233 silly resolved _id: 'http-proxy@0.8.0', 233 silly resolved _from: 'http-proxy@0.8.0' }, 233 silly resolved { name: 'grunt', 233 silly resolved description: 'A task-based command line build tool for JavaScript projects.', 233 silly resolved version: '0.3.17', 233 silly resolved author: { name: '"Cowboy" Ben Alman', url: 'http://benalman.com/' }, 233 silly resolved homepage: 'http://github.com/gruntjs/grunt', 233 silly resolved repository: { type: 'git', url: 'git://github.com/gruntjs/grunt.git' }, 233 silly resolved bugs: { url: 'http://github.com/gruntjs/grunt/issues' }, 233 silly resolved licenses: [ [Object] ], 233 silly resolved main: 'lib/grunt', 233 silly resolved bin: { grunt: 'bin/grunt' }, 233 silly resolved scripts: { test: 'grunt test' }, 233 silly resolved engines: { node: '>= 0.6.0' }, 233 silly resolved preferGlobal: true, 233 silly resolved keywords: 233 silly resolved [ 'async', 233 silly resolved 'cli', 233 silly resolved 'minify', 233 silly resolved 'uglify', 233 silly resolved 'build', 233 silly resolved 'underscore', 233 silly resolved 'unit', 233 silly resolved 'test', 233 silly resolved 'qunit', 233 silly resolved 'nodeunit', 233 silly resolved 'server', 233 silly resolved 'init', 233 silly resolved 'scaffold', 233 silly resolved 'make', 233 silly resolved 'jake', 233 silly resolved 'tool' ], 233 silly resolved dependencies: 233 silly resolved { async: '~0.1.18', 233 silly resolved colors: '~0.6.0', 233 silly resolved connect: '~2.4.4', 233 silly resolved dateformat: '1.0.2-1.2.3', 233 silly resolved 'glob-whatev': '~0.1.4', 233 silly resolved hooker: '~0.2.3', 233 silly resolved jshint: '~0.9.1', 233 silly resolved nodeunit: '~0.7.4', 233 silly resolved nopt: '~1.0.10', 233 silly resolved prompt: '~0.1.12', 233 silly resolved semver: '~1.0.13', 233 silly resolved 'uglify-js': '~1.3.3', 233 silly resolved underscore: '~1.2.4', 233 silly resolved 'underscore.string': '~2.1.1', 233 silly resolved temporary: '~0.0.4', 233 silly resolved 'gzip-js': '~0.3.1' }, 233 silly resolved devDependencies: {}, 233 silly resolved readme: '# grunt\nGrunt is a task-based command line build tool for JavaScript projects.\n\n_Grunt is currently in beta. While I\'m already using it on multiple projects, it might have a minor issue or two. And things might change before its final release, based on your feedback. Please try it out in a project, and [make suggestions][issues] or [report bugs][issues]!_\n\n## Getting started\nBe sure to read the [getting started guide](/gruntjs/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project. In addition, check out the [example gruntfiles](/gruntjs/grunt/blob/master/docs/example_gruntfiles.md) which highlight a number of fairly common configurations.\n\n## Built-in tasks\nAs of now, grunt has the following predefined tasks that you can use in your project:\n\n\* [concat](/gruntjs/grunt/blob/master/docs/task_concat.md) - Concatenate files.\n\* [init](/gruntjs/grunt/blob/master/docs/task_init.md) - Generate project scaffolding from a predefined template.\n\* [lint](/gruntjs/grunt/blob/master/docs/task_lint.md) - Validate files with [JSHint][jshint].\n\* [min](/gruntjs/grunt/blob/master/docs/task_min.md) - Minify files with [UglifyJS][uglify].\n\* [qunit](/gruntjs/grunt/blob/master/docs/task_qunit.md) - Run [QUnit][qunit] unit tests in a headless [PhantomJS][phantom] instance.\n\* [server](/gruntjs/grunt/blob/master/docs/task_server.md) - Start a static web server.\n\* test - Run unit tests with [nodeunit][nodeunit].\n\* watch - Run predefined tasks whenever watched files change.\n\n_(More documentation forthcoming)_\n\n## Custom tasks\nIn addition to the built-in tasks, you can create your own tasks. Don\'t like a built-in task\'s default behavior? Override it. Check out the [grunt API documentation](/gruntjs/grunt/blob/master/docs/api.md) and the [built-in tasks source](/gruntjs/grunt/blob/master/tasks) for everything you need to know about creating custom tasks.\n\n## Documentation\nTake a look at the [documentation table of contents][docs] for all the things.\n\n## Why does grunt exist?\nDoing all this stuff manually is a total pain, and building all this stuff into a gigantic Makefile / Jakefile / Cakefile / Rakefile / ?akefile that\'s maintained across all my projects was also becoming a total pain. Since I always found myself performing the same tasks over and over again, for every project, it made sense to build a task-based build tool.\n\nBeing primarily a JavaScript developer, I decided to use [Node.js][node] and [npm][npm] because the dependencies I most care about ([JSHint][jshint] and [UglifyJS][uglify]) were already npm modules. That being said, while Node.js was designed to support highly-concurrent asynchronous-IO-driven web servers, it was clearly NOT designed to make command-line build tools. But none of that matters, because grunt works. Just install it and see.\n\n## Installing grunt\n\nGrunt is available as an [npm][npm] module. If you install grunt globally via
npm install -g grunt, it will be available for use in all of your projects. Once grunt has been installed, you can type
grunt --helpat the command line for more information. And if you want to see grunt "grunt" itself, cd into grunt\'s directory and type
grunt\n\n_Note: in Windows, you may need to run grunt as
grunt.cmd. See the [FAQ](/gruntjs/grunt/blob/master/docs/faq.md) for more Windows-specific information._\n\nFor projects already using grunt, you\'re done. Otherwise, if you\'re adding grunt to an existing project or starting from scratch, check out the [getting started guide](/gruntjs/grunt/blob/master/docs/getting_started.md), which is a complete guide to configuring grunt for your project.\n\n## Release History\n_(Until v1.0.0, this will only be updated when major or breaking changes are made)_\n\n\* 2012/10/15 - v0.3.17 - Updating JSHint to 0.9.1. Better stack traces. And a few QUnit task fixes.\n\* 2012/10/01 - v0.3.16 - Updated URLs to reflect new website and source location. Tweaks to the "jquery" and "commonjs" init templates. Fixed an issue when exiting due to warning or fatal error.\n\* 2012/09/04 - v0.3.15 - Fixing a minor problem with renaming multi tasks.\n\* 2012/08/29 - v0.3.14 - Grunt plugins lacking package.json keywords should work again.\n\* 2012/08/27 - v0.3.13 - Fixed Node.js 0.8.x path.existsSync warning. Updated connect, nodeunit, uglify-js deps to latest. Updated docs. Grunt plugins generated with init:gruntplugin no longer include grunt as a dependency. Added preliminary support for "collection" plugins.\n\* 2012/07/30 - v0.3.12 - Fixing a bug in node 0.8.x where utils.spawn would terminate before receiving all child stdout.\n\* 2012/06/25 - v0.3.10 - Updating a few dependencies to work with node 0.8.x (0.6.x should still work).\n\* 2012/04/18 - v0.3.9 - The min task (via the uglify helper) now appends a semicolon to the end of the generated source.\n\* 2012/04/06 - v0.3.8 - Init template tweaks. Anchor links added to docs, along with grunt-internal docs task to generate them. The watch task now supports multiple targets with separate wildcards and tasks. Locally-installed grunt will override global grunt even when run from global "grunt" script.\n\* 2012/04/01 - v0.3.7 - Tweaked the behavior of the init template
exports.warnOnproperty and added more init template documentation. Fixed duplicate PhantomJS debug output in qunit task. Added useful nodeunit and qunit comments into init template generated test .js files.\n\* 2012/03/28 - v0.3.6 - Fixed a
--helpscreen issue, a few grunt plugin related issues, and attempted to improve the overall grunt plugin docs and API.\n\* 2012/03/27 - v0.3.5 - Fixed a handful of weird Windows issues. Changed default m/d/yyyy dates to yyyy-mm-dd ISO 8601. Fixed some init task bugs, docs errata, and added a lot more content to the init task docs.\n\* 2012/03/26 - v0.3.3 - Added a "gruntfile" init template. Create a basic gruntfile in seconds with
grunt init:gruntfile. A few other minor fixes.\n\* 2012/03/25 - v0.3.2 - Init tasks can now specify a file matching wildcard for the initial "files exist" warning. The jQuery init template now has jQuery 1.7.2. Fixed a bug in the
task.expand*methods.\n\* 2012/03/25 - v0.3.1 - Added a few methods. Substantially reworked the init task and templates.\n\* 2012/03/23 - v0.3.0 - Too many changes to list. But in brief: completely reorganized the API, removed all globals, added docs and examples for nearly everything, built a preliminary plugin system (that still needs to be tested). PLEASE RTFM OK? THX U.\n\* 2012/02/03 - v0.2.14 - Added a server task (which starts a static webserver for your tasks). The qunit task now uses PhantomJS instead of Zombie.js (4768 of 4971 jQuery unit test pass, neat), and supports both file wildcards as well as http:// or https:// urls. (static webserver, anyone?). Grunt should no longer "hang" when done.\n\* 2012/01/29 - v0.2.5 - Added a "qunit" task as well as an init "jquery" template (as of now, there are also "node" and "commonjs" init templates).\n\* 2012/01/22 - v0.2.1 - Removed handlebars, templates are universally handled by underscore now. Changed init task template tags from <% %> to {% %}. Banners beginning with /_! will no longer be stripped.\n_ 2012/01/22 - v0.2.0 - Added "init" task with a sample template, reworked a lot of code. Hopefully it\'s backwards-compatible.\n\* 2012/01/11 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2012 "Cowboy" Ben Alman \nLicensed under the MIT license. \nhttps://github.com/gruntjs/grunt/blob/master/LICENSE-MIT\n\n\n[docs]: /gruntjs/grunt/blob/master/docs/toc.md\n[docs-init]: /gruntjs/grunt/blob/master/docs/task_init.md\n[issues]: /gruntjs/grunt/issues\n\n[node]: http://nodejs.org/\n[npm]: http://npmjs.org/\n[jshint]: http://www.jshint.com/\n[uglify]: https://github.com/mishoo/UglifyJS/\n[nodeunit]: https://github.com/caolan/nodeunit\n[qunit]: http://docs.jquery.com/QUnit\n[phantom]: http://www.phantomjs.org/\n', 233 silly resolved _id: 'grunt@0.3.17', 233 silly resolved _from: 'grunt@>=0.3.9' }, 233 silly resolved { name: 'websocket', 233 silly resolved description: 'Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.', 233 silly resolved keywords: 233 silly resolved [ 'websocket', 233 silly resolved 'websockets', 233 silly resolved 'socket', 233 silly resolved 'networking', 233 silly resolved 'comet', 233 silly resolved 'push' ], 233 silly resolved author: 233 silly resolved { name: 'Brian McKelvey', 233 silly resolved email: 'brian@worlize.com', 233 silly resolved url: 'https://www.worlize.com/' }, 233 silly resolved version: '1.0.8', 233 silly resolved repository: 233 silly resolved { type: 'git', 233 silly resolved url: 'http://github.com/Worlize/WebSocket-Node.git' }, 233 silly resolved engines: { node: '>=0.6.10' }, 233 silly resolved config: { verbose: false }, 233 silly resolved scripts: { install: 'node install.js' }, 233 silly resolved main: 'index', 233 silly resolved directories: { lib: './lib' }, 233 silly resolved readme: 'WebSocket Client & Server Implementation for Node\n=================================================\n\nOverview\n--------\nThis is a (mostly) pure JavaScript implementation of the WebSocket protocol versions 8 and 13 for Node. There are some example client and server applications that implement various interoperability testing protocols in the "test" folder.\n\nCurrent News\n------------\n\n- As of version 1.0.7, **_Native modules are now optional.**_ If they fail to compile, WebSocket-Node will still work but will not verify that received UTF-8 data is valid, and xor masking/unmasking of payload data for security purposes will not be as efficient as it is performed in JavaScript instead of native code.\n\n- Version 1.0.7 requires node v0.6.10, since that\'s the first version that I can manage to successfully build the native extensions with node-gyp through npm. If anyone can figure out how to build native extensions in a way that works with both older and newer versions of Node, I\'m happy to accept a patch!\n\n- If you want to support Unicode characters outside the Basic Multilingual Plane (BMP) you must use Node v0.8.x, which added support for representing these characters as surrogate pairs inside JavaScript strings. Under Node v0.6.x, characters with code points greater than 65535 (greater than a 16-bit unsigned value) will have their code point truncated, resulting in seemingly unpredictable characters being returned.\n\n- WebSocket-Node was already [one of the fastest WebSocket libraries for Node](http://hobbycoding.posterous.com/websockt-binary-data-transfer-benchmark-rsult), and thanks to a small patch from [kazuyukitanimura](https://github.com/kazuyukitanimura), this library is now [up to 200% faster](http://hobbycoding.posterous.com/how-to-make-websocket-work-2x-faster-on-nodej) as of version 1.0.3!\n\nChangelog\n---------\n\nCurrent Version: 1.0.7\n\n[View the changelog](https://github.com/Worlize/WebSocket-Node/blob/master/CHANGELOG.md)\n\nBrowser Support\n---------------\n\n\* Firefox 7-9 (Old) (Protocol Version 8)\n\* Firefox 10+ (Protocol Version 13)\n\* Chrome 14,15 (Old) (Protocol Version 8)\n\* Chrome 16+ (Protocol Version 13)\n\* Internet Explorer 10 (Preview) (Protocol Version 13)\n\* Safari 6 (Protocol Version 13)\n\n**_Safari older than 6.0 is not supported since it uses a very old draft of WebSockets**_\n\nI made a decision early on to explicitly avoid maintaining multiple slightly different copies of the same code just to support the browsers currently in the wild. The major browsers that support WebSocket are on a rapid-release schedule (with the exception of Safari) and now that the final version of the protocol has been [published as an official RFC](http://datatracker.ietf.org/doc/rfc6455/), it won\'t be long before support in the wild stabilizes on that version. My client application is in Flash/ActionScript 3, so for my purposes I\'m not dependent on the browser implementations. _I made an exception to my stated intention here to support protocol version 8 along with 13, since only one minor thing changed and it was trivial to handle conditionally._ The library now interoperates with other clients and servers implementing draft -08 all the way up through the final RFC.\n\n**_If you need to simultaneously support legacy browser versions that had implemented draft-75/draft-76/draft-00, take a look here: https://gist.github.com/1428579**_\n\nFor a WebSocket client written in ActionScript 3, see my [AS3WebScocket](https://github.com/Worlize/AS3WebSocket) project.\n\nBenchmarks\n----------\nThere are some basic benchmarking sections in the Autobahn test suite. I\'ve put up a [benchmark page](http://worlize.github.com/WebSocket-Node/benchmarks/) that shows the results from the Autobahn tests run against AutobahnServer 0.4.10, WebSocket-Node 1.0.2, WebSocket-Node 1.0.4, and ws 0.3.4.\n\nAutobahn Tests\n--------------\nThe very complete [Autobahn Test Suite](http://www.tavendo.de/autobahn/testsuite.html) is used by most WebSocket implementations to test spec compliance and interoperability.\n\n**Note about failing UTF-8 tests:** There are some UTF-8 validation tests that fail due to the fact that according to the ECMAScript spec, V8 and subsequently Node cannot support Unicode characters outside the BMP (Basic Multilingual Plane.) JavaScript\'s String.fromCharCode() function truncates all code points to 16-bit, so you cannot decode higher plane code points in JavaScript. Google\'s V8 uses UCS-2 as its internal string representation, and [they have no intention to change that any time soon](http://code.google.com/p/v8/issues/detail?id=761), so it is not possible to decode higher plane code points in C++, to the best of my knowledge, because those characters are not representable in UCS-2 anyway. The Autobahn Test Suite requires that all valid Unicode code points survive a complete round trip, including code points that represent non-existent characters and characters above the BMP. Since JavaScript cannot represent any characters with a code point >= 65535, no JavaScript implementation of WebSockets can pass these UTF-8 tests without using a cheat, such as echoing back the original binary data without decoding and re-encoding the UTF-8 data, which is not representative of real-world practical application. **_I do not consider this to be a problem in the majority of circumstances**_ since it is very unlikely to cause major issues in any real-world application as long as you don\'t need to use characters outside the BMP.\n**Update:** This issue seems to have been resolved in the version of V8 used in Node 0.8.x. I believe they are using surrogate-pairs to accommodate characters that are outside the BMP, but I haven\'t looked into it.\n\n- [View Server Test Results](http://worlize.github.com/WebSocket-Node/test-report/servers/)\n- [View Client Test Results](http://worlize.github.com/WebSocket-Node/test-report/clients/)\n\nNotes\n-----\nThis library has been used in production on [worlize.com](https://www.worlize.com) since April 2011 and seems to be stable. Your mileage may vary.\n\n**Tested with the following node versions:**\n\n- 0.6.18\n- 0.8.6\n\nIt may work in earlier or later versions but I\'m not actively testing it outside of the listed versions. YMMV.\n\nDocumentation\n=============\n\nFor more complete documentation, see the [Documentation Wiki](https://github.com/Worlize/WebSocket-Node/wiki/Documentation).\n\nInstallation\n------------\n\nA few users have reported difficulties building the native extensions without first manually installing node-gyp. If you have trouble building the native extensions, make sure you\'ve got a C++ compiler, and have done
npm install -g node-gyp` first. \n\nNative extensions are optional, however, and WebSocket-Node will work even if the extensions cannot be compiled.\n\nIn your project root:\n\n $ npm install websocket\n \nThen in your code:\n\