From 3957c5ac3c287026e6e05e1233a373c5ea656066 Mon Sep 17 00:00:00 2001 From: Nathan Smith Date: Mon, 6 May 2013 14:57:26 -0400 Subject: [PATCH] structure -- grunt watch and upgrade. Former-commit-id: b1bb0eafa6fcfc488e43dd5a11a157eb99d6ec37 Former-commit-id: 5fa74a312cfbcecd2d28a09691771261d6fdadb1 --- node/Gruntfile.js | 43 +++- node/docpad.coffee | 28 +-- node/node_modules/.bin/grunt | 1 - .../node_modules/coffee-script/package.json | 4 +- .../node_modules/coffee-script/package.json | 4 +- .../eco/node_modules/strscan/package.json | 3 - .../node_modules/eco/package.json | 3 - .../node_modules/wordwrap/package.json | 3 - .../node_modules/optimist/package.json | 3 - .../uglify-js/package.json.REMOVED.git-id | 2 +- .../node_modules/handlebars/package.json | 3 - .../node_modules/coffee-script/package.json | 4 +- .../node_modules/htmlparser/package.json | 1 + .../node_modules/html2coffeekup/package.json | 3 - .../jade/node_modules/commander/package.json | 3 - .../jade/node_modules/mkdirp/package.json | 3 - .../node_modules/jade/package.json | 3 - .../docpad-plugin-livereload/README.md | 3 + .../node_modules/base64id/package.json | 9 +- .../node_modules/policyfile/package.json | 6 +- .../socket.io/node_modules/redis/package.json | 9 +- .../node_modules/zeparser/package.json | 9 +- .../active-x-obfuscator/package.json | 9 +- .../uglify-js/package.json.REMOVED.git-id | 2 +- .../node_modules/ws/build/Makefile | 86 ++++--- .../Release/.deps/Release/bufferutil.node.d | 2 +- .../Release/obj.target/bufferutil.node.d | 1 - .../obj.target/bufferutil/src/bufferutil.o.d | 42 ++-- .../Release/obj.target/validation.node.d | 1 - .../obj.target/validation/src/validation.o.d | 42 ++-- .../Release/.deps/Release/validation.node.d | 2 +- .../ws/build/Release/bufferutil.node | Bin 20261 -> 18260 bytes .../build/Release/obj.target/bufferutil.node | Bin 20261 -> 0 bytes .../obj.target/bufferutil/src/bufferutil.o | Bin 19424 -> 0 bytes .../src/bufferutil.o.REMOVED.git-id | 1 + .../build/Release/obj.target/validation.node | Bin 20199 -> 0 bytes .../obj.target/validation/src/validation.o | Bin 17280 -> 0 bytes .../src/validation.o.REMOVED.git-id | 1 + .../ws/build/Release/validation.node | Bin 20199 -> 18372 bytes .../node_modules/ws/build/binding.Makefile | 2 +- .../ws/build/bufferutil.target.mk | 116 ++++++---- .../node_modules/ws/build/config.gypi | 138 ++++++------ .../node_modules/ws/build/gyp-mac-tool | 211 ++++++++++++++++++ .../ws/build/validation.target.mk | 116 ++++++---- .../ws/node_modules/commander/package.json | 9 +- .../ws/node_modules/options/package.json | 9 +- .../ws/node_modules/tinycolor/package.json | 9 +- .../node_modules/ws/package.json | 9 +- .../node_modules/xmlhttprequest/package.json | 10 +- .../socket.io-client/package.json | 9 +- .../node_modules/socket.io/package.json | 9 +- .../out/livereload.plugin.js | 9 +- .../docpad-plugin-livereload/package.json | 12 +- .../node_modules/nib/package.json | 3 - .../stylus/node_modules/debug/package.json | 6 +- .../stylus/node_modules/mkdirp/package.json | 3 - .../node_modules/stylus/package.json | 3 - .../node_modules/traverse/package.json | 3 - .../node_modules/hashish/package.json | 3 - .../node_modules/stack-trace/package.json | 3 - .../node_modules/xmlbuilder/package.json | 2 +- .../docpad/node_modules/airbrake/package.json | 3 - .../canihaz/node_modules/mkdirp/package.json | 3 - .../canihaz/node_modules/which/package.json | 6 +- .../docpad/node_modules/canihaz/package.json | 3 - .../node_modules/ansicolors/.npmignore | 15 ++ .../node_modules/ansicolors/.travis.yml | 4 + .../node_modules/ansicolors/LICENSE | 23 ++ .../node_modules/ansicolors/README.md | 42 ++++ .../node_modules/ansicolors/ansicolors.js | 55 +++++ .../node_modules/ansicolors/package.json | 30 +++ .../ansicolors/test/ansicolors.js | 55 +++++ .../node_modules/ansistyles/.npmignore | 15 ++ .../node_modules/ansistyles/.travis.yml | 4 + .../node_modules/ansistyles/LICENSE | 23 ++ .../node_modules/ansistyles/README.md | 69 ++++++ .../node_modules/ansistyles/ansistyles.js | 38 ++++ .../node_modules/ansistyles/package.json | 30 +++ .../ansistyles/test/ansistyles.js | 15 ++ .../out/lib/caterpillar-human.js | 18 +- .../caterpillar-human/package.json | 12 +- .../node_modules/readable-stream/package.json | 3 - .../node_modules/es5-ext/package.json | 4 +- .../node_modules/event-emitter/package.json | 4 +- .../node_modules/next-tick/package.json | 4 +- .../node_modules/memoizee/package.json | 4 +- .../cli-color/package.json.REMOVED.git-id | 2 +- .../node_modules/keypress/package.json | 3 - .../node_modules/commander/package.json | 3 - .../node_modules/coffee-script/package.json | 4 +- .../cson/node_modules/joe/package.json | 2 +- .../node_modules/coffee-script/package.json | 4 +- .../cson/node_modules/js2coffee/package.json | 3 - .../express/History.md.REMOVED.git-id | 2 +- .../docpad/node_modules/express/client.js | 25 --- .../node_modules/express/lib/express.js | 2 +- .../node_modules/buffer-crc32/package.json | 3 - .../node_modules/commander/package.json | 3 - .../node_modules/connect/lib/connect.js | 2 +- .../node_modules/formidable/package.json | 2 +- .../connect/node_modules/pause/package.json | 3 +- .../express/node_modules/connect/package.json | 11 +- .../express/node_modules/cookie/package.json | 3 - .../express/node_modules/debug/package.json | 3 - .../express/node_modules/methods/package.json | 2 +- .../express/node_modules/mkdirp/package.json | 3 - .../express/node_modules/qs/index.js | 46 +++- .../express/node_modules/qs/package.json | 14 +- .../send/node_modules/mime/package.json | 3 - .../docpad/node_modules/express/package.json | 11 +- .../docpad/node_modules/express/test.js | 39 ---- .../node_modules/jschardet/package.json | 3 - .../docpad/node_modules/mime/package.json | 3 - .../docpad/node_modules/mixpanel/package.json | 3 - .../docpad/node_modules/semver/package.json | 3 - .../node_modules/graceful-fs/package.json | 3 - .../glob/node_modules/inherits/package.json | 6 +- .../node_modules/lru-cache/package.json | 3 - .../node_modules/sigmund/package.json | 3 - .../glob/node_modules/minimatch/package.json | 3 - .../yamljs/node_modules/glob/package.json | 3 - .../docpad/node_modules/yamljs/package.json | 3 - .../docpad/out/lib/docpad.js.REMOVED.git-id | 2 +- node/node_modules/docpad/package.json | 6 +- .../glob/node_modules/inherits/package.json | 3 +- .../grunt-bower-task/package.json | 2 +- .../grunt-contrib-copy/package.json | 2 +- .../glob/node_modules/inherits/package.json | 3 +- .../node_modules/gaze/package.json | 4 +- .../grunt-contrib-watch/package.json | 6 +- .../node_modules/clean-css/package.json | 6 +- .../node_modules/csslint/package.json | 6 +- .../node_modules/deflate-js/package.json | 6 +- .../node_modules/gzip-js/package.json | 6 +- node/node_modules/grunt-css/package.json | 6 +- .../grunt/node_modules/async/package.json | 3 +- .../grunt/node_modules/colors/package.json | 3 +- .../node_modules/dateformat/package.json | 6 +- node/node_modules/underscore/package.json | 3 - node/package.json | 5 +- node/src/layouts/default.html.eco | 2 + 141 files changed, 1190 insertions(+), 639 deletions(-) delete mode 120000 node/node_modules/.bin/grunt delete mode 100644 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil.node.d delete mode 100644 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation.node.d delete mode 100755 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil.node delete mode 100644 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil/src/bufferutil.o create mode 100644 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil/src/bufferutil.o.REMOVED.git-id delete mode 100755 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation.node delete mode 100644 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o create mode 100644 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o.REMOVED.git-id create mode 100755 node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.npmignore create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.travis.yml create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/LICENSE create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/README.md create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/ansicolors.js create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/package.json create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/test/ansicolors.js create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.npmignore create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.travis.yml create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/LICENSE create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/README.md create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/ansistyles.js create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/package.json create mode 100644 node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/test/ansistyles.js delete mode 100644 node/node_modules/docpad/node_modules/express/client.js delete mode 100644 node/node_modules/docpad/node_modules/express/test.js diff --git a/node/Gruntfile.js b/node/Gruntfile.js index 883e01914..0450af8a0 100644 --- a/node/Gruntfile.js +++ b/node/Gruntfile.js @@ -1,10 +1,51 @@ module.exports = function(grunt) { - grunt.loadNpmTasks('grunt-css'); grunt.loadNpmTasks('grunt-bower-task'); + grunt.loadNpmTasks('grunt-css'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-copy'); var gruntConfig = require('./grunt-config.json'); grunt.initConfig({ + min: { + js: { + src: [ + "out/javascript/library/jquery.js", + "out/javascript/library/ace/ace.js", + "out/javascript/library/sidr.js", + "out/javascript/library/waypoints.js", + "out/modules/behavior/state.js", + "out/modules/ui/shape.js", + "out/javascript/semantic.js" + ], + dest: "out/scripts/all.min.js" + } + }, + "concat": { + "css": { + "src": [ + "out/stylesheets/reset.css", + "out/stylesheets/semantic.css", + "out/ui/flat/elements/icons.css", + "out/ui/flat/elements/button.css", + "out/ui/flat/elements/checkbox.css", + "out/ui/flat/elements/label.css", + "out/ui/flat/elements/divider.css", + "out/ui/flat/elements/block.css", + "out/ui/flat/elements/segment.css", + "out/ui/flat/collections/grid.css", + "out/ui/flat/collections/form.css", + "out/ui/flat/collections/menu.css", + "out/ui/flat/modules/shape.css", + "out/stylesheets/library/sidr.css" + ], + "dest": "out/styles/all.css" + } + }, + "cssmin": { + "all": { + "src": ["out/styles/all.css"], + "dest": "out/styles/all.min.css" + } + }, watch: { scripts: { files: ["../src/**/*"], diff --git a/node/docpad.coffee b/node/docpad.coffee index 6783882f6..22ed97c62 100755 --- a/node/docpad.coffee +++ b/node/docpad.coffee @@ -155,32 +155,10 @@ docpadConfig = { else next() - # Write After - # Used to minify our assets with grunt - writeAfter: (opts,next) -> - # Prepare - docpad = @docpad - rootPath = docpad.config.rootPath - balUtil = require 'bal-util' - _ = require 'underscore' - # Make sure to register a grunt `default` task - command = ["#{rootPath}/node_modules/.bin/grunt", 'default'] - - # Execute - balUtil.spawn command, {cwd:rootPath,output:true}, -> - src = [] - gruntConfig = require './grunt-config.json' - _.each gruntConfig, (value, key) -> - src = src.concat _.flatten _.pluck value, 'src' - _.each src, (value) -> - balUtil.spawn ['rm', value], {cwd:rootPath, output:false}, -> - balUtil.spawn ['find', '.', '-type', 'd', '-empty', '-exec', 'rmdir', '{}', '\;'], {cwd:rootPath+'/out', output:false}, -> - next() - - # Chain - @ + + } # Export our DocPad Configuration -module.exports = docpadConfig \ No newline at end of file +module.exports = docpadConfig diff --git a/node/node_modules/.bin/grunt b/node/node_modules/.bin/grunt deleted file mode 120000 index 47724d2f8..000000000 --- a/node/node_modules/.bin/grunt +++ /dev/null @@ -1 +0,0 @@ -../grunt/bin/grunt \ No newline at end of file diff --git a/node/node_modules/docpad-plugin-coffeescript/node_modules/coffee-script/package.json b/node/node_modules/docpad-plugin-coffeescript/node_modules/coffee-script/package.json index f51932597..dbf78c3e6 100644 --- a/node/node_modules/docpad-plugin-coffeescript/node_modules/coffee-script/package.json +++ b/node/node_modules/docpad-plugin-coffeescript/node_modules/coffee-script/package.json @@ -32,9 +32,7 @@ "test": "node ./bin/cake test" }, "homepage": "http://coffeescript.org", - "bugs": { - "url": "https://github.com/jashkenas/coffee-script/issues" - }, + "bugs": "https://github.com/jashkenas/coffee-script/issues", "repository": { "type": "git", "url": "git://github.com/jashkenas/coffee-script.git" diff --git a/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/coffee-script/package.json b/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/coffee-script/package.json index c41dfabe2..514dfb68b 100644 --- a/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/coffee-script/package.json +++ b/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/coffee-script/package.json @@ -32,9 +32,7 @@ "test": "node ./bin/cake test" }, "homepage": "http://coffeescript.org", - "bugs": { - "url": "https://github.com/jashkenas/coffee-script/issues" - }, + "bugs": "https://github.com/jashkenas/coffee-script/issues", "repository": { "type": "git", "url": "git://github.com/jashkenas/coffee-script.git" diff --git a/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/strscan/package.json b/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/strscan/package.json index 4ccd7dbb0..cc167c81b 100644 --- a/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/strscan/package.json +++ b/node/node_modules/docpad-plugin-eco/node_modules/eco/node_modules/strscan/package.json @@ -21,9 +21,6 @@ }, "readme": "## StringScanner\n\n**StringScanner** is a simple string tokenizer that provides for lexical\nscanning operations on a string. It's a JavaScript port of the [Ruby \nlibrary with the same name](http://ruby-doc.org/core/classes/StringScanner.html).\n\nScanning a string means keeping track of and advancing a position (a\nzero-based index into the source string) and matching regular expressions\nagainst the portion of the source string after the position.\n\nStringScanner is written in [CoffeeScript](http://coffeescript.org/) and\ndistributed via [npm](http://npm.mape.me/) as a [CommonJS \nmodule](http://www.commonjs.org/).\n\n### Quick start\n\n $ npm install strscan\n $ node-repl\n > var StringScanner = require(\"strscan\").StringScanner\n > var s = new StringScanner(\"This is a test\")\n > s.scan(/\\w+/) # => \"This\"\n > s.scan(/\\w+/) # => null\n > s.scan(/\\s+/) # => \" \"\n > s.scan(/\\s+/) # => null\n > s.scan(/\\w+/) # => \"is\"\n > s.hasTerminated() # => false\n > s.scan(/\\s+/) # => \" \"\n > s.scan(/(\\w+)\\s+(\\w+)/) # => \"a test\"\n > s.getMatch() # => \"a test\"\n > s.getCapture(0) # => \"a\"\n > s.getCapture(1) # => \"test\"\n > s.hasTerminated() # => true\n\n### More\n\n[Clone, fork, or file bugs at GitHub](http://github.com/sstephenson/strscan-js)\n\n[Read the full documentation/annotated source code](http://sstephenson.github.com/strscan-js/)\n\n### Copyright\n\nCopyright (c) 2010 Sam Stephenson. Distributed under the terms of an\nMIT-style license. See LICENSE for details.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/sstephenson/strscan-js/issues" - }, "_id": "strscan@1.0.1", "_from": "strscan@>=1.0.1" } diff --git a/node/node_modules/docpad-plugin-eco/node_modules/eco/package.json b/node/node_modules/docpad-plugin-eco/node_modules/eco/package.json index a214179df..1309c95cf 100644 --- a/node/node_modules/docpad-plugin-eco/node_modules/eco/package.json +++ b/node/node_modules/docpad-plugin-eco/node_modules/eco/package.json @@ -33,9 +33,6 @@ }, "readme": "Eco: Embedded CoffeeScript templates\n====================================\n\nEco lets you embed [CoffeeScript](http://coffeescript.org/) logic in\nyour markup. It's like EJS and ERB, but with CoffeeScript inside the\n`<% ... %>`. Use it from [Node.js](http://nodejs.org/) to render your\napplication's views on the server side, or compile your templates\nto JavaScript with the `eco` command-line utility and use them to\ndynamically render views in the browser.\n\nHere's how an Eco template looks:\n\n <% if @projects.length: %>\n <% for project in @projects: %>\n \"><%= project.name %>\n

<%= project.description %>

\n <% end %>\n <% else: %>\n No projects\n <% end %>\n\n## Installation ##\n\nTo install the Eco compiler, you'll need [Node.js](http://nodejs.org/)\n0.4 or higher and [npm](http://npmjs.org/) 1.0 or higher. Use npm's\n`-g` flag for access to the `eco` command-line compiler:\n\n $ npm install -g eco\n\nIf you're using Eco in a Node project, you can omit the `-g` flag to\ninstall it locally into your project's `node_modules` directory.\n\n## Server-side rendering in Node.js ##\n\n\n\n### The Eco API ###\n\n### Eco templates as Node modules ###\n\n### Using Eco with Express ###\n\n## Client-side rendering in the browser ##\n\n### The Eco command-line compiler ###\n\n### Eco templates as Stitch modules ###\n\n### Compiling templates in the browser ###\n\n## Language reference ##\n\nEco's syntax is simple:\n\n* `<% expression %>`: Evaluate a CoffeeScript expression without\n printing its return value.\n* `<%= expression %>`: Evaluate a CoffeeScript expression, escape its\n return value, and print it.\n* `<%- expression %>`: Evaluate a CoffeeScript expression and print\n its return value without escaping it.\n* `<%= @property %>`: Print the escaped value of the property\n `property` from the context object passed to `render`.\n* `<%= @helper() %>`: Call the helper method `helper` from the context\n object passed to `render`, then print its escaped return value.\n* `<% @helper -> %>...<% end %>`: Call the helper method `helper` with\n a function as its first argument. When invoked, the function will\n capture and return the content `...` inside the tag.\n* `<%%` and `%%>` will result in a literal `<%` and `%>` in the\n rendered template, respectively.\n\n### A note about whitespace ###\n\nCoffeeScript is whitespace-sensitive, but your templates\naren't. Therefore, Eco code tags that begin an indented CoffeeScript\nblock must be suffixed with a colon. To indicate the end of an\nindented block, use the special tag `<% end %>`. For example:\n\n <% if @project.isOnHold(): %>\n On Hold\n <% end %>\n\nYou don't need to write the `if` and `end` tags on separate lines:\n\n <% if @project.isOnHold(): %> On Hold <% end %>\n\nAnd you can use the single-line postfix form of `if` as you'd expect:\n\n <%= \"On Hold\" if @project.isOnHold() %>\n\nCertain forms in CoffeeScript, such as `else`, must be unindented\nfirst. Eco handles that for you automatically:\n\n <% if @project.isOnHold(): %>\n On Hold\n <% else if @project.isArchived(): %>\n Archived\n <% end %>\n\n### The context object ###\n\nThe context object you pass to `eco.render()` becomes the value of\n`this` inside your template. You can use CoffeeScript's `@` sigil to\neasily access properties and call helper methods on the context\nobject.\n\n eco.render \"

<%= @description %>

\",\n description: \"HTML 5 mobile app\"\n\n### Helpers ###\n\nHelper methods on your context object can access other properties on\nthe context object in the same way they're accessed in the template:\nthrough `this`, or with the `@` sigil.\n\n translations = require \"translations\"\n\n eco.render \"<%= @translate 'common.welcomeText' %>\",\n language: \"en\"\n translate: (key) ->\n translations[@language][key]\n\n### Escaping and unescaping ###\n\nWhen you print an expression in a template with `<%= ... %>`, its\nvalue is HTML-escaped. For example,\n\n eco.render \"<%= @description %>\",\n description: \"HTML 5 mobile app\"\n\nwould render:\n\n <strong>HTML 5</strong> mobile app\n\nYou can use the `<%- ... %>` tag to print the value of an expression\nwithout escaping it. So this code:\n\n eco.render \"<%- @description %>\",\n description: \"HTML 5 mobile app\"\n\nwould produce:\n\n HTML 5 mobile app\n\nIt is sometimes useful to generate markup in helper methods. The\nspecial `safe` method on the context object tells Eco that the string\ncan be printed in `<%= ... %>` tags without being escaped. You can use\nthis in conjunction with the context object's `escape` method to\nselectively sanitize parts of the string. For example,\n\n eco.render \"<%= @linkTo @project %>\",\n project: { id: 4, name: \"Crate & Barrel\" }\n linkTo: (project) ->\n url = \"/projects/#{project.id}\"\n name = @escape project.name\n @safe \"#{name}\"\n\nwould render:\n\n Crate & Barrel\n\n### Custom escape helpers ###\n\nBy default, Eco's `escape` method takes a string and returns an\nHTML-escaped string. You can override this behavior to escape for\nformats other than HTML, or to bypass escaping entirely. For example,\n\n eco.render \"From: <%= @address %>\",\n address: \"Sam Stephenson \"\n escape: (string) -> string\n\nwould return:\n\n From: Sam Stephenson \n\n### Blocks and capturing ###\n\nYou can capture blocks of a template by wrapping them in a function\ndefinition. For example, rendering this template:\n\n <% div = (contents) => %>\n
<%- contents %>
\n <% end %>\n <%= div \"Hello\" %>\n\nwould produce:\n\n
Hello
\n\nCaptured blocks can be passed to helper methods too. In this example,\nthe capture body is passed to the `formFor` helper as its last\nargument. Then the `formFor` helper calls this argument to produce a\nvalue.\n\n template = \"\"\"\n <%= @formFor @project, (form) => %>\n \n <%= form.textField \"name\" %>\n <% end %>\n \"\"\"\n\n eco.render template,\n project: { id: 1, name: \"Mobile app\" }\n formFor: (project, yield) ->\n form =\n textField: (attribute) =>\n name = @escape attribute\n value = @escape @project[attribute]\n @safe \"\"\n\n url = \"/projects/#{@project.id}\"\n body = yield form\n @safe \"
#{body}
\"\n\nNote: In general, you should use CoffeeScript's fat arrow (`=>`) to\ndefine capturing functions so that you have access to the context\nobject inside the captured block. Treat the plain arrow (`->`) as an\noptimization for when you are certain the capture body will not need\nto reference properties or helper methods on the context object.\n\n\n## Contributing ##\n\nYou can check out the Eco source code from GitHub:\n\n $ git clone http://github.com/sstephenson/eco.git\n\nTo run Eco's test suite, install\n[nodeunit](http://github.com/caolan/nodeunit) and run `cake test`.\n\nReport bugs on the [GitHub issue tracker](http://github.com/sstephenson/eco/issues).\n\n## License ##\n\n(The MIT License)\n\nCopyright (c) 2011 Sam Stephenson \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## Special thanks ##\n\n* Jeremy Ashkenas \n* Josh Peek \n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/sstephenson/eco/issues" - }, "_id": "eco@1.1.0-rc-3", "_from": "eco@~1.1.0" } diff --git a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/wordwrap/package.json b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/wordwrap/package.json index 887800f29..e923136db 100644 --- a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/wordwrap/package.json +++ b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/node_modules/wordwrap/package.json @@ -36,9 +36,6 @@ }, "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/node-wordwrap/issues" - }, "_id": "wordwrap@0.0.2", "_from": "wordwrap@~0.0.2" } diff --git a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/package.json b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/package.json index 1a286930f..5a70775f9 100644 --- a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/package.json +++ b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/optimist/package.json @@ -37,9 +37,6 @@ }, "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-optimist/issues" - }, "_id": "optimist@0.3.7", "_from": "optimist@~0.3" } diff --git a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/uglify-js/package.json.REMOVED.git-id b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/uglify-js/package.json.REMOVED.git-id index e5db1f920..89a340f7c 100644 --- a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/uglify-js/package.json.REMOVED.git-id +++ b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/node_modules/uglify-js/package.json.REMOVED.git-id @@ -1 +1 @@ -bce475df23a84d7c332d90bfff3b4b9a19f988ce \ No newline at end of file +ff71081e3c78e83ececd69a2296e26ffe60d40c6 \ No newline at end of file diff --git a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/package.json b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/package.json index 3447fc3c6..fa5953a38 100644 --- a/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/package.json +++ b/node/node_modules/docpad-plugin-handlebars/node_modules/handlebars/package.json @@ -34,9 +34,6 @@ "optionalDependencies": {}, "readme": "[![Build Status](https://travis-ci.org/wycats/handlebars.js.png?branch=master)](https://travis-ci.org/wycats/handlebars.js)\n\nHandlebars.js\n=============\n\nHandlebars.js is an extension to the [Mustache templating language](http://mustache.github.com/) created by Chris Wanstrath. Handlebars.js and Mustache are both logicless templating languages that keep the view and the code separated like we all know they should be.\n\nCheckout the official Handlebars docs site at [http://www.handlebarsjs.com](http://www.handlebarsjs.com).\n\n\nInstalling\n----------\nInstalling Handlebars is easy. Simply [download the package from GitHub](https://github.com/wycats/handlebars.js/archives/master) and add it to your web pages (you should usually use the most recent version).\n\nUsage\n-----\nIn general, the syntax of Handlebars.js templates is a superset of Mustache templates. For basic syntax, check out the [Mustache manpage](http://mustache.github.com/mustache.5.html).\n\nOnce you have a template, use the Handlebars.compile method to compile the template into a function. The generated function takes a context argument, which will be used to render the template.\n\n```js\nvar source = \"

Hello, my name is {{name}}. I am from {{hometown}}. I have \" +\n \"{{kids.length}} kids:

\" +\n \"
    {{#kids}}
  • {{name}} is {{age}}
  • {{/kids}}
\";\nvar template = Handlebars.compile(source);\n\nvar data = { \"name\": \"Alan\", \"hometown\": \"Somewhere, TX\",\n \"kids\": [{\"name\": \"Jimmy\", \"age\": \"12\"}, {\"name\": \"Sally\", \"age\": \"4\"}]};\nvar result = template(data);\n\n// Would render:\n//

Hello, my name is Alan. I am from Somewhere, TX. I have 2 kids:

\n//
    \n//
  • Jimmy is 12
  • \n//
  • Sally is 4
  • \n//
\n```\n\n\nRegistering Helpers\n-------------------\n\nYou can register helpers that Handlebars will use when evaluating your\ntemplate. Here's an example, which assumes that your objects have a URL\nembedded in them, as well as the text for a link:\n\n```js\nHandlebars.registerHelper('link_to', function(context) {\n return \"\" + context.body + \"\";\n});\n\nvar context = { posts: [{url: \"/hello-world\", body: \"Hello World!\"}] };\nvar source = \"
    {{#posts}}
  • {{{link_to this}}}
  • {{/posts}}
\"\n\nvar template = Handlebars.compile(source);\ntemplate(context);\n\n// Would render:\n//\n// \n```\n\nEscaping\n--------\n\nBy default, the `{{expression}}` syntax will escape its contents. This\nhelps to protect you against accidental XSS problems caused by malicious\ndata passed from the server as JSON.\n\nTo explicitly *not* escape the contents, use the triple-mustache\n(`{{{}}}`). You have seen this used in the above example.\n\n\nDifferences Between Handlebars.js and Mustache\n----------------------------------------------\nHandlebars.js adds a couple of additional features to make writing templates easier and also changes a tiny detail of how partials work.\n\n### Paths\n\nHandlebars.js supports an extended expression syntax that we call paths. Paths are made up of typical expressions and . characters. Expressions allow you to not only display data from the current context, but to display data from contexts that are descendents and ancestors of the current context.\n\nTo display data from descendent contexts, use the `.` character. So, for example, if your data were structured like:\n\n```js\nvar data = {\"person\": { \"name\": \"Alan\" }, company: {\"name\": \"Rad, Inc.\" } };\n```\n\nyou could display the person's name from the top-level context with the following expression:\n\n```\n{{person.name}}\n```\n\nYou can backtrack using `../`. For example, if you've already traversed into the person object you could still display the company's name with an expression like `{{../company.name}}`, so:\n\n```\n{{#person}}{{name}} - {{../company.name}}{{/person}}\n```\n\nwould render:\n\n```\nAlan - Rad, Inc.\n```\n\n### Strings\n\nWhen calling a helper, you can pass paths or Strings as parameters. For\ninstance:\n\n```js\nHandlebars.registerHelper('link_to', function(title, context) {\n return \"\" + title + \"!\"\n});\n\nvar context = { posts: [{url: \"/hello-world\", body: \"Hello World!\"}] };\nvar source = '
    {{#posts}}
  • {{{link_to \"Post\" this}}}
  • {{/posts}}
'\n\nvar template = Handlebars.compile(source);\ntemplate(context);\n\n// Would render:\n//\n// \n```\n\nWhen you pass a String as a parameter to a helper, the literal String\ngets passed to the helper function.\n\n\n### Block Helpers\n\nHandlebars.js also adds the ability to define block helpers. Block helpers are functions that can be called from anywhere in the template. Here's an example:\n\n```js\nvar source = \"
    {{#people}}
  • {{#link}}{{name}}{{/link}}
  • {{/people}}
\";\nHandlebars.registerHelper('link', function(options) {\n return '' + options.fn(this) + '';\n});\nvar template = Handlebars.compile(source);\n\nvar data = { \"people\": [\n { \"name\": \"Alan\", \"id\": 1 },\n { \"name\": \"Yehuda\", \"id\": 2 }\n ]};\ntemplate(data);\n\n// Should render:\n// \n```\n\nWhenever the block helper is called it is given two parameters, the argument that is passed to the helper, or the current context if no argument is passed and the compiled contents of the block. Inside of the block helper the value of `this` is the current context, wrapped to include a method named `__get__` that helps translate paths into values within the helpers.\n\n### Partials\n\nYou can register additional templates as partials, which will be used by\nHandlebars when it encounters a partial (`{{> partialName}}`). Partials\ncan either be String templates or compiled template functions. Here's an\nexample:\n\n```js\nvar source = \"
    {{#people}}
  • {{> link}}
  • {{/people}}
\";\n\nHandlebars.registerPartial('link', '{{name}}')\nvar template = Handlebars.compile(source);\n\nvar data = { \"people\": [\n { \"name\": \"Alan\", \"id\": 1 },\n { \"name\": \"Yehuda\", \"id\": 2 }\n ]};\n\ntemplate(data);\n\n// Should render:\n// \n```\n\n### Comments\n\nYou can add comments to your templates with the following syntax:\n\n```js\n{{! This is a comment }}\n```\n\nYou can also use real html comments if you want them to end up in the output.\n\n```html\n
\n {{! This comment will not end up in the output }}\n \n
\n```\n\n\nPrecompiling Templates\n----------------------\n\nHandlebars allows templates to be precompiled and included as javascript\ncode rather than the handlebars template allowing for faster startup time.\n\n### Installation\nThe precompiler script may be installed via npm using the `npm install -g handlebars`\ncommand.\n\n### Usage\n\n
\nPrecompile handlebar templates.\nUsage: handlebars template...\n\nOptions:\n  -a, --amd        Create an AMD format function (allows loading with RequireJS)         [boolean]\n  -f, --output     Output File                                                           [string]\n  -k, --known      Known helpers                                                         [string]\n  -o, --knownOnly  Known helpers only                                                    [boolean]\n  -m, --min        Minimize output                                                       [boolean]\n  -s, --simple     Output template function only.                                        [boolean]\n  -r, --root       Template root. Base value that will be stripped from template names.  [string]\n
\n\nIf using the precompiler's normal mode, the resulting templates will be stored\nto the `Handlebars.templates` object using the relative template name sans the\nextension. These templates may be executed in the same manner as templates.\n\nIf using the simple mode the precompiler will generate a single javascript method.\nTo execute this method it must be passed to the using the `Handlebars.template`\nmethod and the resulting object may be as normal.\n\n### Optimizations\n\n- Rather than using the full _handlebars.js_ library, implementations that\n do not need to compile templates at runtime may include _handlebars.runtime.js_\n whose min+gzip size is approximately 1k.\n- If a helper is known to exist in the target environment they may be defined\n using the `--known name` argument may be used to optimize accesses to these\n helpers for size and speed.\n- When all helpers are known in advance the `--knownOnly` argument may be used\n to optimize all block helper references.\n\n\nPerformance\n-----------\n\nIn a rough performance test, precompiled Handlebars.js templates (in the original version of Handlebars.js) rendered in about half the time of Mustache templates. It would be a shame if it were any other way, since they were precompiled, but the difference in architecture does have some big performance advantages. Justin Marney, a.k.a. [gotascii](http://github.com/gotascii), confirmed that with an [independent test](http://sorescode.com/2010/09/12/benchmarks.html). The rewritten Handlebars (current version) is faster than the old version, and we will have some benchmarks in the near future.\n\n\nBuilding\n--------\n\nTo build handlebars, just run `rake release`, and you will get two files\nin the `dist` directory.\n\n\nUpgrading\n---------\n\nWhen upgrading from the Handlebars 0.9 series, be aware that the\nsignature for passing custom helpers or partials to templates has\nchanged.\n\nInstead of:\n\n```js\ntemplate(context, helpers, partials, [data])\n```\n\nUse:\n\n```js\ntemplate(context, {helpers: helpers, partials: partials, data: data})\n```\n\nKnown Issues\n------------\n* Handlebars.js can be cryptic when there's an error while rendering.\n* Using a variable, helper, or partial named `class` causes errors in IE browsers. (Instead, use `className`)\n\nHandlebars in the Wild\n-----------------\n* [jblotus](http://github.com/jblotus) created [http://tryhandlebarsjs.com](http://tryhandlebarsjs.com) for anyone who would\nlike to try out Handlebars.js in their browser.\n* Don Park wrote an Express.js view engine adapter for Handlebars.js called [hbs](http://github.com/donpark/hbs).\n* [sammy.js](http://github.com/quirkey/sammy) by Aaron Quint, a.k.a. quirkey, supports Handlebars.js as one of its template plugins.\n* [SproutCore](http://www.sproutcore.com) uses Handlebars.js as its main templating engine, extending it with automatic data binding support.\n* [Ember.js](http://www.emberjs.com) makes Handlebars.js the primary way to structure your views, also with automatic data binding support.\n* Les Hill (@leshill) wrote a Rails Asset Pipeline gem named [handlebars_assets](http://github.com/leshill/handlebars_assets).\n\nHelping Out\n-----------\nTo build Handlebars.js you'll need a few things installed.\n\n* Node.js\n* Jison, for building the compiler - `npm install jison`\n* Ruby\n* therubyracer, for running tests - `gem install therubyracer`\n* rspec, for running tests - `gem install rspec`\n\nThere's a Gemfile in the repo, so you can run `bundle` to install rspec and therubyracer if you've got bundler installed.\n\nTo build Handlebars.js from scratch, you'll want to run `rake compile` in the root of the project. That will build Handlebars and output the results to the dist/ folder. To run tests, run `rake spec`. You can also run our set of benchmarks with `rake bench`.\n\nIf you notice any problems, please report them to the GitHub issue tracker at [http://github.com/wycats/handlebars.js/issues](http://github.com/wycats/handlebars.js/issues). Feel free to contact commondream or wycats through GitHub with any other questions or feature requests. To submit changes fork the project and send a pull request.\n\nLicense\n-------\nHandlebars.js is released under the MIT license.\n", "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/wycats/handlebars.js/issues" - }, "_id": "handlebars@1.0.10", "_from": "handlebars@~1.0.10" } diff --git a/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/coffee-script/package.json b/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/coffee-script/package.json index c41dfabe2..514dfb68b 100644 --- a/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/coffee-script/package.json +++ b/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/coffee-script/package.json @@ -32,9 +32,7 @@ "test": "node ./bin/cake test" }, "homepage": "http://coffeescript.org", - "bugs": { - "url": "https://github.com/jashkenas/coffee-script/issues" - }, + "bugs": "https://github.com/jashkenas/coffee-script/issues", "repository": { "type": "git", "url": "git://github.com/jashkenas/coffee-script.git" diff --git a/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/htmlparser/package.json b/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/htmlparser/package.json index a57689e54..6f74ab6b9 100644 --- a/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/htmlparser/package.json +++ b/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/node_modules/htmlparser/package.json @@ -23,6 +23,7 @@ "main": "./lib/htmlparser", "homepage": "http://github.com/tautologistics/node-htmlparser", "bugs": { + "mail": "chris@winberry.net", "url": "http://github.com/tautologistics/node-htmlparser/issues" }, "engines": { diff --git a/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/package.json b/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/package.json index 012814e95..b8cb99c18 100644 --- a/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/package.json +++ b/node/node_modules/docpad-plugin-html2coffee/node_modules/html2coffeekup/package.json @@ -27,9 +27,6 @@ "license": "BSD", "readme": "Not fully complete, but still a huge time saver. Tested on dozens of files that only needed minor touch ups after conversion.\n\n# Installation\n\n```\nnpm install -g html2coffeekup\n```\n\n# Command Line Synopsys\n\n```\nhtml2coffeekup test/simple.html\n```\n\n# Example Output (for above usage)\n\n```\ndoctype TODO\nhtml ->\n head ->\n title 'A simple test page'\n style type: 'text/css', '.foo {\\n color: red\\n }'\n body '.awesome', ->\n div '#root.super.special', ->\n comment 'This page is rapidly becoming not-so-simple'\n h1 'A simple test page'\n p ->\n text 'With some awesome text, and a'\n a href: 'http://www.google.com', 'link'\n text '.'\n p '#paragraph_2', ->\n text 'And here is an image:'\n img src: 'fake/source', title: 'not really'\n text 'As well as a disabled select:'\n select disabled: 'disabled', ->\n option 'Oh boy!'\n script type: 'text/javascript', 'console.log(\"Hello there\");\\n console.log(\"How\\'s it going?\");'\n span()\n```\n\n# Full Command Line Usage\n\n```\nhtml2coffeekup [options] \n\n--prefix= Prepends a string to each element function call\n--no-prefix Disables prefix (default)\n--selectors Output css-selectors for id and classes (default)\n--no-selectors Disables output of css-selectors for id and classes\n--export[=] Wraps the output in a Node.js style export\n--no-export Disables wrapping the output in an export (default)\n```\n\nSee \"Supported options\" below for additional details.\n\n# Public API\n\n`convert(html, stream, [options], [callback])`\n\n`html` must be a string.\n\n`stream` is a \"Writable Stream\".\n\n`options` is an optional hash. See next section for details.\n\n`callback` is optional and passed `(error)` if something goes wrong.\n\n### Supported options:\n\n* `prefix` prepends a string to the begining of each element functional call. (default: `''`)\n\n> For example, using the prefix `@` would result in `@body ->`.\n\n* `selectors` is a boolean to toggle emitting classes and ids as a first argument to element functions as a selector string (default: `true`).\n\n> For example, when true you get `div '#id.cls1.cls2`. When false you get `div id: \"id\", class: \"cls1 cls2\"`\n\n* `exports` is a boolean or a string name. When truthy, wraps the output in a Node.js style function export. (default: `false`).\n\n> When `true` you get `module.exports = ->`. When a `\"foo\"` you get `exports.foo = ->`\n\n# Example REPL Session\n\n```\ncoffee> {convert} = require('html2coffeekup')\n{ convert: [Function] }\ncoffee> convert 'Github', process.stdout, -> console.log 'done!'\na href: 'http://www.github.com', 'Github'\ndone!\n```\n", "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/brandonbloom/html2coffeekup/issues" - }, "_id": "html2coffeekup@1.4.0", "_from": "html2coffeekup@~1.4.0" } diff --git a/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/commander/package.json b/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/commander/package.json index 6f9d567f6..942b794f6 100644 --- a/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/commander/package.json +++ b/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/commander/package.json @@ -30,9 +30,6 @@ }, "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, "_id": "commander@0.6.1", "_from": "commander@0.6.1" } diff --git a/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/mkdirp/package.json b/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/mkdirp/package.json index bd9194b2e..047842c89 100644 --- a/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/mkdirp/package.json +++ b/node/node_modules/docpad-plugin-jade/node_modules/jade/node_modules/mkdirp/package.json @@ -25,9 +25,6 @@ "license": "MIT", "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, "_id": "mkdirp@0.3.5", "_from": "mkdirp@0.3.x" } diff --git a/node/node_modules/docpad-plugin-jade/node_modules/jade/package.json b/node/node_modules/docpad-plugin-jade/node_modules/jade/package.json index 49f09ee50..b37b91351 100644 --- a/node/node_modules/docpad-plugin-jade/node_modules/jade/package.json +++ b/node/node_modules/docpad-plugin-jade/node_modules/jade/package.json @@ -42,9 +42,6 @@ }, "readme": "# Jade - template engine \n[![Build Status](https://secure.travis-ci.org/visionmedia/jade.png)](http://travis-ci.org/visionmedia/jade)\n[![Dependency Status](https://gemnasium.com/visionmedia/jade.png)](https://gemnasium.com/visionmedia/jade)\n\n Jade is a high performance template engine heavily influenced by [Haml](http://haml-lang.com)\n and implemented with JavaScript for [node](http://nodejs.org). For discussion join the [Google Group](http://groups.google.com/group/jadejs).\n\n## Test drive\n\n You can test drive Jade online [here](http://naltatis.github.com/jade-syntax-docs).\n\n## README Contents\n\n- [Features](#a1)\n- [Implementations](#a2)\n- [Installation](#a3)\n- [Browser Support](#a4)\n- [Public API](#a5)\n- [Syntax](#a6)\n - [Line Endings](#a6-1)\n - [Tags](#a6-2)\n - [Tag Text](#a6-3)\n - [Comments](#a6-4)\n - [Block Comments](#a6-5)\n - [Nesting](#a6-6)\n - [Block Expansion](#a6-7)\n - [Case](#a6-8)\n - [Attributes](#a6-9)\n - [HTML](#a6-10)\n - [Doctypes](#a6-11)\n- [Filters](#a7)\n- [Code](#a8)\n- [Iteration](#a9)\n- [Conditionals](#a10)\n- [Template inheritance](#a11)\n- [Block append / prepend](#a12)\n- [Includes](#a13)\n- [Mixins](#a14)\n- [Generated Output](#a15)\n- [Example Makefile](#a16)\n- [jade(1)](#a17)\n- [Tutorials](#a18)\n- [License](#a19)\n\n\n## Features\n\n - client-side support\n - great readability\n - flexible indentation\n - block-expansion\n - mixins\n - static includes\n - attribute interpolation\n - code is escaped by default for security\n - contextual error reporting at compile & run time\n - executable for compiling jade templates via the command line\n - html 5 mode (the default doctype)\n - optional memory caching\n - combine dynamic and static tag classes\n - parse tree manipulation via _filters_\n - template inheritance\n - block append / prepend\n - supports [Express JS](http://expressjs.com) out of the box\n - transparent iteration over objects, arrays, and even non-enumerables via `each`\n - block comments\n - no tag prefix\n - filters\n - :stylus must have [stylus](http://github.com/LearnBoost/stylus) installed\n - :less must have [less.js](http://github.com/cloudhead/less.js) installed\n - :markdown must have [markdown-js](http://github.com/evilstreak/markdown-js), [node-discount](http://github.com/visionmedia/node-discount), or [marked](http://github.com/chjj/marked) installed\n - :cdata\n - :coffeescript must have [coffee-script](http://jashkenas.github.com/coffee-script/) installed\n - [Emacs Mode](https://github.com/brianc/jade-mode)\n - [Vim Syntax](https://github.com/digitaltoad/vim-jade)\n - [TextMate Bundle](http://github.com/miksago/jade-tmbundle)\n - [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode)\n - [Screencasts](http://tjholowaychuk.com/post/1004255394/jade-screencast-template-engine-for-nodejs)\n - [html2jade](https://github.com/donpark/html2jade) converter\n\n\n## Implementations\n\n - [php](http://github.com/everzet/jade.php)\n - [scala](http://scalate.fusesource.org/versions/snapshot/documentation/scaml-reference.html)\n - [ruby](http://github.com/stonean/slim)\n - [python](https://github.com/SyrusAkbary/pyjade)\n - [java](https://github.com/neuland/jade4j)\n\n\n## Installation\n\nvia npm:\n\n```bash\n$ npm install jade\n```\n\n\n## Browser Support\n\n To compile jade to a single file compatible for client-side use simply execute:\n\n```bash\n$ make jade.js\n```\n\n Alternatively, if uglifyjs is installed via npm (`npm install uglify-js`) you may execute the following which will create both files. However each release builds these for you.\n\n```bash\n$ make jade.min.js\n```\n\n By default Jade instruments templates with line number statements such as `__.lineno = 3` for debugging purposes. When used in a browser it's useful to minimize this boiler plate, you can do so by passing the option `{ compileDebug: false }`. The following template\n\n```jade\np Hello #{name}\n```\n\n Can then be as small as the following generated function:\n\n```js\nfunction anonymous(locals, attrs, escape, rethrow) {\n var buf = [];\n with (locals || {}) {\n var interp;\n buf.push('\\n

Hello ' + escape((interp = name) == null ? '' : interp) + '\\n

');\n }\n return buf.join(\"\");\n}\n```\n\n Through the use of Jade's `./runtime.js` you may utilize these pre-compiled templates on the client-side _without_ Jade itself, all you need is the associated utility functions (in runtime.js), which are then available as `jade.attrs`, `jade.escape` etc. To enable this you should pass `{ client: true }` to `jade.compile()` to tell Jade to reference the helper functions\n via `jade.attrs`, `jade.escape` etc.\n\n```js\nfunction anonymous(locals, attrs, escape, rethrow) {\n var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow;\n var buf = [];\n with (locals || {}) {\n var interp;\n buf.push('\\n

Hello ' + escape((interp = name) == null ? '' : interp) + '\\n

');\n }\n return buf.join(\"\");\n}\n```\n\n
\n## Public API\n\n```js\nvar jade = require('jade');\n\n// Compile a function\nvar fn = jade.compile('string of jade', options);\nfn(locals);\n```\n\n### Options\n\n - `self` Use a `self` namespace to hold the locals _(false by default)_\n - `locals` Local variable object\n - `filename` Used in exceptions, and required when using includes\n - `debug` Outputs tokens and function body generated\n - `compiler` Compiler to replace jade's default\n - `compileDebug` When `false` no debug instrumentation is compiled\n - `pretty` Add pretty-indentation whitespace to output _(false by default)_\n\n\n## Syntax\n\n\n### Line Endings\n\n**CRLF** and **CR** are converted to **LF** before parsing.\n\n\n### Tags\n\nA tag is simply a leading word:\n\n```jade\nhtml\n```\n\nfor example is converted to ``\n\ntags can also have ids:\n\n```jade\ndiv#container\n```\n\nwhich would render `
`\n\nhow about some classes?\n\n```jade\ndiv.user-details\n```\n\nrenders `
`\n\nmultiple classes? _and_ an id? sure:\n\n```jade\ndiv#foo.bar.baz\n```\n\nrenders `
`\n\ndiv div div sure is annoying, how about:\n\n```jade\n#foo\n.bar\n```\n\nwhich is syntactic sugar for what we have already been doing, and outputs:\n\n```html\n
\n```\n\n
\n### Tag Text\n\nSimply place some content after the tag:\n\n```jade\np wahoo!\n```\n\nrenders `

wahoo!

`.\n\nwell cool, but how about large bodies of text:\n\n```jade\np\n | foo bar baz\n | rawr rawr\n | super cool\n | go jade go\n```\n\nrenders `

foo bar baz rawr.....

`\n\ninterpolation? yup! both types of text can utilize interpolation,\nif we passed `{ name: 'tj', email: 'tj@vision-media.ca' }` to the compiled function we can do the following:\n\n```jade\n#user #{name} <#{email}>\n```\n\noutputs `
tj <tj@vision-media.ca>
`\n\nActually want `#{}` for some reason? escape it!\n\n```jade\np \\#{something}\n```\n\nnow we have `

#{something}

`\n\nWe can also utilize the unescaped variant `!{html}`, so the following\nwill result in a literal script tag:\n\n```jade\n- var html = \"\"\n| !{html}\n```\n\nNested tags that also contain text can optionally use a text block:\n\n```jade\nlabel\n | Username:\n input(name='user[name]')\n```\n\nor immediate tag text:\n\n```jade\nlabel Username:\n input(name='user[name]')\n```\n\nTags that accept _only_ text such as `script` and `style` do not\nneed the leading `|` character, for example:\n\n```jade\nhtml\n head\n title Example\n script\n if (foo) {\n bar();\n } else {\n baz();\n }\n```\n\nOnce again as an alternative, we may use a trailing `.` to indicate a text block, for example:\n\n```jade\np.\n foo asdf\n asdf\n asdfasdfaf\n asdf\n asd.\n```\n\noutputs:\n\n```html\n

foo asdf\nasdf\n asdfasdfaf\n asdf\nasd.\n

\n```\n\nThis however differs from a trailing `.` followed by a space, which although is ignored by the Jade parser, tells Jade that this period is a literal:\n\n```jade\np .\n```\n\noutputs:\n\n```html\n

.

\n```\n\nIt should be noted that text blocks should be doubled escaped. For example if you desire the following output.\n\n```html\n

foo\\bar

\n```\n\nuse:\n\n```jade\np.\n foo\\\\bar\n```\n\n
\n### Comments\n\nSingle line comments currently look the same as JavaScript comments,\naka `//` and must be placed on their own line:\n\n```jade\n// just some paragraphs\np foo\np bar\n```\n\nwould output\n\n```html\n\n

foo

\n

bar

\n```\n\nJade also supports unbuffered comments, by simply adding a hyphen:\n\n```jade\n//- will not output within markup\np foo\np bar\n```\n\noutputting\n\n```html\n

foo

\n

bar

\n```\n\n
\n### Block Comments\n\n A block comment is legal as well:\n\n```jade\nbody\n //\n #content\n h1 Example\n```\n\noutputting\n\n```html\n\n \n\n```\n\nJade supports conditional-comments as well, for example:\n\n```jade\nhead\n //if lt IE 8\n script(src='/ie-sucks.js')\n```\n\noutputs:\n\n```html\n\n \n\n```\n\n\n### Nesting\n\n Jade supports nesting to define the tags in a natural way:\n\n```jade\nul\n li.first\n a(href='#') foo\n li\n a(href='#') bar\n li.last\n a(href='#') baz\n```\n\n\n### Block Expansion\n\n Block expansion allows you to create terse single-line nested tags,\n the following example is equivalent to the nesting example above.\n\n```jade\nul\n li.first: a(href='#') foo\n li: a(href='#') bar\n li.last: a(href='#') baz\n```\n\n\n### Case\n\n The case statement takes the following form:\n\n```jade\nhtml\n body\n friends = 10\n case friends\n when 0\n p you have no friends\n when 1\n p you have a friend\n default\n p you have #{friends} friends\n```\n\n Block expansion may also be used:\n\n```jade\nfriends = 5\n\nhtml\n body\n case friends\n when 0: p you have no friends\n when 1: p you have a friend\n default: p you have #{friends} friends\n```\n\n\n### Attributes\n\nJade currently supports `(` and `)` as attribute delimiters.\n\n```jade\na(href='/login', title='View login page') Login\n```\n\nWhen a value is `undefined` or `null` the attribute is _not_ added,\nso this is fine, it will not compile `something=\"null\"`.\n\n```jade\ndiv(something=null)\n```\n\nBoolean attributes are also supported:\n\n```jade\ninput(type=\"checkbox\", checked)\n```\n\nBoolean attributes with code will only output the attribute when `true`:\n\n```jade\ninput(type=\"checkbox\", checked=someValue)\n```\n\nMultiple lines work too:\n\n```jade\ninput(type='checkbox',\n name='agreement',\n checked)\n```\n\nMultiple lines without the comma work fine:\n\n```jade\ninput(type='checkbox'\n name='agreement'\n checked)\n```\n\nFunky whitespace? fine:\n\n```jade\ninput(\n type='checkbox'\n name='agreement'\n checked)\n```\n\nColons work:\n\n```jade\nrss(xmlns:atom=\"atom\")\n```\n\nSuppose we have the `user` local `{ id: 12, name: 'tobi' }`\nand we wish to create an anchor tag with `href` pointing to \"/user/12\"\nwe could use regular javascript concatenation:\n\n```jade\na(href='/user/' + user.id)= user.name\n```\n\nor we could use jade's interpolation, which I added because everyone\nusing Ruby or CoffeeScript seems to think this is legal js..:\n\n```jade\na(href='/user/#{user.id}')= user.name\n```\n\nThe `class` attribute is special-cased when an array is given,\nallowing you to pass an array such as `bodyClasses = ['user', 'authenticated']` directly:\n\n```jade\nbody(class=bodyClasses)\n```\n\n\n### HTML\n\n Inline html is fine, we can use the pipe syntax to\n write arbitrary text, in this case some html:\n\n```jade\nhtml\n body\n |

Title

\n |

foo bar baz

\n```\n\n Or we can use the trailing `.` to indicate to Jade that we\n only want text in this block, allowing us to omit the pipes:\n\n```jade\nhtml\n body.\n

Title

\n

foo bar baz

\n```\n\n Both of these examples yield the same result:\n\n```html\n

Title

\n

foo bar baz

\n\n```\n\n The same rule applies for anywhere you can have text\n in jade, raw html is fine:\n\n```jade\nhtml\n body\n h1 User #{name}\n```\n\n
\n### Doctypes\n\nTo add a doctype simply use `!!!`, or `doctype` followed by an optional value:\n\n```jade\n!!!\n```\n\nor\n\n```jade\ndoctype\n```\n\nWill output the _html 5_ doctype, however:\n\n```jade\n!!! transitional\n```\n\nWill output the _transitional_ doctype.\n\nDoctypes are case-insensitive, so the following are equivalent:\n\n```jade\ndoctype Basic\ndoctype basic\n```\n\nit's also possible to simply pass a doctype literal:\n\n```jade\ndoctype html PUBLIC \"-//W3C//DTD XHTML Basic 1.1//EN\n```\n\nyielding:\n\n```html\n\n```\n\nBelow are the doctypes defined by default, which can easily be extended:\n\n```js\nvar doctypes = exports.doctypes = {\n '5': '',\n 'default': '',\n 'xml': '',\n 'transitional': '',\n 'strict': '',\n 'frameset': '',\n '1.1': '',\n 'basic': '',\n 'mobile': ''\n};\n```\n\nTo alter the default simply change:\n\n```js\njade.doctypes.default = 'whatever you want';\n```\n\n\n## Filters\n\nFilters are prefixed with `:`, for example `:markdown` and\npass the following block of text to an arbitrary function for processing. View the _features_\nat the top of this document for available filters.\n\n```jade\nbody\n :markdown\n Woah! jade _and_ markdown, very **cool**\n we can even link to [stuff](http://google.com)\n```\n\nRenders:\n\n```html\n

Woah! jade and markdown, very cool we can even link to stuff

\n```\n\n\n## Code\n\nJade currently supports three classifications of executable code. The first\nis prefixed by `-`, and is not buffered:\n\n```jade\n- var foo = 'bar';\n```\n\nThis can be used for conditionals, or iteration:\n\n```jade\n- for (var key in obj)\n p= obj[key]\n```\n\nDue to Jade's buffering techniques the following is valid as well:\n\n```jade\n- if (foo)\n ul\n li yay\n li foo\n li worked\n- else\n p oh no! didnt work\n```\n\nHell, even verbose iteration:\n\n```jade\n- if (items.length)\n ul\n - items.forEach(function(item){\n li= item\n - })\n```\n\nAnything you want!\n\nNext up we have _escaped_ buffered code, which is used to\nbuffer a return value, which is prefixed by `=`:\n\n```jade\n- var foo = 'bar'\n= foo\nh1= foo\n```\n\nWhich outputs `bar

bar

`. Code buffered by `=` is escaped\nby default for security, however to output unescaped return values\nyou may use `!=`:\n\n```jade\np!= aVarContainingMoreHTML\n```\n\n Jade also has designer-friendly variants, making the literal JavaScript\n more expressive and declarative. For example the following assignments\n are equivalent, and the expression is still regular javascript:\n\n```jade\n- var foo = 'foo ' + 'bar'\nfoo = 'foo ' + 'bar'\n```\n\n Likewise Jade has first-class `if`, `else if`, `else`, `until`, `while`, `unless` among others, however you must remember that the expressions are still regular javascript:\n\n```jade\nif foo == 'bar'\n ul\n li yay\n li foo\n li worked\nelse\n p oh no! didnt work\n```\n\n
\n## Iteration\n\n Along with vanilla JavaScript Jade also supports a subset of\n constructs that allow you to create more designer-friendly templates,\n one of these constructs is `each`, taking the form:\n\n```jade\neach VAL[, KEY] in OBJ\n```\n\nAn example iterating over an array:\n\n```jade\n- var items = [\"one\", \"two\", \"three\"]\neach item in items\n li= item\n```\n\noutputs:\n\n```html\n
  • one
  • \n
  • two
  • \n
  • three
  • \n```\n\niterating an array with index:\n\n```jade\nitems = [\"one\", \"two\", \"three\"]\neach item, i in items\n li #{item}: #{i}\n```\n\noutputs:\n\n```html\n
  • one: 0
  • \n
  • two: 1
  • \n
  • three: 2
  • \n```\n\niterating an object's keys and values:\n\n```jade\nobj = { foo: 'bar' }\neach val, key in obj\n li #{key}: #{val}\n```\n\nwould output `
  • foo: bar
  • `\n\nInternally Jade converts these statements to regular\nJavaScript loops such as `users.forEach(function(user){`,\nso lexical scope and nesting applies as it would with regular\nJavaScript:\n\n```jade\neach user in users\n each role in user.roles\n li= role\n```\n\n You may also use `for` if you prefer:\n\n```jade\nfor user in users\n for role in user.roles\n li= role\n```\n\n
    \n## Conditionals\n\n Jade conditionals are equivalent to those using the code (`-`) prefix,\n however allow you to ditch parenthesis to become more designer friendly,\n however keep in mind the expression given is _regular_ JavaScript:\n\n```jade\nfor user in users\n if user.role == 'admin'\n p #{user.name} is an admin\n else\n p= user.name\n```\n\n is equivalent to the following using vanilla JavaScript literals:\n\n```jade\nfor user in users\n - if (user.role == 'admin')\n p #{user.name} is an admin\n - else\n p= user.name\n```\n\n Jade also provides `unless` which is equivalent to `if (!(expr))`:\n\n```jade\nfor user in users\n unless user.isAnonymous\n p\n | Click to view\n a(href='/users/' + user.id)= user.name\n```\n\n\n## Template inheritance\n\n Jade supports template inheritance via the `block` and `extends` keywords. A block is simply a \"block\" of Jade that may be replaced within a child template, this process is recursive. To activate template inheritance in Express 2.x you must add: `app.set('view options', { layout: false });`.\n\n Jade blocks can provide default content if desired, however optional as shown below by `block scripts`, `block content`, and `block foot`.\n\n```jade\nhtml\n head\n h1 My Site - #{title}\n block scripts\n script(src='/jquery.js')\n body\n block content\n block foot\n #footer\n p some footer content\n```\n\n Now to extend the layout, simply create a new file and use the `extends` directive as shown below, giving the path (with or without the .jade extension). You may now define one or more blocks that will override the parent block content, note that here the `foot` block is _not_ redefined and will output \"some footer content\".\n\n```jade\nextends layout\n\nblock scripts\n script(src='/jquery.js')\n script(src='/pets.js')\n\nblock content\n h1= title\n each pet in pets\n include pet\n```\n\n It's also possible to override a block to provide additional blocks, as shown in the following example where `content` now exposes a `sidebar` and `primary` block for overriding, or the child template could override `content` all together.\n\n```jade\nextends regular-layout\n\nblock content\n .sidebar\n block sidebar\n p nothing\n .primary\n block primary\n p nothing\n```\n\n\n## Block append / prepend\n\n Jade allows you to _replace_ (default), _prepend_, or _append_ blocks. Suppose for example you have default scripts in a \"head\" block that you wish to utilize on _every_ page, you might do this:\n\n```jade\nhtml\n head\n block head\n script(src='/vendor/jquery.js')\n script(src='/vendor/caustic.js')\n body\n block content\n```\n\n Now suppose you have a page of your application for a JavaScript game, you want some game related scripts as well as these defaults, you can simply `append` the block:\n\n```jade\nextends layout\n\nblock append head\n script(src='/vendor/three.js')\n script(src='/game.js')\n```\n\n When using `block append` or `block prepend` the `block` is optional:\n\n```jade\nextends layout\n\nappend head\n script(src='/vendor/three.js')\n script(src='/game.js')\n```\n\n\n## Includes\n\n Includes allow you to statically include chunks of Jade,\n or other content like css, or html which lives in separate files. The classical example is including a header and footer. Suppose we have the following directory structure:\n\n ./layout.jade\n ./includes/\n ./head.jade\n ./foot.jade\n\nand the following _layout.jade_:\n\n```jade\nhtml\n include includes/head\n body\n h1 My Site\n p Welcome to my super amazing site.\n include includes/foot\n```\n\nboth includes _includes/head_ and _includes/foot_ are\nread relative to the `filename` option given to _layout.jade_,\nwhich should be an absolute path to this file, however Express does this for you. Include then parses these files, and injects the AST produced to render what you would expect:\n\n```html\n\n \n My Site\n \n \n \n

    My Site

    \n

    Welcome to my super lame site.

    \n
    \n

    Copyright>(c) foobar

    \n
    \n \n\n```\n\n As mentioned `include` can be used to include other content\n such as html or css. By providing an extension Jade will not\n assume that the file is Jade source and will include it as\n a literal:\n\n```jade\nhtml\n body\n include content.html\n```\n\n Include directives may also accept a block, in which case the\n the given block will be appended to the _last_ block defined\n in the file. For example if `head.jade` contains:\n\n```jade\nhead\n script(src='/jquery.js')\n```\n\n We may append values by providing a block to `include head`\n as shown below, adding the two scripts.\n\n```jade\nhtml\n include head\n script(src='/foo.js')\n script(src='/bar.js')\n body\n h1 test\n```\n\n You may also `yield` within an included template, allowing you to explicitly mark where the block given to `include` will be placed. Suppose for example you wish to prepend scripts rather than append, you might do the following:\n\n```jade\nhead\n yield\n script(src='/jquery.js')\n script(src='/jquery.ui.js')\n```\n\n Since included Jade is parsed and literally merges the AST, lexically scoped variables function as if the included Jade was written right in the same file. This means `include` may be used as sort of partial, for example suppose we have `user.jade` which utilizes a `user` variable.\n\n```jade\nh1= user.name\np= user.occupation\n```\n\nWe could then simply `include user` while iterating users, and since the `user` variable is already defined within the loop the included template will have access to it.\n\n```jade\nusers = [{ name: 'Tobi', occupation: 'Ferret' }]\n\neach user in users\n .user\n include user\n```\n\nyielding:\n\n```html\n
    \n

    Tobi

    \n

    Ferret

    \n
    \n```\n\nIf we wanted to expose a different variable name as `user` since `user.jade` references that name, we could simply define a new variable as shown here with `user = person`:\n\n```jade\neach person in users\n .user\n user = person\n include user\n```\n\n
    \n## Mixins\n\n Mixins are converted to regular JavaScript functions in\n the compiled template that Jade constructs. Mixins may\n take arguments, though not required:\n\n```jade\nmixin list\n ul\n li foo\n li bar\n li baz\n```\n\n Utilizing a mixin without args looks similar, just without a block:\n\n```jade\nh2 Groceries\nmixin list\n```\n\n Mixins may take one or more arguments as well, the arguments\n are regular javascripts expressions, so for example the following:\n\n```jade\nmixin pets(pets)\n ul.pets\n - each pet in pets\n li= pet\n\nmixin profile(user)\n .user\n h2= user.name\n mixin pets(user.pets)\n```\n\n Would yield something similar to the following html:\n\n```html\n
    \n

    tj

    \n
      \n
    • tobi
    • \n
    • loki
    • \n
    • jane
    • \n
    • manny
    • \n
    \n
    \n```\n\n
    \n## Generated Output\n\n Suppose we have the following Jade:\n\n```jade\n- var title = 'yay'\nh1.title #{title}\np Just an example\n```\n\n When the `compileDebug` option is not explicitly `false`, Jade\n will compile the function instrumented with `__.lineno = n;`, which\n in the event of an exception is passed to `rethrow()` which constructs\n a useful message relative to the initial Jade input.\n\n```js\nfunction anonymous(locals) {\n var __ = { lineno: 1, input: \"- var title = 'yay'\\nh1.title #{title}\\np Just an example\", filename: \"testing/test.js\" };\n var rethrow = jade.rethrow;\n try {\n var attrs = jade.attrs, escape = jade.escape;\n var buf = [];\n with (locals || {}) {\n var interp;\n __.lineno = 1;\n var title = 'yay'\n __.lineno = 2;\n buf.push('');\n buf.push('' + escape((interp = title) == null ? '' : interp) + '');\n buf.push('');\n __.lineno = 3;\n buf.push('

    ');\n buf.push('Just an example');\n buf.push('

    ');\n }\n return buf.join(\"\");\n } catch (err) {\n rethrow(err, __.input, __.filename, __.lineno);\n }\n}\n```\n\nWhen the `compileDebug` option _is_ explicitly `false`, this instrumentation\nis stripped, which is very helpful for light-weight client-side templates. Combining Jade's options with the `./runtime.js` file in this repo allows you\nto toString() compiled templates and avoid running the entire Jade library on\nthe client, increasing performance, and decreasing the amount of JavaScript\nrequired.\n\n```js\nfunction anonymous(locals) {\n var attrs = jade.attrs, escape = jade.escape;\n var buf = [];\n with (locals || {}) {\n var interp;\n var title = 'yay'\n buf.push('');\n buf.push('' + escape((interp = title) == null ? '' : interp) + '');\n buf.push('');\n buf.push('

    ');\n buf.push('Just an example');\n buf.push('

    ');\n }\n return buf.join(\"\");\n}\n```\n\n
    \n## Example Makefile\n\n Below is an example Makefile used to compile _pages/*.jade_\n into _pages/*.html_ files by simply executing `make`.\n\n_Note:_ If you try to run this snippet and `make` throws a `missing separator` error, you should make sure all indented lines use a tab for indentation instead of spaces. (For whatever reason, GitHub renders this code snippet with 4-space indentation although the actual README file uses tabs in this snippet.)\n\n```make\nJADE = $(shell find . -wholename './pages/*.jade')\nHTML = $(JADE:.jade=.html)\n\nall: $(HTML)\n\n%.html: %.jade\n\tjade < $< --path $< > $@\n\nclean:\n\trm -f $(HTML)\n\n.PHONY: clean\n```\n\nthis can be combined with the `watch(1)` command to produce\na watcher-like behaviour:\n\n```bash\n$ watch make\n```\n\n\n## jade(1)\n\n```\n\nUsage: jade [options] [dir|file ...]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -o, --obj javascript options object\n -O, --out output the compiled html to \n -p, --path filename used to resolve includes\n -P, --pretty compile pretty html output\n -c, --client compile for client-side runtime.js\n -D, --no-debug compile without debugging (smaller functions)\n\nExamples:\n\n # translate jade the templates dir\n $ jade templates\n\n # create {foo,bar}.html\n $ jade {foo,bar}.jade\n\n # jade over stdio\n $ jade < my.jade > my.html\n\n # jade over stdio\n $ echo \"h1 Jade!\" | jade\n\n # foo, bar dirs rendering to /tmp\n $ jade foo bar --out /tmp\n\n```\n\n\n## Tutorials\n\n - cssdeck interactive [Jade syntax tutorial](http://cssdeck.com/labs/learning-the-jade-templating-engine-syntax)\n - cssdeck interactive [Jade logic tutorial](http://cssdeck.com/labs/jade-templating-tutorial-codecast-part-2)\n - in [Japanese](http://blog.craftgear.net/4f501e97c1347ec934000001/title/10%E5%88%86%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8Bjade%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3)\n\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2010 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/jade/issues" - }, "_id": "jade@0.28.2", "_from": "jade@~0.28.1" } diff --git a/node/node_modules/docpad-plugin-livereload/README.md b/node/node_modules/docpad-plugin-livereload/README.md index 5163cb1af..24f9e5933 100644 --- a/node/node_modules/docpad-plugin-livereload/README.md +++ b/node/node_modules/docpad-plugin-livereload/README.md @@ -17,6 +17,9 @@ Automatically refreshes your [DocPad](https://docpad.org) built website whenever <%- @getBlock('scripts').toHTML() %> ``` +## Test + +See http://docpad.org/docs/plugin-write to setup a test environment, then run `cake test` to run tests. ## Configure diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/base64id/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/base64id/package.json index e91d46755..ba37f1406 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/base64id/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/base64id/package.json @@ -16,9 +16,10 @@ }, "readme": "base64id\n========\n\nNode.js module that generates a base64 id.\n\nUses crypto.randomBytes when available, falls back to unsafe methods for node.js <= 0.4.\n\nTo increase performance, random bytes are buffered to minimize the number of synchronous calls to crypto.randomBytes.\n\n## Installation\n\n $ npm install mongoose\n\n## Usage\n\n var base64id = require('base64id');\n\n var id = base64id.generateId();\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/faeldt/base64id/issues" - }, "_id": "base64id@0.1.0", - "_from": "base64id@0.1.0" + "dist": { + "shasum": "851a8aa985f8693545a5f20f26efcd034cc97ec9" + }, + "_from": "base64id@0.1.0", + "_resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/policyfile/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/policyfile/package.json index be0b8cbfb..4e9d365c3 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/policyfile/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/policyfile/package.json @@ -40,5 +40,9 @@ "readme": "## LOL, WUT?\nIt basically allows you to allow or disallow Flash Player sockets from accessing your site.\n\n## Installation\n\n```bash\nnpm install policyfile\n```\n## Usage\n\nThe server is based on the regular and know `net` and `http` server patterns. So it you can just listen\nfor all the events that a `net` based server emits etc. But there is one extra event, the `connect_failed`\nevent. This event is triggered when we are unable to listen on the supplied port number.\n\n### createServer\nCreates a new server instance and accepts 2 optional arguments:\n\n- `options` **Object** Options to configure the server instance\n - `log` **Boolean** Enable logging to STDOUT and STDERR (defaults to true)\n- `origins` **Array** An Array of origins that are allowed by the server (defaults to *:*)\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen();\n```\n\n#### server.listen\nStart listening on the server and it takes 3 optional arguments\n\n- `port` **Number** On which port number should we listen? (defaults to 843, which is the first port number the FlashPlayer checks)\n- `server` **Server** A http server, if we are unable to accept requests or run the server we can also answer the policy requests inline over the supplied HTTP server.\n- `callback` **Function** A callback function that is called when listening to the server was successful.\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen(1337, function(){\n console.log(':3 yay')\n});\n```\n\nChanging port numbers can be handy if you do not want to run your server as root and have port 843 forward to a non root port number (aka a number above 1024).\n\n```js\nvar pf = require('policyfile')\n , http = require('http');\n\nserver = http.createServer(function(q,r){r.writeHead(200);r.end('hello world')});\nserver.listen(80);\n\npf.createServer();\npf.listen(1337, server, function(){\n console.log(':3 yay')\n});\n```\n\nSupport for serving inline requests over a existing HTTP connection as the FlashPlayer will first check port 843, but if it's unable to get a response there it will send a policy file request over port 80, which is usually your http server.\n\n#### server.add\nAdds more origins to the policy file you can add as many arguments as you like.\n\n```js\nvar pf = require('policyfile');\npf.createServer(['google.com:80']);\npf.listen();\npf.add('blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080'); // now has 3 origins\n```\n\n#### server.add\nAdds more origins to the policy file you can add as many arguments as you like.\n\n```js\nvar pf = require('policyfile');\npf.createServer(['blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080']);\npf.listen();\npf.remove('blog.3rd-Eden.com:8080'); // only contains the :80 version now\n```\n\n#### server.close\nShuts down the server\n\n```js\nvar pf = require('policyfile');\npf.createServer();\npf.listen();\npf.close(); // OH NVM.\n```\n\n## API\nhttp://3rd-eden.com/FlashPolicyFileServer/\n\n## Examples\nSee https://github.com/3rd-Eden/FlashPolicyFileServer/tree/master/examples for examples\n\n## Licence\n\nMIT see LICENSE file in the repository", "readmeFilename": "README.md", "_id": "policyfile@0.0.4", - "_from": "policyfile@0.0.4" + "dist": { + "shasum": "5af2dd19129c3ae6f983003488b09c12bd0f0c68" + }, + "_from": "policyfile@0.0.4", + "_resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/redis/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/redis/package.json index 28946b474..6446434a1 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/redis/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/redis/package.json @@ -26,9 +26,10 @@ }, "readme": "redis - a node.js redis client\n===========================\n\nThis is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from\nexperimental Redis server branches.\n\n\nInstall with:\n\n npm install redis\n\nPieter Noordhuis has provided a binding to the official `hiredis` C library, which is non-blocking and fast. To use `hiredis`, do:\n\n npm install hiredis redis\n\nIf `hiredis` is installed, `node_redis` will use it by default. Otherwise, a pure JavaScript parser will be used.\n\nIf you use `hiredis`, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can\nhappen between node and native code modules after a node upgrade.\n\n\n## Usage\n\nSimple example, included as `examples/simple.js`:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n // if you'd like to select database 3, instead of 0 (default), call\n // client.select(3, function() { /* ... */ });\n\n client.on(\"error\", function (err) {\n console.log(\"Error \" + err);\n });\n\n client.set(\"string key\", \"string val\", redis.print);\n client.hset(\"hash key\", \"hashtest 1\", \"some value\", redis.print);\n client.hset([\"hash key\", \"hashtest 2\", \"some other value\"], redis.print);\n client.hkeys(\"hash key\", function (err, replies) {\n console.log(replies.length + \" replies:\");\n replies.forEach(function (reply, i) {\n console.log(\" \" + i + \": \" + reply);\n });\n client.quit();\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node example.js\n Reply: OK\n Reply: 0\n Reply: 0\n 2 replies:\n 0: hashtest 1\n 1: hashtest 2\n mjr:~/work/node_redis (master)$\n\n\n## Performance\n\nHere are typical results of `multi_bench.js` which is similar to `redis-benchmark` from the Redis distribution.\nIt uses 50 concurrent connections with no pipelining.\n\nJavaScript parser:\n\n PING: 20000 ops 42283.30 ops/sec 0/5/1.182\n SET: 20000 ops 32948.93 ops/sec 1/7/1.515\n GET: 20000 ops 28694.40 ops/sec 0/9/1.740\n INCR: 20000 ops 39370.08 ops/sec 0/8/1.269\n LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370\n LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048\n LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072\n\nhiredis parser:\n\n PING: 20000 ops 46189.38 ops/sec 1/4/1.082\n SET: 20000 ops 41237.11 ops/sec 0/6/1.210\n GET: 20000 ops 39682.54 ops/sec 1/7/1.257\n INCR: 20000 ops 40080.16 ops/sec 0/8/1.242\n LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212\n LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363\n LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287\n\nThe performance of `node_redis` improves dramatically with pipelining, which happens automatically in most normal programs.\n\n\n### Sending Commands\n\nEach Redis command is exposed as a function on the `client` object.\nAll functions take either an `args` Array plus optional `callback` Function or\na variable number of individual arguments followed by an optional callback.\nHere is an example of passing an array of arguments and a callback:\n\n client.mset([\"test keys 1\", \"test val 1\", \"test keys 2\", \"test val 2\"], function (err, res) {});\n\nHere is that same call in the second style:\n\n client.mset(\"test keys 1\", \"test val 1\", \"test keys 2\", \"test val 2\", function (err, res) {});\n\nNote that in either form the `callback` is optional:\n\n client.set(\"some key\", \"some val\");\n client.set([\"some other key\", \"some val\"]);\n\nIf the key is missing, reply will be null (probably):\n\n client.get(\"missingkey\", function(err, reply) {\n // reply is null when the key is missing\n console.log(reply);\n });\n\nFor a list of Redis commands, see [Redis Command Reference](http://redis.io/commands)\n\nThe commands can be specified in uppercase or lowercase for convenience. `client.get()` is the same as `client.GET()`.\n\nMinimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings,\ninteger replies return JavaScript Numbers, \"bulk\" replies return node Buffers, and \"multi bulk\" replies return a\nJavaScript Array of node Buffers. `HGETALL` returns an Object with Buffers keyed by the hash keys.\n\n# API\n\n## Connection Events\n\n`client` will emit some events about the state of the connection to the Redis server.\n\n### \"ready\"\n\n`client` will emit `ready` a connection is established to the Redis server and the server reports\nthat it is ready to receive commands. Commands issued before the `ready` event are queued,\nthen replayed just before this event is emitted.\n\n### \"connect\"\n\n`client` will emit `connect` at the same time as it emits `ready` unless `client.options.no_ready_check`\nis set. If this options is set, `connect` will be emitted when the stream is connected, and then\nyou are free to try to send commands.\n\n### \"error\"\n\n`client` will emit `error` when encountering an error connecting to the Redis server.\n\nNote that \"error\" is a special event type in node. If there are no listeners for an\n\"error\" event, node will exit. This is usually what you want, but it can lead to some\ncryptic error messages like this:\n\n mjr:~/work/node_redis (master)$ node example.js\n\n node.js:50\n throw e;\n ^\n Error: ECONNREFUSED, Connection refused\n at IOWatcher.callback (net:870:22)\n at node.js:607:9\n\nNot very useful in diagnosing the problem, but if your program isn't ready to handle this,\nit is probably the right thing to just exit.\n\n`client` will also emit `error` if an exception is thrown inside of `node_redis` for whatever reason.\nIt would be nice to distinguish these two cases.\n\n### \"end\"\n\n`client` will emit `end` when an established Redis server connection has closed.\n\n### \"drain\"\n\n`client` will emit `drain` when the TCP connection to the Redis server has been buffering, but is now\nwritable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now,\nyou need to check `client.command_queue.length` to decide when to reduce your send rate. Then you can\nresume sending when you get `drain`.\n\n### \"idle\"\n\n`client` will emit `idle` when there are no outstanding commands that are awaiting a response.\n\n## redis.createClient(port, host, options)\n\nCreate a new client connection. `port` defaults to `6379` and `host` defaults\nto `127.0.0.1`. If you have `redis-server` running on the same computer as node, then the defaults for\nport and host are probably fine. `options` in an object with the following possible properties:\n\n* `parser`: which Redis protocol reply parser to use. Defaults to `hiredis` if that module is installed.\nThis may also be set to `javascript`.\n* `return_buffers`: defaults to `false`. If set to `true`, then all replies will be sent to callbacks as node Buffer\nobjects instead of JavaScript Strings.\n* `detect_buffers`: default to `false`. If set to `true`, then replies will be sent to callbacks as node Buffer objects\nif any of the input arguments to the original command were Buffer objects.\nThis option lets you switch between Buffers and Strings on a per-command basis, whereas `return_buffers` applies to\nevery command on a client.\n* `socket_nodelay`: defaults to `true`. Whether to call setNoDelay() on the TCP stream, which disables the\nNagle algorithm on the underlying socket. Setting this option to `false` can result in additional throughput at the\ncost of more latency. Most applications will want this set to `true`.\n* `no_ready_check`: defaults to `false`. When a connection is established to the Redis server, the server might still\nbe loading the database from disk. While loading, the server not respond to any commands. To work around this,\n`node_redis` has a \"ready check\" which sends the `INFO` command to the server. The response from the `INFO` command\nindicates whether the server is ready for more commands. When ready, `node_redis` emits a `ready` event.\nSetting `no_ready_check` to `true` will inhibit this check.\n* `enable_offline_queue`: defaults to `true`. By default, if there is no active\nconnection to the redis server, commands are added to a queue and are executed\nonce the connection has been established. Setting `enable_offline_queue` to\n`false` will disable this feature and the callback will be execute immediately\nwith an error, or an error will be thrown if no callback is specified.\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient(null, null, {detect_buffers: true});\n\n client.set(\"foo_rand000000000000\", \"OK\");\n\n // This will return a JavaScript String\n client.get(\"foo_rand000000000000\", function (err, reply) {\n console.log(reply.toString()); // Will print `OK`\n });\n\n // This will return a Buffer since original key is specified as a Buffer\n client.get(new Buffer(\"foo_rand000000000000\"), function (err, reply) {\n console.log(reply.toString()); // Will print ``\n });\n client.end();\n```\n\n`createClient()` returns a `RedisClient` object that is named `client` in all of the examples here.\n\n## client.auth(password, callback)\n\nWhen connecting to Redis servers that require authentication, the `AUTH` command must be sent as the\nfirst command after connecting. This can be tricky to coordinate with reconnections, the ready check,\netc. To make this easier, `client.auth()` stashes `password` and will send it after each connection,\nincluding reconnections. `callback` is invoked only once, after the response to the very first\n`AUTH` command sent.\nNOTE: Your call to `client.auth()` should not be inside the ready handler. If\nyou are doing this wrong, `client` will emit an error that looks\nsomething like this `Error: Ready check failed: ERR operation not permitted`.\n\n## client.end()\n\nForcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed.\nIf you want to exit cleanly, call `client.quit()` to send the `QUIT` command after you have handled all replies.\n\nThis example closes the connection to the Redis server before the replies have been read. You probably don't\nwant to do this:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n client.set(\"foo_rand000000000000\", \"some fantastic value\");\n client.get(\"foo_rand000000000000\", function (err, reply) {\n console.log(reply.toString());\n });\n client.end();\n```\n\n`client.end()` is useful for timeout cases where something is stuck or taking too long and you want\nto start over.\n\n## Friendlier hash commands\n\nMost Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings.\nWhen dealing with hash values, there are a couple of useful exceptions to this.\n\n### client.hgetall(hash)\n\nThe reply from an HGETALL command will be converted into a JavaScript Object by `node_redis`. That way you can interact\nwith the responses using JavaScript syntax.\n\nExample:\n\n client.hmset(\"hosts\", \"mjr\", \"1\", \"another\", \"23\", \"home\", \"1234\");\n client.hgetall(\"hosts\", function (err, obj) {\n console.dir(obj);\n });\n\nOutput:\n\n { mjr: '1', another: '23', home: '1234' }\n\n### client.hmset(hash, obj, [callback])\n\nMultiple values in a hash can be set by supplying an object:\n\n client.HMSET(key2, {\n \"0123456789\": \"abcdefghij\", // NOTE: the key and value must both be strings\n \"some manner of key\": \"a type of value\"\n });\n\nThe properties and values of this Object will be set as keys and values in the Redis hash.\n\n### client.hmset(hash, key1, val1, ... keyn, valn, [callback])\n\nMultiple values may also be set by supplying a list:\n\n client.HMSET(key1, \"0123456789\", \"abcdefghij\", \"some manner of key\", \"a type of value\");\n\n\n## Publish / Subscribe\n\nHere is a simple example of the API for publish / subscribe. This program opens two\nclient connections, subscribes to a channel on one of them, and publishes to that\nchannel on the other:\n\n```js\n var redis = require(\"redis\"),\n client1 = redis.createClient(), client2 = redis.createClient(),\n msg_count = 0;\n\n client1.on(\"subscribe\", function (channel, count) {\n client2.publish(\"a nice channel\", \"I am sending a message.\");\n client2.publish(\"a nice channel\", \"I am sending a second message.\");\n client2.publish(\"a nice channel\", \"I am sending my last message.\");\n });\n\n client1.on(\"message\", function (channel, message) {\n console.log(\"client1 channel \" + channel + \": \" + message);\n msg_count += 1;\n if (msg_count === 3) {\n client1.unsubscribe();\n client1.end();\n client2.end();\n }\n });\n\n client1.incr(\"did a thing\");\n client1.subscribe(\"a nice channel\");\n```\n\nWhen a client issues a `SUBSCRIBE` or `PSUBSCRIBE`, that connection is put into \"pub/sub\" mode.\nAt that point, only commands that modify the subscription set are valid. When the subscription\nset is empty, the connection is put back into regular mode.\n\nIf you need to send regular commands to Redis while in pub/sub mode, just open another connection.\n\n## Pub / Sub Events\n\nIf a client has subscriptions active, it may emit these events:\n\n### \"message\" (channel, message)\n\nClient will emit `message` for every message received that matches an active subscription.\nListeners are passed the channel name as `channel` and the message Buffer as `message`.\n\n### \"pmessage\" (pattern, channel, message)\n\nClient will emit `pmessage` for every message received that matches an active subscription pattern.\nListeners are passed the original pattern used with `PSUBSCRIBE` as `pattern`, the sending channel\nname as `channel`, and the message Buffer as `message`.\n\n### \"subscribe\" (channel, count)\n\nClient will emit `subscribe` in response to a `SUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`.\n\n### \"psubscribe\" (pattern, count)\n\nClient will emit `psubscribe` in response to a `PSUBSCRIBE` command. Listeners are passed the\noriginal pattern as `pattern`, and the new count of subscriptions for this client as `count`.\n\n### \"unsubscribe\" (channel, count)\n\nClient will emit `unsubscribe` in response to a `UNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted.\n\n### \"punsubscribe\" (pattern, count)\n\nClient will emit `punsubscribe` in response to a `PUNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted.\n\n## client.multi([commands])\n\n`MULTI` commands are queued up until an `EXEC` is issued, and then all commands are run atomically by\nRedis. The interface in `node_redis` is to return an individual `Multi` object by calling `client.multi()`.\n\n```js\n var redis = require(\"./index\"),\n client = redis.createClient(), set_size = 20;\n\n client.sadd(\"bigset\", \"a member\");\n client.sadd(\"bigset\", \"another member\");\n\n while (set_size > 0) {\n client.sadd(\"bigset\", \"member \" + set_size);\n set_size -= 1;\n }\n\n // multi chain with an individual callback\n client.multi()\n .scard(\"bigset\")\n .smembers(\"bigset\")\n .keys(\"*\", function (err, replies) {\n // NOTE: code in this callback is NOT atomic\n // this only happens after the the .exec call finishes.\n client.mget(replies, redis.print);\n })\n .dbsize()\n .exec(function (err, replies) {\n console.log(\"MULTI got \" + replies.length + \" replies\");\n replies.forEach(function (reply, index) {\n console.log(\"Reply \" + index + \": \" + reply.toString());\n });\n });\n```\n\n`client.multi()` is a constructor that returns a `Multi` object. `Multi` objects share all of the\nsame command methods as `client` objects do. Commands are queued up inside the `Multi` object\nuntil `Multi.exec()` is invoked.\n\nYou can either chain together `MULTI` commands as in the above example, or you can queue individual\ncommands while still sending regular client command as in this example:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient(), multi;\n\n // start a separate multi command queue\n multi = client.multi();\n multi.incr(\"incr thing\", redis.print);\n multi.incr(\"incr other thing\", redis.print);\n\n // runs immediately\n client.mset(\"incr thing\", 100, \"incr other thing\", 1, redis.print);\n\n // drains multi queue and runs atomically\n multi.exec(function (err, replies) {\n console.log(replies); // 101, 2\n });\n\n // you can re-run the same transaction if you like\n multi.exec(function (err, replies) {\n console.log(replies); // 102, 3\n client.quit();\n });\n```\n\nIn addition to adding commands to the `MULTI` queue individually, you can also pass an array\nof commands and arguments to the constructor:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient(), multi;\n\n client.multi([\n [\"mget\", \"multifoo\", \"multibar\", redis.print],\n [\"incr\", \"multifoo\"],\n [\"incr\", \"multibar\"]\n ]).exec(function (err, replies) {\n console.log(replies);\n });\n```\n\n\n## Monitor mode\n\nRedis supports the `MONITOR` command, which lets you see all commands received by the Redis server\nacross all client connections, including from other client libraries and other computers.\n\nAfter you send the `MONITOR` command, no other commands are valid on that connection. `node_redis`\nwill emit a `monitor` event for every new monitor message that comes across. The callback for the\n`monitor` event takes a timestamp from the Redis server and an array of command arguments.\n\nHere is a simple example:\n\n```js\n var client = require(\"redis\").createClient(),\n util = require(\"util\");\n\n client.monitor(function (err, res) {\n console.log(\"Entering monitoring mode.\");\n });\n\n client.on(\"monitor\", function (time, args) {\n console.log(time + \": \" + util.inspect(args));\n });\n```\n\n# Extras\n\nSome other things you might like to know about.\n\n## client.server_info\n\nAfter the ready probe completes, the results from the INFO command are saved in the `client.server_info`\nobject.\n\nThe `versions` key contains an array of the elements of the version string for easy comparison.\n\n > client.server_info.redis_version\n '2.3.0'\n > client.server_info.versions\n [ 2, 3, 0 ]\n\n## redis.print()\n\nA handy callback function for displaying return values when testing. Example:\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n client.on(\"connect\", function () {\n client.set(\"foo_rand000000000000\", \"some fantastic value\", redis.print);\n client.get(\"foo_rand000000000000\", redis.print);\n });\n```\n\nThis will print:\n\n Reply: OK\n Reply: some fantastic value\n\nNote that this program will not exit cleanly because the client is still connected.\n\n## redis.debug_mode\n\nBoolean to enable debug mode and protocol tracing.\n\n```js\n var redis = require(\"redis\"),\n client = redis.createClient();\n\n redis.debug_mode = true;\n\n client.on(\"connect\", function () {\n client.set(\"foo_rand000000000000\", \"some fantastic value\");\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node ~/example.js\n send command: *3\n $3\n SET\n $20\n foo_rand000000000000\n $20\n some fantastic value\n\n on_data: +OK\n\n`send command` is data sent into Redis and `on_data` is data received from Redis.\n\n## client.send_command(command_name, args, callback)\n\nUsed internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis\nWiki have been added to the `client` object. However, if I missed any, or if new commands are introduced before\nthis library is updated, you can use `send_command()` to send arbitrary commands to Redis.\n\nAll commands are sent as multi-bulk commands. `args` can either be an Array of arguments, or omitted.\n\n## client.connected\n\nBoolean tracking the state of the connection to the Redis server.\n\n## client.command_queue.length\n\nThe number of commands that have been sent to the Redis server but not yet replied to. You can use this to\nenforce some kind of maximum queue depth for commands while connected.\n\nDon't mess with `client.command_queue` though unless you really know what you are doing.\n\n## client.offline_queue.length\n\nThe number of commands that have been queued up for a future connection. You can use this to enforce\nsome kind of maximum queue depth for pre-connection commands.\n\n## client.retry_delay\n\nCurrent delay in milliseconds before a connection retry will be attempted. This starts at `250`.\n\n## client.retry_backoff\n\nMultiplier for future retry timeouts. This should be larger than 1 to add more time between retries.\nDefaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc.\n\n### Commands with Optional and Keyword arguments\n\nThis applies to anything that uses an optional `[WITHSCORES]` or `[LIMIT offset count]` in the [redis.io/commands](http://redis.io/commands) documentation.\n\nExample:\n```js\nvar args = [ 'myzset', 1, 'one', 2, 'two', 3, 'three', 99, 'ninety-nine' ];\nclient.zadd(args, function (err, response) {\n if (err) throw err;\n console.log('added '+response+' items.');\n\n // -Infinity and +Infinity also work\n var args1 = [ 'myzset', '+inf', '-inf' ];\n client.zrevrangebyscore(args1, function (err, response) {\n if (err) throw err;\n console.log('example1', response);\n // write your code here\n });\n\n var max = 3, min = 1, offset = 1, count = 2;\n var args2 = [ 'myzset', max, min, 'WITHSCORES', 'LIMIT', offset, count ];\n client.zrevrangebyscore(args2, function (err, response) {\n if (err) throw err;\n console.log('example2', response);\n // write your code here\n });\n});\n```\n\n## TODO\n\nBetter tests for auth, disconnect/reconnect, and all combinations thereof.\n\nStream large set/get values into and out of Redis. Otherwise the entire value must be in node's memory.\n\nPerformance can be better for very large values.\n\nI think there are more performance improvements left in there for smaller values, especially for large lists of small values.\n\n## How to Contribute\n- open a pull request and then wait for feedback (if\n [DTrejo](http://github.com/dtrejo) does not get back to you within 2 days,\n comment again with indignation!)\n\n## Contributors\nSome people have have added features and fixed bugs in `node_redis` other than me.\n\nOrdered by date of first contribution.\n[Auto-generated](http://github.com/dtrejo/node-authors) on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT).\n\n- [Matt Ranney aka `mranney`](https://github.com/mranney)\n- [Tim-Smart aka `tim-smart`](https://github.com/tim-smart)\n- [Tj Holowaychuk aka `visionmedia`](https://github.com/visionmedia)\n- [rick aka `technoweenie`](https://github.com/technoweenie)\n- [Orion Henry aka `orionz`](https://github.com/orionz)\n- [Aivo Paas aka `aivopaas`](https://github.com/aivopaas)\n- [Hank Sims aka `hanksims`](https://github.com/hanksims)\n- [Paul Carey aka `paulcarey`](https://github.com/paulcarey)\n- [Pieter Noordhuis aka `pietern`](https://github.com/pietern)\n- [nithesh aka `nithesh`](https://github.com/nithesh)\n- [Andy Ray aka `andy2ray`](https://github.com/andy2ray)\n- [unknown aka `unknowdna`](https://github.com/unknowdna)\n- [Dave Hoover aka `redsquirrel`](https://github.com/redsquirrel)\n- [Vladimir Dronnikov aka `dvv`](https://github.com/dvv)\n- [Umair Siddique aka `umairsiddique`](https://github.com/umairsiddique)\n- [Louis-Philippe Perron aka `lp`](https://github.com/lp)\n- [Mark Dawson aka `markdaws`](https://github.com/markdaws)\n- [Ian Babrou aka `bobrik`](https://github.com/bobrik)\n- [Felix Geisendörfer aka `felixge`](https://github.com/felixge)\n- [Jean-Hugues Pinson aka `undefined`](https://github.com/undefined)\n- [Maksim Lin aka `maks`](https://github.com/maks)\n- [Owen Smith aka `orls`](https://github.com/orls)\n- [Zachary Scott aka `zzak`](https://github.com/zzak)\n- [TEHEK Firefox aka `TEHEK`](https://github.com/TEHEK)\n- [Isaac Z. Schlueter aka `isaacs`](https://github.com/isaacs)\n- [David Trejo aka `DTrejo`](https://github.com/DTrejo)\n- [Brian Noguchi aka `bnoguchi`](https://github.com/bnoguchi)\n- [Philip Tellis aka `bluesmoon`](https://github.com/bluesmoon)\n- [Marcus Westin aka `marcuswestin2`](https://github.com/marcuswestin2)\n- [Jed Schmidt aka `jed`](https://github.com/jed)\n- [Dave Peticolas aka `jdavisp3`](https://github.com/jdavisp3)\n- [Trae Robrock aka `trobrock`](https://github.com/trobrock)\n- [Shankar Karuppiah aka `shankar0306`](https://github.com/shankar0306)\n- [Ignacio Burgueño aka `ignacio`](https://github.com/ignacio)\n\nThanks.\n\n## LICENSE - \"MIT License\"\n\nCopyright (c) 2010 Matthew Ranney, http://ranney.com/\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\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\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n![spacer](http://ranney.com/1px.gif)\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mranney/node_redis/issues" - }, "_id": "redis@0.7.3", - "_from": "redis@0.7.3" + "dist": { + "shasum": "92259aba89549894a7608cd4daeffc530dc697c7" + }, + "_from": "redis@0.7.3", + "_resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json index 903204475..64ea1cf49 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json @@ -19,9 +19,10 @@ "devDependencies": {}, "readme": "This is a JavaScript parser.\nhttp://github.com/qfox/ZeParser\n(c) Peter van der Zee\nhttp://qfox.nl\n\n\nBenchmark\nhttp://qfox.github.com/ZeParser/benchmark.html\n\nThe Tokenizer is used by the parser. The parser tells the tokenizer whether the next token may be a regular expression or not. Without the parser, the tokenizer will fail if regular expression literals are used in the input.\n\nUsage:\nZeParser.parse(input);\n\nReturns a \"parse tree\" which is a tree of an array of arrays with tokens (regular objects) as leafs. Meta information embedded as properties (of the arrays and the tokens).\n\nZeParser.createParser(input);\n\nReturns a new ZeParser instance which has already parsed the input. Amongst others, the ZeParser instance will have the properties .tree, .wtree and .btree.\n\n.tree is the parse tree mentioned above.\n.wtree (\"white\" tree) is a regular array with all the tokens encountered (including whitespace, line terminators and comments)\n.btree (\"black\" tree) is just like .wtree but without the whitespace, line terminators and comments. This is what the specification would call the \"token stream\".\n\nI'm aware that the naming convention is a bit awkward. It's a tradeoff between short and descriptive. The streams are used quite often in the analysis.\n\nTokens are regular objects with several properties. Amongst them are .tokposw and .tokposw, they correspond with their own position in the .wtree and .btree.\n\nThe parser has two modes for parsing: simple and extended. Simple mode is mainly for just parsing and returning the streams and a simple parse tree. There's not so much meta information here and this mode is mainly built for speed. The other mode has everything required for Zeon to do its job. This mode is toggled by the instance property .ast, which is true by default :)\n\nNon-factory example:\n\nvar input = \"foo\";\nvar tree = []; // this should probably be refactored away some day\nvar tokenizer = new Tokenizer(input); // dito\nvar parser = new ZeParser(input, tokenizer, tree);\nparser.parse(); // returns tree..., should never throw errors\n", "readmeFilename": "README", - "bugs": { - "url": "https://github.com/qfox/ZeParser/issues" - }, "_id": "zeparser@0.0.5", - "_from": "zeparser@0.0.5" + "dist": { + "shasum": "b6932cb5a7e6391618033bf7da107187d9b825c4" + }, + "_from": "zeparser@0.0.5", + "_resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/package.json index 53d305185..e9baa6819 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/package.json @@ -26,9 +26,10 @@ "optionalDependencies": {}, "readme": "# active-x-obfuscator\n\nA module to (safely) obfuscate all occurrences of the string 'ActiveX' inside\nany JavaScript code.\n\n## Why?\n\nSome corporate firewalls /proxies such as Blue Coat block JavaScript files to be\ndownloaded if they contain the word `'ActiveX'`. That of course is very annoying\nfor libraries such as [socket.io][] that need to use `ActiveXObject` for\nsupporting IE8 and older.\n\n## Install\n\n```\nnpm install active-x-obfuscator\n```\n\n## Usage\n\n```js\nvar activeXObfuscator = require('active-x-obfuscator');\nvar code = 'foo(new ActiveXObject());';\n\nvar obfuscated = activeXObfuscator(code);\n// -> foo(new window[(['Active'].concat('Object').join('X'))])\n```\n\n## License\n\nLicensed under the MIT license.\n\n[socket.io]: http://socket.io/\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-active-x-obfuscator/issues" - }, "_id": "active-x-obfuscator@0.0.1", - "_from": "active-x-obfuscator@0.0.1" + "dist": { + "shasum": "e570359f5a624d15ca7ede4213398b6219c6b5f8" + }, + "_from": "active-x-obfuscator@0.0.1", + "_resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json.REMOVED.git-id b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json.REMOVED.git-id index ed56adbc8..997306a65 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json.REMOVED.git-id +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json.REMOVED.git-id @@ -1 +1 @@ -d930a08c4b0d771fe2d2736b0c152d0fa43217ea \ No newline at end of file +83a6a454a120408efafeaaefb3bfd0c98beb27fb \ No newline at end of file diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Makefile b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Makefile index fc219f0f2..56e2959cb 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Makefile +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Makefile @@ -49,9 +49,9 @@ all_deps := # export LINK=g++ # # This will allow make to invoke N linker processes as specified in -jN. -LINK ?= flock $(builddir)/linker.lock $(CXX) +LINK ?= ./gyp-mac-tool flock $(builddir)/linker.lock $(CXX) -CC.target ?= $(CC) +CC.target ?= gcc-4.2 CFLAGS.target ?= $(CFLAGS) CXX.target ?= $(CXX) CXXFLAGS.target ?= $(CXXFLAGS) @@ -134,6 +134,34 @@ cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $ quiet_cmd_cxx = CXX($(TOOLSET)) $@ cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_objc = CXX($(TOOLSET)) $@ +cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< + +quiet_cmd_objcxx = CXX($(TOOLSET)) $@ +cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< + +# Commands for precompiled header files. +quiet_cmd_pch_c = CXX($(TOOLSET)) $@ +cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_pch_cc = CXX($(TOOLSET)) $@ +cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_pch_m = CXX($(TOOLSET)) $@ +cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< +quiet_cmd_pch_mm = CXX($(TOOLSET)) $@ +cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< + +# gyp-mac-tool is written next to the root Makefile by gyp. +# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd +# already. +quiet_cmd_mac_tool = MACTOOL $(4) $< +cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" + +quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ +cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) + +quiet_cmd_infoplist = INFOPLIST $@ +cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@" + quiet_cmd_touch = TOUCH $@ cmd_touch = touch $@ @@ -141,39 +169,21 @@ quiet_cmd_copy = COPY $@ # send stderr to /dev/null to ignore messages when linking directories. cmd_copy = rm -rf "$@" && cp -af "$<" "$@" -quiet_cmd_alink = AR($(TOOLSET)) $@ -cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^) +quiet_cmd_alink = LIBTOOL-STATIC $@ +cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^) -quiet_cmd_alink_thin = AR($(TOOLSET)) $@ -cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^) - -# Due to circular dependencies between libraries :(, we wrap the -# special "figure out circular dependencies" flags around the entire -# input list during linking. quiet_cmd_link = LINK($(TOOLSET)) $@ -cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS) +cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) -# We support two kinds of shared objects (.so): -# 1) shared_library, which is just bundling together many dependent libraries -# into a link line. -# 2) loadable_module, which is generating a module intended for dlopen(). -# -# They differ only slightly: -# In the former case, we want to package all dependent code into the .so. -# In the latter case, we want to package just the API exposed by the -# outermost module. -# This means shared_library uses --whole-archive, while loadable_module doesn't. -# (Note that --whole-archive is incompatible with the --start-group used in -# normal linking.) - -# Other shared-object link notes: -# - Set SONAME to the library filename so our binaries don't reference -# the local, absolute paths used on the link command-line. +# TODO(thakis): Find out and document the difference between shared_library and +# loadable_module on mac. quiet_cmd_solink = SOLINK($(TOOLSET)) $@ -cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS) +cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) +# TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass +# -bundle -single_module here (for osmesa.so). quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ -cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS) +cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) # Define an escape_quotes function to escape single quotes. @@ -239,7 +249,7 @@ define do_cmd $(if $(or $(command_changed),$(prereq_changed)), @$(call exact_echo, $($(quiet)cmd_$(1))) @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" - $(if $(findstring flock,$(word 1,$(cmd_$1))), + $(if $(findstring flock,$(word 2,$(cmd_$1))), @$(cmd_$(1)) @echo " $(quiet_cmd_$(1)): Finished", @$(cmd_$(1)) @@ -277,6 +287,10 @@ $(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD @$(call do_cmd,cxx,1) $(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) $(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD @$(call do_cmd,cc,1) $(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD @@ -291,6 +305,10 @@ $(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD @$(call do_cmd,cxx,1) $(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) $(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD @$(call do_cmd,cc,1) $(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD @@ -304,6 +322,10 @@ $(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD @$(call do_cmd,cxx,1) $(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) $(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD @$(call do_cmd,cc,1) $(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD @@ -322,8 +344,8 @@ ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ endif quiet_cmd_regen_makefile = ACTION Regenerating $@ -cmd_regen_makefile = /usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp -fmake --ignore-environment "--toplevel-dir=." -I/home/jack/quirky/modules/semantic/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi -I/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/home/jack/.node-gyp/0.10.3/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/home/jack/.node-gyp/0.10.3" "-Dmodule_root_dir=/home/jack/quirky/modules/semantic/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws" binding.gyp -Makefile: $(srcdir)/../../../../../../../../../../../../.node-gyp/0.10.3/common.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../../../../../../../../../../usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi +cmd_regen_makefile = /usr/local/Cellar/node/0.10.4/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp -fmake --ignore-environment "--toplevel-dir=." -I/Users/nsmith/Projects/semantic/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi -I/usr/local/Cellar/node/0.10.4/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/nsmith/.node-gyp/0.10.4/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/nsmith/.node-gyp/0.10.4" "-Dmodule_root_dir=/Users/nsmith/Projects/semantic/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws" binding.gyp +Makefile: $(srcdir)/../../../../../../../../../../../.node-gyp/0.10.4/common.gypi $(srcdir)/../../../../../../../../../../../../../usr/local/Cellar/node/0.10.4/lib/node_modules/npm/node_modules/node-gyp/addon.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(call do_cmd,regen_makefile) # "all" is a concatenation of the "all" targets from all the included diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/bufferutil.node.d b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/bufferutil.node.d index 03982bedf..8b191311c 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/bufferutil.node.d +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/bufferutil.node.d @@ -1 +1 @@ -cmd_Release/bufferutil.node := rm -rf "Release/bufferutil.node" && cp -af "Release/obj.target/bufferutil.node" "Release/bufferutil.node" +cmd_Release/bufferutil.node := ./gyp-mac-tool flock ./Release/linker.lock c++ -shared -Wl,-search_paths_first -mmacosx-version-min=10.5 -arch x86_64 -L./Release -install_name @rpath/bufferutil.node -o Release/bufferutil.node Release/obj.target/bufferutil/src/bufferutil.o -undefined dynamic_lookup diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil.node.d b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil.node.d deleted file mode 100644 index c329bd590..000000000 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil.node.d +++ /dev/null @@ -1 +0,0 @@ -cmd_Release/obj.target/bufferutil.node := flock ./Release/linker.lock g++ -shared -pthread -rdynamic -m64 -Wl,-soname=bufferutil.node -o Release/obj.target/bufferutil.node -Wl,--start-group Release/obj.target/bufferutil/src/bufferutil.o -Wl,--end-group diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d index f566af968..6ce2483d0 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d @@ -1,25 +1,21 @@ -cmd_Release/obj.target/bufferutil/src/bufferutil.o := g++ '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/home/jack/.node-gyp/0.10.3/src -I/home/jack/.node-gyp/0.10.3/deps/uv/include -I/home/jack/.node-gyp/0.10.3/deps/v8/include -fPIC -Wall -Wextra -Wno-unused-parameter -pthread -m64 -O2 -fno-strict-aliasing -fno-tree-vrp -fno-rtti -fno-exceptions -MMD -MF ./Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d.raw -c -o Release/obj.target/bufferutil/src/bufferutil.o ../src/bufferutil.cc +cmd_Release/obj.target/bufferutil/src/bufferutil.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/nsmith/.node-gyp/0.10.4/src -I/Users/nsmith/.node-gyp/0.10.4/deps/uv/include -I/Users/nsmith/.node-gyp/0.10.4/deps/v8/include -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-exceptions -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d.raw -c -o Release/obj.target/bufferutil/src/bufferutil.o ../src/bufferutil.cc Release/obj.target/bufferutil/src/bufferutil.o: ../src/bufferutil.cc \ - /home/jack/.node-gyp/0.10.3/deps/v8/include/v8.h \ - /home/jack/.node-gyp/0.10.3/deps/v8/include/v8stdint.h \ - /home/jack/.node-gyp/0.10.3/src/node.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-unix.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/ngx-queue.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-linux.h \ - /home/jack/.node-gyp/0.10.3/src/node_object_wrap.h \ - /home/jack/.node-gyp/0.10.3/src/node.h \ - /home/jack/.node-gyp/0.10.3/src/node_buffer.h \ - /home/jack/.node-gyp/0.10.3/src/node_object_wrap.h + /Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8stdint.h \ + /Users/nsmith/.node-gyp/0.10.4/src/node.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-unix.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/ngx-queue.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-darwin.h \ + /Users/nsmith/.node-gyp/0.10.4/src/node_object_wrap.h \ + /Users/nsmith/.node-gyp/0.10.4/src/node_buffer.h ../src/bufferutil.cc: -/home/jack/.node-gyp/0.10.3/deps/v8/include/v8.h: -/home/jack/.node-gyp/0.10.3/deps/v8/include/v8stdint.h: -/home/jack/.node-gyp/0.10.3/src/node.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-unix.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/ngx-queue.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-linux.h: -/home/jack/.node-gyp/0.10.3/src/node_object_wrap.h: -/home/jack/.node-gyp/0.10.3/src/node.h: -/home/jack/.node-gyp/0.10.3/src/node_buffer.h: -/home/jack/.node-gyp/0.10.3/src/node_object_wrap.h: +/Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8.h: +/Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8stdint.h: +/Users/nsmith/.node-gyp/0.10.4/src/node.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-unix.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/ngx-queue.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-darwin.h: +/Users/nsmith/.node-gyp/0.10.4/src/node_object_wrap.h: +/Users/nsmith/.node-gyp/0.10.4/src/node_buffer.h: diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation.node.d b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation.node.d deleted file mode 100644 index f39b7c987..000000000 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation.node.d +++ /dev/null @@ -1 +0,0 @@ -cmd_Release/obj.target/validation.node := flock ./Release/linker.lock g++ -shared -pthread -rdynamic -m64 -Wl,-soname=validation.node -o Release/obj.target/validation.node -Wl,--start-group Release/obj.target/validation/src/validation.o -Wl,--end-group diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation/src/validation.o.d b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation/src/validation.o.d index e15ef29c2..cfd933a69 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation/src/validation.o.d +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation/src/validation.o.d @@ -1,25 +1,21 @@ -cmd_Release/obj.target/validation/src/validation.o := g++ '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/home/jack/.node-gyp/0.10.3/src -I/home/jack/.node-gyp/0.10.3/deps/uv/include -I/home/jack/.node-gyp/0.10.3/deps/v8/include -fPIC -Wall -Wextra -Wno-unused-parameter -pthread -m64 -O2 -fno-strict-aliasing -fno-tree-vrp -fno-rtti -fno-exceptions -MMD -MF ./Release/.deps/Release/obj.target/validation/src/validation.o.d.raw -c -o Release/obj.target/validation/src/validation.o ../src/validation.cc +cmd_Release/obj.target/validation/src/validation.o := c++ '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/nsmith/.node-gyp/0.10.4/src -I/Users/nsmith/.node-gyp/0.10.4/deps/uv/include -I/Users/nsmith/.node-gyp/0.10.4/deps/v8/include -Os -gdwarf-2 -mmacosx-version-min=10.5 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-rtti -fno-exceptions -fno-threadsafe-statics -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/validation/src/validation.o.d.raw -c -o Release/obj.target/validation/src/validation.o ../src/validation.cc Release/obj.target/validation/src/validation.o: ../src/validation.cc \ - /home/jack/.node-gyp/0.10.3/deps/v8/include/v8.h \ - /home/jack/.node-gyp/0.10.3/deps/v8/include/v8stdint.h \ - /home/jack/.node-gyp/0.10.3/src/node.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-unix.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/ngx-queue.h \ - /home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-linux.h \ - /home/jack/.node-gyp/0.10.3/src/node_object_wrap.h \ - /home/jack/.node-gyp/0.10.3/src/node.h \ - /home/jack/.node-gyp/0.10.3/src/node_buffer.h \ - /home/jack/.node-gyp/0.10.3/src/node_object_wrap.h + /Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8stdint.h \ + /Users/nsmith/.node-gyp/0.10.4/src/node.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-unix.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/ngx-queue.h \ + /Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-darwin.h \ + /Users/nsmith/.node-gyp/0.10.4/src/node_object_wrap.h \ + /Users/nsmith/.node-gyp/0.10.4/src/node_buffer.h ../src/validation.cc: -/home/jack/.node-gyp/0.10.3/deps/v8/include/v8.h: -/home/jack/.node-gyp/0.10.3/deps/v8/include/v8stdint.h: -/home/jack/.node-gyp/0.10.3/src/node.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-unix.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/ngx-queue.h: -/home/jack/.node-gyp/0.10.3/deps/uv/include/uv-private/uv-linux.h: -/home/jack/.node-gyp/0.10.3/src/node_object_wrap.h: -/home/jack/.node-gyp/0.10.3/src/node.h: -/home/jack/.node-gyp/0.10.3/src/node_buffer.h: -/home/jack/.node-gyp/0.10.3/src/node_object_wrap.h: +/Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8.h: +/Users/nsmith/.node-gyp/0.10.4/deps/v8/include/v8stdint.h: +/Users/nsmith/.node-gyp/0.10.4/src/node.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-unix.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/ngx-queue.h: +/Users/nsmith/.node-gyp/0.10.4/deps/uv/include/uv-private/uv-darwin.h: +/Users/nsmith/.node-gyp/0.10.4/src/node_object_wrap.h: +/Users/nsmith/.node-gyp/0.10.4/src/node_buffer.h: diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/validation.node.d b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/validation.node.d index 6b32ade13..869c91e2a 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/validation.node.d +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/validation.node.d @@ -1 +1 @@ -cmd_Release/validation.node := rm -rf "Release/validation.node" && cp -af "Release/obj.target/validation.node" "Release/validation.node" +cmd_Release/validation.node := ./gyp-mac-tool flock ./Release/linker.lock c++ -shared -Wl,-search_paths_first -mmacosx-version-min=10.5 -arch x86_64 -L./Release -install_name @rpath/validation.node -o Release/validation.node Release/obj.target/validation/src/validation.o -undefined dynamic_lookup diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/bufferutil.node b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/bufferutil.node index 766e621d0b9754403b2c5c031ff4dae602a07884..3a88d994149d4bf4ad1445cffbdb0f5cd46d96c7 100755 GIT binary patch literal 18260 zcmeHPe{@vUoqv;rFanXNxb+8Ws8FGmB$FRFvBolz2{V$!frKAb@G+TrBx5Esapp}( zv})ENyNpR}^jHqtLoMB-U39gZ?NW=bWh1bn9(RlAR;;YLE|wR?J?u&e>#y0*_x_l? zybz#!+H?G4?&03=_j|uT?)QH0efPfHcZXkp`tg@j6~&gTC`vwZ0dmh2Md|Ii0GOg& ziab9@QB<|by{3s(jW3GElZv2WQ-K*~lO$AC*Sd7Vc(U57n91w!J&!}8(d<~tQ+mb- zvKQAA&GAf?)!xr9;jDu~f@oVtT2bu69`%_Lx2Lvh;SMdv=<)sCM1eqhOc){h%>D)9 zdMp%a;c64&H~(_Z*dpvnT8NLgjY?HbL^g&ZK{XWF5M}gu|8~#jnuEfCqy;$vsH)bg zZixBYHO{ie&vyl{9}=A;n&!x4iNdoPeNojKSCh*mRV4620WCDm6SA8p*s2=r4hIDR zFqu7RPANLGU#i*?HBGw-_6ng-$;p92w7H)&Kdu%$0;(GJtMTsk=4e>$&|?$qd5XC3 zC1PBOHru2Aev^x^68-h-{;>*cf7j39JUOmJ%UF$RjbStn9%NOm^ENDV*LdYKTPkFV z1Qc}B*Emgn371&~tpg-NkCC~4aje6yx0W;~Hf+#h2|W}pjzoi)Lo`iD*5|L8@ zZhq_jE9auF5LuZr4GPl~G|k48Wcd_!0-LIoB;v7>aHyGbTn`4m^{wJX#h7xTX0VYa z=;c0vTH83i#_qVTwHM!XMm?n$Q)j$hOCX@eiydY))+h426mcs8T!2h8#W9<*5y(a$ z8-Z*DvJuEeARB>f1il&(a5dHqT(S3fI_+vq&-+Kbt@b^E%#gG^_&Yn7{s>3LIW=na$HB_!8Z z9fD!UNykCs8_dpLGIcRS_wS}xbK`ToAXDY11P3bb#5=dA@8X-G=1J{0dYI_D#$nFA zm2+ncZnNO-=3E!&<_m5OaR;g$sNJ1LGQNPAH?@yi>jzo~XH&oPr1m&oHh#nCQKOYC zvEHq9-R@Fl4<|(BddU3~y`CE%lE(hUXp=!u1gS(n3LeHufG7Dvp(kbc^u_I-0LH>i78T#gp8N`a_wx%CI*2JgL{csV_aLQQie=*PGgpF0i1!M!K-~D?r$) zBS~}zcI+4*_&@RmIGItRF`7^22JU&u*a(g*d2gX|-&A7+_(yr(zFOwpC!o*>;$yrI zbkp$6O?%KCqIZH$?IkrE)P7ECcBYmbK1Gh~VyZ7vzy3z3{*nm1TI5O%Ka1x zQR7Peb6x7FaRMl{zLSm1QDY})dSLq24UsedCfGj!yQVMk6xBV1 zx|-C7a_nX=8>pxlxH;`eyZWvwpS>$Jd$%XOzv|7{aSUg@?F5abcVI@pEBQgLEBS>@ z|2oQC-HtLxpYhSj-unp$q2>v_pu@OAV8e(Jf8=w@O!{|PB zeG6l`he*+O-!$VfE=tk89Z&jRJP_-)vlxMaA#giBu1Ogm-GQpqi>bZFS|-2W*aYZJ zv1cX@l$zMe24K{1gLcuAIBKk6EWO#CI!5HBAU%EcLpKlHFvp$x!bAEW8X?rWZ6Bl# zrH3(S+rRC8D)x|Z7)Ll*m3Ki6Vn#PegprKg#ZY=eEK&4f(qJ*RGf+U2kVi3>S{wI@0yMC-v!6yo2ZY-4-FULuUC-shTk*K2WX5<78L(u#$dGo(upx_9=bF~PVp^@xB^;XW_ z!r5;UdnvJN!4}@p9w$5;xaWWohF$hR_P(uO>**cVukrLv_k7!~FBofWDL3~Fnd>BT zqvTBQ+lj+aNW95rPr`u;eHo4UE#Ph%*1toYJhkN&28cC1SWj6715J181h#Vl9; zj>Wd1jT+cU4QwH~f$Hlxdp~EdA$AwBH-gP(^tzEIpwu(kEgO;y$UARa+5kYc@>#lLnh}!HodeEtHQdG?O1^_Hrb%`ru8cg4b?Z;^oqVEg&57c z^h>EFg?f;;MeFOU%w{ETo(V1N7eWmd%q%bPwRAcNG z7T8X@SDHgFrx?9N?Oy^DWP}=^zAfP1RdesIA@As*%lH_D7>QSaW};?1PwJVGcn(y0 z-XNBw^t^{z`3Ng%$x6@L%E}+IavLijW#x8O{xvHfW93g-xr3EYvhpcb{*0AFtfZYe zJ&$(l^t@+SNjo#%^H}*jD|fSUn3a22xsR1EvhpQXzQW2^S^2N5Jiy9>tb79{-X?#A z1z_Z{->32Jcg3@WZ{_$e2=C|k-xJ=$@uvybIZiv|NGr!5Cwwi(e?qvA<3A$2hU0%l zxRc{QApBa6KSX#D#|H?X#qkv3c8=4b=E&zKn4h#0j~wUtJ%k_OcsJpPIG!NqMxFjA6n9scf0cGqITuDUQ{qZ)17h0@EQ*L5M zI zYeQN%xFnj0pt+(Oi%ON%n!jy{KOAoM2inM=gjQ5tT?DfWZxq&)IgE;F8{#ULfc*x| zAFI*)dMnyk839k3GqG_~6*U7(wl*Ao{RZ6mHf+~imwz?N^MHc<2EJl`dlS-@sM$XQa5zciWmAl$hY^)<*J3c3HV$}LOg_fL5+@B8FB64|Bi zTigDJ+f7g+lD+M7@uZ%q}mm@!qAs6G>p!9-O zu0A=nKYt+ODap@<%rMpwO2MF*LAFOt(CcgHA~`?V0u_$%T{ za@!zx;VCYMcO#ypJwcM(K5AFkqcLMi%H5P?ktexhkTZmwQ;22S6*S4s%2AY4LhkRZ zawdB>K(0slclR0Of{=UT9Qx4@xo3pjWc^SIht>3b_+%zvko^^|D3J@f1Epd@&%c1v zWq-!u;2aKz1(e^%2QTII+XUPp;7$RD1$f1hNsxMj#u3Yy`3q$VT8#69Es*;y@$cCm?;q zAbP!ktpauk*d<_(fSUyz6mYA6+XdVq;E;g31RNIdB>@izcu2ta1T+LZF5oEvakZBD zX&10iK)QEL{uc>2UqGDbv3jR~iv{!u=o4^_fIWbDu+s&IfB7AP-g)J${EGK&iCbRG z*^_%D=TX}M+qBuvA=~%Fff9~flpwN9KLlc?DIObgZOV+%zg$i-Fsl@!kmmvIz~`Fi zIPgs*C=y6^<|oe&iEcn)rpey@;(USbJ&gOIqri<3;+CeirgY!Z!l+G1*MNW1-2OoQots z3jUR-l)uL+#FuTNJz_n%8uUzCPi8&2P0(_ExL?rn`FT>%@_Be&(DHfxLeO%4T!;^D zWM9s=YXmLlZ&=WBK5Q1Wd|q}7T8{T&LCg4^6to0}Q_ymK`aaRqdK7uy z{S!gUb8q?@JQIVrehx)XQT~PL;~5w6dL1;v_a*1zoZUX2o@1fucA8nf%|bt7q4!wm ztMO&Ztlwy%H(BUkTIgdI`s?VM*-KWd?$w$KMHH2omRY|m+->n-%d7W#mN{x1ui zGh@8{%PjPD7J9jbZew&0T;wTkq3`1I*kyRyY@v5Rvr$pb-wxOWI0T4`J?FnC;4Z*5 zpbY^J0e%~%96$~tYsedrTaa6kL&$d^w;_j-+mR#4QREKfJCW)4i*aQ7 zE=c<@-L=_>+=bkYd>8WF$n*_xHS%r9YmsRUy9fDRWPB1*XwUT_(~HUqM!b!ss! z9Q6msOU0vsHcc-MMJK6V7zl^7h(4aXFVKdg%;NQajgVj z@r!joZZ7DiTMpJs4^ag_Kn>~2X|F@5>a7iq(y@CFj#4jVL;i5+F3sIg*6Cd2VHXg* z4UMJhBK~pT?RMk0isSXl8?=q?70XDY$`xx#v?IiEw63|1@2wZWyJDXJBvVgCaIAiWQ z)XG(K_W=U%3oMggXLXG3jgSk%9dm>htz_3m{_xI9n`3uHtU;`($9OWhGi@fsIjp;*E=qlZFofG#gxo2ncH%dnJ=HPMjfR-+@J~J=a&(k z4PItge4P`fQH{fWn#xj9IiYLixN?=Ev9tBC#-0Cz@87 zrwFg%lh_;`w?aRZX1{`0oAJYN{M20jdY%7IUg&K3TROTy8(=Jxp-8dYaV+*y;W51Zsxr6uwSv@$Z0 zB1Q#Yz?!u7j<8?X${g4&CSHkihcZnplADH9aX6N0x~vq-0a>0XxX2rc>;6bUld5Nu zW?LccMyAbZ{9ZI}D{3rPX?McXs8%(GS|WZu5u;5@`dzll=_vEYmxiOw{xGesX9*?A zm)C^i9f&$tItPWydVj3V8^M08p@`_`pmLq`DRa5+9F&~gBfMN-<;Lq9LV9*BXT85o zJ44TXoxa*mgwL|mjK#dMQZ`cWFVq3FE&r(L-9?-Ni3>x?(YZH{Bzh;7U2v+;>QK zg@5H}**(eZW0OsFTqhdocIo&JPnr|DmWhurQbDHA?h(HwYx1j+{Rb*lcpGeF|KWxk zZ)TZCuxcf`xFHnLfe9l=ulaa`)v)tDYp)OM{s(9x~@AH=_$A^-pY literal 20261 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 diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil/src/bufferutil.o.REMOVED.git-id b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil/src/bufferutil.o.REMOVED.git-id new file mode 100644 index 000000000..542bfa53a --- /dev/null +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/bufferutil/src/bufferutil.o.REMOVED.git-id @@ -0,0 +1 @@ +cc6e4daa5d1d06ce0421dcb3ac11c5e2db263847 \ No newline at end of file diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation.node b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation.node deleted file mode 100755 index a21bc3ffa07db46c5e335787968b5305b02e4ba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20199 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 diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o deleted file mode 100644 index e8cb7b4e280c8ae8a1704d0d7705c4ca10757798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17280 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 diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o.REMOVED.git-id b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o.REMOVED.git-id new file mode 100644 index 000000000..94333e60b --- /dev/null +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/obj.target/validation/src/validation.o.REMOVED.git-id @@ -0,0 +1 @@ +50ade9dd343b4ed3f83447d43359715ceba80abf \ No newline at end of file diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/validation.node b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/validation.node index a21bc3ffa07db46c5e335787968b5305b02e4ba4..35fa7712059ca4ca6d1c158dcc6ea0c9b5adf85e 100755 GIT binary patch literal 18372 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 diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile index 87f21c7b5..a69b3d2ce 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile @@ -3,4 +3,4 @@ export builddir_name ?= build/./. .PHONY: all all: - $(MAKE) validation bufferutil + $(MAKE) bufferutil validation diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk index 2f6db91a2..b4bac0da5 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk @@ -3,6 +3,7 @@ TOOLSET := target TARGET := bufferutil DEFS_Debug := \ + '-D_DARWIN_USE_64_BIT_INODE=1' \ '-D_LARGEFILE_SOURCE' \ '-D_FILE_OFFSET_BITS=64' \ '-DBUILDING_NODE_EXTENSION' \ @@ -11,58 +12,75 @@ DEFS_Debug := \ # Flags passed to all source files. CFLAGS_Debug := \ - -fPIC \ + -O0 \ + -gdwarf-2 \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ -Wall \ - -Wextra \ - -Wno-unused-parameter \ - -pthread \ - -m64 \ - -O3 \ - -g \ - -O0 + -Wendif-labels \ + -W \ + -Wno-unused-parameter # Flags passed to only C files. -CFLAGS_C_Debug := +CFLAGS_C_Debug := \ + -fno-strict-aliasing # Flags passed to only C++ files. CFLAGS_CC_Debug := \ -fno-rtti \ - -fno-exceptions + -fno-exceptions \ + -fno-threadsafe-statics \ + -fno-strict-aliasing + +# Flags passed to only ObjC files. +CFLAGS_OBJC_Debug := + +# Flags passed to only ObjC++ files. +CFLAGS_OBJCC_Debug := INCS_Debug := \ - -I/home/jack/.node-gyp/0.10.3/src \ - -I/home/jack/.node-gyp/0.10.3/deps/uv/include \ - -I/home/jack/.node-gyp/0.10.3/deps/v8/include + -I/Users/nsmith/.node-gyp/0.10.4/src \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/uv/include \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/v8/include DEFS_Release := \ + '-D_DARWIN_USE_64_BIT_INODE=1' \ '-D_LARGEFILE_SOURCE' \ '-D_FILE_OFFSET_BITS=64' \ '-DBUILDING_NODE_EXTENSION' # Flags passed to all source files. CFLAGS_Release := \ - -fPIC \ + -Os \ + -gdwarf-2 \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ -Wall \ - -Wextra \ - -Wno-unused-parameter \ - -pthread \ - -m64 \ - -O2 \ - -fno-strict-aliasing \ - -fno-tree-vrp + -Wendif-labels \ + -W \ + -Wno-unused-parameter # Flags passed to only C files. -CFLAGS_C_Release := +CFLAGS_C_Release := \ + -fno-strict-aliasing # Flags passed to only C++ files. CFLAGS_CC_Release := \ -fno-rtti \ - -fno-exceptions + -fno-exceptions \ + -fno-threadsafe-statics \ + -fno-strict-aliasing + +# Flags passed to only ObjC files. +CFLAGS_OBJC_Release := + +# Flags passed to only ObjC++ files. +CFLAGS_OBJCC_Release := INCS_Release := \ - -I/home/jack/.node-gyp/0.10.3/src \ - -I/home/jack/.node-gyp/0.10.3/deps/uv/include \ - -I/home/jack/.node-gyp/0.10.3/deps/v8/include + -I/Users/nsmith/.node-gyp/0.10.4/src \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/uv/include \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/v8/include OBJS := \ $(obj).target/$(TARGET)/src/bufferutil.o @@ -75,6 +93,8 @@ all_deps += $(OBJS) $(OBJS): TOOLSET := $(TOOLSET) $(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) +$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) +$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) # Suffix rules, putting all outputs into $(obj). @@ -92,37 +112,43 @@ $(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD # End of this set of suffix rules ### Rules for final target. LDFLAGS_Debug := \ - -pthread \ - -rdynamic \ - -m64 + -Wl,-search_paths_first \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ + -L$(builddir) \ + -install_name @rpath/bufferutil.node + +LIBTOOLFLAGS_Debug := \ + -Wl,-search_paths_first LDFLAGS_Release := \ - -pthread \ - -rdynamic \ - -m64 + -Wl,-search_paths_first \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ + -L$(builddir) \ + -install_name @rpath/bufferutil.node + +LIBTOOLFLAGS_Release := \ + -Wl,-search_paths_first -LIBS := +LIBS := \ + -undefined dynamic_lookup -$(obj).target/bufferutil.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(obj).target/bufferutil.node: LIBS := $(LIBS) -$(obj).target/bufferutil.node: TOOLSET := $(TOOLSET) -$(obj).target/bufferutil.node: $(OBJS) FORCE_DO_CMD +$(builddir)/bufferutil.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(builddir)/bufferutil.node: LIBS := $(LIBS) +$(builddir)/bufferutil.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) +$(builddir)/bufferutil.node: TOOLSET := $(TOOLSET) +$(builddir)/bufferutil.node: $(OBJS) FORCE_DO_CMD $(call do_cmd,solink_module) -all_deps += $(obj).target/bufferutil.node +all_deps += $(builddir)/bufferutil.node # Add target alias .PHONY: bufferutil bufferutil: $(builddir)/bufferutil.node -# Copy this to the executable output path. -$(builddir)/bufferutil.node: TOOLSET := $(TOOLSET) -$(builddir)/bufferutil.node: $(obj).target/bufferutil.node FORCE_DO_CMD - $(call do_cmd,copy) - -all_deps += $(builddir)/bufferutil.node # Short alias for building this executable. .PHONY: bufferutil.node -bufferutil.node: $(obj).target/bufferutil.node $(builddir)/bufferutil.node +bufferutil.node: $(builddir)/bufferutil.node # Add executable to "all" target. .PHONY: all diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi index 227b9b9f8..9b6c2d76d 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi @@ -8,11 +8,10 @@ "libraries": [] }, "variables": { - "clang": 0, - "gcc_version": 46, + "clang": 1, "host_arch": "x64", "node_install_npm": "true", - "node_prefix": "/usr", + "node_prefix": "/usr/local/Cellar/node/0.10.4", "node_shared_cares": "false", "node_shared_http_parser": "false", "node_shared_libuv": "false", @@ -21,93 +20,92 @@ "node_shared_zlib": "false", "node_tag": "", "node_unsafe_optimizations": 0, - "node_use_dtrace": "false", + "node_use_dtrace": "true", "node_use_etw": "false", "node_use_openssl": "true", "node_use_perfctr": "false", - "node_use_systemtap": "false", "python": "/usr/bin/python", "target_arch": "x64", "v8_enable_gdbjit": 0, "v8_no_strict_aliasing": 1, - "v8_use_snapshot": "false", - "nodedir": "/home/jack/.node-gyp/0.10.3", + "v8_use_snapshot": "true", + "nodedir": "/Users/nsmith/.node-gyp/0.10.4", "copy_dev_lib": "true", "standalone_static_library": 1, - "cache_lock_stale": "60000", - "pre": "", - "sign_git_tag": "", - "always_auth": "", - "user_agent": "node/v0.10.3 linux x64", - "bin_links": "true", - "description": "true", - "fetch_retries": "2", - "init_version": "0.0.0", - "user": "", - "force": "", - "ignore": "", - "cache_min": "10", - "editor": "vi", - "rollback": "true", - "cache_max": "null", - "userconfig": "/home/jack/.npmrc", - "coverage": "", - "engine_strict": "", - "init_author_name": "", - "init_author_url": "", - "tmp": "/home/jack/tmp", - "userignorefile": "/home/jack/.npmignore", - "yes": "", - "depth": "null", "save_dev": "", + "browser": "", + "viewer": "man", + "rollback": "true", "usage": "", - "https_proxy": "", - "onload_script": "", - "rebuild_bundle": "true", - "save_bundle": "", + "globalignorefile": "/usr/local/share/npm/etc/npmignore", + "init_author_url": "", "shell": "/bin/bash", - "prefix": "/usr", + "parseable": "", + "userignorefile": "/Users/nsmith/.npmignore", + "cache_max": "null", + "init_author_email": "", + "sign_git_tag": "", + "ignore": "", + "long": "", "registry": "https://registry.npmjs.org/", - "browser": "", - "cache_lock_wait": "10000", - "save_optional": "", - "searchopts": "", + "fetch_retries": "2", + "npat": "", + "message": "%s", "versions": "", - "cache": "/home/jack/.npm", - "npaturl": "http://npat.npmjs.org/", - "searchsort": "name", - "version": "", - "viewer": "man", - "color": "true", + "globalconfig": "/usr/local/share/npm/etc/npmrc", + "always_auth": "", + "cache_lock_retries": "10", "fetch_retry_mintimeout": "10000", - "umask": "18", - "fetch_retry_maxtimeout": "60000", - "message": "%s", + "proprietary_attribs": "true", + "coverage": "", + "json": "", + "pre": "", + "description": "true", + "engine_strict": "", + "https_proxy": "", + "init_module": "/Users/nsmith/.npm-init.js", + "userconfig": "/Users/nsmith/.npmrc", + "npaturl": "http://npat.npmjs.org/", + "node_version": "v0.10.4", + "user": "501", + "save": "true", + "editor": "vi", + "tag": "latest", "global": "", - "link": "", - "save": "", + "optional": "true", + "username": "", + "force": "true", + "bin_links": "true", + "searchopts": "", + "depth": "null", + "rebuild_bundle": "true", + "searchsort": "name", "unicode": "true", - "long": "", - "production": "", - "unsafe_perm": "true", - "node_version": "v0.10.3", - "tag": "latest", - "fetch_retry_factor": "10", - "npat": "", - "proprietary_attribs": "true", + "yes": "", + "fetch_retry_maxtimeout": "60000", "strict_ssl": "true", - "username": "", "dev": "", - "globalconfig": "/usr/etc/npmrc", - "init_module": "/home/jack/.npm-init.js", - "parseable": "", - "globalignorefile": "/usr/etc/npmignore", - "cache_lock_retries": "10", - "group": "1000", - "init_author_email": "", + "fetch_retry_factor": "10", + "group": "20", + "cache_lock_stale": "60000", + "version": "", + "cache_min": "10", + "cache": "/Users/nsmith/.npm", "searchexclude": "", + "color": "true", + "save_optional": "", + "user_agent": "node/v0.10.4 darwin x64", + "cache_lock_wait": "10000", + "production": "", + "save_bundle": "", + "init_version": "0.0.0", + "umask": "18", "git": "git", - "optional": "true", - "json": "" + "init_author_name": "", + "onload_script": "", + "tmp": "/var/folders/7d/2kcxjwbj54j89czvg94x11p40000gn/T/", + "unsafe_perm": "true", + "prefix": "/usr/local/share/npm", + "link": "" } } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool new file mode 100755 index 000000000..bf059c307 --- /dev/null +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool @@ -0,0 +1,211 @@ +#!/usr/bin/env python +# Generated by gyp. Do not edit. +# Copyright (c) 2012 Google Inc. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility functions to perform Xcode-style build steps. + +These functions are executed via gyp-mac-tool when using the Makefile generator. +""" + +import fcntl +import os +import plistlib +import re +import shutil +import string +import subprocess +import sys + + +def main(args): + executor = MacTool() + exit_code = executor.Dispatch(args) + if exit_code is not None: + sys.exit(exit_code) + + +class MacTool(object): + """This class performs all the Mac tooling steps. The methods can either be + executed directly, or dispatched from an argument list.""" + + def Dispatch(self, args): + """Dispatches a string command to a method.""" + if len(args) < 1: + raise Exception("Not enough arguments") + + method = "Exec%s" % self._CommandifyName(args[0]) + return getattr(self, method)(*args[1:]) + + def _CommandifyName(self, name_string): + """Transforms a tool name like copy-info-plist to CopyInfoPlist""" + return name_string.title().replace('-', '') + + def ExecCopyBundleResource(self, source, dest): + """Copies a resource file to the bundle/Resources directory, performing any + necessary compilation on each resource.""" + extension = os.path.splitext(source)[1].lower() + if os.path.isdir(source): + # Copy tree. + if os.path.exists(dest): + shutil.rmtree(dest) + shutil.copytree(source, dest) + elif extension == '.xib': + return self._CopyXIBFile(source, dest) + elif extension == '.strings': + self._CopyStringsFile(source, dest) + else: + shutil.copyfile(source, dest) + + def _CopyXIBFile(self, source, dest): + """Compiles a XIB file with ibtool into a binary plist in the bundle.""" + tools_dir = os.environ.get('DEVELOPER_BIN_DIR', '/usr/bin') + args = [os.path.join(tools_dir, 'ibtool'), '--errors', '--warnings', + '--notices', '--output-format', 'human-readable-text', '--compile', + dest, source] + ibtool_section_re = re.compile(r'/\*.*\*/') + ibtool_re = re.compile(r'.*note:.*is clipping its content') + ibtoolout = subprocess.Popen(args, stdout=subprocess.PIPE) + current_section_header = None + for line in ibtoolout.stdout: + if ibtool_section_re.match(line): + current_section_header = line + elif not ibtool_re.match(line): + if current_section_header: + sys.stdout.write(current_section_header) + current_section_header = None + sys.stdout.write(line) + return ibtoolout.returncode + + def _CopyStringsFile(self, source, dest): + """Copies a .strings file using iconv to reconvert the input into UTF-16.""" + input_code = self._DetectInputEncoding(source) or "UTF-8" + fp = open(dest, 'w') + args = ['/usr/bin/iconv', '--from-code', input_code, '--to-code', + 'UTF-16', source] + subprocess.call(args, stdout=fp) + fp.close() + + def _DetectInputEncoding(self, file_name): + """Reads the first few bytes from file_name and tries to guess the text + encoding. Returns None as a guess if it can't detect it.""" + fp = open(file_name, 'rb') + try: + header = fp.read(3) + except e: + fp.close() + return None + fp.close() + if header.startswith("\xFE\xFF"): + return "UTF-16BE" + elif header.startswith("\xFF\xFE"): + return "UTF-16LE" + elif header.startswith("\xEF\xBB\xBF"): + return "UTF-8" + else: + return None + + def ExecCopyInfoPlist(self, source, dest): + """Copies the |source| Info.plist to the destination directory |dest|.""" + # Read the source Info.plist into memory. + fd = open(source, 'r') + lines = fd.read() + fd.close() + + # Go through all the environment variables and replace them as variables in + # the file. + for key in os.environ: + if key.startswith('_'): + continue + evar = '${%s}' % key + lines = string.replace(lines, evar, os.environ[key]) + + # Write out the file with variables replaced. + fd = open(dest, 'w') + fd.write(lines) + fd.close() + + # Now write out PkgInfo file now that the Info.plist file has been + # "compiled". + self._WritePkgInfo(dest) + + def _WritePkgInfo(self, info_plist): + """This writes the PkgInfo file from the data stored in Info.plist.""" + plist = plistlib.readPlist(info_plist) + if not plist: + return + + # Only create PkgInfo for executable types. + package_type = plist['CFBundlePackageType'] + if package_type != 'APPL': + return + + # The format of PkgInfo is eight characters, representing the bundle type + # and bundle signature, each four characters. If that is missing, four + # '?' characters are used instead. + signature_code = plist.get('CFBundleSignature', '????') + if len(signature_code) != 4: # Wrong length resets everything, too. + signature_code = '?' * 4 + + dest = os.path.join(os.path.dirname(info_plist), 'PkgInfo') + fp = open(dest, 'w') + fp.write('%s%s' % (package_type, signature_code)) + fp.close() + + def ExecFlock(self, lockfile, *cmd_list): + """Emulates the most basic behavior of Linux's flock(1).""" + # Rely on exception handling to report errors. + fd = os.open(lockfile, os.O_RDONLY|os.O_NOCTTY|os.O_CREAT, 0o666) + fcntl.flock(fd, fcntl.LOCK_EX) + return subprocess.call(cmd_list) + + def ExecFilterLibtool(self, *cmd_list): + """Calls libtool and filters out 'libtool: file: foo.o has no symbols'.""" + libtool_re = re.compile(r'^libtool: file: .* has no symbols$') + libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE) + _, err = libtoolout.communicate() + for line in err.splitlines(): + if not libtool_re.match(line): + print >>sys.stderr, line + return libtoolout.returncode + + def ExecPackageFramework(self, framework, version): + """Takes a path to Something.framework and the Current version of that and + sets up all the symlinks.""" + # Find the name of the binary based on the part before the ".framework". + binary = os.path.basename(framework).split('.')[0] + + CURRENT = 'Current' + RESOURCES = 'Resources' + VERSIONS = 'Versions' + + if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)): + # Binary-less frameworks don't seem to contain symlinks (see e.g. + # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle). + return + + # Move into the framework directory to set the symlinks correctly. + pwd = os.getcwd() + os.chdir(framework) + + # Set up the Current version. + self._Relink(version, os.path.join(VERSIONS, CURRENT)) + + # Set up the root symlinks. + self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary) + self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES) + + # Back to where we were before! + os.chdir(pwd) + + def _Relink(self, dest, link): + """Creates a symlink to |dest| named |link|. If |link| already exists, + it is overwritten.""" + if os.path.lexists(link): + os.remove(link) + os.symlink(dest, link) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk index 6c9979d10..b4233f27d 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk @@ -3,6 +3,7 @@ TOOLSET := target TARGET := validation DEFS_Debug := \ + '-D_DARWIN_USE_64_BIT_INODE=1' \ '-D_LARGEFILE_SOURCE' \ '-D_FILE_OFFSET_BITS=64' \ '-DBUILDING_NODE_EXTENSION' \ @@ -11,58 +12,75 @@ DEFS_Debug := \ # Flags passed to all source files. CFLAGS_Debug := \ - -fPIC \ + -O0 \ + -gdwarf-2 \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ -Wall \ - -Wextra \ - -Wno-unused-parameter \ - -pthread \ - -m64 \ - -O3 \ - -g \ - -O0 + -Wendif-labels \ + -W \ + -Wno-unused-parameter # Flags passed to only C files. -CFLAGS_C_Debug := +CFLAGS_C_Debug := \ + -fno-strict-aliasing # Flags passed to only C++ files. CFLAGS_CC_Debug := \ -fno-rtti \ - -fno-exceptions + -fno-exceptions \ + -fno-threadsafe-statics \ + -fno-strict-aliasing + +# Flags passed to only ObjC files. +CFLAGS_OBJC_Debug := + +# Flags passed to only ObjC++ files. +CFLAGS_OBJCC_Debug := INCS_Debug := \ - -I/home/jack/.node-gyp/0.10.3/src \ - -I/home/jack/.node-gyp/0.10.3/deps/uv/include \ - -I/home/jack/.node-gyp/0.10.3/deps/v8/include + -I/Users/nsmith/.node-gyp/0.10.4/src \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/uv/include \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/v8/include DEFS_Release := \ + '-D_DARWIN_USE_64_BIT_INODE=1' \ '-D_LARGEFILE_SOURCE' \ '-D_FILE_OFFSET_BITS=64' \ '-DBUILDING_NODE_EXTENSION' # Flags passed to all source files. CFLAGS_Release := \ - -fPIC \ + -Os \ + -gdwarf-2 \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ -Wall \ - -Wextra \ - -Wno-unused-parameter \ - -pthread \ - -m64 \ - -O2 \ - -fno-strict-aliasing \ - -fno-tree-vrp + -Wendif-labels \ + -W \ + -Wno-unused-parameter # Flags passed to only C files. -CFLAGS_C_Release := +CFLAGS_C_Release := \ + -fno-strict-aliasing # Flags passed to only C++ files. CFLAGS_CC_Release := \ -fno-rtti \ - -fno-exceptions + -fno-exceptions \ + -fno-threadsafe-statics \ + -fno-strict-aliasing + +# Flags passed to only ObjC files. +CFLAGS_OBJC_Release := + +# Flags passed to only ObjC++ files. +CFLAGS_OBJCC_Release := INCS_Release := \ - -I/home/jack/.node-gyp/0.10.3/src \ - -I/home/jack/.node-gyp/0.10.3/deps/uv/include \ - -I/home/jack/.node-gyp/0.10.3/deps/v8/include + -I/Users/nsmith/.node-gyp/0.10.4/src \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/uv/include \ + -I/Users/nsmith/.node-gyp/0.10.4/deps/v8/include OBJS := \ $(obj).target/$(TARGET)/src/validation.o @@ -75,6 +93,8 @@ all_deps += $(OBJS) $(OBJS): TOOLSET := $(TOOLSET) $(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) +$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) +$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) # Suffix rules, putting all outputs into $(obj). @@ -92,37 +112,43 @@ $(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD # End of this set of suffix rules ### Rules for final target. LDFLAGS_Debug := \ - -pthread \ - -rdynamic \ - -m64 + -Wl,-search_paths_first \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ + -L$(builddir) \ + -install_name @rpath/validation.node + +LIBTOOLFLAGS_Debug := \ + -Wl,-search_paths_first LDFLAGS_Release := \ - -pthread \ - -rdynamic \ - -m64 + -Wl,-search_paths_first \ + -mmacosx-version-min=10.5 \ + -arch x86_64 \ + -L$(builddir) \ + -install_name @rpath/validation.node + +LIBTOOLFLAGS_Release := \ + -Wl,-search_paths_first -LIBS := +LIBS := \ + -undefined dynamic_lookup -$(obj).target/validation.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(obj).target/validation.node: LIBS := $(LIBS) -$(obj).target/validation.node: TOOLSET := $(TOOLSET) -$(obj).target/validation.node: $(OBJS) FORCE_DO_CMD +$(builddir)/validation.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(builddir)/validation.node: LIBS := $(LIBS) +$(builddir)/validation.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) +$(builddir)/validation.node: TOOLSET := $(TOOLSET) +$(builddir)/validation.node: $(OBJS) FORCE_DO_CMD $(call do_cmd,solink_module) -all_deps += $(obj).target/validation.node +all_deps += $(builddir)/validation.node # Add target alias .PHONY: validation validation: $(builddir)/validation.node -# Copy this to the executable output path. -$(builddir)/validation.node: TOOLSET := $(TOOLSET) -$(builddir)/validation.node: $(obj).target/validation.node FORCE_DO_CMD - $(call do_cmd,copy) - -all_deps += $(builddir)/validation.node # Short alias for building this executable. .PHONY: validation.node -validation.node: $(obj).target/validation.node $(builddir)/validation.node +validation.node: $(builddir)/validation.node # Add executable to "all" target. .PHONY: all diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json index bb8a2c28e..c026f4bb3 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json @@ -30,9 +30,10 @@ }, "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, "_id": "commander@0.6.1", - "_from": "commander@~0.6.1" + "dist": { + "shasum": "c6860472593282da408441578d3550e16fc313f1" + }, + "_from": "commander@~0.6.1", + "_resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json index 900f35f61..c6feee4b0 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json @@ -24,9 +24,10 @@ }, "readme": "# options.js #\n\nA very light-weight in-code option parsers for node.js.\n\n## License ##\n\n(The MIT License)\n\nCopyright (c) 2012 Einar Otto Stangvik <einaros@gmail.com>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/einaros/options.js/issues" - }, "_id": "options@0.0.5", - "_from": "options@latest" + "dist": { + "shasum": "9a3806378f316536d79038038ba90ccb724816c3" + }, + "_from": "options@latest", + "_resolved": "https://registry.npmjs.org/options/-/options-0.0.5.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json index 8c56dce1f..631a98da4 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json @@ -19,9 +19,10 @@ "main": "tinycolor", "readme": "# tinycolor #\n\nThis is a no-fuzz, barebone, zero muppetry color module for node.js.", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/einaros/tinycolor/issues" - }, "_id": "tinycolor@0.0.1", - "_from": "tinycolor@0.x" + "dist": { + "shasum": "ecefb6d8e43bc55eaac345441dae1f2934221b3d" + }, + "_from": "tinycolor@0.x", + "_resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json index 398c037b6..171fbfd55 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json @@ -38,9 +38,10 @@ }, "readme": "[![Build Status](https://secure.travis-ci.org/einaros/ws.png)](http://travis-ci.org/einaros/ws)\n\n# ws: a node.js websocket library #\n\n`ws` is a simple to use websocket implementation, up-to-date against RFC-6455, and [probably the fastest WebSocket library for node.js](http://hobbycoding.posterous.com/the-fastest-websocket-module-for-nodejs).\n\nPasses the quite extensive Autobahn test suite. See http://einaros.github.com/ws for the full reports.\n\nComes with a command line utility, `wscat`, which can either act as a server (--listen), or client (--connect); Use it to debug simple websocket services.\n\n## Protocol support ##\n\n* **Hixie draft 76** (Old and deprecated, but still in use by Safari and Opera. Added to ws version 0.4.2, but server only. Can be disabled by setting the `disableHixie` option to true.)\n* **HyBi drafts 07-12** (Use the option `protocolVersion: 8`, or argument `-p 8` for wscat)\n* **HyBi drafts 13-17** (Current default, alternatively option `protocolVersion: 13`, or argument `-p 13` for wscat)\n\n_See the echo.websocket.org example below for how to use the `protocolVersion` option._\n\n## Usage ##\n\n### Installing ###\n\n`npm install ws`\n\n### Sending and receiving text data ###\n\n```js\nvar WebSocket = require('ws');\nvar ws = new WebSocket('ws://www.host.com/path');\nws.on('open', function() {\n ws.send('something');\n});\nws.on('message', function(data, flags) {\n // flags.binary will be set if a binary data is received\n // flags.masked will be set if the data was masked\n});\n```\n\n### Sending binary data ###\n\n```js\nvar WebSocket = require('ws');\nvar ws = new WebSocket('ws://www.host.com/path');\nws.on('open', function() {\n var array = new Float32Array(5);\n for (var i = 0; i < array.length; ++i) array[i] = i / 2;\n ws.send(array, {binary: true, mask: true});\n});\n```\n\nSetting `mask`, as done for the send options above, will cause the data to be masked according to the websocket protocol. The same option applies for text data.\n\n### Server example ###\n\n```js\nvar WebSocketServer = require('ws').Server\n , wss = new WebSocketServer({port: 8080});\nwss.on('connection', function(ws) {\n ws.on('message', function(message) {\n console.log('received: %s', message);\n });\n ws.send('something');\n});\n```\n\n### Error handling best practices ###\n\n```js\n// If the WebSocket is closed before the following send is attempted\nws.send('something');\n\n// Errors (both immediate and async write errors) can be detected in an optional callback.\n// The callback is also the only way of being notified that data has actually been sent.\nws.send('something', function(error) {\n // if error is null, the send has been completed,\n // otherwise the error object will indicate what failed.\n});\n\n// Immediate errors can also be handled with try/catch-blocks, but **note**\n// that since sends are inherently asynchronous, socket write failures will *not*\n// be captured when this technique is used.\ntry {\n ws.send('something');\n}\ncatch (e) {\n // handle error\n}\n```\n\n### echo.websocket.org demo ###\n\n```js\nvar WebSocket = require('ws');\nvar ws = new WebSocket('ws://echo.websocket.org/', {protocolVersion: 8, origin: 'http://websocket.org'});\nws.on('open', function() {\n console.log('connected');\n ws.send(Date.now().toString(), {mask: true});\n});\nws.on('close', function() {\n console.log('disconnected');\n});\nws.on('message', function(data, flags) {\n console.log('Roundtrip time: ' + (Date.now() - parseInt(data)) + 'ms', flags);\n setTimeout(function() {\n ws.send(Date.now().toString(), {mask: true});\n }, 500);\n});\n```\n\n### wscat against echo.websocket.org ###\n\n $ npm install -g ws\n $ wscat -c ws://echo.websocket.org -p 8\n connected (press CTRL+C to quit)\n > hi there\n < hi there\n > are you a happy parrot?\n < are you a happy parrot?\n\n### Other examples ###\n\nFor a full example with a browser client communicating with a ws server, see the examples folder.\n\nNote that the usage together with Express 3.0 is quite different from Express 2.x. The difference is expressed in the two different serverstats-examples.\n\nOtherwise, see the test cases.\n\n### Running the tests ###\n\n`make test`\n\n## API Docs ##\n\nSee the doc/ directory for Node.js-like docs for the ws classes.\n\n## License ##\n\n(The MIT License)\n\nCopyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/einaros/ws/issues" - }, "_id": "ws@0.4.25", - "_from": "ws@0.4.x" + "dist": { + "shasum": "64e52db447d9e0d741645e703c6b22efb64d3b79" + }, + "_from": "ws@0.4.x", + "_resolved": "https://registry.npmjs.org/ws/-/ws-0.4.25.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json index 5041d2b5f..0b0af302e 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json @@ -20,9 +20,7 @@ "type": "git", "url": "git://github.com/driverdan/node-XMLHttpRequest.git" }, - "bugs": { - "url": "http://github.com/driverdan/node-XMLHttpRequest/issues" - }, + "bugs": "http://github.com/driverdan/node-XMLHttpRequest/issues", "engines": { "node": ">=0.4.0" }, @@ -34,5 +32,9 @@ "readme": "# node-XMLHttpRequest #\n\nnode-XMLHttpRequest is a wrapper for the built-in http client to emulate the\nbrowser XMLHttpRequest object.\n\nThis can be used with JS designed for browsers to improve reuse of code and\nallow the use of existing libraries.\n\nNote: This library currently conforms to [XMLHttpRequest 1](http://www.w3.org/TR/XMLHttpRequest/). Version 2.0 will target [XMLHttpRequest Level 2](http://www.w3.org/TR/XMLHttpRequest2/).\n\n## Usage ##\n\nHere's how to include the module in your project and use as the browser-based\nXHR object.\n\n\tvar XMLHttpRequest = require(\"xmlhttprequest\").XMLHttpRequest;\n\tvar xhr = new XMLHttpRequest();\n\nNote: use the lowercase string \"xmlhttprequest\" in your require(). On\ncase-sensitive systems (eg Linux) using uppercase letters won't work.\n\n## Versions ##\n\nPrior to 1.4.0 version numbers were arbitrary. From 1.4.0 on they conform to\nthe standard major.minor.bugfix. 1.x shouldn't necessarily be considered\nstable just because it's above 0.x.\n\nSince the XMLHttpRequest API is stable this library's API is stable as\nwell. Major version numbers indicate significant core code changes.\nMinor versions indicate minor core code changes or better conformity to\nthe W3C spec.\n\n## Supports ##\n\n* Async and synchronous requests\n* GET, POST, PUT, and DELETE requests\n* All spec methods (open, send, abort, getRequestHeader,\n getAllRequestHeaders, event methods)\n* Requests to all domains\n\n## Known Issues / Missing Features ##\n\nFor a list of open issues or to report your own visit the [github issues\npage](https://github.com/driverdan/node-XMLHttpRequest/issues).\n\n* Local file access may have unexpected results for non-UTF8 files\n* Synchronous requests don't set headers properly\n* Synchronous requests freeze node while waiting for response (But that's what you want, right? Stick with async!).\n* Some events are missing, such as abort\n* getRequestHeader is case-sensitive\n* Cookies aren't persisted between requests\n* Missing XML support\n* Missing basic auth\n", "readmeFilename": "README.md", "_id": "xmlhttprequest@1.4.2", - "_from": "xmlhttprequest@1.4.2" + "dist": { + "shasum": "01453a1d9bed1e8f172f6495bbf4c8c426321500" + }, + "_from": "xmlhttprequest@1.4.2", + "_resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/package.json index 1cb2e6ff2..126bd55f0 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/node_modules/socket.io-client/package.json @@ -59,9 +59,10 @@ }, "readme": "socket.io\n=========\n\n#### Sockets for the rest of us\n\nThe `socket.io` client is basically a simple HTTP Socket interface implementation.\nIt looks similar to WebSocket while providing additional features and\nleveraging other transports when WebSocket is not supported by the user's\nbrowser.\n\n```js\nvar socket = io.connect('http://domain.com');\nsocket.on('connect', function () {\n // socket connected\n});\nsocket.on('custom event', function () {\n // server emitted a custom event\n});\nsocket.on('disconnect', function () {\n // socket disconnected\n});\nsocket.send('hi there');\n```\n\n### Recipes\n\n#### Utilizing namespaces (ie: multiple sockets)\n\nIf you want to namespace all the messages and events emitted to a particular\nendpoint, simply specify it as part of the `connect` uri:\n\n```js\nvar chat = io.connect('http://localhost/chat');\nchat.on('connect', function () {\n // chat socket connected\n});\n\nvar news = io.connect('/news'); // io.connect auto-detects host\nnews.on('connect', function () {\n // news socket connected\n});\n```\n\n#### Emitting custom events\n\nTo ease with the creation of applications, you can emit custom events outside\nof the global `message` event.\n\n```js\nvar socket = io.connect();\nsocket.emit('server custom event', { my: 'data' });\n```\n\n#### Forcing disconnection\n\n```js\nvar socket = io.connect();\nsocket.on('connect', function () {\n socket.disconnect();\n});\n```\n\n### Documentation \n\n#### io#connect\n\n```js\nio.connect(uri, [options]);\n```\n\n##### Options:\n\n- *resource*\n\n socket.io\n\n The resource is what allows the `socket.io` server to identify incoming connections by `socket.io` clients. In other words, any HTTP server can implement socket.io and still serve other normal, non-realtime HTTP requests.\n\n- *transports*\n\n```js\n['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling']\n```\n\n A list of the transports to attempt to utilize (in order of preference).\n\n- *'connect timeout'*\n\n```js\n5000\n```\n\n The amount of milliseconds a transport has to create a connection before we consider it timed out.\n \n- *'try multiple transports'*\n\n```js\ntrue\n```\n\n A boolean indicating if we should try other transports when the connectTimeout occurs.\n \n- *reconnect*\n\n```js\ntrue\n```\n\n A boolean indicating if we should automatically reconnect if a connection is disconnected. \n \n- *'reconnection delay'*\n\n```js\n500\n```\n\n The amount of milliseconds before we try to connect to the server again. We are using a exponential back off algorithm for the following reconnections, on each reconnect attempt this value will get multiplied (500 > 1000 > 2000 > 4000 > 8000).\n \n\n- *'max reconnection attempts'*\n\n```js\n10\n```\n\n The amount of attempts should we make using the current transport to connect to the server? After this we will do one final attempt, and re-try with all enabled transport methods before we give up.\n\n##### Properties:\n\n- *options*\n\n The passed in options combined with the defaults.\n\n- *connected*\n\n Whether the socket is connected or not.\n \n- *connecting*\n\n Whether the socket is connecting or not.\n\n- *reconnecting*\n\n Whether we are reconnecting or not.\n \n- *transport* \n\n The transport instance.\n\n##### Methods:\n \n- *connect(λ)*\n\n Establishes a connection. If λ is supplied as argument, it will be called once the connection is established.\n \n- *send(message)*\n \n A string of data to send.\n \n- *disconnect*\n\n Closes the connection.\n \n- *on(event, λ)*\n\n Adds a listener for the event *event*.\n\n- *once(event, λ)*\n\n Adds a one time listener for the event *event*. The listener is removed after the first time the event is fired.\n \n- *removeListener(event, λ)*\n\n Removes the listener λ for the event *event*.\n \n##### Events:\n\n- *connect*\n\n Fired when the connection is established and the handshake successful.\n \n- *connecting(transport_type)*\n\n Fired when a connection is attempted, passing the transport name.\n \n- *connect_failed*\n\n Fired when the connection timeout occurs after the last connection attempt.\n This only fires if the `connectTimeout` option is set.\n If the `tryTransportsOnConnectTimeout` option is set, this only fires once all\n possible transports have been tried.\n \n- *message(message)*\n \n Fired when a message arrives from the server\n\n- *close*\n\n Fired when the connection is closed. Be careful with using this event, as some transports will fire it even under temporary, expected disconnections (such as XHR-Polling).\n \n- *disconnect*\n\n Fired when the connection is considered disconnected.\n \n- *reconnect(transport_type,reconnectionAttempts)*\n\n Fired when the connection has been re-established. This only fires if the `reconnect` option is set.\n\n- *reconnecting(reconnectionDelay,reconnectionAttempts)*\n\n Fired when a reconnection is attempted, passing the next delay for the next reconnection.\n\n- *reconnect_failed*\n\n Fired when all reconnection attempts have failed and we where unsuccessful in reconnecting to the server. \n\n### Contributors\n\nGuillermo Rauch <guillermo@learnboost.com>\n\nArnout Kazemier <info@3rd-eden.com>\n\n### License \n\n(The MIT License)\n\nCopyright (c) 2010 LearnBoost <dev@learnboost.com>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/LearnBoost/socket.io-client/issues" - }, "_id": "socket.io-client@0.9.11", - "_from": "socket.io-client@0.9.11" + "dist": { + "shasum": "5ca76352b4308ea8304c525a9afaa15241733621" + }, + "_from": "socket.io-client@0.9.11", + "_resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.11.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/package.json b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/package.json index 62853f9c9..48ad814b2 100644 --- a/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/package.json +++ b/node/node_modules/docpad-plugin-livereload/node_modules/socket.io/package.json @@ -62,9 +62,10 @@ }, "readme": "# Socket.IO\n\nSocket.IO is a Node.JS project that makes WebSockets and realtime possible in\nall browsers. It also enhances WebSockets by providing built-in multiplexing,\nhorizontal scalability, automatic JSON encoding/decoding, and more.\n\n## How to Install\n\n```bash\nnpm install socket.io\n```\n\n## How to use\n\nFirst, require `socket.io`:\n\n```js\nvar io = require('socket.io');\n```\n\nNext, attach it to a HTTP/HTTPS server. If you're using the fantastic `express`\nweb framework:\n\n#### Express 3.x\n\n```js\nvar app = express()\n , server = require('http').createServer(app)\n , io = io.listen(server);\n\nserver.listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.emit('news', { hello: 'world' });\n socket.on('my other event', function (data) {\n console.log(data);\n });\n});\n```\n\n#### Express 2.x\n\n```js\nvar app = express.createServer()\n , io = io.listen(app);\n\napp.listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.emit('news', { hello: 'world' });\n socket.on('my other event', function (data) {\n console.log(data);\n });\n});\n```\n\nFinally, load it from the client side code:\n\n```html\n\n\n```\n\nFor more thorough examples, look at the `examples/` directory.\n\n## Short recipes\n\n### Sending and receiving events.\n\nSocket.IO allows you to emit and receive custom events.\nBesides `connect`, `message` and `disconnect`, you can emit custom events:\n\n```js\n// note, io.listen() will create a http server for you\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n io.sockets.emit('this', { will: 'be received by everyone' });\n\n socket.on('private message', function (from, msg) {\n console.log('I received a private message by ', from, ' saying ', msg);\n });\n\n socket.on('disconnect', function () {\n io.sockets.emit('user disconnected');\n });\n});\n```\n\n### Storing data associated to a client\n\nSometimes it's necessary to store data associated with a client that's\nnecessary for the duration of the session.\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.on('set nickname', function (name) {\n socket.set('nickname', name, function () { socket.emit('ready'); });\n });\n\n socket.on('msg', function () {\n socket.get('nickname', function (err, name) {\n console.log('Chat message by ', name);\n });\n });\n});\n```\n\n#### Client side\n\n```html\n\n```\n\n### Restricting yourself to a namespace\n\nIf you have control over all the messages and events emitted for a particular\napplication, using the default `/` namespace works.\n\nIf you want to leverage 3rd-party code, or produce code to share with others,\nsocket.io provides a way of namespacing a `socket`.\n\nThis has the benefit of `multiplexing` a single connection. Instead of\nsocket.io using two `WebSocket` connections, it'll use one.\n\nThe following example defines a socket that listens on '/chat' and one for\n'/news':\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nvar chat = io\n .of('/chat')\n .on('connection', function (socket) {\n socket.emit('a message', { that: 'only', '/chat': 'will get' });\n chat.emit('a message', { everyone: 'in', '/chat': 'will get' });\n });\n\nvar news = io\n .of('/news');\n .on('connection', function (socket) {\n socket.emit('item', { news: 'item' });\n });\n```\n\n#### Client side:\n\n```html\n\n```\n\n### Sending volatile messages.\n\nSometimes certain messages can be dropped. Let's say you have an app that\nshows realtime tweets for the keyword `bieber`. \n\nIf a certain client is not ready to receive messages (because of network slowness\nor other issues, or because he's connected through long polling and is in the\nmiddle of a request-response cycle), if he doesn't receive ALL the tweets related\nto bieber your application won't suffer.\n\nIn that case, you might want to send those messages as volatile messages.\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n var tweets = setInterval(function () {\n getBieberTweet(function (tweet) {\n socket.volatile.emit('bieber tweet', tweet);\n });\n }, 100);\n\n socket.on('disconnect', function () {\n clearInterval(tweets);\n });\n});\n```\n\n#### Client side\n\nIn the client side, messages are received the same way whether they're volatile\nor not.\n\n### Getting acknowledgements\n\nSometimes, you might want to get a callback when the client confirmed the message\nreception.\n\nTo do this, simply pass a function as the last parameter of `.send` or `.emit`.\nWhat's more, when you use `.emit`, the acknowledgement is done by you, which\nmeans you can also pass data along:\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.on('ferret', function (name, fn) {\n fn('woot');\n });\n});\n```\n\n#### Client side\n\n```html\n\n```\n\n### Broadcasting messages\n\nTo broadcast, simply add a `broadcast` flag to `emit` and `send` method calls.\nBroadcasting means sending a message to everyone else except for the socket\nthat starts it.\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.broadcast.emit('user connected');\n socket.broadcast.json.send({ a: 'message' });\n});\n```\n\n### Rooms\n\nSometimes you want to put certain sockets in the same room, so that it's easy\nto broadcast to all of them together.\n\nThink of this as built-in channels for sockets. Sockets `join` and `leave`\nrooms in each socket.\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.join('justin bieber fans');\n socket.broadcast.to('justin bieber fans').emit('new fan');\n io.sockets.in('rammstein fans').emit('new non-fan');\n});\n```\n\n### Using it just as a cross-browser WebSocket\n\nIf you just want the WebSocket semantics, you can do that too.\nSimply leverage `send` and listen on the `message` event:\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.sockets.on('connection', function (socket) {\n socket.on('message', function () { });\n socket.on('disconnect', function () { });\n});\n```\n\n#### Client side\n\n```html\n\n```\n\n### Changing configuration\n\nConfiguration in socket.io is TJ-style:\n\n#### Server side\n\n```js\nvar io = require('socket.io').listen(80);\n\nio.configure(function () {\n io.set('transports', ['websocket', 'flashsocket', 'xhr-polling']);\n});\n\nio.configure('development', function () {\n io.set('transports', ['websocket', 'xhr-polling']);\n io.enable('log');\n});\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/LearnBoost/socket.io/issues" - }, "_id": "socket.io@0.9.14", - "_from": "socket.io@~0.9.13" + "dist": { + "shasum": "b4190612d821fcdf430c3ba800cdab809a8294c6" + }, + "_from": "socket.io@~0.9.13", + "_resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.14.tgz" } diff --git a/node/node_modules/docpad-plugin-livereload/out/livereload.plugin.js b/node/node_modules/docpad-plugin-livereload/out/livereload.plugin.js index d72ce0413..4afafc255 100644 --- a/node/node_modules/docpad-plugin-livereload/out/livereload.plugin.js +++ b/node/node_modules/docpad-plugin-livereload/out/livereload.plugin.js @@ -31,14 +31,15 @@ module.exports = function(BasePlugin) { }; LivereloadPlugin.prototype.populateCollections = function(opts) { - var config, docpad, injectBlock, listenBlock, regenerateBlock, scriptBlock, scriptsBlock; + var config, docpad, injectBlock, injectCall, listenBlock, regenerateBlock, scriptBlock, scriptsBlock; docpad = this.docpad; config = this.config; scriptsBlock = docpad.getBlock('scripts'); regenerateBlock = config.regenerateBlock || ("if ( log ) {\n localStorage.setItem('" + config.channel + "/reloaded', 'yes');\n}\ndocument.location.reload();"); - listenBlock = "// Did we just livereload?\nvar log = " + (JSON.stringify(config.browserLog)) + " && localStorage && console && console.log && true;\nif ( log && localStorage.getItem('" + config.channel + "/reloaded') === 'yes' ) {\n localStorage.removeItem('" + config.channel + "/reloaded');\n console.log('LiveReloaded at', new Date())\n}\n\n// Listen for the regenerated event\n// and perform a reload of the page when the event occurs\nvar listen = function(){\n var socket = io.connect('" + config.channel + "');\n socket.on('regenerated',function(){\n " + regenerateBlock + "\n });\n};"; - injectBlock = "// Inject socket.io into our page then listen once loaded\nvar inject = function(){\n var t = document.createElement('script');\n t.type = 'text/javascript';\n t.async = true;\n t.src = '/socket.io/socket.io.js';\n t.onload = listen;\n var s = document.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(t,s);\n};"; - scriptBlock = config.inject ? "(function(){\n " + listenBlock + "\n if ( typeof io !== 'undefined' ) {\n listen();\n } else {\n " + injectBlock + "\n inject();\n }\n})();" : "(function(){\n " + listenBlock + "\n if ( typeof io !== 'undefined' ) {\n listen();\n }\n})();"; + listenBlock = "/* Did we just livereload? */\nvar log = " + (JSON.stringify(config.browserLog)) + " && localStorage && console && console.log && true;\nif ( log && localStorage.getItem('" + config.channel + "/reloaded') === 'yes' ) {\n localStorage.removeItem('" + config.channel + "/reloaded');\n console.log('LiveReloaded at', new Date())\n}\n\n/* Listen for the regenerated event and perform a reload of the page when the event occurs */\nvar listen = function(){\n var socket = io.connect('" + config.channel + "');\n socket.on('regenerated',function(){\n " + regenerateBlock + "\n });\n};"; + injectBlock = "/* Inject socket.io into our page then listen once loaded */\nvar inject = function(){\n var t = document.createElement('script');\n t.type = 'text/javascript';\n t.async = true;\n t.src = '/socket.io/socket.io.js';\n t.onload = listen;\n var s = document.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(t,s);\n};"; + injectCall = "var readyStateCheckInterval = setInterval(function() {\n if (document.readyState === \"complete\") {\n inject();\n clearInterval(readyStateCheckInterval);\n }\n}, 10);"; + scriptBlock = config.inject ? "(function(){\n " + listenBlock + "\n if ( typeof io !== 'undefined' ) {\n listen();\n } else {\n " + injectBlock + "\n " + injectCall + "\n }\n})();" : "(function(){\n " + listenBlock + "\n if ( typeof io !== 'undefined' ) {\n listen();\n }\n})();"; scriptsBlock.add(scriptBlock, { defer: false }); diff --git a/node/node_modules/docpad-plugin-livereload/package.json b/node/node_modules/docpad-plugin-livereload/package.json index 96bcb5889..0b2679f77 100644 --- a/node/node_modules/docpad-plugin-livereload/package.json +++ b/node/node_modules/docpad-plugin-livereload/package.json @@ -1,6 +1,6 @@ { "name": "docpad-plugin-livereload", - "version": "2.3.1", + "version": "2.4.0", "description": "Automatically refreshes your website whenever a rengeration is performed", "homepage": "http://docpad.org/plugin/livereload", "keywords": [ @@ -58,8 +58,12 @@ "scripts": { "test": "node ./out/livereload.test.js" }, - "readme": "# Live Reload Plugin for DocPad\nAutomatically refreshes your [DocPad](https://docpad.org) built website whenever a regeneration is performed\n\n\n\n## Install\n\n1. Install the Plugin\n\n ```\n npm install --save --force docpad-plugin-livereload\n ```\n\n1. Ensure your layout outputs the scripts block, using eco it will look something like this:\n\n ```\n <%- @getBlock('scripts').toHTML() %>\n ```\n\n\n## Configure\n\n### `enabled`\nBy default this plugin is disabled for all environments except the development environment. To enable on more environments set the `enabled` option to `true` inside your environments configuration.\n\n### `browserLog`\nBy default we will output a log message to the browser console if the browser was just reloaded by livereload. You can turn this off by setting the `browserLog` option to `false`. This feature requires `console.log` and `localStorage` to be available to the browser, if these aren't available then this feature will fail gracefully.\n\n### `regenerateBlock`\nBy default when a regeneration occurs we will log a message to the browser console (depending on the value of `browserLog`) and reload the browser. You can overwrite this functionality via the `regenerateBlock` option. \n\n### `inject`\nBy default we will inject the socket.io dependency if we don't automatically detect it's presence. However, sometimes this auto detection doesn't always work. If this is the case, you can disable the injection and just do the listening by setting the `inject` option to `false`.\n\n### `getSocket`\nBy default you we create a new socket.io instance for live reload, however if you are doing your own socket.io stuff you will probably want to use your existing instance instead. To do this set the `getSocket` option to a function that will return your own socket.io instance.\n\n### `channel`\nBy default we use the `/docpad-livereload` channel to listen to on our socket connection. You can change this by using the `channel` option.\n\n### `defaultLogLevel`\nBy default we use the socket.io log level of `1` (unless docpad is in debug mode in which case we will use the log level of `3`). You can change the default log level used (non-debug-mode) by setting the `defaultLogLevel` option.\n\n### `socketOptions`\nSometimes you may want to customise the options used for the [socket.io configuration](https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO). To do this set the `socketOptions` option to whatever you need.\n\n\n## History\nYou can discover the history inside the `History.md` file\n\n\n## License\nLicensed under the incredibly [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT License](http://creativecommons.org/licenses/MIT/)\n
    Copyright © 2012+ [Bevry Pty Ltd](http://bevry.me)", + "readme": "# Live Reload Plugin for DocPad\nAutomatically refreshes your [DocPad](https://docpad.org) built website whenever a regeneration is performed\n\n\n\n## Install\n\n1. Install the Plugin\n\n ```\n npm install --save --force docpad-plugin-livereload\n ```\n\n1. Ensure your layout outputs the scripts block, using eco it will look something like this:\n\n ```\n <%- @getBlock('scripts').toHTML() %>\n ```\n\n## Test\n\nSee http://docpad.org/docs/plugin-write to setup a test environment, then run `cake test` to run tests.\n\n## Configure\n\n### `enabled`\nBy default this plugin is disabled for all environments except the development environment. To enable on more environments set the `enabled` option to `true` inside your environments configuration.\n\n### `browserLog`\nBy default we will output a log message to the browser console if the browser was just reloaded by livereload. You can turn this off by setting the `browserLog` option to `false`. This feature requires `console.log` and `localStorage` to be available to the browser, if these aren't available then this feature will fail gracefully.\n\n### `regenerateBlock`\nBy default when a regeneration occurs we will log a message to the browser console (depending on the value of `browserLog`) and reload the browser. You can overwrite this functionality via the `regenerateBlock` option. \n\n### `inject`\nBy default we will inject the socket.io dependency if we don't automatically detect it's presence. However, sometimes this auto detection doesn't always work. If this is the case, you can disable the injection and just do the listening by setting the `inject` option to `false`.\n\n### `getSocket`\nBy default you we create a new socket.io instance for live reload, however if you are doing your own socket.io stuff you will probably want to use your existing instance instead. To do this set the `getSocket` option to a function that will return your own socket.io instance.\n\n### `channel`\nBy default we use the `/docpad-livereload` channel to listen to on our socket connection. You can change this by using the `channel` option.\n\n### `defaultLogLevel`\nBy default we use the socket.io log level of `1` (unless docpad is in debug mode in which case we will use the log level of `3`). You can change the default log level used (non-debug-mode) by setting the `defaultLogLevel` option.\n\n### `socketOptions`\nSometimes you may want to customise the options used for the [socket.io configuration](https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO). To do this set the `socketOptions` option to whatever you need.\n\n\n## History\nYou can discover the history inside the `History.md` file\n\n\n## License\nLicensed under the incredibly [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT License](http://creativecommons.org/licenses/MIT/)\n
    Copyright © 2012+ [Bevry Pty Ltd](http://bevry.me)", "readmeFilename": "README.md", - "_id": "docpad-plugin-livereload@2.3.1", - "_from": "docpad-plugin-livereload@2.x" + "_id": "docpad-plugin-livereload@2.4.0", + "dist": { + "shasum": "2c9aff5e584fb64222904e8f529640245c2f6eaf" + }, + "_from": "docpad-plugin-livereload@", + "_resolved": "https://registry.npmjs.org/docpad-plugin-livereload/-/docpad-plugin-livereload-2.4.0.tgz" } diff --git a/node/node_modules/docpad-plugin-stylus/node_modules/nib/package.json b/node/node_modules/docpad-plugin-stylus/node_modules/nib/package.json index 8f703ee7e..5cd5ec521 100644 --- a/node/node_modules/docpad-plugin-stylus/node_modules/nib/package.json +++ b/node/node_modules/docpad-plugin-stylus/node_modules/nib/package.json @@ -24,9 +24,6 @@ }, "readme": "# Nib\n\n Stylus mixins, utilities, components, and gradient image generation. Don't forget to check out the [documentation](http://visionmedia.github.com/nib/).\n\n## Installation\n\n```bash\n$ npm install nib\n```\n\n If the image generation features of Nib are desired, such as generating the linear gradient images, install [node-canvas](http://github.com/learnboost/node-canvas):\n \n```bash \n$ npm install canvas\n```\n\n## JavaScript API\n\n Below is an example of how to utilize nib and stylus with the connect framework (or express).\n\n```javascript\nvar connect = require('connect')\n , stylus = require('stylus')\n , nib = require('nib');\n\nvar server = connect();\n\nfunction compile(str, path) {\n return stylus(str)\n\t.set('filename', path)\n\t.set('compress', true)\n\t.use(nib());\n}\n\nserver.use(stylus.middleware({\n\tsrc: __dirname\n , compile: compile\n}));\n```\n\n## Stylus API\n\n To gain access to everything nib has to offer, simply add:\n\n ```css\n @import 'nib'\n ```\n \n Or you may also pick and choose based on the directory structure in `./lib`, for example:\n \n ```css\n @import 'nib/gradients'\n @import 'nib/overflow'\n ```\n \nto be continued....\n\n## More Information\n\n - Introduction [screencast](http://www.screenr.com/M6a)\n\n## Testing\n\n You will first need to install the dependencies:\n \n ```bash\n $ npm install -d\n ```\n \n Run the automated test cases:\n \n ```bash\n $ make test\n ```\n \n For visual testing run the test server:\n \n ```bash\n $ make test-server\n ```\n \n Then visit `localhost:3000` in your browser.\n\n## Contributors\n\n - TJ Holowaychuk\n - Isaac Johnston\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/nib/issues" - }, "_id": "nib@0.9.1", "_from": "nib@~0.9.0" } diff --git a/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/debug/package.json b/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/debug/package.json index 112d22bea..0fd620ce9 100644 --- a/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/debug/package.json +++ b/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/debug/package.json @@ -32,9 +32,7 @@ }, "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, "_id": "debug@0.7.2", - "_from": "debug@*" + "_from": "debug@*", + "scripts": {} } diff --git a/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/mkdirp/package.json b/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/mkdirp/package.json index bd9194b2e..047842c89 100644 --- a/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/mkdirp/package.json +++ b/node/node_modules/docpad-plugin-stylus/node_modules/stylus/node_modules/mkdirp/package.json @@ -25,9 +25,6 @@ "license": "MIT", "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, "_id": "mkdirp@0.3.5", "_from": "mkdirp@0.3.x" } diff --git a/node/node_modules/docpad-plugin-stylus/node_modules/stylus/package.json b/node/node_modules/docpad-plugin-stylus/node_modules/stylus/package.json index 72b0204b7..aa972ce90 100644 --- a/node/node_modules/docpad-plugin-stylus/node_modules/stylus/package.json +++ b/node/node_modules/docpad-plugin-stylus/node_modules/stylus/package.json @@ -40,9 +40,6 @@ }, "readme": "# Stylus\n\n Stylus is a revolutionary new language, providing an efficient, dynamic, and expressive way to generate CSS. Supporting both an indented syntax and regular CSS style.\n\n## Installation\n\n```bash\n$ npm install stylus\n```\n\n### Example\n\n```\nborder-radius()\n -webkit-border-radius: arguments\n -moz-border-radius: arguments\n border-radius: arguments\n\nbody a\n font: 12px/1.4 \"Lucida Grande\", Arial, sans-serif\n background: black\n color: #ccc\n\nform input\n padding: 5px\n border: 1px solid\n border-radius: 5px\n```\n\ncompiles to:\n\n```css\nbody a {\n font: 12px/1.4 \"Lucida Grande\", Arial, sans-serif;\n background: #000;\n color: #ccc;\n}\nform input {\n padding: 5px;\n border: 1px solid;\n -webkit-border-radius: 5px;\n -moz-border-radius: 5px;\n border-radius: 5px;\n}\n```\n\nthe following is equivalent to the indented version of Stylus source, using the CSS syntax instead:\n\n```\nborder-radius() {\n -webkit-border-radius: arguments\n -moz-border-radius: arguments\n border-radius: arguments\n}\n\nbody a {\n font: 12px/1.4 \"Lucida Grande\", Arial, sans-serif;\n background: black;\n color: #ccc;\n}\n\nform input {\n padding: 5px;\n border: 1px solid;\n border-radius: 5px;\n}\n```\n\n### Features\n\n Stylus has _many_ features. Detailed documentation links follow:\n\n - [css syntax](docs/css-style.md) support\n - [mixins](docs/mixins.md)\n - [keyword arguments](docs/kwargs.md)\n - [variables](docs/variables.md)\n - [interpolation](docs/interpolation.md)\n - arithmetic, logical, and equality [operators](docs/operators.md)\n - [importing](docs/import.md) of other stylus sheets\n - [introspection api](docs/introspection.md)\n - type coercion\n - [@extend](docs/extend.md)\n - [conditionals](docs/conditionals.md)\n - [iteration](docs/iteration.md)\n - nested [selectors](docs/selectors.md)\n - parent reference\n - in-language [functions](docs/functions.md)\n - [variable arguments](docs/vargs.md)\n - built-in [functions](docs/bifs.md) (over 25)\n - optional [image inlining](docs/functions.url.md)\n - optional compression\n - JavaScript [API](docs/js.md)\n - extremely terse syntax\n - stylus [executable](docs/executable.md)\n - [error reporting](docs/error-reporting.md)\n - single-line and multi-line [comments](docs/comments.md)\n - css [literal](docs/literal.md)\n - character [escaping](docs/escape.md)\n - [@keyframes](docs/keyframes.md) support & expansion\n - [@font-face](docs/font-face.md) support\n - [@media](docs/media.md) support\n - Connect [Middleware](docs/middleware.md)\n - TextMate [bundle](docs/textmate.md)\n - Coda/SubEtha Edit [Syntax mode](https://github.com/atljeremy/Stylus.mode)\n - gedit [language-spec](docs/gedit.md)\n - VIM [Syntax](https://github.com/wavded/vim-stylus)\n - [Firebug extension](docs/firebug.md)\n - heroku [web service](http://styl.heroku.com) for compiling stylus\n - [style guide](https://github.com/lepture/ganam) parser and generator\n - transparent vendor-specific function expansion\n\n### Framework Support\n\n - [Connect](docs/middleware.md)\n - [Play! 2.0](https://github.com/patiencelabs/play-stylus)\n - [Ruby On Rails](https://github.com/lucasmazza/ruby-stylus)\n\n### CMS Support\n\n - [DocPad](https://github.com/bevry/docpad)\n - [Punch](https://github.com/laktek/punch-stylus-compiler)\n\n### Screencasts\n\n - [Stylus Intro](http://screenr.com/bNY)\n - [CSS Syntax & Postfix Conditionals](http://screenr.com/A8v)\n\n### Authors\n\n - [TJ Holowaychuk (visionmedia)](http://github.com/visionmedia)\n\n### More Information\n\n - Language [comparisons](docs/compare.md)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 LearnBoost <dev@learnboost.com>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/learnboost/stylus/issues" - }, "_id": "stylus@0.32.1", "_from": "stylus@~0.32.0" } diff --git a/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/node_modules/traverse/package.json b/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/node_modules/traverse/package.json index b9055ef2e..76e1f2edf 100644 --- a/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/node_modules/traverse/package.json +++ b/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/node_modules/traverse/package.json @@ -40,9 +40,6 @@ }, "readme": "traverse\n========\n\nTraverse and transform objects by visiting every node on a recursive walk.\n\n[![build status](https://secure.travis-ci.org/substack/js-traverse.png)](http://travis-ci.org/substack/js-traverse)\n\nexamples\n========\n\ntransform negative numbers in-place\n-----------------------------------\n\nnegative.js\n\n````javascript\nvar traverse = require('traverse');\nvar obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];\n\ntraverse(obj).forEach(function (x) {\n if (x < 0) this.update(x + 128);\n});\n\nconsole.dir(obj);\n````\n\nOutput:\n\n [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ]\n\ncollect leaf nodes\n------------------\n\nleaves.js\n\n````javascript\nvar traverse = require('traverse');\n\nvar obj = {\n a : [1,2,3],\n b : 4,\n c : [5,6],\n d : { e : [7,8], f : 9 },\n};\n\nvar leaves = traverse(obj).reduce(function (acc, x) {\n if (this.isLeaf) acc.push(x);\n return acc;\n}, []);\n\nconsole.dir(leaves);\n````\n\nOutput:\n\n [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]\n\nscrub circular references\n-------------------------\n\nscrub.js:\n\n````javascript\nvar traverse = require('traverse');\n\nvar obj = { a : 1, b : 2, c : [ 3, 4 ] };\nobj.c.push(obj);\n\nvar scrubbed = traverse(obj).map(function (x) {\n if (this.circular) this.remove()\n});\nconsole.dir(scrubbed);\n````\n\noutput:\n\n { a: 1, b: 2, c: [ 3, 4 ] }\n\nmethods\n=======\n\nEach method that takes an `fn` uses the context documented below in the context\nsection.\n\n.map(fn)\n--------\n\nExecute `fn` for each node in the object and return a new object with the\nresults of the walk. To update nodes in the result use `this.update(value)`.\n\n.forEach(fn)\n------------\n\nExecute `fn` for each node in the object but unlike `.map()`, when\n`this.update()` is called it updates the object in-place.\n\n.reduce(fn, acc)\n----------------\n\nFor each node in the object, perform a\n[left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function))\nwith the return value of `fn(acc, node)`.\n\nIf `acc` isn't specified, `acc` is set to the root object for the first step\nand the root element is skipped.\n\n.paths()\n--------\n\nReturn an `Array` of every possible non-cyclic path in the object.\nPaths are `Array`s of string keys.\n\n.nodes()\n--------\n\nReturn an `Array` of every node in the object.\n\n.clone()\n--------\n\nCreate a deep clone of the object.\n\n.get(path)\n----------\n\nGet the element at the array `path`.\n\n.set(path, value)\n-----------------\n\nSet the element at the array `path` to `value`.\n\n.has(path)\n----------\n\nReturn whether the element at the array `path` exists.\n\ncontext\n=======\n\nEach method that takes a callback has a context (its `this` object) with these\nattributes:\n\nthis.node\n---------\n\nThe present node on the recursive walk\n\nthis.path\n---------\n\nAn array of string keys from the root to the present node\n\nthis.parent\n-----------\n\nThe context of the node's parent.\nThis is `undefined` for the root node.\n\nthis.key\n--------\n\nThe name of the key of the present node in its parent.\nThis is `undefined` for the root node.\n\nthis.isRoot, this.notRoot\n-------------------------\n\nWhether the present node is the root node\n\nthis.isLeaf, this.notLeaf\n-------------------------\n\nWhether or not the present node is a leaf node (has no children)\n\nthis.level\n----------\n\nDepth of the node within the traversal\n\nthis.circular\n-------------\n\nIf the node equals one of its parents, the `circular` attribute is set to the\ncontext of that parent and the traversal progresses no deeper.\n\nthis.update(value, stopHere=false)\n----------------------------------\n\nSet a new value for the present node.\n\nAll the elements in `value` will be recursively traversed unless `stopHere` is\ntrue.\n\nthis.remove(stopHere=false)\n-------------\n\nRemove the current element from the output. If the node is in an Array it will\nbe spliced off. Otherwise it will be deleted from its parent.\n\nthis.delete(stopHere=false)\n-------------\n\nDelete the current element from its parent in the output. Calls `delete` even on\nArrays.\n\nthis.before(fn)\n---------------\n\nCall this function before any of the children are traversed.\n\nYou can assign into `this.keys` here to traverse in a custom order.\n\nthis.after(fn)\n--------------\n\nCall this function after any of the children are traversed.\n\nthis.pre(fn)\n------------\n\nCall this function before each of the children are traversed.\n\nthis.post(fn)\n-------------\n\nCall this function after each of the children are traversed.\n\n\ninstall\n=======\n\nUsing [npm](http://npmjs.org) do:\n\n $ npm install traverse\n\ntest\n====\n\nUsing [expresso](http://github.com/visionmedia/expresso) do:\n\n $ expresso\n \n 100% wahoo, your stuff is not broken!\n\nin the browser\n==============\n\nUse [browserify](https://github.com/substack/node-browserify) to run traverse in\nthe browser.\n\ntraverse has been tested and works with:\n\n* Internet Explorer 5.5, 6.0, 7.0, 8.0, 9.0\n* Firefox 3.5\n* Chrome 6.0\n* Opera 10.6\n* Safari 5.0\n", "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/js-traverse/issues" - }, "_id": "traverse@0.6.3", "_from": "traverse@>=0.2.4" } diff --git a/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/package.json b/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/package.json index 9cf918d3a..3cb8a24ed 100644 --- a/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/package.json +++ b/node/node_modules/docpad/node_modules/airbrake/node_modules/hashish/package.json @@ -34,9 +34,6 @@ ], "readme": "Hashish\n=======\n\nHashish is a node.js library for manipulating hash data structures.\nIt is distilled from the finest that ruby, perl, and haskell have to offer by\nway of hash/map interfaces.\n\nHashish provides a chaining interface, where you can do:\n\n var Hash = require('hashish');\n \n Hash({ a : 1, b : 2, c : 3, d : 4 })\n .map(function (x) { return x * 10 })\n .filter(function (x) { return x < 30 })\n .forEach(function (x, key) {\n console.log(key + ' => ' + x);\n })\n ;\n \nOutput:\n\n a => 10\n b => 20\n\nSome functions and attributes in the chaining interface are terminal, like\n`.items` or `.detect()`. They return values of their own instead of the chain\ncontext.\n\nEach function in the chainable interface is also attached to `Hash` in chainless\nform:\n\n var Hash = require('hashish');\n var obj = { a : 1, b : 2, c : 3, d : 4 };\n \n var mapped = Hash.map(obj, function (x) {\n return x * 10\n });\n \n console.dir(mapped);\n\nOutput:\n\n { a: 10, b: 20, c: 30, d: 40 }\n\nIn either case, the 'this' context of the function calls is the same object that\nthe chained functions return, so you can make nested chains.\n\nMethods\n=======\n\nforEach(cb)\n-----------\n\nFor each key/value in the hash, calls `cb(value, key)`.\n\nmap(cb)\n-------\n\nFor each key/value in the hash, calls `cb(value, key)`.\nThe return value of `cb` is the new value at `key` in the resulting hash.\n\nfilter(cb)\n----------\n\nFor each key/value in the hash, calls `cb(value, key)`.\nThe resulting hash omits key/value pairs where `cb` returned a falsy value.\n\ndetect(cb)\n----------\n\nReturns the first value in the hash for which `cb(value, key)` is non-falsy.\nOrder of hashes is not well-defined so watch out for that.\n\nreduce(cb)\n----------\n\nReturns the accumulated value of a left-fold over the key/value pairs.\n\nsome(cb)\n--------\n\nReturns a boolean: whether or not `cb(value, key)` ever returned a non-falsy\nvalue.\n\nupdate(obj1, [obj2, obj3, ...])\n-----------\n\nMutate the context hash, merging the key/value pairs from the passed objects\nand overwriting keys from the context hash if the current `obj` has keys of\nthe same name. Falsy arguments are silently ignored.\n\nupdateAll([ obj1, obj2, ... ])\n------------------------------\n\nLike multi-argument `update()` but operate on an array directly.\n\nmerge(obj1, [obj2, obj3, ...])\n----------\n\nMerge the key/value pairs from the passed objects into the resultant hash\nwithout modifying the context hash. Falsy arguments are silently ignored.\n\nmergeAll([ obj1, obj2, ... ])\n------------------------------\n\nLike multi-argument `merge()` but operate on an array directly.\n\nhas(key)\n--------\n\nReturn whether the hash has a key, `key`.\n\nvaluesAt(keys)\n--------------\n\nReturn an Array with the values at the keys from `keys`.\n\ntap(cb)\n-------\n\nCall `cb` with the present raw hash.\nThis function is chainable.\n\nextract(keys)\n-------------\n\nFilter by including only those keys in `keys` in the resulting hash.\n\nexclude(keys)\n-------------\n\nFilter by excluding those keys in `keys` in the resulting hash.\n\nAttributes\n==========\n\nThese are attributes in the chaining interface and functions in the `Hash.xxx`\ninterface.\n\nkeys\n----\n\nReturn all the enumerable attribute keys in the hash.\n\nvalues\n------\n\nReturn all the enumerable attribute values in the hash.\n\ncompact\n-------\n\nFilter out values which are `=== undefined`.\n\nclone\n-----\n\nMake a deep copy of the hash.\n\ncopy\n----\n\nMake a shallow copy of the hash.\n\nlength\n------\n\nReturn the number of key/value pairs in the hash.\nNote: use `Hash.size()` for non-chain mode.\n\nsize\n----\n\nAlias for `length` since `Hash.length` is masked by `Function.prototype`.\n\nSee Also\n========\n\nSee also [creationix's pattern/hash](http://github.com/creationix/pattern),\nwhich does a similar thing except with hash inputs and array outputs.\n\nInstallation\n============\n\nTo install with [npm](http://github.com/isaacs/npm):\n \n npm install hashish\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso):\n\n expresso\n", "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/node-hashish/issues" - }, "_id": "hashish@0.0.4", "_from": "hashish@0.0.4" } diff --git a/node/node_modules/docpad/node_modules/airbrake/node_modules/stack-trace/package.json b/node/node_modules/docpad/node_modules/airbrake/node_modules/stack-trace/package.json index 271461f08..e93724036 100644 --- a/node/node_modules/docpad/node_modules/airbrake/node_modules/stack-trace/package.json +++ b/node/node_modules/docpad/node_modules/airbrake/node_modules/stack-trace/package.json @@ -23,9 +23,6 @@ }, "readme": "# stack-trace\n\nGet v8 stack traces as an array of CallSite objects.\n\n## Install\n\n``` bash\nnpm install stack-trace\n```\n\n## Usage\n\nThe stack-trace module makes it easy for you to capture the current stack:\n\n``` javascript\nvar stackTrace = require('stack-trace');\nvar trace = stackTrace.get();\n\nrequire('assert').strictEqual(trace[0].getFileName(), __filename);\n```\n\nHowever, sometimes you have already popped the stack you are interested in,\nand all you have left is an `Error` object. This module can help:\n\n``` javascript\nvar stackTrace = require('stack-trace');\nvar err = new Error('something went wrong');\nvar trace = stackTrace.parse(err);\n\nrequire('assert').strictEqual(trace[0].getFileName(), __filename);\n```\n\nPlease note that parsing the `Error#stack` property is not perfect, only\ncertain properties can be retrieved with it as noted in the API docs below.\n\n## Long stack traces\n\nstack-trace works great with [long-stack-traces][], when parsing an `err.stack`\nthat has crossed the event loop boundary, a `CallSite` object returning\n`'----------------------------------------'` for `getFileName()` is created.\nAll other methods of the event loop boundary call site return `null`.\n\n[long-stack-traces]: https://github.com/tlrobinson/long-stack-traces\n\n## API\n\n### stackTrace.get([belowFn])\n\nReturns an array of `CallSite` objects, where element `0` is the current call\nsite.\n\nWhen passing a function on the current stack as the `belowFn` parameter, the\nreturned array will only include `CallSite` objects below this function.\n\n### stackTrace.parse(err)\n\nParses the `err.stack` property of an `Error` object into an array compatible\nwith those returned by `stackTrace.get()`. However, only the following methods\nare implemented on the returned `CallSite` objects.\n\n* getTypeName\n* getFunctionName\n* getMethodName\n* getFileName\n* getLineNumber\n* getColumnNumber\n* isNative\n\nNote: Except `getFunctionName()`, all of the above methods return exactly the\nsame values as you would get from `stackTrace.get()`. `getFunctionName()`\nis sometimes a little different, but still useful.\n\n### CallSite\n\nThe official v8 CallSite object API can be found [here][v8stackapi]. A quick\nexcerpt:\n\n> A CallSite object defines the following methods:\n>\n> * **getThis**: returns the value of this\n> * **getTypeName**: returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.\n> * **getFunction**: returns the current function\n> * **getFunctionName**: returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.\n> * **getMethodName**: returns the name of the property of this or one of its prototypes that holds the current function\n> * **getFileName**: if this function was defined in a script returns the name of the script\n> * **getLineNumber**: if this function was defined in a script returns the current line number\n> * **getColumnNumber**: if this function was defined in a script returns the current column number\n> * **getEvalOrigin**: if this function was created using a call to eval returns a CallSite object representing the location where eval was called\n> * **isToplevel**: is this a toplevel invocation, that is, is this the global object?\n> * **isEval**: does this call take place in code defined by a call to eval?\n> * **isNative**: is this call in native V8 code?\n> * **isConstructor**: is this a constructor call?\n\n[v8stackapi]: http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n\n## License\n\nstack-trace is licensed under the MIT license.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-stack-trace/issues" - }, "_id": "stack-trace@0.0.5", "_from": "stack-trace@0.0.5" } diff --git a/node/node_modules/docpad/node_modules/airbrake/node_modules/xmlbuilder/package.json b/node/node_modules/docpad/node_modules/airbrake/node_modules/xmlbuilder/package.json index 9d58f8931..f9eef733f 100644 --- a/node/node_modules/docpad/node_modules/airbrake/node_modules/xmlbuilder/package.json +++ b/node/node_modules/docpad/node_modules/airbrake/node_modules/xmlbuilder/package.json @@ -28,7 +28,7 @@ "engines": { "node": ">=0.2.0" }, - "readme": "ERROR: No README data found!", "_id": "xmlbuilder@0.1.5", + "readme": "ERROR: No README.md file found!", "_from": "xmlbuilder@0.1.5" } diff --git a/node/node_modules/docpad/node_modules/airbrake/package.json b/node/node_modules/docpad/node_modules/airbrake/package.json index 5993a1741..dee9ac009 100644 --- a/node/node_modules/docpad/node_modules/airbrake/package.json +++ b/node/node_modules/docpad/node_modules/airbrake/package.json @@ -29,9 +29,6 @@ "optionalDependencies": {}, "readme": "# airbrake\n\nNode.js client for [airbrakeapp.com][], formerly known as [hoptoadapp.com][].\n\n[airbrakeapp.com]: http://airbrakeapp.com/\n[hoptoadapp.com]: http://robots.thoughtbot.com/post/7665411707/hoptoad-is-now-airbrake\n\n## Install\n\n``` bash\nnpm install airbrake\n```\n\n## Basic usage\n\nThe common use case for this module is to catch all `'uncaughtException'`\nevents on the `process` object and send them to airbrake:\n\n``` javascript\nvar airbrake = require('airbrake').createClient(\"your api key\");\nairbrake.handleExceptions();\n\nthrow new Error('I am an uncaught exception');\n```\n\nPlease note that the above will re-throw the exception after it has been\nsuccessfully delivered to airbrake, caushing your process to exit with status 1.\n\nIf you want more control over the delivery of your errors, you can also\nmanually submit errors to airbrake.\n\n``` javascript\nvar airbrake = require('airbrake').createClient(\"your api key\");\nvar err = new Error('Something went terribly wrong');\nairbrake.notify(err, function(err, url) {\n if (err) throw err;\n\n // Error has been delivered, url links to the error in airbrake\n});\n```\n\n## Screenshot\n\nThis screenshot shows an airbrake error send from this module:\n\n![screenshot](https://github.com/felixge/node-airbrake/raw/master/screenshot.png)\n\n## Features\n\n* Automatically add `process.env` as well as other information when sending notifications\n* Detect and fix circular references in error context information\n* Support for all features of the [2.1 notification API][2.1api]\n* Support for [long-stack-traces][]\n* Optional auto-handler for `uncaughtException` events\n* Provides notification url linking to airbrake in `notify()` callback\n* Timeout airbrake requests after 30 seconds, you never know\n\n[long-stack-traces]: https://github.com/tlrobinson/long-stack-traces\n\n[2.1api]: http://help.airbrake.io/kb/api-2/notifier-api-version-21\n\n## Adding context to errors\n\nThe `notify()` method automatically adds the following context information to\neach delivered error:\n\n* **error.class:** (`err.type` string if set, or `'Error'`)\n* **error.message:** (`err.message` string)\n* **error.backtrace:** (`err.stack` as parsed by [stack-trace][])\n* **request.url:** (`err.url`, see `airbrake.url`);\n* **request.component:** (`err.component` string if set);\n* **request.action:** (`err.action` string if set);\n* **request.cgi-data:** (`process.env`, merged all other properties of `err`)\n* **request.params:** (`err.params` object if set)\n* **request.session:** (`err.session` object if set)\n* **server-environment.project-root:** (`airbrake.projectRoot` string if set)\n* **server-environment.environment-name:** (`airbrake.env` string)\n* **server-environment.app-version:** (`airbrake.appVersion string if set)\n* **server-environment.hostname:** (`airbrake.hostname` string if set)\n\nYou can add additional context information by modifying the error properties\nlisted above:\n\n``` javascript\nvar airbrake = require('airbrake').createClient(\"your api key\");\nvar http = require('http');\n\nhttp.createServer(function(req, res) {\n if (req.headers['X-Secret'] !== 'my secret') {\n var err = new Error('403 - Permission denied');\n req.writeHead(403);\n req.end(err.message);\n\n err.url = req.url;\n err.params = {ip: req.socket.remoteAddress};\n airbrake.notify(err);\n }\n});\n```\n\nUnfortunately `uncaughtException` events cannot be traced back to particular\nrequests, so you should still try to handle errors where they occur.\n\n[stack-trace]: https://github.com/felixge/node-stack-trace\n\n## Removing context from errors\n\nIn some scenarios you might want to filter some context to never show up in\nAirbrake. For example you might have a private key loaded in your environment\nmemory, or your user has some critical data in his session, and you want to\nhide that.\n\nThis can be done by hooking into the `'vars'` event like so:\n\n``` javascript\nairbrake.on('vars', function(type, vars) {\n if (type === 'cgi-data') {\n delete vars.SECRET;\n }\n});\n```\n\n## Tracking deployments\n\nThis client supports airbrake's [deployment tracking][]:\n\n``` javascript\nvar airbrake = require('airbrake').createClient(\"your api key\");\nvar deployment = {\n rev: '98103a8fa850d5eaf3666e419d8a0a93e535b1b2',\n repo: 'git@github.com:felixge/node-airbrake.git',\n};\n\nairbrake.trackDeployment(deployment, function(err, params) {\n if (err) {\n throw err;\n }\n\n console.log('Tracked deployment of %s to %s', params.rev, params.env);\n});\n```\n\nCheck out the `airbrake.trackDeployment()` API docs below for a list of all\noptions.\n\n[deployment tracking]: http://help.airbrake.io/kb/api-2/deploy-tracking\n\n## API\n\n### Airbreak.createClient(apiKey, [env])\n\nReturns a new Airbrake instance.\n\n### airbrake.key = null\n\nThe API key to use.\n\n### airbrake.env = process.env.NODE_ENV || 'development'\n\nThe name of the server environment this is running in.\n\n### airbrake.host = 'http://' + os.hostname()\n\nThe base url for errors. If `err.url` is not set, `airbrake.host` is used\ninstead. If `err.url` is a relative url starting with `'/'`, it is appended\nto `airbrake.host`. If `err.url` is an absolute url, `airbrake.host` is ignored.\n\n### airbrake.projectRoot = null\n\nThe root directory of this project.\n\n### airbrake.appVersion = null\n\nThe version of this app. Set to a semantic version number, or leave unset.\n\n### airbrake.protocol = 'http'\n\nThe protocol to use.\n\n### airbrake.developmentEnvironments = []\n\nDo not post to Airbrake when running in these environments.\n\n### airbrake.timeout = 30 * 1000\n\nThe timeout after which to give up trying to notify airbrake in ms.\n\n### airbrake.handleExceptions()\n\nRegisters a `process.on('uncaughtException')` listener. When an uncaught\nexception occurs, the error is send to airbrake, and then re-thrown to\nkill the process.\n\n### airbrake.notify(err, [cb])\n\nSends the given `err` to airbrake.\n\nThe callback parameter receives two arguments, `err, url`. `err` is set if\nthe delivery to airbrake failed.\n\nIf no `cb` is given, and the delivery fails, an `error` event is emitted. If\nthere is no listener for this event, node will kill the process as well. This\nis done to avoid silent error delivery failure.\n\n### airbrake.trackDeployment([params, [cb]])\n\nNotifies airbrake about a deployment. `params` is an object with the following\noptions:\n\n* `env:` The environment being deployed, defaults to `airbrake.env`.\n* `user:` The user doing the deployment, defaults to `process.env.USER`.\n* `repo:` The github url of this repository. Defaults to `''`.\n* `rev:` The revision of this deployment. Defaults to `''`.\n\n## Alternative modules\n\nThis module is meant as a replacement for [hoptoad-notifier][], which does not\nsupport all features of the [2.1 API][2.1api].\n\n[hoptoad-notifier]: https://github.com/tristandunn/node-hoptoad-notifier\n\n## Contribute\n\nBesides bug fixes, I'd be happy to accept patches for:\n\n* Automatically parsing `repo` and `rev` from the local git repository when\n calling `airbrake.trackDeployment()`. This can be done via `exec()`, but must\n not be done when specifying `repo` / `rev` by hand, or if they are set to\n `false`.\n\nIf you have other feature ideas, please open an issue first, so we can discuss\nit.\n\n## License\n\nairbrake is licensed under the MIT license.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-airbrake/issues" - }, "_id": "airbrake@0.2.9", "_from": "airbrake@~0.2.9" } diff --git a/node/node_modules/docpad/node_modules/canihaz/node_modules/mkdirp/package.json b/node/node_modules/docpad/node_modules/canihaz/node_modules/mkdirp/package.json index bd9194b2e..047842c89 100644 --- a/node/node_modules/docpad/node_modules/canihaz/node_modules/mkdirp/package.json +++ b/node/node_modules/docpad/node_modules/canihaz/node_modules/mkdirp/package.json @@ -25,9 +25,6 @@ "license": "MIT", "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, "_id": "mkdirp@0.3.5", "_from": "mkdirp@0.3.x" } diff --git a/node/node_modules/docpad/node_modules/canihaz/node_modules/which/package.json b/node/node_modules/docpad/node_modules/canihaz/node_modules/which/package.json index 637e8c313..2408e0eaf 100644 --- a/node/node_modules/docpad/node_modules/canihaz/node_modules/which/package.json +++ b/node/node_modules/docpad/node_modules/canihaz/node_modules/which/package.json @@ -22,9 +22,7 @@ "devDependencies": {}, "readme": "The \"which\" util from npm's guts.\n\nFinds the first instance of a specified executable in the PATH\nenvironment variable. Does not cache the results, so `hash -r` is not\nneeded when the PATH changes.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-which/issues" - }, "_id": "which@1.0.5", - "_from": "which@1.0.x" + "_from": "which@1.0.x", + "scripts": {} } diff --git a/node/node_modules/docpad/node_modules/canihaz/package.json b/node/node_modules/docpad/node_modules/canihaz/package.json index cc5ebdef4..9ee7dbc2a 100644 --- a/node/node_modules/docpad/node_modules/canihaz/package.json +++ b/node/node_modules/docpad/node_modules/canihaz/package.json @@ -48,9 +48,6 @@ }, "readme": "# canihaz - supercharged dependency loading and installation\n[![build status](https://secure.travis-ci.org/3rd-Eden/canihaz.png)](http://travis-ci.org/3rd-Eden/canihaz)\n\nCanihaz is a module that allows you to lazily install and require NPM modules\nthat might not be required for the core functionality of your library. This\nincludes, but is not limited to:\n\n- Optional dependencies\n- Dependencies that are only used for your optional CLI interface\n- Dependencies that are sparsely used in the application\n\nMy use case for this library is a front-end build system that I have been\ndeveloping. It's called [square][square] and uses a plugin based system to\nprocess your front-end code such as CSS, JavaScript and all possible\npre-processors. If I wanted to support every CSS pre-processor I would have had\nto specify: sass, less and stylus in the dependencies, but nobody is ever going\nto use all of them, so 90% of these modules would have been pointless bloat. And\nI, personally hate code bloat. It's a disease that spreads exponentially with\nevery module that is released and dependent upon. So to combat this bloat\nI wanted to have a way to lazy load and (silently) install the modules when they\nare needed.\n\n[square]: /observing/square\n\n---\n\n## Table of Contents\n\n- [Installation][0]\n- [How does it work][1]\n- [API][2]\n - [package.json example][2.1]\n - [Configuration][2.2]\n - [Configured dependencies][2.3]\n - [Un-configured dependencies][2.4]\n - [Multiple dependencies][2.5]\n- [Changelog][3]\n- [License][4]\n\n[0]: #installation \"Install all the things\"\n[1]: #how-does-it-work \"it's like magic, unicorns and narwals combined in to awesomness\"\n[2]: #api \"The bits that you can use and configure\"\n[2.1]: #packagejson-example\n[2.2]: #configuration\n[2.3]: #installingrequiring-a-configured-dependency\n[2.4]: #installingrequiring-a-un-configured-dependency\n[2.5]: #installingrequiring-multiple-dependencies\n[4]: #license-mit \"Stuff\"\n\n---\n\n## Installation\n\nThis module should be installed using NPM:\n\n```bash\nnpm install canihaz --save\n```\n\nThe `--save` parameter tells NPM that it should add it to your package.json, so\nless editing for you.\n\nIf you do not install it using NPM, make sure that install it in\na `node_modules` folder and do not symlink it.. Unless you don't want to use the\nautomatic dependency resolution.\n\n---\n\n## How does it work\n\nI always tell people that you should understand how a module works before you\nuse it, checkout out the source or at least read the damned documentation.\n\nWhen you initialize the module after you required it it will go up 2 directories\nto go out of the `node_modules` folder and attempt to read out the\n`package.json` file of the module that depends on canihaz. It requires the\npackage.json and search for the dependencies, it searches for `canihaz` key by\ndefault but it can be configured. When it found the dependencies, it attaches\nthe names to the returned object and creates a really simple usable interface\nfor it:\n\n```js\nvar canihaz = require('canihaz')(.. config ..);\n\ncanihaz.dep(function requireallthethings(err, dep) {\n .. dep is installed if it's not installed before or just required\n});\n```\n\nIt automatically knows which version it should install for you as you specified\nthat in the object. Installing a dependency that isn't pre-defined in your\n`package.json` you could do something similar:\n\n```js\nvar canihaz = require('canihaz')();\n\ncanihaz(dep, version, function lazyloading(err, dep) {\n .. dep is installed with the specified version\n});\n```\n\nBut before it tries to install the module it checks it it's perhaps globally\ninstalled (with the correct version) or if it's already installed before in the\nspecified location. When all these checks fail, we continue with the\ninstallation. In older version of canihaz we called the NPM api programatically\nbut there were a couple of issues with this, like install race conditions and it\ndidn't use the users set configurations. That's why we are currently spawning an\nNPM child process. So you need to have NPM installed globally and set in your\npath. The added benefit of this is that the installation becomes completely\nsilent as NPM is usually really chatty and last but not least, it already works\nas this module is installed through NPM.\n\nOnce it's finally installed it attempts to require it again, if it succeeds it\nwill call your callback without any error arguments and provide the library in\nthe callback. If the installation failed or it failed to require you're\nbasically fucked.\n\n## API\n\n#### package.json example\n\nIn the example below, we install canihaz as dependency, and have all our\noptional dependencies in the property `canihaz` which will be read out by\nmodule.\n\n```js\n{\n \"name\": \"example\"\n , \"description\": \"example description\"\n , \"version\": \"0.0.0\"\n , \"dependencies\": {\n \"canihaz\": \"0.0.x\"\n }\n , \"canihaz\": {\n \"coffee-script\": \"1.3.3\"\n , \"csslint\": \"0.9.8\"\n , \"jshint\": \"0.7.1\"\n , \"socket.io\": \"0.9.6\"\n , \"stylus\": \"0.27.2\"\n , \"watch\": \"0.5.1\"\n }\n}\n```\n\n#### configuration\n\n- dot: Should we create a special dot folder for storage? This is saved in\n the home directory of the user. Should be a string.\n- home: The location of the home folders, as this is operating system\n specific or you might want to override this if you want to store the dot\n folder in a different location. Should be string.\n- location: The location of the package.json that we need to parse and read out\n the possible dependencies for lazy installation.\n- key: Which property should we scan for the optional dependencies? This\n allows you to also lazy install optionalDependencies for example.\n- installation: The installation location, this is where the dependencies will\n be installed. It defaults to the `package.json` folder.\n\nExample:\n\n```js\nvar canihaz = require('canihaz')({\n key: 'cliDependencies' // read out `cliDependencies` instead of `canihaz`\n});\n```\n\n#### installing/requiring a configured dependency\n\nThe dependencies that you specify in the `package.json` are automatically\nintroduced to the returned export. It assumes that it's loaded by the package\nthat we specified above.\n\n```js\nvar canihaz = require('canihaz')();\n\ncanihaz.jshint(function loading(err, jshint) {\n // jshint is now loaded, unless we got an error\n});\n```\n\n#### installing/requiring a un-configured dependency\n\nInstalling or requiring a dependency that isn't in the `package.json` require\ndirect usage of the API:\n\n```js\nvar canihaz = require('canihaz')();\n\ncanihaz('jshint', '0.7.x', function lazyloading(err, jsint) {\n // jsint is installed with the specified version\n});\n```\n\n#### installing/requiring multiple dependencies\n\nSometimes you just need a load of modules. There are 2 different ways this is\ndone, if the modules are defined in the `package.json` it will automatically use\ntheir specified function and doesn't require you to specify the version numbers:\n\n```js\nvar canihaz = require('canihaz')();\n\ncanihaz(\n 'jshint', 'stylus', 'express'\n , function lazyloading(err, jsint, stylus, express) {\n // the modules are loaded or installed in the same order as the arguments\n }\n);\n```\n\nIf you need to a bunch of modules that are not specified in the package. \n\n```js\ncanihaz(\n { name: 'jshint', version: '0.7.x' }\n , { name: 'stylus', version: '' }\n , { name: 'express', version: '3.0.x' }\n , function lazyloading(err, jsint, stylus, express) {\n // the modules are loaded or installed in the same order as the arguments\n }\n);\n```\n\n---\n\n## Changelog\n\n__1.0.0__ Rewritten to use the `npm` binary for all installations because the\nprogramatically API causes to much issues and edge cases. 1.0.0 also features a\nfull test suite and a reworked more powerful API.\n\n_all other version were crap anyways_\n\n---\n\n## License (MIT)\n\nCopyright (c) 2013 Arnout Kazemier, 3rd-Eden.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/3rd-Eden/canihaz/issues" - }, "_id": "canihaz@1.0.0", "_from": "canihaz@~1.0.0" } diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.npmignore b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.npmignore new file mode 100644 index 000000000..a72b52ebe --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.npmignore @@ -0,0 +1,15 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +npm-debug.log +node_modules diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.travis.yml b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.travis.yml new file mode 100644 index 000000000..895dbd362 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/LICENSE b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/LICENSE new file mode 100644 index 000000000..41702c504 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/LICENSE @@ -0,0 +1,23 @@ +Copyright 2013 Thorsten Lorenz. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/README.md b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/README.md new file mode 100644 index 000000000..30b6a52e6 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/README.md @@ -0,0 +1,42 @@ +# ansicolors [![build status](https://secure.travis-ci.org/thlorenz/ansicolors.png)](http://next.travis-ci.org/thlorenz/ansicolors) + +Functions that surround a string with ansicolor codes so it prints in color. + +## Installation + + npm install ansicolors + +## Usage + +```js +var colors = require('ansicolors'); + +// foreground colors +var redHerring = colors.red('herring'); +var blueMoon = colors.blue('moon'); +var brighBlueMoon = colors.brightBlue('moon'); + +console.log(redHerring); // this will print 'herring' in red +console.log(blueMoon); // this 'moon' in blue +console.log(brightBlueMoon); // I think you got the idea + +// background colors +console.log(colors.bgYellow('printed on yellow background')); +console.log(colors.bgBrightBlue('printed on bright blue background')); + +// mixing background and foreground colors +// below two lines have same result (order in which bg and fg are combined doesn't matter) +console.log(colors.bgYellow(colors.blue('printed on yellow background in blue'))); +console.log(colors.blue(colors.bgYellow('printed on yellow background in blue'))); +``` + +## Tests + +Look at the [tests](https://github.com/thlorenz/ansicolors/blob/master/test/ansicolors.js) to see more examples and/or run them via: + + npm explore ansicolors && npm test + +## Alternatives + +**ansicolors** tries to meet simple use cases with a very simple API. However, if you need a more powerful ansi formatting tool, +I'd suggest to look at the [features](https://github.com/TooTallNate/ansi.js#features) of the [ansi module](https://github.com/TooTallNate/ansi.js). diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/ansicolors.js b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/ansicolors.js new file mode 100644 index 000000000..b0e18f621 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/ansicolors.js @@ -0,0 +1,55 @@ +// ColorCodes explained: http://www.termsys.demon.co.uk/vtansi.htm +'use strict'; + +var colorNums = { + white : 37 + , black : 30 + , blue : 34 + , cyan : 36 + , green : 32 + , magenta : 35 + , red : 31 + , yellow : 33 + , brightBlack : 90 + , brightRed : 91 + , brightGreen : 92 + , brightYellow : 93 + , brightBlue : 94 + , brightMagenta : 95 + , brightCyan : 96 + , brightWhite : 97 + } + , backgroundColorNums = { + bgBlack : 40 + , bgRed : 41 + , bgGreen : 42 + , bgYellow : 43 + , bgBlue : 44 + , bgMagenta : 45 + , bgCyan : 46 + , bgWhite : 47 + , bgBrightBlack : 100 + , bgBrightRed : 101 + , bgBrightGreen : 102 + , bgBrightYellow : 103 + , bgBrightBlue : 104 + , bgBrightMagenta : 105 + , bgBrightCyan : 106 + , bgBrightWhite : 107 + } + , colors = {}; + + +Object.keys(colorNums).forEach(function (k) { + colors[k] = function (s) { + return '\u001b[' + colorNums[k] + 'm' + s + '\u001b[39m'; + }; +}); + +Object.keys(backgroundColorNums).forEach(function (k) { + colors[k] = function (s) { + return '\u001b[' + backgroundColorNums[k] + 'm' + s + '\u001b[49m'; + }; +}); + +module.exports = colors; diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/package.json b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/package.json new file mode 100644 index 000000000..5992632d0 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/package.json @@ -0,0 +1,30 @@ +{ + "name": "ansicolors", + "version": "0.2.1", + "description": "Functions that surround a string with ansicolor codes so it prints in color.", + "main": "ansicolors.js", + "scripts": { + "test": "node test/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/thlorenz/ansicolors.git" + }, + "keywords": [ + "ansi", + "colors", + "highlight", + "string" + ], + "author": { + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": "thlorenz.com" + }, + "license": "MIT", + "readmeFilename": "README.md", + "gitHead": "858847ca28e8b360d9b70eee0592700fa2ab087d", + "readme": "# ansicolors [![build status](https://secure.travis-ci.org/thlorenz/ansicolors.png)](http://next.travis-ci.org/thlorenz/ansicolors)\n\nFunctions that surround a string with ansicolor codes so it prints in color.\n\n## Installation\n\n npm install ansicolors\n\n## Usage\n\n```js\nvar colors = require('ansicolors');\n\n// foreground colors\nvar redHerring = colors.red('herring');\nvar blueMoon = colors.blue('moon');\nvar brighBlueMoon = colors.brightBlue('moon');\n\nconsole.log(redHerring); // this will print 'herring' in red\nconsole.log(blueMoon); // this 'moon' in blue\nconsole.log(brightBlueMoon); // I think you got the idea\n\n// background colors\nconsole.log(colors.bgYellow('printed on yellow background'));\nconsole.log(colors.bgBrightBlue('printed on bright blue background'));\n\n// mixing background and foreground colors\n// below two lines have same result (order in which bg and fg are combined doesn't matter)\nconsole.log(colors.bgYellow(colors.blue('printed on yellow background in blue')));\nconsole.log(colors.blue(colors.bgYellow('printed on yellow background in blue')));\n```\n\n## Tests\n\nLook at the [tests](https://github.com/thlorenz/ansicolors/blob/master/test/ansicolors.js) to see more examples and/or run them via: \n\n npm explore ansicolors && npm test\n\n## Alternatives\n\n**ansicolors** tries to meet simple use cases with a very simple API. However, if you need a more powerful ansi formatting tool, \nI'd suggest to look at the [features](https://github.com/TooTallNate/ansi.js#features) of the [ansi module](https://github.com/TooTallNate/ansi.js).\n", + "_id": "ansicolors@0.2.1", + "_from": "ansicolors@~0.2.1" +} diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/test/ansicolors.js b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/test/ansicolors.js new file mode 100644 index 000000000..46aec3e28 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansicolors/test/ansicolors.js @@ -0,0 +1,55 @@ +'use strict'; + +var assert = require('assert') + , colors = require('..'); + +console.log('Foreground colors ..'); + +assert.equal(colors.white('printed in white'), '\u001b[37mprinted in white\u001b[39m'); + +assert.equal(colors.black('printed in black'), '\u001b[30mprinted in black\u001b[39m'); +assert.equal(colors.brightBlack('printed in bright black'), '\u001b[90mprinted in bright black\u001b[39m'); + +assert.equal(colors.green('printed in green'), '\u001b[32mprinted in green\u001b[39m'); +assert.equal(colors.brightGreen('printed in bright green'), '\u001b[92mprinted in bright green\u001b[39m'); + +assert.equal(colors.red('printed in red'), '\u001b[31mprinted in red\u001b[39m'); +assert.equal(colors.brightRed('printed in bright red'), '\u001b[91mprinted in bright red\u001b[39m'); + +console.log('OK'); + +console.log('Background colors ..'); + +assert.equal( + colors.bgBlack('printed with black background') + , '\u001b[40mprinted with black background\u001b[49m' +); + +assert.equal( + colors.bgYellow('printed with yellow background') + , '\u001b[43mprinted with yellow background\u001b[49m' +); +assert.equal( + colors.bgBrightYellow('printed with bright yellow background') + , '\u001b[103mprinted with bright yellow background\u001b[49m' +); + +assert.equal( + colors.bgWhite('printed with white background') + , '\u001b[47mprinted with white background\u001b[49m' +); + +console.log('OK'); + +console.log('Mixing background and foreground colors ..'); + +assert.equal( + colors.blue(colors.bgYellow('printed in blue with yellow background')) + , '\u001b[34m\u001b[43mprinted in blue with yellow background\u001b[49m\u001b[39m' +); +assert.equal( + colors.bgYellow(colors.blue('printed in blue with yellow background again')) + , '\u001b[43m\u001b[34mprinted in blue with yellow background again\u001b[39m\u001b[49m' +); + +console.log('OK'); diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.npmignore b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.npmignore new file mode 100644 index 000000000..a72b52ebe --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.npmignore @@ -0,0 +1,15 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +npm-debug.log +node_modules diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.travis.yml b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.travis.yml new file mode 100644 index 000000000..895dbd362 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/LICENSE b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/LICENSE new file mode 100644 index 000000000..41702c504 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/LICENSE @@ -0,0 +1,23 @@ +Copyright 2013 Thorsten Lorenz. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/README.md b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/README.md new file mode 100644 index 000000000..ecefc1963 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/README.md @@ -0,0 +1,69 @@ +# ansistyles [![build status](https://secure.travis-ci.org/thlorenz/ansistyles.png)](http://next.travis-ci.org/thlorenz/ansistyles) + +Functions that surround a string with ansistyle codes so it prints in style. + +## Installation + + npm install ansistyles + +## Usage + +```js +var styles = require('ansistyles'); + +console.log(styles.bright('hello world')); // prints hello world in 'bright' white +console.log(styles.underline('hello world')); // prints hello world underlined +console.log(styles.inverse('hello world')); // prints hello world black on white +``` + +## Combining with ansicolors + +Get the ansicolors module: + + npm install ansicolors + +```js +var styles = require('ansistyles') + , colors = require('ansicolors'); + + console.log( + // prints hello world underlined in blue on a green background + colors.bgGreen(colors.blue(styles.underline('hello world'))) + ); +``` + +## Tests + +Look at the [tests](https://github.com/thlorenz/ansistyles/blob/master/test/ansistyles.js) to see more examples and/or run them via: + + npm explore ansistyles && npm test + +## More Styles + +As you can see from [here](https://github.com/thlorenz/ansistyles/blob/master/ansistyles.js#L4-L15), more styles are available, +but didn't have any effect on the terminals that I tested on Mac Lion and Ubuntu Linux. + +I included them for completeness, but didn't show them in the examples because they seem to have no effect. + +### reset + +A style reset function is also included, please note however that this is not nestable. + +Therefore the below only underlines `hell` only, but not `world`. + +```js +console.log(styles.underline('hell' + styles.reset('o') + ' world')); +``` + +It is essentially the same as: + +```js +console.log(styles.underline('hell') + styles.reset('') + 'o world'); +``` + + + +## Alternatives + +**ansistyles** tries to meet simple use cases with a very simple API. However, if you need a more powerful ansi formatting tool, +I'd suggest to look at the [features](https://github.com/TooTallNate/ansi.js#features) of the [ansi module](https://github.com/TooTallNate/ansi.js). diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/ansistyles.js b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/ansistyles.js new file mode 100644 index 000000000..5b8788c0f --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/ansistyles.js @@ -0,0 +1,38 @@ +'use strict'; + +/* + * Info: http://www.termsys.demon.co.uk/vtansi.htm#colors + * Following caveats + * bright - brightens the color (bold-blue is same as brigthtBlue) + * dim - nothing on Mac or Linux + * italic - nothing on Mac or Linux + * underline - underlines string + * blink - nothing on Mac or linux + * inverse - background becomes foreground and vice versa + * + * In summary, the only styles that work are: + * - bright, underline and inverse + * - the others are only included for completeness + */ + +var styleNums = { + reset : [0, 22] + , bright : [1, 22] + , dim : [2, 22] + , italic : [3, 23] + , underline : [4, 24] + , blink : [5, 25] + , inverse : [7, 27] + } + , styles = {} + ; + +Object.keys(styleNums).forEach(function (k) { + styles[k] = function (s) { + var open = styleNums[k][0] + , close = styleNums[k][1]; + return '\u001b[' + open + 'm' + s + '\u001b[' + close + 'm'; + }; +}); + +module.exports = styles; diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/package.json b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/package.json new file mode 100644 index 000000000..86f72eefd --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/package.json @@ -0,0 +1,30 @@ +{ + "name": "ansistyles", + "version": "0.1.1", + "description": "Functions that surround a string with ansistyle codes so it prints in style.", + "main": "ansistyles.js", + "scripts": { + "test": "node test/ansistyles.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/thlorenz/ansistyles.git" + }, + "keywords": [ + "ansi", + "style", + "terminal", + "console" + ], + "author": { + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": "thlorenz.com" + }, + "license": "MIT", + "readmeFilename": "README.md", + "gitHead": "27bf1bc65231bcc7fd109bf13b13601b51f8cd04", + "readme": "# ansistyles [![build status](https://secure.travis-ci.org/thlorenz/ansistyles.png)](http://next.travis-ci.org/thlorenz/ansistyles)\n\nFunctions that surround a string with ansistyle codes so it prints in style.\n\n## Installation\n\n npm install ansistyles\n\n## Usage\n\n```js\nvar styles = require('ansistyles');\n\nconsole.log(styles.bright('hello world')); // prints hello world in 'bright' white\nconsole.log(styles.underline('hello world')); // prints hello world underlined\nconsole.log(styles.inverse('hello world')); // prints hello world black on white\n```\n\n## Combining with ansicolors\n\nGet the ansicolors module:\n\n npm install ansicolors\n\n```js\nvar styles = require('ansistyles')\n , colors = require('ansicolors');\n\n console.log(\n // prints hello world underlined in blue on a green background\n colors.bgGreen(colors.blue(styles.underline('hello world'))) \n );\n```\n\n## Tests\n\nLook at the [tests](https://github.com/thlorenz/ansistyles/blob/master/test/ansistyles.js) to see more examples and/or run them via: \n\n npm explore ansistyles && npm test\n\n## More Styles\n\nAs you can see from [here](https://github.com/thlorenz/ansistyles/blob/master/ansistyles.js#L4-L15), more styles are available,\nbut didn't have any effect on the terminals that I tested on Mac Lion and Ubuntu Linux.\n\nI included them for completeness, but didn't show them in the examples because they seem to have no effect.\n\n### reset\n\nA style reset function is also included, please note however that this is not nestable.\n\nTherefore the below only underlines `hell` only, but not `world`.\n\n```js\nconsole.log(styles.underline('hell' + styles.reset('o') + ' world'));\n```\n\nIt is essentially the same as:\n\n```js\nconsole.log(styles.underline('hell') + styles.reset('') + 'o world');\n```\n\n\n\n## Alternatives\n\n**ansistyles** tries to meet simple use cases with a very simple API. However, if you need a more powerful ansi formatting tool, \nI'd suggest to look at the [features](https://github.com/TooTallNate/ansi.js#features) of the [ansi module](https://github.com/TooTallNate/ansi.js).\n", + "_id": "ansistyles@0.1.1", + "_from": "ansistyles@~0.1.1" +} diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/test/ansistyles.js b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/test/ansistyles.js new file mode 100644 index 000000000..f769bf803 --- /dev/null +++ b/node/node_modules/docpad/node_modules/caterpillar-human/node_modules/ansistyles/test/ansistyles.js @@ -0,0 +1,15 @@ +'use strict'; +/*jshint asi: true */ +var assert = require('assert') + , styles = require('../') + +function inspect(obj, depth) { + console.log(require('util').inspect(obj, false, depth || 5, true)); +} + +assert.equal(styles.reset('reset'), '\u001b[0mreset\u001b[22m', 'reset') +assert.equal(styles.underline('underlined'), '\u001b[4munderlined\u001b[24m', 'underline') +assert.equal(styles.bright('bright'), '\u001b[1mbright\u001b[22m', 'bright') +assert.equal(styles.inverse('inversed'), '\u001b[7minversed\u001b[27m', 'inverse') + +console.log('OK'); diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/out/lib/caterpillar-human.js b/node/node_modules/docpad/node_modules/caterpillar-human/out/lib/caterpillar-human.js index c98df6479..f6b9d19a6 100644 --- a/node/node_modules/docpad/node_modules/caterpillar-human/out/lib/caterpillar-human.js +++ b/node/node_modules/docpad/node_modules/caterpillar-human/out/lib/caterpillar-human.js @@ -1,5 +1,5 @@ // Generated by CoffeeScript 1.6.2 -var Human, colorFormatters, err, util, _ref, +var Human, ansiColors, ansiStyles, err, util, _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; @@ -7,10 +7,12 @@ var Human, colorFormatters, err, util, _ref, util = require('util'); try { - colorFormatters = require('cli-color'); + ansiColors = require('ansicolors'); + ansiStyles = require('ansistyles'); } catch (_error) { err = _error; - colorFormatters = null; + ansiColors = null; + ansiStyles = null; } Human = (function(_super) { @@ -116,9 +118,9 @@ Human = (function(_super) { debugMode = config.level === 7; result = null; if (entry.text) { - levelFormatter = useColors && (colorFormatters != null ? colorFormatters[entry.color] : void 0); - textFormatter = debugMode && useColors && (colorFormatters != null ? colorFormatters.bold : void 0); - debugFormatter = false; + levelFormatter = useColors && ((ansiColors != null ? ansiColors[entry.color] : void 0) || (ansiStyles != null ? ansiStyles[entry.color] : void 0)); + textFormatter = false && debugMode && useColors && (ansiStyles != null ? ansiStyles.bright : void 0); + debugFormatter = debugMode && useColors && (ansiStyles != null ? ansiStyles.dim : void 0); levelString = entry.levelName + ':'; if (levelFormatter) { levelString = levelFormatter(levelString); @@ -129,8 +131,8 @@ Human = (function(_super) { } messageString = "" + levelString + " " + entryString; if (debugMode) { - seperator = '\n → '; - debugString = "[" + entry.timestamp + "] [" + entry.file + ":" + entry.line + "] [" + entry.method + "]"; + seperator = '\n '; + debugString = "→ [" + entry.timestamp + "] [" + entry.file + ":" + entry.line + "] [" + entry.method + "]"; if (debugFormatter) { debugString = debugFormatter(debugString); } diff --git a/node/node_modules/docpad/node_modules/caterpillar-human/package.json b/node/node_modules/docpad/node_modules/caterpillar-human/package.json index ce7b1ae47..dd0b37d09 100755 --- a/node/node_modules/docpad/node_modules/caterpillar-human/package.json +++ b/node/node_modules/docpad/node_modules/caterpillar-human/package.json @@ -1,6 +1,6 @@ { "name": "caterpillar-human", - "version": "2.0.2", + "version": "2.1.0", "description": "Turn your Caterpillar logger stream into a beautiful readable format with colors and optional debug information", "homepage": "https://github.com/bevry/caterpillar-human", "keywords": [ @@ -46,10 +46,12 @@ "node": ">=0.8" }, "dependencies": { - "cli-color": "~0.2.2" + "ansicolors": "~0.2.1", + "ansistyles": "~0.1.1" }, "optionalDependencies": { - "cli-color": "~0.2.2" + "ansicolors": "~0.2.1", + "ansistyles": "~0.1.1" }, "peerDependencies": { "caterpillar": "2.x" @@ -71,6 +73,6 @@ "main": "./out/lib/caterpillar-human.js", "readme": "# Human Transform for [Caterpillar](https://github.com/bevry/caterpillar)\n\n[![Build Status](https://secure.travis-ci.org/bevry/caterpillar-human.png?branch=master)](http://travis-ci.org/bevry/caterpillar-human)\n[![NPM version](https://badge.fury.io/js/caterpillar-human.png)](https://npmjs.org/package/caterpillar-human)\n[![Flattr this project](https://raw.github.com/balupton/flattr-buttons/master/badge-89x18.gif)](http://flattr.com/thing/344188/balupton-on-Flattr)\n\nTurn your [Caterpillar](https://github.com/bevry/caterpillar) logger stream into a beautiful readable format with colors and optional debug information\n\n\n\n## Install\n\n### Backend\n\n1. [Install Node.js](http://bevry.me/node/install)\n2. `npm install --save caterpillar-human`\n\n### Frontend\n\n1. [See Browserify](http://browserify.org/)\n\n\n\n## Usage\n\n### Example\n\n``` javascript\n// Import\nvar logger = new (require('caterpillar').Logger)();\nvar human = new (require('caterpillar-human').Human)();\n\n// Pipe logger output to our human interface, then our human interface output to stdout\nlogger.pipe(human).pipe(process.stdout);\n\n// Log\nlogger.log('warn', 'this is the first log entry');\n// warn: this is the first log entry\nlogger.log('info', 'this is the second log entry');\n// info: this is the second log entry\n\n// Wait\nsetTimeout(function(){\n\t// Set debug mode\n\tlogger.setConfig({level:7});\n\n\t// Log\n\tlogger.log('warn', 'this is the first log entry');\n\t// warn: this is the first log entry\n\t//\t→ [2013-04-25 20:37:22.692] [/Users/balupton/Projects/caterpillar-human/example.js:20] [null._onTimeout]\n\tlogger.log('info', 'this is the second log entry');\n\t// info: this is the second log entry\n\t//\t→ [2013-04-25 20:37:22.693] [/Users/balupton/Projects/caterpillar-human/example.js:22] [null._onTimeout]\n},0);\n```\n\n### Human API, extends [caterpillar.Transform](https://github.com/bevry/caterpillar), which extends [stream.Transform](http://nodejs.org/api/stream.html#stream_class_stream_transform)\n\n``` javascript\nnew (require('caterpillar-human').Human)(config)\n```\n\n- Methods\n\t- `constructor(config?)` create our new human instance with the config, config is optional\n\t- `pipe(child)` pipe our stream to the child, also sync our config to it\n\t- `setConfig(config)` set the configuration and emit the `config` event\n\t- `getConfig()` get the configuration\n\t- `format(entry)` format the caterpillar logger entry\n- Configuration\n\t- `level` number, defaults to `null`, when set to `7` (debug level) we will debug information with the log entries\n\t- `color` boolean, defaults to `true`, set to `false` to turn off colors\n\t- `colors` objects of the level to color mapping, defaults to:\n\t\t\n\t\t``` javascript\n\t\t{\n\t\t\t0: 'red',\n\t\t\t1: 'red',\n\t\t\t2: 'red',\n\t\t\t3: 'red',\n\t\t\t4: 'yellow',\n\t\t\t5: 'yellow',\n\t\t\t6: 'green',\n\t\t\t7: 'green'\n\t\t}\n\t\t```\n\n- Events\n\t- `config(config)` emitted once our configuration has updated\n\n\n\n## History\nYou can discover the history inside the [History.md](https://github.com/bevry/caterpillar-human/blob/master/History.md#files) file\n\n\n\n## License\nLicensed under the incredibly [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT License](http://creativecommons.org/licenses/MIT/)\n
    Copyright © 2012+ [Bevry Pty Ltd](http://bevry.me)\n
    Copyright © 2011 [Benjamin Lupton](http://balupton.com)\n", "readmeFilename": "README.md", - "_id": "caterpillar-human@2.0.2", - "_from": "caterpillar-human@~2.0.2" + "_id": "caterpillar-human@2.1.0", + "_from": "caterpillar-human@~2.1.0" } diff --git a/node/node_modules/docpad/node_modules/caterpillar/node_modules/readable-stream/package.json b/node/node_modules/docpad/node_modules/caterpillar/node_modules/readable-stream/package.json index 11ffa9254..1cbe7398a 100644 --- a/node/node_modules/docpad/node_modules/caterpillar/node_modules/readable-stream/package.json +++ b/node/node_modules/docpad/node_modules/caterpillar/node_modules/readable-stream/package.json @@ -27,9 +27,6 @@ "license": "BSD", "readme": "# readable-stream\n\nA new class of streams for Node.js\n\nThis module provides the new Stream base classes introduced in Node\nv0.10, for use in Node v0.8. You can use it to have programs that\nhave to work with node v0.8, while being forward-compatible for v0.10\nand beyond. When you drop support for v0.8, you can remove this\nmodule, and only use the native streams.\n\nThis is almost exactly the same codebase as appears in Node v0.10.\nHowever:\n\n1. The exported object is actually the Readable class. Decorating the\n native `stream` module would be global pollution.\n2. In v0.10, you can safely use `base64` as an argument to\n `setEncoding` in Readable streams. However, in v0.8, the\n StringDecoder class has no `end()` method, which is problematic for\n Base64. So, don't use that, because it'll break and be weird.\n\nOther than that, the API is the same as `require('stream')` in v0.10,\nso the API docs are reproduced below.\n\n----------\n\n Stability: 2 - Unstable\n\nA stream is an abstract interface implemented by various objects in\nNode. For example a request to an HTTP server is a stream, as is\nstdout. Streams are readable, writable, or both. All streams are\ninstances of [EventEmitter][]\n\nYou can load the Stream base classes by doing `require('stream')`.\nThere are base classes provided for Readable streams, Writable\nstreams, Duplex streams, and Transform streams.\n\n## Compatibility\n\nIn earlier versions of Node, the Readable stream interface was\nsimpler, but also less powerful and less useful.\n\n* Rather than waiting for you to call the `read()` method, `'data'`\n events would start emitting immediately. If you needed to do some\n I/O to decide how to handle data, then you had to store the chunks\n in some kind of buffer so that they would not be lost.\n* The `pause()` method was advisory, rather than guaranteed. This\n meant that you still had to be prepared to receive `'data'` events\n even when the stream was in a paused state.\n\nIn Node v0.10, the Readable class described below was added. For\nbackwards compatibility with older Node programs, Readable streams\nswitch into \"old mode\" when a `'data'` event handler is added, or when\nthe `pause()` or `resume()` methods are called. The effect is that,\neven if you are not using the new `read()` method and `'readable'`\nevent, you no longer have to worry about losing `'data'` chunks.\n\nMost programs will continue to function normally. However, this\nintroduces an edge case in the following conditions:\n\n* No `'data'` event handler is added.\n* The `pause()` and `resume()` methods are never called.\n\nFor example, consider the following code:\n\n```javascript\n// WARNING! BROKEN!\nnet.createServer(function(socket) {\n\n // we add an 'end' method, but never consume the data\n socket.on('end', function() {\n // It will never get here.\n socket.end('I got your message (but didnt read it)\\n');\n });\n\n}).listen(1337);\n```\n\nIn versions of node prior to v0.10, the incoming message data would be\nsimply discarded. However, in Node v0.10 and beyond, the socket will\nremain paused forever.\n\nThe workaround in this situation is to call the `resume()` method to\ntrigger \"old mode\" behavior:\n\n```javascript\n// Workaround\nnet.createServer(function(socket) {\n\n socket.on('end', function() {\n socket.end('I got your message (but didnt read it)\\n');\n });\n\n // start the flow of data, discarding it.\n socket.resume();\n\n}).listen(1337);\n```\n\nIn addition to new Readable streams switching into old-mode, pre-v0.10\nstyle streams can be wrapped in a Readable class using the `wrap()`\nmethod.\n\n## Class: stream.Readable\n\n\n\nA `Readable Stream` has the following methods, members, and events.\n\nNote that `stream.Readable` is an abstract class designed to be\nextended with an underlying implementation of the `_read(size)`\nmethod. (See below.)\n\n### new stream.Readable([options])\n\n* `options` {Object}\n * `highWaterMark` {Number} The maximum number of bytes to store in\n the internal buffer before ceasing to read from the underlying\n resource. Default=16kb\n * `encoding` {String} If specified, then buffers will be decoded to\n strings using the specified encoding. Default=null\n * `objectMode` {Boolean} Whether this stream should behave\n as a stream of objects. Meaning that stream.read(n) returns\n a single value instead of a Buffer of size n\n\nIn classes that extend the Readable class, make sure to call the\nconstructor so that the buffering settings can be properly\ninitialized.\n\n### readable.\\_read(size)\n\n* `size` {Number} Number of bytes to read asynchronously\n\nNote: **This function should NOT be called directly.** It should be\nimplemented by child classes, and called by the internal Readable\nclass methods only.\n\nAll Readable stream implementations must provide a `_read` method\nto fetch data from the underlying resource.\n\nThis method is prefixed with an underscore because it is internal to\nthe class that defines it, and should not be called directly by user\nprograms. However, you **are** expected to override this method in\nyour own extension classes.\n\nWhen data is available, put it into the read queue by calling\n`readable.push(chunk)`. If `push` returns false, then you should stop\nreading. When `_read` is called again, you should start pushing more\ndata.\n\nThe `size` argument is advisory. Implementations where a \"read\" is a\nsingle call that returns data can use this to know how much data to\nfetch. Implementations where that is not relevant, such as TCP or\nTLS, may ignore this argument, and simply provide data whenever it\nbecomes available. There is no need, for example to \"wait\" until\n`size` bytes are available before calling `stream.push(chunk)`.\n\n### readable.push(chunk)\n\n* `chunk` {Buffer | null | String} Chunk of data to push into the read queue\n* return {Boolean} Whether or not more pushes should be performed\n\nNote: **This function should be called by Readable implementors, NOT\nby consumers of Readable subclasses.** The `_read()` function will not\nbe called again until at least one `push(chunk)` call is made. If no\ndata is available, then you MAY call `push('')` (an empty string) to\nallow a future `_read` call, without adding any data to the queue.\n\nThe `Readable` class works by putting data into a read queue to be\npulled out later by calling the `read()` method when the `'readable'`\nevent fires.\n\nThe `push()` method will explicitly insert some data into the read\nqueue. If it is called with `null` then it will signal the end of the\ndata.\n\nIn some cases, you may be wrapping a lower-level source which has some\nsort of pause/resume mechanism, and a data callback. In those cases,\nyou could wrap the low-level source object by doing something like\nthis:\n\n```javascript\n// source is an object with readStop() and readStart() methods,\n// and an `ondata` member that gets called when it has data, and\n// an `onend` member that gets called when the data is over.\n\nvar stream = new Readable();\n\nsource.ondata = function(chunk) {\n // if push() returns false, then we need to stop reading from source\n if (!stream.push(chunk))\n source.readStop();\n};\n\nsource.onend = function() {\n stream.push(null);\n};\n\n// _read will be called when the stream wants to pull more data in\n// the advisory size argument is ignored in this case.\nstream._read = function(n) {\n source.readStart();\n};\n```\n\n### readable.unshift(chunk)\n\n* `chunk` {Buffer | null | String} Chunk of data to unshift onto the read queue\n* return {Boolean} Whether or not more pushes should be performed\n\nThis is the corollary of `readable.push(chunk)`. Rather than putting\nthe data at the *end* of the read queue, it puts it at the *front* of\nthe read queue.\n\nThis is useful in certain use-cases where a stream is being consumed\nby a parser, which needs to \"un-consume\" some data that it has\noptimistically pulled out of the source.\n\n```javascript\n// A parser for a simple data protocol.\n// The \"header\" is a JSON object, followed by 2 \\n characters, and\n// then a message body.\n//\n// Note: This can be done more simply as a Transform stream. See below.\n\nfunction SimpleProtocol(source, options) {\n if (!(this instanceof SimpleProtocol))\n return new SimpleProtocol(options);\n\n Readable.call(this, options);\n this._inBody = false;\n this._sawFirstCr = false;\n\n // source is a readable stream, such as a socket or file\n this._source = source;\n\n var self = this;\n source.on('end', function() {\n self.push(null);\n });\n\n // give it a kick whenever the source is readable\n // read(0) will not consume any bytes\n source.on('readable', function() {\n self.read(0);\n });\n\n this._rawHeader = [];\n this.header = null;\n}\n\nSimpleProtocol.prototype = Object.create(\n Readable.prototype, { constructor: { value: SimpleProtocol }});\n\nSimpleProtocol.prototype._read = function(n) {\n if (!this._inBody) {\n var chunk = this._source.read();\n\n // if the source doesn't have data, we don't have data yet.\n if (chunk === null)\n return this.push('');\n\n // check if the chunk has a \\n\\n\n var split = -1;\n for (var i = 0; i < chunk.length; i++) {\n if (chunk[i] === 10) { // '\\n'\n if (this._sawFirstCr) {\n split = i;\n break;\n } else {\n this._sawFirstCr = true;\n }\n } else {\n this._sawFirstCr = false;\n }\n }\n\n if (split === -1) {\n // still waiting for the \\n\\n\n // stash the chunk, and try again.\n this._rawHeader.push(chunk);\n this.push('');\n } else {\n this._inBody = true;\n var h = chunk.slice(0, split);\n this._rawHeader.push(h);\n var header = Buffer.concat(this._rawHeader).toString();\n try {\n this.header = JSON.parse(header);\n } catch (er) {\n this.emit('error', new Error('invalid simple protocol data'));\n return;\n }\n // now, because we got some extra data, unshift the rest\n // back into the read queue so that our consumer will see it.\n var b = chunk.slice(split);\n this.unshift(b);\n\n // and let them know that we are done parsing the header.\n this.emit('header', this.header);\n }\n } else {\n // from there on, just provide the data to our consumer.\n // careful not to push(null), since that would indicate EOF.\n var chunk = this._source.read();\n if (chunk) this.push(chunk);\n }\n};\n\n// Usage:\nvar parser = new SimpleProtocol(source);\n// Now parser is a readable stream that will emit 'header'\n// with the parsed header data.\n```\n\n### readable.wrap(stream)\n\n* `stream` {Stream} An \"old style\" readable stream\n\nIf you are using an older Node library that emits `'data'` events and\nhas a `pause()` method that is advisory only, then you can use the\n`wrap()` method to create a Readable stream that uses the old stream\nas its data source.\n\nFor example:\n\n```javascript\nvar OldReader = require('./old-api-module.js').OldReader;\nvar oreader = new OldReader;\nvar Readable = require('stream').Readable;\nvar myReader = new Readable().wrap(oreader);\n\nmyReader.on('readable', function() {\n myReader.read(); // etc.\n});\n```\n\n### Event: 'readable'\n\nWhen there is data ready to be consumed, this event will fire.\n\nWhen this event emits, call the `read()` method to consume the data.\n\n### Event: 'end'\n\nEmitted when the stream has received an EOF (FIN in TCP terminology).\nIndicates that no more `'data'` events will happen. If the stream is\nalso writable, it may be possible to continue writing.\n\n### Event: 'data'\n\nThe `'data'` event emits either a `Buffer` (by default) or a string if\n`setEncoding()` was used.\n\nNote that adding a `'data'` event listener will switch the Readable\nstream into \"old mode\", where data is emitted as soon as it is\navailable, rather than waiting for you to call `read()` to consume it.\n\n### Event: 'error'\n\nEmitted if there was an error receiving data.\n\n### Event: 'close'\n\nEmitted when the underlying resource (for example, the backing file\ndescriptor) has been closed. Not all streams will emit this.\n\n### readable.setEncoding(encoding)\n\nMakes the `'data'` event emit a string instead of a `Buffer`. `encoding`\ncan be `'utf8'`, `'utf16le'` (`'ucs2'`), `'ascii'`, or `'hex'`.\n\nThe encoding can also be set by specifying an `encoding` field to the\nconstructor.\n\n### readable.read([size])\n\n* `size` {Number | null} Optional number of bytes to read.\n* Return: {Buffer | String | null}\n\nNote: **This function SHOULD be called by Readable stream users.**\n\nCall this method to consume data once the `'readable'` event is\nemitted.\n\nThe `size` argument will set a minimum number of bytes that you are\ninterested in. If not set, then the entire content of the internal\nbuffer is returned.\n\nIf there is no data to consume, or if there are fewer bytes in the\ninternal buffer than the `size` argument, then `null` is returned, and\na future `'readable'` event will be emitted when more is available.\n\nCalling `stream.read(0)` will always return `null`, and will trigger a\nrefresh of the internal buffer, but otherwise be a no-op.\n\n### readable.pipe(destination, [options])\n\n* `destination` {Writable Stream}\n* `options` {Object} Optional\n * `end` {Boolean} Default=true\n\nConnects this readable stream to `destination` WriteStream. Incoming\ndata on this stream gets written to `destination`. Properly manages\nback-pressure so that a slow destination will not be overwhelmed by a\nfast readable stream.\n\nThis function returns the `destination` stream.\n\nFor example, emulating the Unix `cat` command:\n\n process.stdin.pipe(process.stdout);\n\nBy default `end()` is called on the destination when the source stream\nemits `end`, so that `destination` is no longer writable. Pass `{ end:\nfalse }` as `options` to keep the destination stream open.\n\nThis keeps `writer` open so that \"Goodbye\" can be written at the\nend.\n\n reader.pipe(writer, { end: false });\n reader.on(\"end\", function() {\n writer.end(\"Goodbye\\n\");\n });\n\nNote that `process.stderr` and `process.stdout` are never closed until\nthe process exits, regardless of the specified options.\n\n### readable.unpipe([destination])\n\n* `destination` {Writable Stream} Optional\n\nUndo a previously established `pipe()`. If no destination is\nprovided, then all previously established pipes are removed.\n\n### readable.pause()\n\nSwitches the readable stream into \"old mode\", where data is emitted\nusing a `'data'` event rather than being buffered for consumption via\nthe `read()` method.\n\nCeases the flow of data. No `'data'` events are emitted while the\nstream is in a paused state.\n\n### readable.resume()\n\nSwitches the readable stream into \"old mode\", where data is emitted\nusing a `'data'` event rather than being buffered for consumption via\nthe `read()` method.\n\nResumes the incoming `'data'` events after a `pause()`.\n\n\n## Class: stream.Writable\n\n\n\nA `Writable` Stream has the following methods, members, and events.\n\nNote that `stream.Writable` is an abstract class designed to be\nextended with an underlying implementation of the\n`_write(chunk, encoding, cb)` method. (See below.)\n\n### new stream.Writable([options])\n\n* `options` {Object}\n * `highWaterMark` {Number} Buffer level when `write()` starts\n returning false. Default=16kb\n * `decodeStrings` {Boolean} Whether or not to decode strings into\n Buffers before passing them to `_write()`. Default=true\n\nIn classes that extend the Writable class, make sure to call the\nconstructor so that the buffering settings can be properly\ninitialized.\n\n### writable.\\_write(chunk, encoding, callback)\n\n* `chunk` {Buffer | String} The chunk to be written. Will always\n be a buffer unless the `decodeStrings` option was set to `false`.\n* `encoding` {String} If the chunk is a string, then this is the\n encoding type. Ignore chunk is a buffer. Note that chunk will\n **always** be a buffer unless the `decodeStrings` option is\n explicitly set to `false`.\n* `callback` {Function} Call this function (optionally with an error\n argument) when you are done processing the supplied chunk.\n\nAll Writable stream implementations must provide a `_write` method to\nsend data to the underlying resource.\n\nNote: **This function MUST NOT be called directly.** It should be\nimplemented by child classes, and called by the internal Writable\nclass methods only.\n\nCall the callback using the standard `callback(error)` pattern to\nsignal that the write completed successfully or with an error.\n\nIf the `decodeStrings` flag is set in the constructor options, then\n`chunk` may be a string rather than a Buffer, and `encoding` will\nindicate the sort of string that it is. This is to support\nimplementations that have an optimized handling for certain string\ndata encodings. If you do not explicitly set the `decodeStrings`\noption to `false`, then you can safely ignore the `encoding` argument,\nand assume that `chunk` will always be a Buffer.\n\nThis method is prefixed with an underscore because it is internal to\nthe class that defines it, and should not be called directly by user\nprograms. However, you **are** expected to override this method in\nyour own extension classes.\n\n\n### writable.write(chunk, [encoding], [callback])\n\n* `chunk` {Buffer | String} Data to be written\n* `encoding` {String} Optional. If `chunk` is a string, then encoding\n defaults to `'utf8'`\n* `callback` {Function} Optional. Called when this chunk is\n successfully written.\n* Returns {Boolean}\n\nWrites `chunk` to the stream. Returns `true` if the data has been\nflushed to the underlying resource. Returns `false` to indicate that\nthe buffer is full, and the data will be sent out in the future. The\n`'drain'` event will indicate when the buffer is empty again.\n\nThe specifics of when `write()` will return false, is determined by\nthe `highWaterMark` option provided to the constructor.\n\n### writable.end([chunk], [encoding], [callback])\n\n* `chunk` {Buffer | String} Optional final data to be written\n* `encoding` {String} Optional. If `chunk` is a string, then encoding\n defaults to `'utf8'`\n* `callback` {Function} Optional. Called when the final chunk is\n successfully written.\n\nCall this method to signal the end of the data being written to the\nstream.\n\n### Event: 'drain'\n\nEmitted when the stream's write queue empties and it's safe to write\nwithout buffering again. Listen for it when `stream.write()` returns\n`false`.\n\n### Event: 'close'\n\nEmitted when the underlying resource (for example, the backing file\ndescriptor) has been closed. Not all streams will emit this.\n\n### Event: 'finish'\n\nWhen `end()` is called and there are no more chunks to write, this\nevent is emitted.\n\n### Event: 'pipe'\n\n* `source` {Readable Stream}\n\nEmitted when the stream is passed to a readable stream's pipe method.\n\n### Event 'unpipe'\n\n* `source` {Readable Stream}\n\nEmitted when a previously established `pipe()` is removed using the\nsource Readable stream's `unpipe()` method.\n\n## Class: stream.Duplex\n\n\n\nA \"duplex\" stream is one that is both Readable and Writable, such as a\nTCP socket connection.\n\nNote that `stream.Duplex` is an abstract class designed to be\nextended with an underlying implementation of the `_read(size)`\nand `_write(chunk, encoding, callback)` methods as you would with a Readable or\nWritable stream class.\n\nSince JavaScript doesn't have multiple prototypal inheritance, this\nclass prototypally inherits from Readable, and then parasitically from\nWritable. It is thus up to the user to implement both the lowlevel\n`_read(n)` method as well as the lowlevel `_write(chunk, encoding, cb)` method\non extension duplex classes.\n\n### new stream.Duplex(options)\n\n* `options` {Object} Passed to both Writable and Readable\n constructors. Also has the following fields:\n * `allowHalfOpen` {Boolean} Default=true. If set to `false`, then\n the stream will automatically end the readable side when the\n writable side ends and vice versa.\n\nIn classes that extend the Duplex class, make sure to call the\nconstructor so that the buffering settings can be properly\ninitialized.\n\n## Class: stream.Transform\n\nA \"transform\" stream is a duplex stream where the output is causally\nconnected in some way to the input, such as a zlib stream or a crypto\nstream.\n\nThere is no requirement that the output be the same size as the input,\nthe same number of chunks, or arrive at the same time. For example, a\nHash stream will only ever have a single chunk of output which is\nprovided when the input is ended. A zlib stream will either produce\nmuch smaller or much larger than its input.\n\nRather than implement the `_read()` and `_write()` methods, Transform\nclasses must implement the `_transform()` method, and may optionally\nalso implement the `_flush()` method. (See below.)\n\n### new stream.Transform([options])\n\n* `options` {Object} Passed to both Writable and Readable\n constructors.\n\nIn classes that extend the Transform class, make sure to call the\nconstructor so that the buffering settings can be properly\ninitialized.\n\n### transform.\\_transform(chunk, encoding, callback)\n\n* `chunk` {Buffer | String} The chunk to be transformed. Will always\n be a buffer unless the `decodeStrings` option was set to `false`.\n* `encoding` {String} If the chunk is a string, then this is the\n encoding type. (Ignore if `decodeStrings` chunk is a buffer.)\n* `callback` {Function} Call this function (optionally with an error\n argument) when you are done processing the supplied chunk.\n\nNote: **This function MUST NOT be called directly.** It should be\nimplemented by child classes, and called by the internal Transform\nclass methods only.\n\nAll Transform stream implementations must provide a `_transform`\nmethod to accept input and produce output.\n\n`_transform` should do whatever has to be done in this specific\nTransform class, to handle the bytes being written, and pass them off\nto the readable portion of the interface. Do asynchronous I/O,\nprocess things, and so on.\n\nCall `transform.push(outputChunk)` 0 or more times to generate output\nfrom this input chunk, depending on how much data you want to output\nas a result of this chunk.\n\nCall the callback function only when the current chunk is completely\nconsumed. Note that there may or may not be output as a result of any\nparticular input chunk.\n\nThis method is prefixed with an underscore because it is internal to\nthe class that defines it, and should not be called directly by user\nprograms. However, you **are** expected to override this method in\nyour own extension classes.\n\n### transform.\\_flush(callback)\n\n* `callback` {Function} Call this function (optionally with an error\n argument) when you are done flushing any remaining data.\n\nNote: **This function MUST NOT be called directly.** It MAY be implemented\nby child classes, and if so, will be called by the internal Transform\nclass methods only.\n\nIn some cases, your transform operation may need to emit a bit more\ndata at the end of the stream. For example, a `Zlib` compression\nstream will store up some internal state so that it can optimally\ncompress the output. At the end, however, it needs to do the best it\ncan with what is left, so that the data will be complete.\n\nIn those cases, you can implement a `_flush` method, which will be\ncalled at the very end, after all the written data is consumed, but\nbefore emitting `end` to signal the end of the readable side. Just\nlike with `_transform`, call `transform.push(chunk)` zero or more\ntimes, as appropriate, and call `callback` when the flush operation is\ncomplete.\n\nThis method is prefixed with an underscore because it is internal to\nthe class that defines it, and should not be called directly by user\nprograms. However, you **are** expected to override this method in\nyour own extension classes.\n\n### Example: `SimpleProtocol` parser\n\nThe example above of a simple protocol parser can be implemented much\nmore simply by using the higher level `Transform` stream class.\n\nIn this example, rather than providing the input as an argument, it\nwould be piped into the parser, which is a more idiomatic Node stream\napproach.\n\n```javascript\nfunction SimpleProtocol(options) {\n if (!(this instanceof SimpleProtocol))\n return new SimpleProtocol(options);\n\n Transform.call(this, options);\n this._inBody = false;\n this._sawFirstCr = false;\n this._rawHeader = [];\n this.header = null;\n}\n\nSimpleProtocol.prototype = Object.create(\n Transform.prototype, { constructor: { value: SimpleProtocol }});\n\nSimpleProtocol.prototype._transform = function(chunk, encoding, done) {\n if (!this._inBody) {\n // check if the chunk has a \\n\\n\n var split = -1;\n for (var i = 0; i < chunk.length; i++) {\n if (chunk[i] === 10) { // '\\n'\n if (this._sawFirstCr) {\n split = i;\n break;\n } else {\n this._sawFirstCr = true;\n }\n } else {\n this._sawFirstCr = false;\n }\n }\n\n if (split === -1) {\n // still waiting for the \\n\\n\n // stash the chunk, and try again.\n this._rawHeader.push(chunk);\n } else {\n this._inBody = true;\n var h = chunk.slice(0, split);\n this._rawHeader.push(h);\n var header = Buffer.concat(this._rawHeader).toString();\n try {\n this.header = JSON.parse(header);\n } catch (er) {\n this.emit('error', new Error('invalid simple protocol data'));\n return;\n }\n // and let them know that we are done parsing the header.\n this.emit('header', this.header);\n\n // now, because we got some extra data, emit this first.\n this.push(b);\n }\n } else {\n // from there on, just provide the data to our consumer as-is.\n this.push(b);\n }\n done();\n};\n\nvar parser = new SimpleProtocol();\nsource.pipe(parser)\n\n// Now parser is a readable stream that will emit 'header'\n// with the parsed header data.\n```\n\n\n## Class: stream.PassThrough\n\nThis is a trivial implementation of a `Transform` stream that simply\npasses the input bytes across to the output. Its purpose is mainly\nfor examples and testing, but there are occasionally use cases where\nit can come in handy.\n\n\n[EventEmitter]: events.html#events_class_events_eventemitter\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, "_id": "readable-stream@1.0.2", "_from": "readable-stream@~1.0.2" } diff --git a/node/node_modules/docpad/node_modules/cli-color/node_modules/es5-ext/package.json b/node/node_modules/docpad/node_modules/cli-color/node_modules/es5-ext/package.json index 5a4828282..6c5017c89 100644 --- a/node/node_modules/docpad/node_modules/cli-color/node_modules/es5-ext/package.json +++ b/node/node_modules/docpad/node_modules/cli-color/node_modules/es5-ext/package.json @@ -26,8 +26,8 @@ "url": "git://github.com/medikoo/es5-ext.git" }, "bugs": { - "url": "https://github.com/medikoo/es5-ext/issues", - "email": "medikoo+es5-ext@medikoo.com" + "email": "medikoo+es5-ext@medikoo.com", + "url": "https://github.com/medikoo/es5-ext/issues" }, "engines": { "node": ">=0.4" diff --git a/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/package.json b/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/package.json index db3c0d4ca..0b001e68a 100644 --- a/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/package.json +++ b/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/event-emitter/package.json @@ -21,8 +21,8 @@ "url": "git://github.com/medikoo/event-emitter.git" }, "bugs": { - "url": "https://github.com/medikoo/event-emitter/issues", - "email": "medikoo+event-emitter@medikoo.com" + "email": "medikoo+event-emitter@medikoo.com", + "url": "https://github.com/medikoo/event-emitter/issues" }, "dependencies": { "es5-ext": "0.9.x" diff --git a/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/next-tick/package.json b/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/next-tick/package.json index e20f39dd1..2fe8a14c0 100644 --- a/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/next-tick/package.json +++ b/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/node_modules/next-tick/package.json @@ -20,8 +20,8 @@ "async" ], "bugs": { - "url": "https://github.com/medikoo/next-tick/issues", - "email": "medikoo+next-tick@medikoo.com" + "email": "medikoo+next-tick@medikoo.com", + "url": "https://github.com/medikoo/next-tick/issues" }, "engines": { "node": ">=0.4" diff --git a/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/package.json b/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/package.json index 928e64187..b24951ee1 100644 --- a/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/package.json +++ b/node/node_modules/docpad/node_modules/cli-color/node_modules/memoizee/package.json @@ -27,8 +27,8 @@ "collector" ], "bugs": { - "url": "https://github.com/medikoo/memoize/issues", - "email": "medikoo+memoize@medikoo.com" + "email": "medikoo+memoize@medikoo.com", + "url": "https://github.com/medikoo/memoize/issues" }, "engines": { "node": ">=0.4" diff --git a/node/node_modules/docpad/node_modules/cli-color/package.json.REMOVED.git-id b/node/node_modules/docpad/node_modules/cli-color/package.json.REMOVED.git-id index feb247462..83ed9412e 100644 --- a/node/node_modules/docpad/node_modules/cli-color/package.json.REMOVED.git-id +++ b/node/node_modules/docpad/node_modules/cli-color/package.json.REMOVED.git-id @@ -1 +1 @@ -fa1e479a8de612623436e18c57c2c4f2cf16fefa \ No newline at end of file +14e6566770b531719e38852b5cc7d1af2e1d2e23 \ No newline at end of file diff --git a/node/node_modules/docpad/node_modules/commander/node_modules/keypress/package.json b/node/node_modules/docpad/node_modules/commander/node_modules/keypress/package.json index 17ac668af..6cdf0856c 100644 --- a/node/node_modules/docpad/node_modules/commander/node_modules/keypress/package.json +++ b/node/node_modules/docpad/node_modules/commander/node_modules/keypress/package.json @@ -23,9 +23,6 @@ "license": "MIT", "readme": "keypress\n========\n### Make any Node ReadableStream emit \"keypress\" events\n\n\nPrevious to Node `v0.8.x`, there was an undocumented `\"keypress\"` event that\n`process.stdin` would emit when it was a TTY. Some people discovered this hidden\ngem, and started using it in their own code.\n\nNow in Node `v0.8.x`, this `\"keypress\"` event does not get emitted by default,\nbut rather only when it is being used in conjuction with the `readline` (or by\nextension, the `repl`) module.\n\nThis module is the exact logic from the node `v0.8.x` releases ripped out into its\nown module.\n\n__Bonus:__ Now with mouse support!\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install keypress\n```\n\nOr add it to the `\"dependencies\"` section of your _package.json_ file.\n\n\nExample\n-------\n\n#### Listening for \"keypress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"keypress\" events\nkeypress(process.stdin);\n\n// listen for the \"keypress\" event\nprocess.stdin.on('keypress', function (ch, key) {\n console.log('got \"keypress\"', key);\n if (key && key.ctrl && key.name == 'c') {\n process.stdin.pause();\n }\n});\n\nprocess.stdin.setRawMode(true);\nprocess.stdin.resume();\n```\n\n#### Listening for \"mousepress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"mousepress\" (and \"keypress\") events\nkeypress(process.stdin);\n\n// you must enable the mouse events before they will begin firing\nkeypress.enableMouse(process.stdout);\n\nprocess.stdin.on('mousepress', function (info) {\n console.log('got \"mousepress\" event at %d x %d', info.x, info.y);\n});\n\nprocess.on('exit', function () {\n // disable mouse on exit, so that the state\n // is back to normal for the terminal\n keypress.disableMouse(process.stdout);\n});\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/TooTallNate/keypress/issues" - }, "_id": "keypress@0.1.0", "_from": "keypress@0.1.x" } diff --git a/node/node_modules/docpad/node_modules/commander/package.json b/node/node_modules/docpad/node_modules/commander/package.json index 54ae236f3..c9240c17f 100644 --- a/node/node_modules/docpad/node_modules/commander/package.json +++ b/node/node_modules/docpad/node_modules/commander/package.json @@ -32,9 +32,6 @@ }, "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range
    ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, "_id": "commander@1.1.1", "_from": "commander@~1.1.1" } diff --git a/node/node_modules/docpad/node_modules/cson/node_modules/coffee-script/package.json b/node/node_modules/docpad/node_modules/cson/node_modules/coffee-script/package.json index 4da2de1a7..94cfc2e78 100644 --- a/node/node_modules/docpad/node_modules/cson/node_modules/coffee-script/package.json +++ b/node/node_modules/docpad/node_modules/cson/node_modules/coffee-script/package.json @@ -32,9 +32,7 @@ "test": "node ./bin/cake test" }, "homepage": "http://coffeescript.org", - "bugs": { - "url": "https://github.com/jashkenas/coffee-script/issues" - }, + "bugs": "https://github.com/jashkenas/coffee-script/issues", "repository": { "type": "git", "url": "git://github.com/jashkenas/coffee-script.git" diff --git a/node/node_modules/docpad/node_modules/cson/node_modules/joe/package.json b/node/node_modules/docpad/node_modules/cson/node_modules/joe/package.json index d0649a19f..43fef2a41 100644 --- a/node/node_modules/docpad/node_modules/cson/node_modules/joe/package.json +++ b/node/node_modules/docpad/node_modules/cson/node_modules/joe/package.json @@ -59,9 +59,9 @@ "main": "./out/lib/joe", "readme": "# Joe [![Build Status](https://secure.travis-ci.org/bevry/joe.png?branch=master)](http://travis-ci.org/bevry/joe)\nNode.js asynchronous testing framework, runner and reporter\n\n## Using\n[You can discover how to use Joe by referring to the `Using Page` on the Wiki](https://github.com/bevry/joe/wiki/Using). [You can check out the rest of the wiki here.](https://github.com/bevry/joe/wiki)\n\n## History\nYou can discover the history inside the [History.md](https://github.com/bevry/joe/blob/master/History.md#files) file\n\n## License\nLicensed under the incredibly [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT License](http://creativecommons.org/licenses/MIT/)\n
    Copyright © 2012 [Bevry Pty Ltd](http://bevry.me)", "readmeFilename": "README.md", + "_id": "joe@1.1.1", "bundleDependencies": [ "bal-util" ], - "_id": "joe@1.1.1", "_from": "joe@1.1.1" } diff --git a/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/node_modules/coffee-script/package.json b/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/node_modules/coffee-script/package.json index e8bc81e3b..714fc5367 100644 --- a/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/node_modules/coffee-script/package.json +++ b/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/node_modules/coffee-script/package.json @@ -32,9 +32,7 @@ "test": "node ./bin/cake test" }, "homepage": "http://coffeescript.org", - "bugs": { - "url": "https://github.com/jashkenas/coffee-script/issues" - }, + "bugs": "https://github.com/jashkenas/coffee-script/issues", "repository": { "type": "git", "url": "git://github.com/jashkenas/coffee-script.git" diff --git a/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/package.json b/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/package.json index ea0be0ea1..fadffe1ed 100644 --- a/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/package.json +++ b/node/node_modules/docpad/node_modules/cson/node_modules/js2coffee/package.json @@ -38,9 +38,6 @@ }, "readme": "# JS2Coffee\n#### A JavaScript to CoffeeScript compiler.\n\n $ npm install js2coffee\n\nUsage:\n\n $ js2coffee input_file.js\n $ js2coffee input_file.js > output.coffee\n $ cat input.js | js2coffee\n\n### Development\n\nRun tests:\n\n $ npm test\n\nBuild the browser version:\n\n $ cake build\n\n### Acknowledgements\n\nMade possible thanks to the hard work of Js2coffee's dependency projects:\n\n * [Narcissus](https://github.com/mozilla/narcissus), Mozilla's JavaScript engine\n * [Node Narcissus](https://github.com/kuno/node-narcissus), the Node port of Narcissus\n * [Underscore.js](http://documentcloud.github.com/underscore)\n\nAnd of course:\n\n * Jeremy Ashkenas's [CoffeeScript](http://jashkenas.github.com/coffee-script/)\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rstacruz/js2coffee/issues" - }, "_id": "js2coffee@0.1.3", "_from": "js2coffee@0.1.3" } diff --git a/node/node_modules/docpad/node_modules/express/History.md.REMOVED.git-id b/node/node_modules/docpad/node_modules/express/History.md.REMOVED.git-id index 8fa695c32..8a8032246 100644 --- a/node/node_modules/docpad/node_modules/express/History.md.REMOVED.git-id +++ b/node/node_modules/docpad/node_modules/express/History.md.REMOVED.git-id @@ -1 +1 @@ -9318e21857c16df7b5d6c61b0476c4ef6414b038 \ No newline at end of file +cb40f28c60011993a8f34536b8267e0bf1ff8b95 \ No newline at end of file diff --git a/node/node_modules/docpad/node_modules/express/client.js b/node/node_modules/docpad/node_modules/express/client.js deleted file mode 100644 index 8984c44d2..000000000 --- a/node/node_modules/docpad/node_modules/express/client.js +++ /dev/null @@ -1,25 +0,0 @@ - -var http = require('http'); - -var times = 50; - -while (times--) { - var req = http.request({ - port: 3000 - , method: 'POST' - , headers: { 'Content-Type': 'application/x-www-form-urlencoded' } - }); - - req.on('response', function(res){ - console.log(res.statusCode); - }); - - var n = 500000; - while (n--) { - req.write('foo=bar&bar=baz&'); - } - - req.write('foo=bar&bar=baz'); - - req.end(); -} \ No newline at end of file diff --git a/node/node_modules/docpad/node_modules/express/lib/express.js b/node/node_modules/docpad/node_modules/express/lib/express.js index ab5588907..44a86b6aa 100644 --- a/node/node_modules/docpad/node_modules/express/lib/express.js +++ b/node/node_modules/docpad/node_modules/express/lib/express.js @@ -20,7 +20,7 @@ exports = module.exports = createApplication; * Framework version. */ -exports.version = '3.2.0'; +exports.version = '3.2.2'; /** * Expose mime. diff --git a/node/node_modules/docpad/node_modules/express/node_modules/buffer-crc32/package.json b/node/node_modules/docpad/node_modules/express/node_modules/buffer-crc32/package.json index 4bb469a04..b5c047bc5 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/buffer-crc32/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/buffer-crc32/package.json @@ -31,9 +31,6 @@ }, "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n\n// and works in append mode too\nvar partialCrc = crc32('hey');\nvar partialCrc = crc32(' ', partialCrc);\nvar partialCrc = crc32('sup', partialCrc);\nvar partialCrc = crc32(' ', partialCrc);\nvar finalCrc = crc32('bros', partialCrc); // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n\n# see also\nhttps://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also\nsupports buffer inputs and return unsigned ints (thanks @tjholowaychuk).\n\n# license\nMIT/X11\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/brianloveswords/buffer-crc32/issues" - }, "_id": "buffer-crc32@0.2.1", "_from": "buffer-crc32@0.2.1" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/commander/package.json b/node/node_modules/docpad/node_modules/express/node_modules/commander/package.json index 6f9d567f6..942b794f6 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/commander/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/commander/package.json @@ -30,9 +30,6 @@ }, "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range
    ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, "_id": "commander@0.6.1", "_from": "commander@0.6.1" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/connect/lib/connect.js b/node/node_modules/docpad/node_modules/express/node_modules/connect/lib/connect.js index c4f81c03a..4c006a677 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/connect/lib/connect.js +++ b/node/node_modules/docpad/node_modules/express/node_modules/connect/lib/connect.js @@ -28,7 +28,7 @@ exports = module.exports = createServer; * Framework version. */ -exports.version = '2.7.6'; +exports.version = '2.7.8'; /** * Expose mime module. diff --git a/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/formidable/package.json index 1b4de7cf9..cd0138cbc 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/formidable/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/formidable/package.json @@ -32,7 +32,7 @@ "optionalDependencies": {}, "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n```\nnpm install formidable@latest\n```\nManually:\n```\ngit clone git://github.com/felixge/node-formidable.git formidable\nvim my.js\n# var formidable = require('./formidable');\n```\n\nNote: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n```javascript\nvar formidable = require('formidable'),\n http = require('http'),\n util = require('util');\n\nhttp.createServer(function(req, res) {\n if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n // parse a file upload\n var form = new formidable.IncomingForm();\n\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
    '+\n '
    '+\n '
    '+\n ''+\n '
    '\n );\n}).listen(8080);\n```\n## API\n\n### Formidable.IncomingForm\n```javascript\nvar form = new formidable.IncomingForm()\n```\nCreates a new incoming form.\n\n```javascript\nform.encoding = 'utf-8';\n```\nSets encoding for incoming form fields.\n\n```javascript\nform.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd();\n```\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n```javascript\nform.keepExtensions = false;\n```\nIf you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n```javascript\nform.type\n```\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n```javascript\nform.maxFieldsSize = 2 * 1024 * 1024;\n```\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n```javascript\nform.maxFields = 0;\n```\nLimits the number of fields that the querystring parser will decode. Defaults\nto 0 (unlimited).\n\n```javascript\nform.hash = false;\n```\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n```javascript\nform.bytesReceived\n```\nThe amount of bytes received for this form so far.\n\n```javascript\nform.bytesExpected\n```\nThe expected number of bytes in this form.\n\n```javascript\nform.parse(request, [cb]);\n```\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n\n```javascript\nform.parse(req, function(err, fields, files) {\n // ...\n});\n\nform.onPart(part);\n```\nYou may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing.\n\n```javascript\nform.onPart = function(part) {\n part.addListener('data', function() {\n // ...\n });\n}\n```\nIf you want to use formidable to only handle certain parts for you, you can do so:\n```javascript\nform.onPart = function(part) {\n if (!part.filename) {\n // let formidable handle all non-file parts\n form.handlePart(part);\n }\n}\n```\nCheck the code in this method for further inspiration.\n\n\n### Formidable.File\n```javascript\nfile.size = 0\n```\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n```javascript\nfile.path = null\n```\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase you are unhappy with the way formidable generates a temporary path for your files.\n```javascript\nfile.name = null\n```\nThe name this file had according to the uploading client.\n```javascript\nfile.type = null\n```\nThe mime type of this file, according to the uploading client.\n```javascript\nfile.lastModifiedDate = null\n```\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n```javascript\nfile.hash = null\n```\nIf hash calculation was set, you can read the hex digest out of this var.\n\n#### Formidable.File#toJSON()\n\n This method returns a JSON-representation of the file, allowing you to\n `JSON.stringify()` the file which is useful for logging and responding\n to requests.\n\n### Events\n\n\n#### 'progress'\n```javascript\nform.on('progress', function(bytesReceived, bytesExpected) {\n});\n```\nEmitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.\n\n\n\n#### 'field'\n```javascript\nform.on('field', function(name, value) {\n});\n```\n\n#### 'fileBegin'\n\nEmitted whenever a field / value pair has been received.\n```javascript\nform.on('fileBegin', function(name, file) {\n});\n```\n\n#### 'file'\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n```javascript\nform.on('file', function(name, file) {\n});\n```\n\n#### 'error'\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n```javascript\nform.on('error', function(err) {\n});\n```\n\n#### 'aborted'\n\n\nEmitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n```javascript\nform.on('aborted', function() {\n});\n```\n\n##### 'end'\n```javascript\nform.on('end', function() {\n});\n```\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n\n\n## Changelog\n\n### v1.0.13\n\n* Only update hash if update method exists (Sven Lito)\n* According to travis v0.10 needs to go quoted (Sven Lito)\n* Bumping build node versions (Sven Lito)\n* Change the default to 1000, to match the new Node behaviour. (OrangeDog)\n* Add ability to control maxKeys in the querystring parser. (OrangeDog)\n* Adjust test case to work with node 0.9.x (Eugene Girshov)\n* Update package.json (Sven Lito)\n* Path adjustment according to eb4468b (Markus Ast)\n\n### v1.0.12\n\n* Emit error on aborted connections (Eugene Girshov)\n* Add support for empty requests (Eugene Girshov)\n* Fix name/filename handling in Content-Disposition (jesperp)\n* Tolerate malformed closing boundary in multipart (Eugene Girshov)\n* Ignore preamble in multipart messages (Eugene Girshov)\n* Add support for application/json (Mike Frey, Carlos Rodriguez)\n* Add support for Base64 encoding (Elmer Bulthuis)\n* Add File#toJSON (TJ Holowaychuk)\n* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley)\n* Documentation improvements (Sven Lito, Andre Azevedo)\n* Add support for application/octet-stream (Ion Lupascu, Chris Scribner)\n* Use os.tmpDir() to get tmp directory (Andrew Kelley)\n* Improve package.json (Andrew Kelley, Sven Lito)\n* Fix benchmark script (Andrew Kelley)\n* Fix scope issue in incoming_forms (Sven Lito)\n* Fix file handle leak on error (OrangeDog)\n\n### v1.0.11\n\n* Calculate checksums for incoming files (sreuter)\n* Add definition parameters to \"IncomingForm\" as an argument (Math-)\n\n### v1.0.10\n\n* Make parts to be proper Streams (Matt Robenolt)\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim Koschützki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in multipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multipart boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n", "readmeFilename": "Readme.md", - "dependencies": {}, "_id": "formidable@1.0.13", + "dependencies": {}, "_from": "formidable@1.0.13" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/pause/package.json b/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/pause/package.json index 26eca4c00..73cfe4009 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/pause/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/connect/node_modules/pause/package.json @@ -16,6 +16,5 @@ "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", "_id": "pause@0.0.1", - "_from": "pause@0.0.1", - "scripts": {} + "_from": "pause@0.0.1" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/connect/package.json b/node/node_modules/docpad/node_modules/express/node_modules/connect/package.json index 75b886c8d..8d9377338 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/connect/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/connect/package.json @@ -1,6 +1,6 @@ { "name": "connect", - "version": "2.7.7", + "version": "2.7.8", "description": "High performance middleware framework", "keywords": [ "framework", @@ -19,7 +19,7 @@ "url": "http://tjholowaychuk.com" }, "dependencies": { - "qs": "0.6.1", + "qs": "0.6.3", "formidable": "1.0.13", "cookie-signature": "1.0.1", "buffer-crc32": "0.2.1", @@ -45,9 +45,6 @@ }, "readme": "[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)\n# Connect\n\n Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance \"plugins\" known as _middleware_.\n\n Connect is bundled with over _20_ commonly used middleware, including\n a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).\n\n```js\nvar connect = require('connect')\n , http = require('http');\n\nvar app = connect()\n .use(connect.favicon())\n .use(connect.logger('dev'))\n .use(connect.static('public'))\n .use(connect.directory('public'))\n .use(connect.cookieParser())\n .use(connect.session({ secret: 'my secret here' }))\n .use(function(req, res){\n res.end('Hello from Connect!\\n');\n });\n\nhttp.createServer(app).listen(3000);\n```\n\n## Middleware\n\n - [csrf](http://www.senchalabs.org/connect/csrf.html)\n - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)\n - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)\n - [json](http://www.senchalabs.org/connect/json.html)\n - [multipart](http://www.senchalabs.org/connect/multipart.html)\n - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)\n - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)\n - [directory](http://www.senchalabs.org/connect/directory.html)\n - [compress](http://www.senchalabs.org/connect/compress.html)\n - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)\n - [favicon](http://www.senchalabs.org/connect/favicon.html)\n - [limit](http://www.senchalabs.org/connect/limit.html)\n - [logger](http://www.senchalabs.org/connect/logger.html)\n - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)\n - [query](http://www.senchalabs.org/connect/query.html)\n - [responseTime](http://www.senchalabs.org/connect/responseTime.html)\n - [session](http://www.senchalabs.org/connect/session.html)\n - [static](http://www.senchalabs.org/connect/static.html)\n - [staticCache](http://www.senchalabs.org/connect/staticCache.html)\n - [vhost](http://www.senchalabs.org/connect/vhost.html)\n - [subdomains](http://www.senchalabs.org/connect/subdomains.html)\n - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)\n\n## Running Tests\n\nfirst:\n\n $ npm install -d\n\nthen:\n\n $ make test\n\n## Authors\n\n Below is the output from [git-summary](http://github.com/visionmedia/git-extras).\n\n\n project: connect\n commits: 2033\n active : 301 days\n files : 171\n authors: \n 1414\tTj Holowaychuk 69.6%\n 298\tvisionmedia 14.7%\n 191\tTim Caswell 9.4%\n 51\tTJ Holowaychuk 2.5%\n 10\tRyan Olds 0.5%\n 8\tAstro 0.4%\n 5\tNathan Rajlich 0.2%\n 5\tJakub Nešetřil 0.2%\n 3\tDaniel Dickison 0.1%\n 3\tDavid Rio Deiros 0.1%\n 3\tAlexander Simmerl 0.1%\n 3\tAndreas Lind Petersen 0.1%\n 2\tAaron Heckmann 0.1%\n 2\tJacques Crocker 0.1%\n 2\tFabian Jakobs 0.1%\n 2\tBrian J Brennan 0.1%\n 2\tAdam Malcontenti-Wilson 0.1%\n 2\tGlen Mailer 0.1%\n 2\tJames Campos 0.1%\n 1\tTrent Mick 0.0%\n 1\tTroy Kruthoff 0.0%\n 1\tWei Zhu 0.0%\n 1\tcomerc 0.0%\n 1\tdarobin 0.0%\n 1\tnateps 0.0%\n 1\tMarco Sanson 0.0%\n 1\tArthur Taylor 0.0%\n 1\tAseem Kishore 0.0%\n 1\tBart Teeuwisse 0.0%\n 1\tCameron Howey 0.0%\n 1\tChad Weider 0.0%\n 1\tCraig Barnes 0.0%\n 1\tEran Hammer-Lahav 0.0%\n 1\tGregory McWhirter 0.0%\n 1\tGuillermo Rauch 0.0%\n 1\tJae Kwon 0.0%\n 1\tJakub Nesetril 0.0%\n 1\tJoshua Peek 0.0%\n 1\tJxck 0.0%\n 1\tAJ ONeal 0.0%\n 1\tMichael Hemesath 0.0%\n 1\tMorten Siebuhr 0.0%\n 1\tSamori Gorse 0.0%\n 1\tTom Jensen 0.0%\n\n## Node Compatibility\n\n Connect `< 1.x` is compatible with node 0.2.x\n\n\n Connect `1.x` is compatible with node 0.4.x\n\n\n Connect (_master_) `2.x` is compatible with node 0.6.x\n\n## CLA\n\n [http://sencha.com/cla](http://sencha.com/cla)\n\n## License\n\nView the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/senchalabs/connect/issues" - }, - "_id": "connect@2.7.7", - "_from": "connect@2.7.7" + "_id": "connect@2.7.8", + "_from": "connect@2.7.8" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/cookie/package.json b/node/node_modules/docpad/node_modules/express/node_modules/cookie/package.json index 208cdadd7..74939f805 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/cookie/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/cookie/package.json @@ -28,9 +28,6 @@ }, "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-cookie/issues" - }, "_id": "cookie@0.0.5", "_from": "cookie@0.0.5" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/debug/package.json b/node/node_modules/docpad/node_modules/express/node_modules/debug/package.json index 82a663f10..0fd620ce9 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/debug/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/debug/package.json @@ -32,9 +32,6 @@ }, "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, "_id": "debug@0.7.2", "_from": "debug@*", "scripts": {} diff --git a/node/node_modules/docpad/node_modules/express/node_modules/methods/package.json b/node/node_modules/docpad/node_modules/express/node_modules/methods/package.json index f867a8b57..341b22605 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/methods/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/methods/package.json @@ -14,7 +14,7 @@ "name": "TJ Holowaychuk" }, "license": "MIT", - "readme": "ERROR: No README data found!", "_id": "methods@0.0.1", + "readme": "ERROR: No README.md file found!", "_from": "methods@0.0.1" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/mkdirp/package.json b/node/node_modules/docpad/node_modules/express/node_modules/mkdirp/package.json index 64955a28e..70956aee9 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/mkdirp/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/mkdirp/package.json @@ -28,9 +28,6 @@ }, "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n var mkdirp = require('mkdirp');\n \n mkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n });\n\nOutput\n pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n", "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, "_id": "mkdirp@0.3.4", "_from": "mkdirp@0.3.4" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/qs/index.js b/node/node_modules/docpad/node_modules/express/node_modules/qs/index.js index 93fa8086c..f45140b89 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/qs/index.js +++ b/node/node_modules/docpad/node_modules/express/node_modules/qs/index.js @@ -141,16 +141,56 @@ function merge(parent, key, val){ return parent; } +/** + * Compact sparse arrays. + */ + +function compact(obj) { + if ('object' != typeof obj) return obj; + + if (isArray(obj)) { + var ret = []; + for (var i in obj) ret.push(obj[i]); + return ret; + } + + for (var key in obj) { + obj[key] = compact(obj[key]); + } + + return obj; +} + +/** + * Restore Object.prototype. + * see pull-request #58 + */ + +function restoreProto(obj) { + if (!Object.create) return obj; + if (isArray(obj)) return obj; + if (obj && 'object' != typeof obj) return obj; + + for (var key in obj) { + obj[key] = restoreProto(obj[key]); + } + + obj.__proto__ = Object.prototype; + return obj; +} + /** * Parse the given obj. */ function parseObject(obj){ var ret = { base: {} }; + forEach(objectKeys(obj), function(name){ merge(ret, name, obj[name]); }); - return ret.base; + + return compact(ret.base); } /** @@ -158,7 +198,7 @@ function parseObject(obj){ */ function parseString(str){ - return reduce(String(str).split('&'), function(ret, pair){ + var ret = reduce(String(str).split('&'), function(ret, pair){ var eql = indexOf(pair, '=') , brace = lastBraceInKey(pair) , key = pair.substr(0, brace || eql) @@ -171,6 +211,8 @@ function parseString(str){ return merge(ret, decode(key), decode(val)); }, { base: createObject() }).base; + + return restoreProto(compact(ret)); } /** diff --git a/node/node_modules/docpad/node_modules/express/node_modules/qs/package.json b/node/node_modules/docpad/node_modules/express/node_modules/qs/package.json index 141711169..6d3df6c22 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/qs/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/qs/package.json @@ -1,7 +1,7 @@ { "name": "qs", "description": "querystring parser", - "version": "0.6.1", + "version": "0.6.3", "keywords": [ "query string", "parser", @@ -18,11 +18,6 @@ "scripts": { "test": "make test" }, - "component": { - "scripts": { - "querystring": "querystring.js" - } - }, "author": { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca", @@ -34,9 +29,6 @@ }, "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-querystring/issues" - }, - "_id": "qs@0.6.1", - "_from": "qs@0.6.1" + "_id": "qs@0.6.3", + "_from": "qs@0.6.3" } diff --git a/node/node_modules/docpad/node_modules/express/node_modules/send/node_modules/mime/package.json b/node/node_modules/docpad/node_modules/express/node_modules/send/node_modules/mime/package.json index 74a6b6907..9a5114b3d 100644 --- a/node/node_modules/docpad/node_modules/express/node_modules/send/node_modules/mime/package.json +++ b/node/node_modules/docpad/node_modules/express/node_modules/send/node_modules/mime/package.json @@ -27,9 +27,6 @@ "version": "1.2.6", "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, "_id": "mime@1.2.6", "_from": "mime@1.2.6" } diff --git a/node/node_modules/docpad/node_modules/express/package.json b/node/node_modules/docpad/node_modules/express/package.json index e6731a53e..704abab2e 100644 --- a/node/node_modules/docpad/node_modules/express/package.json +++ b/node/node_modules/docpad/node_modules/express/package.json @@ -1,7 +1,7 @@ { "name": "express", "description": "Sinatra inspired web development framework", - "version": "3.2.1", + "version": "3.2.2", "author": { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca" @@ -25,7 +25,7 @@ } ], "dependencies": { - "connect": "2.7.7", + "connect": "2.7.8", "commander": "0.6.1", "range-parser": "0.0.4", "mkdirp": "0.3.4", @@ -36,7 +36,7 @@ "send": "0.1.0", "cookie-signature": "1.0.1", "debug": "*", - "qs": "0.6.1" + "qs": "0.6.3" }, "devDependencies": { "ejs": "*", @@ -77,9 +77,6 @@ }, "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n\n Built on Connect you can use _only_ what you need, and nothing more, applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n you can quickly craft your perfect framework.\n\n## More Information\n\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n * [Русскоязычная документация](http://jsman.ru/express/)\n * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nthen run whichever tests you want:\n\n $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nthen run the tests:\n\n $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles : 237\nauthors:\n 1891\tTj Holowaychuk 53.1%\n 1285\tvisionmedia 36.1%\n 182\tTJ Holowaychuk 5.1%\n 54\tAaron Heckmann 1.5%\n 34\tcsausdev 1.0%\n 26\tciaranj 0.7%\n 21\tRobert Sköld 0.6%\n 6\tGuillermo Rauch 0.2%\n 3\tDav Glass 0.1%\n 3\tNick Poulden 0.1%\n 2\tRandy Merrill 0.1%\n 2\tBenny Wong 0.1%\n 2\tHunter Loftis 0.1%\n 2\tJake Gordon 0.1%\n 2\tBrian McKinney 0.1%\n 2\tRoman Shtylman 0.1%\n 2\tBen Weaver 0.1%\n 2\tDave Hoover 0.1%\n 2\tEivind Fjeldstad 0.1%\n 2\tDaniel Shaw 0.1%\n 1\tMatt Colyer 0.0%\n 1\tPau Ramon 0.0%\n 1\tPero Pejovic 0.0%\n 1\tPeter Rekdal Sunde 0.0%\n 1\tRaynos 0.0%\n 1\tTeng Siong Ong 0.0%\n 1\tViktor Kelemen 0.0%\n 1\tctide 0.0%\n 1\t8bitDesigner 0.0%\n 1\tisaacs 0.0%\n 1\tmgutz 0.0%\n 1\tpikeas 0.0%\n 1\tshuwatto 0.0%\n 1\ttstrimple 0.0%\n 1\tewoudj 0.0%\n 1\tAdam Sanderson 0.0%\n 1\tAndrii Kostenko 0.0%\n 1\tAndy Hiew 0.0%\n 1\tArpad Borsos 0.0%\n 1\tAshwin Purohit 0.0%\n 1\tBenjen 0.0%\n 1\tDarren Torpey 0.0%\n 1\tGreg Ritter 0.0%\n 1\tGregory Ritter 0.0%\n 1\tJames Herdman 0.0%\n 1\tJim Snodgrass 0.0%\n 1\tJoe McCann 0.0%\n 1\tJonathan Dumaine 0.0%\n 1\tJonathan Palardy 0.0%\n 1\tJonathan Zacsh 0.0%\n 1\tJustin Lilly 0.0%\n 1\tKen Sato 0.0%\n 1\tMaciej Małecki 0.0%\n 1\tMasahiro Hayashi 0.0%\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca>\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 NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/express/issues" - }, - "_id": "express@3.2.1", + "_id": "express@3.2.2", "_from": "express@~3.2.0" } diff --git a/node/node_modules/docpad/node_modules/express/test.js b/node/node_modules/docpad/node_modules/express/test.js deleted file mode 100644 index 352de4e7e..000000000 --- a/node/node_modules/docpad/node_modules/express/test.js +++ /dev/null @@ -1,39 +0,0 @@ - -/** - * Module dependencies. - */ - -var express = require('./') - , app = express() - -module.exports = stringify; - -function getSerialize (fn) { -var seen = []; -return function(key, value) { - var ret = value; - if (typeof value === 'object' && value) { - if (seen.indexOf(value) !== -1) - ret = '[Circular]'; - else - seen.push(value); - } - if (fn) ret = fn(key, ret); - return ret; -} -} - -function stringify(obj, fn, spaces) { -return JSON.stringify(obj, getSerialize(fn), spaces); -} - -stringify.getSerialize = getSerialize; - - -app.get('/', function(req, res){ - console.log(stringify(req)); - console.log(req.params); -}); - -app.listen(5555); -console.log('listening on 5555'); diff --git a/node/node_modules/docpad/node_modules/jschardet/package.json b/node/node_modules/docpad/node_modules/jschardet/package.json index 8c797a37f..e70f3b999 100644 --- a/node/node_modules/docpad/node_modules/jschardet/package.json +++ b/node/node_modules/docpad/node_modules/jschardet/package.json @@ -24,9 +24,6 @@ }, "readme": "JsChardet\n=========\n\nPort of python's chardet (http://chardet.feedparser.org/).\n\nLicense\n-------\n\nLGPL\n\nHow To Use It\n-------------\n\n\n``` \nnpm install jschardet\n```\n\n var jschardet = require(\"jschardet\")\n \n // \"àíàçã\" in UTF-8\n jschardet.detect(\"\\xc3\\xa0\\xc3\\xad\\xc3\\xa0\\xc3\\xa7\\xc3\\xa3\")\n // { encoding: \"utf-8\", confidence: 0.9690625 }\n\n // \"次常用國字標準字體表\" in Big5 \n jschardet.detect(\"\\xa6\\xb8\\xb1\\x60\\xa5\\xce\\xb0\\xea\\xa6\\x72\\xbc\\xd0\\xb7\\xc7\\xa6\\x72\\xc5\\xe9\\xaa\\xed\")\n // { encoding: \"Big5\", confidence: 0.99 }\n\n\nSupported Charsets\n------------------\n\n* Big5, GB2312/GB18030, EUC-TW, HZ-GB-2312, and ISO-2022-CN (Traditional and Simplified Chinese)\n* EUC-JP, SHIFT_JIS, and ISO-2022-JP (Japanese)\n* EUC-KR and ISO-2022-KR (Korean)\n* KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, and windows-1251 (Russian)\n* ISO-8859-2 and windows-1250 (Hungarian)\n* ISO-8859-5 and windows-1251 (Bulgarian)\n* windows-1252\n* ISO-8859-7 and windows-1253 (Greek)\n* ISO-8859-8 and windows-1255 (Visual and Logical Hebrew)\n* TIS-620 (Thai)\n* UTF-32 BE, LE, 3412-ordered, or 2143-ordered (with a BOM)\n* UTF-16 BE or LE (with a BOM)\n* UTF-8 (with or without a BOM)\n* ASCII\n\nTechnical Information\n---------------------\n\nI haven't been able to create tests to correctly detect:\n\n* ISO-2022-CN\n* windows-1250 in Hungarian\n* windows-1251 in Bulgarian\n* windows-1253 in Greek\n* EUC-CN\n\nA one-file minimized version is missing.\n\nAuthors\n-------\n\n- Ported from python to JavaScript by António Afonso (https://github.com/aadsm/jschardet)\n- Transformed into an npm package by Markus Ast (https://github.com/brainafk)\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/aadsm/jschardet/issues" - }, "_id": "jschardet@1.0.2", "_from": "jschardet@~1.0.2" } diff --git a/node/node_modules/docpad/node_modules/mime/package.json b/node/node_modules/docpad/node_modules/mime/package.json index dfa9ef5a9..2f47a9110 100644 --- a/node/node_modules/docpad/node_modules/mime/package.json +++ b/node/node_modules/docpad/node_modules/mime/package.json @@ -27,9 +27,6 @@ "version": "1.2.9", "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, "_id": "mime@1.2.9", "_from": "mime@~1.2.9" } diff --git a/node/node_modules/docpad/node_modules/mixpanel/package.json b/node/node_modules/docpad/node_modules/mixpanel/package.json index 59795463e..89709493a 100644 --- a/node/node_modules/docpad/node_modules/mixpanel/package.json +++ b/node/node_modules/docpad/node_modules/mixpanel/package.json @@ -32,9 +32,6 @@ }, "readme": "Mixpanel-node\n=============\n[![Build Status](https://secure.travis-ci.org/carlsverre/mixpanel-node.png)](http://travis-ci.org/carlsverre/mixpanel-node)\n\nThis library provides many of the features in the official javascript mixpanel library. It is easy to use, and fully async.\n\nInstallation\n------------\n\n npm install mixpanel\n\nQuick Start\n-----------\n\n // grab the Mixpanel factory\n var Mixpanel = require('mixpanel');\n\n // create an instance of the mixpanel client\n var mixpanel = Mixpanel.init('6fd9434dba686db2d1ab66b4462a3a67');\n\n // track an event with optional properties\n mixpanel.track(\"my event\", {\n distinct_id: \"some unique client id\",\n as: \"many\",\n properties: \"as\",\n you: \"want\"\n });\n mixpanel.track(\"played_game\");\n\n // create or update a user in Mixpanel Engage\n mixpanel.people.set(\"billybob\", {\n $first_name: \"Billy\",\n $last_name: \"Bob\",\n plan: \"premium\",\n games_played: 1,\n points: 0\n });\n\n // set a single property on a user\n mixpanel.people.set(\"billybob\", \"plan\", \"free\");\n\n // increment a numeric property\n mixpanel.people.increment(\"billybob\", \"games_played\");\n\n // increment a numeric property by a different amount\n mixpanel.people.increment(\"billybob\", \"points\", 15);\n\n // increment multiple properties\n mixpanel.people.increment(\"billybob\", {\"points\": 10, \"games_played\": 1});\n\n // delete a user\n mixpanel.people.delete_user(\"billybob\");\n\n // all functions that send data to mixpanel take an optional\n // callback as the last argument\n mixpanel.track(\"test\", function(err) { if (err) throw err; });\n\n // import an old event\n var mixpanel_importer = Mixpanel.init('valid mixpanel token', {\n key: \"valid api key for project\"\n });\n\n // needs to be in the system once for it to show up in the interface\n mixpanel_importer.track('old event', { gender: '' });\n\n mixpanel_importer.import(\"old event\", new Date(2012, 4, 20, 12, 34, 56), {\n distinct_id: 'billybob',\n gender: 'male'\n });\n\nTests\n-----\n\n # in the mixpanel directory\n npm install\n npm test\n\nAttribution/Credits\n-------------------\n\nHeavily inspired by the original js library copyright Mixpanel, Inc.\n(http://mixpanel.com/)\n\nCopyright (c) 2012 Carl Sverre\n\nContributions from:\n - [Andres Gottlieb](https://github.com/andresgottlieb)\n - [Ken Perkins](https://github.com/kenperkins)\n - [Nathan Rajlich](https://github.com/TooTallNate)\n - [Thomas Watson Steen](https://github.com/watson)\n\nLicense\n-------------------\n\nReleased under the MIT license. See file called LICENSE for more\ndetails.\n", "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/carlsverre/mixpanel-node/issues" - }, "_id": "mixpanel@0.0.10", "_from": "mixpanel@0.0.10" } diff --git a/node/node_modules/docpad/node_modules/semver/package.json b/node/node_modules/docpad/node_modules/semver/package.json index 69eb6de64..8e0183ca4 100644 --- a/node/node_modules/docpad/node_modules/semver/package.json +++ b/node/node_modules/docpad/node_modules/semver/package.json @@ -22,9 +22,6 @@ }, "readme": "semver(1) -- The semantic versioner for npm\n===========================================\n\n## Usage\n\n $ npm install semver\n\n semver.valid('1.2.3') // '1.2.3'\n semver.valid('a.b.c') // null\n semver.clean(' =v1.2.3 ') // '1.2.3'\n semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true\n semver.gt('1.2.3', '9.8.7') // false\n semver.lt('1.2.3', '9.8.7') // true\n\nAs a command-line utility:\n\n $ semver -h\n\n Usage: semver -v [-r ]\n Test if version(s) satisfy the supplied range(s),\n and sort them.\n\n Multiple versions or ranges may be supplied.\n\n Program exits successfully if any valid version satisfies\n all supplied ranges, and prints all satisfying versions.\n\n If no versions are valid, or ranges are not satisfied,\n then exits failure.\n\n Versions are printed in ascending order, so supplying\n multiple versions to the utility will just sort them.\n\n## Versions\n\nA version is the following things, in this order:\n\n* a number (Major)\n* a period\n* a number (minor)\n* a period\n* a number (patch)\n* OPTIONAL: a hyphen, followed by a number (build)\n* OPTIONAL: a collection of pretty much any non-whitespace characters\n (tag)\n\nA leading `\"=\"` or `\"v\"` character is stripped off and ignored.\n\n## Comparisons\n\nThe ordering of versions is done using the following algorithm, given\ntwo versions and asked to find the greater of the two:\n\n* If the majors are numerically different, then take the one\n with a bigger major number. `2.3.4 > 1.3.4`\n* If the minors are numerically different, then take the one\n with the bigger minor number. `2.3.4 > 2.2.4`\n* If the patches are numerically different, then take the one with the\n bigger patch number. `2.3.4 > 2.3.3`\n* If only one of them has a build number, then take the one with the\n build number. `2.3.4-0 > 2.3.4`\n* If they both have build numbers, and the build numbers are numerically\n different, then take the one with the bigger build number.\n `2.3.4-10 > 2.3.4-9`\n* If only one of them has a tag, then take the one without the tag.\n `2.3.4 > 2.3.4-beta`\n* If they both have tags, then take the one with the lexicographically\n larger tag. `2.3.4-beta > 2.3.4-alpha`\n* At this point, they're equal.\n\n## Ranges\n\nThe following range styles are supported:\n\n* `>1.2.3` Greater than a specific version.\n* `<1.2.3` Less than\n* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`\n* `~1.2.3` := `>=1.2.3 <1.3.0`\n* `~1.2` := `>=1.2.0 <1.3.0`\n* `~1` := `>=1.0.0 <2.0.0`\n* `1.2.x` := `>=1.2.0 <1.3.0`\n* `1.x` := `>=1.0.0 <2.0.0`\n\nRanges can be joined with either a space (which implies \"and\") or a\n`||` (which implies \"or\").\n\n## Functions\n\n* valid(v): Return the parsed version, or null if it's not valid.\n* inc(v, release): Return the version incremented by the release type\n (major, minor, patch, or build), or null if it's not valid.\n\n### Comparison\n\n* gt(v1, v2): `v1 > v2`\n* gte(v1, v2): `v1 >= v2`\n* lt(v1, v2): `v1 < v2`\n* lte(v1, v2): `v1 <= v2`\n* eq(v1, v2): `v1 == v2` This is true if they're logically equivalent,\n even if they're not the exact same string. You already know how to\n compare strings.\n* neq(v1, v2): `v1 != v2` The opposite of eq.\n* cmp(v1, comparator, v2): Pass in a comparison string, and it'll call\n the corresponding function above. `\"===\"` and `\"!==\"` do simple\n string comparison, but are included for completeness. Throws if an\n invalid comparison string is provided.\n* compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if\n v2 is greater. Sorts in ascending order if passed to Array.sort().\n* rcompare(v1, v2): The reverse of compare. Sorts an array of versions\n in descending order when passed to Array.sort().\n\n\n### Ranges\n\n* validRange(range): Return the valid range or null if it's not valid\n* satisfies(version, range): Return true if the version satisfies the\n range.\n* maxSatisfying(versions, range): Return the highest version in the list\n that satisfies the range, or null if none of them do.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-semver/issues" - }, "_id": "semver@1.1.4", "_from": "semver@~1.1.4" } diff --git a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/graceful-fs/package.json b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/graceful-fs/package.json index 03f91c912..8cd0e1e77 100644 --- a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/graceful-fs/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/graceful-fs/package.json @@ -40,9 +40,6 @@ "license": "BSD", "readme": "# graceful-fs\n\ngraceful-fs functions as a drop-in replacement for the fs module,\nmaking various improvements.\n\nThe improvements are meant to normalize behavior across different\nplatforms and environments, and to make filesystem access more\nresilient to errors.\n\n## Improvements over fs module\n\ngraceful-fs:\n\n* keeps track of how many file descriptors are open, and by default\n limits this to 1024. Any further requests to open a file are put in a\n queue until new slots become available. If 1024 turns out to be too\n much, it decreases the limit further.\n* fixes `lchmod` for Node versions prior to 0.6.2.\n* implements `fs.lutimes` if possible. Otherwise it becomes a noop.\n* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or\n `lchown` if the user isn't root.\n* makes `lchmod` and `lchown` become noops, if not available.\n* retries reading a file if `read` results in EAGAIN error.\n\nOn Windows, it retries renaming a file for up to one second if `EACCESS`\nor `EPERM` error occurs, likely because antivirus software has locked\nthe directory.\n\n## Configuration\n\nThe maximum number of open file descriptors that graceful-fs manages may\nbe adjusted by setting `fs.MAX_OPEN` to a different number. The default\nis 1024.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, "_id": "graceful-fs@1.2.1", "_from": "graceful-fs@~1.2.0" } diff --git a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/inherits/package.json b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/inherits/package.json index 974e1bdcc..f769c39fe 100644 --- a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/inherits/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/inherits/package.json @@ -21,9 +21,7 @@ }, "readme": "A dead simple way to do inheritance in JS.\n\n var inherits = require(\"inherits\")\n\n function Animal () {\n this.alive = true\n }\n Animal.prototype.say = function (what) {\n console.log(what)\n }\n\n inherits(Dog, Animal)\n function Dog () {\n Dog.super.apply(this)\n }\n Dog.prototype.sniff = function () {\n this.say(\"sniff sniff\")\n }\n Dog.prototype.bark = function () {\n this.say(\"woof woof\")\n }\n\n inherits(Chihuahua, Dog)\n function Chihuahua () {\n Chihuahua.super.apply(this)\n }\n Chihuahua.prototype.bark = function () {\n this.say(\"yip yip\")\n }\n\n // also works\n function Cat () {\n Cat.super.apply(this)\n }\n Cat.prototype.hiss = function () {\n this.say(\"CHSKKSS!!\")\n }\n inherits(Cat, Animal, {\n meow: function () { this.say(\"miao miao\") }\n })\n Cat.prototype.purr = function () {\n this.say(\"purr purr\")\n }\n\n\n var c = new Chihuahua\n assert(c instanceof Chihuahua)\n assert(c instanceof Dog)\n assert(c instanceof Animal)\n\nThe actual function is laughably small. 10-lines small.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, "_id": "inherits@1.0.0", - "_from": "inherits@1" + "_from": "inherits@1", + "scripts": {} } diff --git a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json index 73920bf2a..111e5d7c2 100644 --- a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json @@ -54,9 +54,6 @@ ], "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-lru-cache/issues" - }, "_id": "lru-cache@2.3.0", "_from": "lru-cache@2" } diff --git a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json index ec8e2eb3e..92a63e961 100644 --- a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json @@ -33,9 +33,6 @@ "license": "BSD", "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/sigmund/issues" - }, "_id": "sigmund@1.0.0", "_from": "sigmund@~1.0.0" } diff --git a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/package.json b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/package.json index a34740535..480a1cd58 100644 --- a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/node_modules/minimatch/package.json @@ -31,9 +31,6 @@ }, "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n### Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn't have any \"magic\" in it\n (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself. When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, "_id": "minimatch@0.2.12", "_from": "minimatch@~0.2.11" } diff --git a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/package.json b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/package.json index fdba4a255..f0522b935 100644 --- a/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/node_modules/glob/package.json @@ -31,9 +31,6 @@ "license": "BSD", "readme": "# Glob\n\nThis is a glob implementation in JavaScript. It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n // files is an array of filenames.\n // If the `nonull` option is set, and nothing\n // was found, then files is [\"**/*.js\"]\n // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options]\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered. When an error is encountered, the\n glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`. There\n is no way at this time to continue a glob search after aborting, but\n you can re-use the statCache to avoid having to duplicate syscalls.\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n matches found. If the `nonull` option is set, and no match was found,\n then the `matches` list contains the original pattern. The matches\n are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior. Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search. Defaults\n to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n onto. Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n systems, and `C:\\` or some such on Windows.)\n* `nomount` By default, a pattern starting with a forward-slash will be\n \"mounted\" onto the root setting, so that a valid filesystem path is\n returned. Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results. This reduces performance\n somewhat, and is completely unnecessary, unless `readdir` is presumed\n to be an untrustworthy indicator of file existence. It will cause\n ELOOP to be triggered one level sooner in the case of cyclical\n symbolic links.\n* `silent` When an unusual error is encountered\n when attempting to read a directory, a warning will be printed to\n stderr. Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n when attempting to read a directory, the process will just continue on\n in search of other matches. Set the `strict` option to raise an error\n in these cases.\n* `statCache` A cache of results of filesystem information, to prevent\n unnecessary stat calls. While it should not normally be necessary to\n set this, you may pass the statCache from one glob() call to the\n options object of another, if you know that the filesystem will not\n change between calls. (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n same file showing up multiple times in the result set. By default,\n this implementation prevents duplicates in the result set.\n Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n containing the pattern itself. This is the default in glob(3).\n* `nocase` Perform a case-insensitive match. Note that case-insensitive\n filesystems will sometimes result in glob returning results that are\n case-insensitively matched anyway, since readdir and stat will not\n raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`. On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead. However, this also makes it even more susceptible to races,\nespecially if the statCache object is reused between glob calls.\n\nUsers are thus advised not to use a glob result as a\nguarantee of filesystem state in the face of rapid changes.\nFor the vast majority of operations, this is never a problem.\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, "_id": "glob@3.1.21", "_from": "glob@~3.1.11" } diff --git a/node/node_modules/docpad/node_modules/yamljs/package.json b/node/node_modules/docpad/node_modules/yamljs/package.json index 326841d3c..0ab0e7986 100644 --- a/node/node_modules/docpad/node_modules/yamljs/package.json +++ b/node/node_modules/docpad/node_modules/yamljs/package.json @@ -28,9 +28,6 @@ }, "readme": "yaml.js\n=======\n\nStandalone JavaScript YAML 1.2 Parser & Encoder. Works under node.js and all major browsers. Also brings command line YAML/JSON conversion tools.\n\nMainly inspired from [Symfony Yaml Component](https://github.com/symfony/Yaml).\n\nHow to use\n----------\n\nImport yaml.js in your html page:\n\n``` html\n\n```\n\nParse yaml string:\n\n``` js\nnativeObject = YAML.parse(yamlString);\n```\n\nDump native object into yaml string:\n\n``` js\nyamlString = YAML.stringify(nativeObject[, inline /* @integer depth to start using inline notation at */[, spaces /* @integer number of spaces to use for indentation */] ]);\n```\n\nLoad yaml file:\n\n``` js\nnativeObject = YAML.load('file.yml');\n```\n\nLoad yaml file:\n\n``` js\nYAML.load('file.yml', function(result)\n{\n nativeObject = result;\n});\n```\n\nUse with node.js\n----------------\n\nInstall module:\n\n``` bash\nnpm install yamljs\n```\n\nUse it:\n\n``` js\nYAML = require('yamljs');\n\n// parse YAML string\nnativeObject = YAML.parse(yamlString);\n\n// Generate YAML\nyamlString = YAML.stringify(nativeObject, 4);\n\n// Load yaml file using require\nnativeObject = require('./myfile.yml');\n\n// Load yaml file using YAML.load\nnativeObject = YAML.load('myfile.yml');\n```\n\nCommand line tools\n------------------\n\nYou can enable the command line tools by installing yamljs as a global module:\n\n``` bash\nnpm install -g yamljs\n```\n\nThen, two cli commands should become available: **yaml2json** and **json2yaml**. They let you convert YAML to JSON and JSON to YAML very easily.\n\n**yaml2json**\n\n```\nusage: yaml2json [-h] [-v] [-p] [-i INDENTATION] [-s] [-r] [-w] input\n\nPositional arguments:\n input YAML file or directory containing YAML files.\n\nOptional arguments:\n -h, --help Show this help message and exit.\n -v, --version Show program's version number and exit.\n -p, --pretty Output pretty (indented) JSON.\n -i INDENTATION, --indentation INDENTATION\n Number of space characters used to indent code (use \n with --pretty, default: 2).\n -s, --save Save output inside JSON file(s) with the same name.\n -r, --recursive If the input is a directory, also find YAML files in \n sub-directories recursively.\n -w, --watch Watch for changes.\n```\n\n**json2yaml**\n\n```\nusage: json2yaml [-h] [-v] [-d DEPTH] [-i INDENTATION] [-s] [-r] [-w] input\n\nPositional arguments:\n input JSON file or directory containing JSON files.\n\nOptional arguments:\n -h, --help Show this help message and exit.\n -v, --version Show program's version number and exit.\n -d DEPTH, --depth DEPTH\n Set minimum level of depth before generating inline \n YAML (default: 2).\n -i INDENTATION, --indentation INDENTATION\n Number of space characters used to indent code \n (default: 2).\n -s, --save Save output inside YML file(s) with the same name.\n -r, --recursive If the input is a directory, also find JSON files in \n sub-directories recursively.\n -w, --watch Watch for changes.\n```\n\n**examples**\n\n``` bash\n# Convert YAML to JSON and output resulting JSON on the console\nyaml2json myfile.yml\n\n# Store output inside a JSON file\nyaml2json myfile.yml > ouput.json\n\n# Output \"pretty\" (indented) JSON\nyaml2json myfile.yml --pretty\n\n# Save the output inside a file called myfile.json\nyaml2json myfile.yml --pretty --save\n\n# Watch a full directory and convert any YAML file into its JSON equivalent\nyaml2json mydirectory --pretty --save --recursive\n\n# Convert JSON to YAML and store output inside a JSON file\njson2yaml myfile.json > ouput.yml\n\n# Output YAML that will be inlined only after 8 levels of indentation\njson2yaml myfile.json --depth 8\n\n# Save the output inside a file called myfile.json with 4 spaces for each indentation\njson2yaml myfile.json --indentation 4\n\n# Watch a full directory and convert any JSON file into its YAML equivalent\njson2yaml mydirectory --pretty --save --recursive\n```\n\nImportant\n---------\n\nSymfony dropped support for YAML 1.1 spec. This means that `yes`, `no` and similar no longer convert to their *boolean* equivalents.\n\nThe internal `Yaml().load()` and `Yaml().loadFile()` methods renamed to `Yaml().parse()` and `Yaml().parseFile()` respectively. Exceptions replaced with `YamlParseException` object.\n\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jeremyfa/yaml.js/issues" - }, "_id": "yamljs@0.1.4", "_from": "yamljs@~0.1.4" } diff --git a/node/node_modules/docpad/out/lib/docpad.js.REMOVED.git-id b/node/node_modules/docpad/out/lib/docpad.js.REMOVED.git-id index b86898dec..4f29c218a 100644 --- a/node/node_modules/docpad/out/lib/docpad.js.REMOVED.git-id +++ b/node/node_modules/docpad/out/lib/docpad.js.REMOVED.git-id @@ -1 +1 @@ -6ff5416d862b6121381047ab10331faf4e9d9b95 \ No newline at end of file +bf2aaf71d6a1ca17f8e48f3b0b0adf26ebad54a4 \ No newline at end of file diff --git a/node/node_modules/docpad/package.json b/node/node_modules/docpad/package.json index cf363c1ce..ee0757a4b 100755 --- a/node/node_modules/docpad/package.json +++ b/node/node_modules/docpad/package.json @@ -1,6 +1,6 @@ { "name": "docpad", - "version": "6.32.0", + "version": "6.33.0", "description": "DocPad is a language agnostic document management system. This means you write your website as documents, in whatever language you wish, and DocPad will handle the compiling, templates and layouts for you. For static documents it will generate static files, for dynamic documents it'll re-render them on each request. You can utilise DocPad by itself, or use it as a module your own custom system. It's pretty cool, and well worth checking out. We love it.", "homepage": "https://github.com/bevry/docpad", "installUrl": "http://docpad.org/install", @@ -186,7 +186,7 @@ "taskgroup": "~3.1.2", "caterpillar": "~2.0.1", "caterpillar-filter": "~2.0.1", - "caterpillar-human": "~2.0.2", + "caterpillar-human": "~2.1.0", "commander": "~1.1.1", "cson": "~1.4.1", "express": "~3.2.0", @@ -235,6 +235,6 @@ "main": "./out/main.js", "readme": "[![DocPad Logo](http://d.pr/i/cfmt+)](http://docpad.org \"Visit the DocPad Website\")\n\n# DocPad. Streamlined web development.\n\n[![Build Status](https://secure.travis-ci.org/bevry/docpad.png?branch=master)](http://travis-ci.org/bevry/docpad)\n[![NPM version](https://badge.fury.io/js/docpad.png)](https://npmjs.org/package/docpad)\n[![Flattr this project](https://raw.github.com/balupton/flattr-buttons/master/badge-89x18.gif)](http://flattr.com/thing/344188/balupton-on-Flattr)\n\nHi! I'm DocPad, I streamline the web development process and help close the gap between experts and beginners. I've been used in production by big and small companies for over a year and a half now to create [plenty of amazing and powerful web sites and applications](http://docpad.org/docs/showcase) quicker than ever before. What makes me different is instead of being a box to cram yourself into and hold you back, I'm a freeway to what you want to accomplish, just getting out of your way and allowing you to create stuff quicker than ever before without limits. Leave the redudant stuff up to me, so you can focus on the awesome stuff.\n\nDiscover my features below, or skip ahead to the installation instructions to get started with a [fully functional pre-made website](http://docpad.org/docs/skeletons) in a few minutes from reading this.\n\n**[Watch the Screencast!](http://www.youtube.com/watch?v=hvQCXDWh7Wg&feature=share&list=PLYVl5EnzwqsQs0tBLO6ug6WbqAbrpVbNf)**\n\n\n## Features\n\n### Out of the box\n\n- Competely file based meaning there is no pesky databases that need to be installed, and for version control you get to use systems like Git and SVN which you're already use to (You can still hook in remote data sources if you want, DocPad doesn't impose any limits on you, ever)\n- Choose from plenty of community maintained [pre-made websites](http://docpad.org/docs/skeletons) to use for your next project instead of starting from scratch everytime\n- Write your documents in any language, markup, templating engine, or pre-processor you wish (we're truly agnostic thanks to your plugin system). You can even mix and match them when needed by combining their extensions in a rails like fashion (e.g. `coffee-with-some-eco.js.coffee.eco`)\n- Changes to your website are automatically recompiled through our built in watch system\n- Add meta data to the top of your files to be used by templating engines to display non-standard information such as titles and descriptions for your documents\n- Display custom listings of content with our powerful [Query Engine](https://github.com/bevry/query-engine/) available to your templating engines\n- Abstract out generic headers and footers into layouts using our nested layout system\n- For simple static websites easily deploy your generated website to any web server like apache or github pages. For dynamic projects deploy them to servers like [heroku](http://www.heroku.com/) or [nodejitsu](http://nodejitsu.com/) to take advantage of custom routing with [express.js](http://expressjs.com/). [Deploy guide here](http://docpad.org/docs/deploy)\n- Built-in server to save you from having to startup your own, for dynamic deployments this even supports things like clean urls, custom routes and server-side logic\n- Robust architecture and powerful plugin system means that you are never boxed in unlike traditional CMS systems, instead you can always [extend DocPad](http://docpad.org/docs/extend) to do whatever you need it to do, and you can even write to bundle common custom functionality and distribute them through the amazing node package manager [npm](http://npmjs.org/)\n- Built in support for dynamic documents (e.g. search pages, signup forms, etc.), so you can code pages that change on each request by just adding `dynamic: true` to your document's meta data (exposes the [express.js](http://expressjs.com/) `req` and `res` objects to your templating engine)\n- You can use it standalone, or even easily include it within your existing systems with our [API](http://docpad.org/docs/api)\n\n\n### With our amazing community maintained plugins\n\n- Use the [Live Reload](http://docpad.org/plugin/livereload/) plugin to automatically refresh your web browser whenever a change is made, this is amazing\n- Pull in remote RSS/Atom/JSON feeds into your templating engines allowing you to display your latest twitter updates or github projects easily and effortlessly using the [Feedr Plugin](http://docpad.org/plugin/feedr/)\n- Support for every templating engine and pre-processor under the sun, including but not limited to CoffeeScript, CoffeeKup, ECO, HAML, Handlebars, Jade, Less, Markdown, PHP, Ruby, SASS and Stylus - [the full listing is here](http://docpad.org/docs/plugins)\n- Use the [Partials Plugin](http://docpad.org/plugin/partials) to abstract common pieces of code into their own individual file that can be included as much as you want\n- Syntax highlight code blocks automatically with either our [Highlight.js Plugin](http://docpad.org/plugin/highlightjs/) or [Pygments Plugin](http://docpad.org/plugin/pygments/)\n- Get SEO friendly clean URLs with our [Clean URLs Plugin](http://docpad.org/plugin/cleanurls/) (dynamic deployments only)\n- Lint your code automatically with our Lint Plugin - under construction, coming soon\n- Concatenate and minify your JavaScript and CSS assets making page loads faster for your users with our Minify Plugin - under construction, coming soon\n- Install common javascript libraries like jQuery, Backbone and Underscore directly from the command line - under construction, coming soon\n- Automatically translate your entire website into other languages with our Translation Plugin - under construction, coming soon\n- Add a admin interface to your website allowing you to edit, save and preview your changes on live websites then push them back to your source repository with the Admin Plugin - under construction, coming soon\n- Pretty much if DocPad doesn't already do something, it is trivial to [write a plugin](http://docpad.org/docs/extend) to do it, seriously DocPad can accomplish anything, it never holds you back, there are no limits, it's like super powered guardian angel\n- There are also [plenty of other plugins](http://docpad.org/docs/plugins) not listed here that are still definitely worth checking out! :)\n\n\n## People love DocPad\n\nAll sorts of people love DocPad, from first time web developers to even industry leaders and experts. In fact, people even migrate to DocPad from other systems as they love it so much. Here are some our [favourite tweets](https://twitter.com/#!/DocPad/favorites) of what people are saying about DocPad :)\n\n[![Some favourite tweets about DocPad](https://raw.github.com/bevry/docpad/dev/docs/favs.gif)](https://twitter.com/#!/DocPad/favorites)\n\n\n\n\n## [Installation](http://docpad.org/docs/install)\n\n[Click here for our latest Install Instructions](http://docpad.org/docs/install)\n\n\n## [Quick Start](http://docpad.org/docs/start)\n\n[Click here to skip ahead to our latest Quick Start Guide](http://docpad.org/docs/start)\n\n\n## What next?\n\nHere are some quick links to help you get started:\n\n- [Getting Started](http://docpad.org/docs/intro)\n- [Frequently Asked Questions](http://docpad.org/docs/faq)\n- [Showcase and Examples](http://docpad.org/docs/showcase)\n- [Guides and Tutorials](http://docpad.org/docs/)\n- [Deployment Guide](http://docpad.org/docs/deploy)\n- [Extension Guide](http://docpad.org/docs/extend)\n- [Plugins](http://docpad.org/docs/plugins)\n- [Skeletons](http://docpad.org/docs/skeletons)\n- [Troubleshooting](http://docpad.org/docs/troubleshoot)\n- [Support Channels](http://docpad.org/support)\n- [Bug Tracker](http://docpad.org/issues)\n- [IRC Chat Room: `#docpad` on freenode](http://webchat.freenode.net?channels=docpad)\n- [Everything else](http://docpad.org/docs/)\n\n\n## History\n\nYou can discover the version history inside the [History.md](https://github.com/bevry/docpad/blob/master/History.md#files) file\n\n\n\n## License\n\nLicensed under the incredibly [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT License](http://creativecommons.org/licenses/MIT/)\n
    Copyright © 2012+ [Bevry Pty Ltd](http://bevry.me)\n
    Copyright © 2011 [Benjamin Lupton](http://balupton.com)\n\n\n\n## Special Thanks\n\nSpecial thanks to all our wonderful contributors who have helped shaped the DocPad core of today:\n\n- [Benjamin Lupton](https://github.com/balupton)\n- [Nick Crohn](https://github.com/ncrohn)\n- [eldios](https://github.com/eldios)\n- [Changwoo Park](https://github.com/pismute)\n- [Bruno Héridet](https://github.com/Delapouite)\n- [Todd Anglin](https://github.com/toddanglin)\n- [Olivier Bazoud](https://github.com/obazoud)\n- [Zhao Lei](https://github.com/firede)\n- [Aaron Powell](https://github.com/aaronpowell)\n- [Andrew Patton](https://github.com/acusti)\n- [Paul Armstrong](https://github.com/paularmstrong)\n- [Sorin Ionescu](https://github.com/sorin-ionescu)\n- [Ferrari Lee](https://github.com/Ferrari)\n- [Ben Barber](https://github.com/barberboy)\n- [Sven Vetsch](https://github.com/disenchant)\n\nAlso thanks to all the countless others who have continued to raise DocPad even higher by submitting plugins, issues reports, discussion topics, IRC chat messages, and praise on twitter. We love you.\n\nLastly, thank YOU for giving us a go, believing us, and loving us. We love you too.\n\nSincerely, the DocPad team\n\n[![Flattr this project](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/344188/balupton-on-Flattr)\n", "readmeFilename": "README.md", - "_id": "docpad@6.32.0", + "_id": "docpad@6.33.0", "_from": "docpad@6.x" } diff --git a/node/node_modules/grunt-bower-task/node_modules/bower/node_modules/glob/node_modules/inherits/package.json b/node/node_modules/grunt-bower-task/node_modules/bower/node_modules/glob/node_modules/inherits/package.json index ada613725..f769c39fe 100644 --- a/node/node_modules/grunt-bower-task/node_modules/bower/node_modules/glob/node_modules/inherits/package.json +++ b/node/node_modules/grunt-bower-task/node_modules/bower/node_modules/glob/node_modules/inherits/package.json @@ -22,5 +22,6 @@ "readme": "A dead simple way to do inheritance in JS.\n\n var inherits = require(\"inherits\")\n\n function Animal () {\n this.alive = true\n }\n Animal.prototype.say = function (what) {\n console.log(what)\n }\n\n inherits(Dog, Animal)\n function Dog () {\n Dog.super.apply(this)\n }\n Dog.prototype.sniff = function () {\n this.say(\"sniff sniff\")\n }\n Dog.prototype.bark = function () {\n this.say(\"woof woof\")\n }\n\n inherits(Chihuahua, Dog)\n function Chihuahua () {\n Chihuahua.super.apply(this)\n }\n Chihuahua.prototype.bark = function () {\n this.say(\"yip yip\")\n }\n\n // also works\n function Cat () {\n Cat.super.apply(this)\n }\n Cat.prototype.hiss = function () {\n this.say(\"CHSKKSS!!\")\n }\n inherits(Cat, Animal, {\n meow: function () { this.say(\"miao miao\") }\n })\n Cat.prototype.purr = function () {\n this.say(\"purr purr\")\n }\n\n\n var c = new Chihuahua\n assert(c instanceof Chihuahua)\n assert(c instanceof Dog)\n assert(c instanceof Animal)\n\nThe actual function is laughably small. 10-lines small.\n", "readmeFilename": "README.md", "_id": "inherits@1.0.0", - "_from": "inherits@1" + "_from": "inherits@1", + "scripts": {} } diff --git a/node/node_modules/grunt-bower-task/package.json b/node/node_modules/grunt-bower-task/package.json index 77ab699ca..d85db1337 100644 --- a/node/node_modules/grunt-bower-task/package.json +++ b/node/node_modules/grunt-bower-task/package.json @@ -54,5 +54,5 @@ "readme": "# grunt-bower-task [![Build Status](https://travis-ci.org/yatskevich/grunt-bower-task.png)](https://travis-ci.org/yatskevich/grunt-bower-task)\n\n> Install Bower packages. Smartly.\n\n## Getting Started\n_If you haven't used [grunt][] before, be sure to check out the [Getting Started][] guide._\n\nPlease note, this plugin works **only with grunt 0.4+**. If you are using grunt 0.3.x then consider an [upgrade to 0.4][].\n\nFrom the same directory as your project's [Gruntfile][Getting Started] and [package.json][], install this plugin with the following command:\n\n```bash\nnpm install grunt-bower-task --save-dev\n```\n\nOnce that's done, add this line to your project's Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-bower-task');\n```\n\nIf the plugin has been installed correctly, running `grunt --help` at the command line should list the newly-installed plugin's task or tasks. In addition, the plugin should be listed in package.json as a `devDependency`, which ensures that it will be installed whenever the `npm install` command is run.\n\n[grunt]: http://gruntjs.com/\n[Getting Started]: https://github.com/gruntjs/grunt/wiki/Getting-started\n[package.json]: https://npmjs.org/doc/json.html\n[upgrade to 0.4]: https://github.com/gruntjs/grunt/wiki/Upgrading-from-0.3-to-0.4\n\n## Grunt task for Bower\n\n### Overview\nIn your project's Gruntfile, add a section named `bower` to the data object passed into `grunt.initConfig()`.\n\n```js\ngrunt.initConfig({\n bower: {\n install: {\n //just run 'grunt bower:install' and you'll see files from your Bower packages in lib directory\n }\n },\n})\n```\n\n### Options\n\n#### options.targetDir\nType: `String`\nDefault value: `./lib`\n\nA directory where you want to keep your Bower packages.\n\n### options.install\nType: `Boolean`\nDefault value: `true`\n\nWhether you want to run bower install task itself (e.g. you might not want to do this each time on CI server).\n\n### options.cleanTargetDir\nType: `Boolean`\nDefault value: `false`\n\nWill clean target dir before running install.\n\n### options.cleanBowerDir\nType: `Boolean`\nDefault value: `false`\n\nWill remove bower's dir after copying all needed files into target dir.\n\n#### options.cleanup\nType: `boolean`\nDefault value: `undefined`\n\n**NOTE:** If set to true or false then both `cleanBowerDir` & `cleanTargetDir` are set to the value of `cleanup`.\n\n#### options.layout\nType: `string` or `function`\nDefault value: `byType`\n\nThere are two built-in named layouts: `byType` and `byComponent`.\n\n`byType` layout will produce the following structure:\n\n```\nlib\n|-- js\n| |- bootstrap\n| \\- require\n|-- css\n \\- bootstrap\n```\nwhere `js`, `css` come from `exportsOverride` section described below.\n\n`byComponent` will group assets by type under component name:\n\n```\nlib\n|-- bootstrap\n| |- js\n| \\- css\n|-- require\n \\- js\n```\n\nIf you need to support custom layout then you can specify `layout` as a function of `type` and `component`:\n\n```js\nvar path = require('path');\n\ngrunt.initConfig({\n bower: {\n install: {\n options: {\n layout: function(type, component) {\n var renamedType = type;\n if (type == 'js') renamedType = 'javascripts';\n else if (type == 'css') renamedType = 'stylesheets';\n\n return path.join(component, renamedType);\n }\n }\n }\n }\n});\n```\n\n#### options.verbose\nType: `boolean`\nDefault value: `false`\n\nThe task will provide more (debug) output when this option is set to `true`. You can also use `--verbose` when running task for same effect.\n\n### Usage Examples\n\n#### Default Options\nDefault options are good enough if you want to install Bower packages and keep only `\"main\"` files (as specified by package's `component.json`) in separate directory.\n\n```js\ngrunt.initConfig({\n bower: {\n install: {\n options: { \n targetDir: './lib',\n layout: 'byType',\n install: true,\n verbose: false,\n cleanTargetDir: false,\n cleanBowerDir: false\n }\n }\n },\n})\n```\n\n#### Custom Options\nIn this initial version there are no more options in plugin itself. **BUT!**\n\n### Advanced usage\nAt this point of time \"Bower package\" = \"its git repository\". It means that package includes tests, licenses, etc.\nBower's community actively discusses this issue (GitHub issues [#46][],[#88][], [on Google Groups][GG])\nThat's why you can find such tools like [blittle/bower-installer][] which inspired this project.\n\n[GG]: https://groups.google.com/forum/?fromgroups=#!topic/twitter-bower/SQEDDA_gmh0\n[#88]: https://github.com/twitter/bower/issues/88\n[#46]: https://github.com/twitter/bower/issues/46\n[blittle/bower-installer]: https://github.com/blittle/bower-installer\n\nOkay, if you want more than `\"main\"` files in `./lib` directory then put `\"exportsOverride\"` section into your `component.json`:\n\n```json\n{\n \"name\": \"simple-bower\",\n \"version\": \"0.0.0\",\n \"dependencies\": {\n \"jquery\": \"~1.8.3\",\n \"bootstrap-sass\": \"*\",\n \"requirejs\": \"*\"\n },\n \"exportsOverride\": {\n \"bootstrap-sass\": {\n \"js\": \"js/*.js\",\n \"scss\": \"lib/*.scss\",\n \"img\": \"img/*.png\"\n },\n \"requirejs\": {\n \"js\": \"require.js\"\n }\n }\n}\n```\n`grunt-bower-task` will do the rest:\n\n* If Bower package has defined `\"main\"` files then they will be copied to `./lib//`.\n* If `\"main\"` files are empty then the whole package directory will be copied to `./lib`.\n* When you define `\"exportsOverride\"` only asset types and files specified by you will be copied to `./lib`.\n\nFor the example above you'll get the following files in `.lib` directory:\n\n```\njquery/jquery.js\njs/bootstrap-sass/bootstrap-affix.js\n...\njs/bootstrap-sass/bootstrap-typeahead.js\njs/requirejs/require.js\nscss/bootstrap-sass/_accordion.scss\n...\nscss/bootstrap-sass/_wells.scss\nscss/bootstrap-sass/bootstrap.scss\nscss/bootstrap-sass/responsive.scss\nimg/bootstrap-sass/glyphicons-halflings-white.png\nimg/bootstrap-sass/glyphicons-halflings.png\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][].\n\n## Release History\n* 2013/04/23 - v0.2.2 - Fix backward-compatibility issue (related to `cleanup` option).\n* 2013/04/22 - v0.2.1 - Split 'install' to 'install' and 'copy' steps to support flexible workflow, add support for grunt's `--base` option.\n* 2013/03/30 - v0.2.0 - Added support for flexible assets layout, honor native Bower's configuration, reduce log output.\n* 2013/03/18 - v0.1.1 - Updated dependencies, minor fixes.\n* 2012/11/25 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2012-2013 Ivan Yatskevich\n\nLicensed under the MIT license.\n\n\n", "readmeFilename": "README.md", "_id": "grunt-bower-task@0.2.2", - "_from": "grunt-bower-task@" + "_from": "grunt-bower-task@~0.2.2" } diff --git a/node/node_modules/grunt-contrib-copy/package.json b/node/node_modules/grunt-contrib-copy/package.json index e4de16722..a24399868 100644 --- a/node/node_modules/grunt-contrib-copy/package.json +++ b/node/node_modules/grunt-contrib-copy/package.json @@ -65,5 +65,5 @@ "readme": "# grunt-contrib-copy [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-copy.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-copy)\n\n> Copy files and folders.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-copy --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-contrib-copy');\n```\n\n*This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can't please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-copy/tree/grunt-0.3-stable).*\n\n\n\n## Copy task\n_Run this task with the `grunt copy` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n### Options\n\n#### processContent\nType: `Function(content, srcpath)`\n\nThis option is passed to `grunt.file.copy` as an advanced way to control the file contents that are copied.\n\n#### processContentExclude\nType: `String`\n\nThis option is passed to `grunt.file.copy` as an advanced way to control which file contents are processed.\n\n### Usage Examples\n\n```js\ncopy: {\n main: {\n files: [\n {src: ['path/*'], dest: 'dest/', filter: 'isFile'}, // includes files in path\n {src: ['path/**'], dest: 'dest/'}, // includes files in path and its subdirs\n {expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'}, // makes all src relative to cwd\n {expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'} // flattens results to a single level\n ]\n }\n}\n```\n\n\n## Release History\n\n * 2013-02-14   v0.4.0   First official release for Grunt 0.4.0.\n * 2013-01-22   v0.4.0rc7   Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.\n * 2013-01-13   v0.4.0rc5   Updating to work with grunt v0.4.0rc5. Conversion to grunt v0.4 conventions. Replace basePath with cwd. Empty directory support.\n * 2012-10-17   v0.3.2   Pass copyOptions on single file copy.\n * 2012-10-11   v0.3.1   Rename grunt-contrib-lib dep to grunt-lib-contrib.\n * 2012-09-23   v0.3.0   General cleanup and consolidation. Global options depreciated.\n * 2012-09-17   v0.2.4   No valid source check.\n * 2012-09-16   v0.2.3   Path.sep fallback for node <= 0.7.9.\n * 2012-09-16   v0.2.2   Single file copy support. Test refactoring.\n * 2012-09-06   v0.2.0   Refactored from grunt-contrib into individual repo.\n\n---\n\nTask submitted by [Chris Talkington](http://christalkington.com/)\n\n*This file was generated on Fri Feb 22 2013 09:26:58.*\n", "readmeFilename": "README.md", "_id": "grunt-contrib-copy@0.4.1", - "_from": "grunt-contrib-copy@" + "_from": "grunt-contrib-copy@~0.4.1" } diff --git a/node/node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/fileset/node_modules/glob/node_modules/inherits/package.json b/node/node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/fileset/node_modules/glob/node_modules/inherits/package.json index ada613725..f769c39fe 100644 --- a/node/node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/fileset/node_modules/glob/node_modules/inherits/package.json +++ b/node/node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/fileset/node_modules/glob/node_modules/inherits/package.json @@ -22,5 +22,6 @@ "readme": "A dead simple way to do inheritance in JS.\n\n var inherits = require(\"inherits\")\n\n function Animal () {\n this.alive = true\n }\n Animal.prototype.say = function (what) {\n console.log(what)\n }\n\n inherits(Dog, Animal)\n function Dog () {\n Dog.super.apply(this)\n }\n Dog.prototype.sniff = function () {\n this.say(\"sniff sniff\")\n }\n Dog.prototype.bark = function () {\n this.say(\"woof woof\")\n }\n\n inherits(Chihuahua, Dog)\n function Chihuahua () {\n Chihuahua.super.apply(this)\n }\n Chihuahua.prototype.bark = function () {\n this.say(\"yip yip\")\n }\n\n // also works\n function Cat () {\n Cat.super.apply(this)\n }\n Cat.prototype.hiss = function () {\n this.say(\"CHSKKSS!!\")\n }\n inherits(Cat, Animal, {\n meow: function () { this.say(\"miao miao\") }\n })\n Cat.prototype.purr = function () {\n this.say(\"purr purr\")\n }\n\n\n var c = new Chihuahua\n assert(c instanceof Chihuahua)\n assert(c instanceof Dog)\n assert(c instanceof Animal)\n\nThe actual function is laughably small. 10-lines small.\n", "readmeFilename": "README.md", "_id": "inherits@1.0.0", - "_from": "inherits@1" + "_from": "inherits@1", + "scripts": {} } diff --git a/node/node_modules/grunt-contrib-watch/node_modules/gaze/package.json b/node/node_modules/grunt-contrib-watch/node_modules/gaze/package.json index 76d120aed..f3f0f95c4 100644 --- a/node/node_modules/grunt-contrib-watch/node_modules/gaze/package.json +++ b/node/node_modules/grunt-contrib-watch/node_modules/gaze/package.json @@ -41,8 +41,6 @@ "watch", "glob" ], - "readme": "# gaze [![Build Status](https://secure.travis-ci.org/shama/gaze.png?branch=master)](http://travis-ci.org/shama/gaze)\n\nA globbing fs.watch wrapper built from the best parts of other fine watch libs.\n\nCompatible with NodeJS v0.8/0.6, Windows, OSX and Linux.\n\n## Usage\nInstall the module with: `npm install gaze` or place into your `package.json`\nand run `npm install`.\n\n```javascript\nvar gaze = require('gaze');\n\n// Watch all .js files/dirs in process.cwd()\ngaze('**/*.js', function(err, watcher) {\n // Files have all started watching\n // watcher === this\n\n // Get all watched files\n console.log(this.watched());\n\n // On file changed\n this.on('changed', function(filepath) {\n console.log(filepath + ' was changed');\n });\n\n // On file added\n this.on('added', function(filepath) {\n console.log(filepath + ' was added');\n });\n\n // On file deleted\n this.on('deleted', function(filepath) {\n console.log(filepath + ' was deleted');\n });\n\n // On changed/added/deleted\n this.on('all', function(event, filepath) {\n console.log(filepath + ' was ' + event);\n });\n\n // Get watched files with relative paths\n console.log(this.relative());\n});\n\n// Also accepts an array of patterns\ngaze(['stylesheets/*.css', 'images/**/*.png'], function() {\n // Add more patterns later to be watched\n this.add(['js/*.js']);\n});\n```\n\n### Alternate Interface\n\n```javascript\nvar Gaze = require('gaze').Gaze;\n\nvar gaze = new Gaze('**/*');\n\n// Files have all started watching\ngaze.on('ready', function(watcher) { });\n\n// A file has been added/changed/deleted has occurred\ngaze.on('all', function(event, filepath) { });\n```\n\n### Errors\n\n```javascript\ngaze('**/*', function() {\n this.on('error', function(err) {\n // Handle error here\n });\n});\n```\n\n### Minimatch / Glob\n\nSee [isaacs's minimatch](https://github.com/isaacs/minimatch) for more\ninformation on glob patterns.\n\n## Documentation\n\n### gaze(patterns, [options], callback)\n\n* `patterns` {String|Array} File patterns to be matched\n* `options` {Object}\n* `callback` {Function}\n * `err` {Error | null}\n * `watcher` {Object} Instance of the Gaze watcher\n\n### Class: gaze.Gaze\n\nCreate a Gaze object by instanting the `gaze.Gaze` class.\n\n```javascript\nvar Gaze = require('gaze').Gaze;\nvar gaze = new Gaze(pattern, options, callback);\n```\n\n#### Properties\n\n* `options` The options object passed in.\n * `interval` {integer} Interval to pass to fs.watchFile\n * `debounceDelay` {integer} Delay for events called in succession for the same\n file/event\n\n#### Events\n\n* `ready(watcher)` When files have been globbed and watching has begun.\n* `all(event, filepath)` When an `added`, `changed` or `deleted` event occurs.\n* `added(filepath)` When a file has been added to a watch directory.\n* `changed(filepath)` When a file has been changed.\n* `deleted(filepath)` When a file has been deleted.\n* `renamed(newPath, oldPath)` When a file has been renamed.\n* `end()` When the watcher is closed and watches have been removed.\n* `error(err)` When an error occurs.\n\n#### Methods\n\n* `emit(event, [...])` Wrapper for the EventEmitter.emit.\n `added`|`changed`|`deleted` events will also trigger the `all` event.\n* `close()` Unwatch all files and reset the watch instance.\n* `add(patterns, callback)` Adds file(s) patterns to be watched.\n* `remove(filepath)` removes a file or directory from being watched. Does not\n recurse directories.\n* `watched()` Returns the currently watched files.\n* `relative([dir, unixify])` Returns the currently watched files with relative paths.\n * `dir` {string} Only return relative files for this directory.\n * `unixify` {boolean} Return paths with `/` instead of `\\\\` if on Windows.\n\n## FAQs\n\n### Why Another `fs.watch` Wrapper?\nI liked parts of other `fs.watch` wrappers but none had all the features I\nneeded. This lib combines the features I needed from other fine watch libs:\nSpeedy data behavior from\n[paulmillr's chokidar](https://github.com/paulmillr/chokidar), API interface\nfrom [mikeal's watch](https://github.com/mikeal/watch) and file globbing using\n[isaacs's glob](https://github.com/isaacs/node-glob) which is also used by\n[cowboy's Grunt](https://github.com/gruntjs/grunt).\n\n### How do I fix the error `EMFILE: Too many opened files.`?\nThis is because of your system's max opened file limit. For OSX the default is\nvery low (256). Increase your limit temporarily with `ulimit -n 10480`, the\nnumber being the new max limit.\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style.\nAdd unit tests for any new or changed functionality. Lint and test your code\nusing [grunt](http://gruntjs.com/).\n\n## Release History\n* 0.3.4 - Code clean up. Fix path must be strings errors (@groner). Fix incorrect added events (@groner).\n* 0.3.3 - Fix for multiple patterns with negate.\n* 0.3.2 - Emit `end` before removeAllListeners.\n* 0.3.1 - Fix added events within subfolder patterns.\n* 0.3.0 - Handle safewrite events, `forceWatchMethod` option removed, bug fixes and watch optimizations (@rgaskill).\n* 0.2.2 - Fix issue where subsequent add calls dont get watched (@samcday). removeAllListeners on close.\n* 0.2.1 - Fix issue with invalid `added` events in current working dir.\n* 0.2.0 - Support and mark folders with `path.sep`. Add `forceWatchMethod` option. Support `renamed` events.\n* 0.1.6 - Recognize the `cwd` option properly\n* 0.1.5 - Catch too many open file errors\n* 0.1.4 - Really fix the race condition with 2 watches\n* 0.1.3 - Fix race condition with 2 watches\n* 0.1.2 - Read triggering changed event fix\n* 0.1.1 - Minor fixes\n* 0.1.0 - Initial release\n\n## License\nCopyright (c) 2013 Kyle Robinson Young\nLicensed under the MIT license.\n", - "readmeFilename": "README.md", "contributors": [ { "name": "Kyle Robinson Young", @@ -65,6 +63,8 @@ "url": "http://hydrocodedesign.com/" } ], + "readme": "# gaze [![Build Status](https://secure.travis-ci.org/shama/gaze.png?branch=master)](http://travis-ci.org/shama/gaze)\n\nA globbing fs.watch wrapper built from the best parts of other fine watch libs.\n\nCompatible with NodeJS v0.8/0.6, Windows, OSX and Linux.\n\n## Usage\nInstall the module with: `npm install gaze` or place into your `package.json`\nand run `npm install`.\n\n```javascript\nvar gaze = require('gaze');\n\n// Watch all .js files/dirs in process.cwd()\ngaze('**/*.js', function(err, watcher) {\n // Files have all started watching\n // watcher === this\n\n // Get all watched files\n console.log(this.watched());\n\n // On file changed\n this.on('changed', function(filepath) {\n console.log(filepath + ' was changed');\n });\n\n // On file added\n this.on('added', function(filepath) {\n console.log(filepath + ' was added');\n });\n\n // On file deleted\n this.on('deleted', function(filepath) {\n console.log(filepath + ' was deleted');\n });\n\n // On changed/added/deleted\n this.on('all', function(event, filepath) {\n console.log(filepath + ' was ' + event);\n });\n\n // Get watched files with relative paths\n console.log(this.relative());\n});\n\n// Also accepts an array of patterns\ngaze(['stylesheets/*.css', 'images/**/*.png'], function() {\n // Add more patterns later to be watched\n this.add(['js/*.js']);\n});\n```\n\n### Alternate Interface\n\n```javascript\nvar Gaze = require('gaze').Gaze;\n\nvar gaze = new Gaze('**/*');\n\n// Files have all started watching\ngaze.on('ready', function(watcher) { });\n\n// A file has been added/changed/deleted has occurred\ngaze.on('all', function(event, filepath) { });\n```\n\n### Errors\n\n```javascript\ngaze('**/*', function() {\n this.on('error', function(err) {\n // Handle error here\n });\n});\n```\n\n### Minimatch / Glob\n\nSee [isaacs's minimatch](https://github.com/isaacs/minimatch) for more\ninformation on glob patterns.\n\n## Documentation\n\n### gaze(patterns, [options], callback)\n\n* `patterns` {String|Array} File patterns to be matched\n* `options` {Object}\n* `callback` {Function}\n * `err` {Error | null}\n * `watcher` {Object} Instance of the Gaze watcher\n\n### Class: gaze.Gaze\n\nCreate a Gaze object by instanting the `gaze.Gaze` class.\n\n```javascript\nvar Gaze = require('gaze').Gaze;\nvar gaze = new Gaze(pattern, options, callback);\n```\n\n#### Properties\n\n* `options` The options object passed in.\n * `interval` {integer} Interval to pass to fs.watchFile\n * `debounceDelay` {integer} Delay for events called in succession for the same\n file/event\n\n#### Events\n\n* `ready(watcher)` When files have been globbed and watching has begun.\n* `all(event, filepath)` When an `added`, `changed` or `deleted` event occurs.\n* `added(filepath)` When a file has been added to a watch directory.\n* `changed(filepath)` When a file has been changed.\n* `deleted(filepath)` When a file has been deleted.\n* `renamed(newPath, oldPath)` When a file has been renamed.\n* `end()` When the watcher is closed and watches have been removed.\n* `error(err)` When an error occurs.\n\n#### Methods\n\n* `emit(event, [...])` Wrapper for the EventEmitter.emit.\n `added`|`changed`|`deleted` events will also trigger the `all` event.\n* `close()` Unwatch all files and reset the watch instance.\n* `add(patterns, callback)` Adds file(s) patterns to be watched.\n* `remove(filepath)` removes a file or directory from being watched. Does not\n recurse directories.\n* `watched()` Returns the currently watched files.\n* `relative([dir, unixify])` Returns the currently watched files with relative paths.\n * `dir` {string} Only return relative files for this directory.\n * `unixify` {boolean} Return paths with `/` instead of `\\\\` if on Windows.\n\n## FAQs\n\n### Why Another `fs.watch` Wrapper?\nI liked parts of other `fs.watch` wrappers but none had all the features I\nneeded. This lib combines the features I needed from other fine watch libs:\nSpeedy data behavior from\n[paulmillr's chokidar](https://github.com/paulmillr/chokidar), API interface\nfrom [mikeal's watch](https://github.com/mikeal/watch) and file globbing using\n[isaacs's glob](https://github.com/isaacs/node-glob) which is also used by\n[cowboy's Grunt](https://github.com/gruntjs/grunt).\n\n### How do I fix the error `EMFILE: Too many opened files.`?\nThis is because of your system's max opened file limit. For OSX the default is\nvery low (256). Increase your limit temporarily with `ulimit -n 10480`, the\nnumber being the new max limit.\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style.\nAdd unit tests for any new or changed functionality. Lint and test your code\nusing [grunt](http://gruntjs.com/).\n\n## Release History\n* 0.3.4 - Code clean up. Fix path must be strings errors (@groner). Fix incorrect added events (@groner).\n* 0.3.3 - Fix for multiple patterns with negate.\n* 0.3.2 - Emit `end` before removeAllListeners.\n* 0.3.1 - Fix added events within subfolder patterns.\n* 0.3.0 - Handle safewrite events, `forceWatchMethod` option removed, bug fixes and watch optimizations (@rgaskill).\n* 0.2.2 - Fix issue where subsequent add calls dont get watched (@samcday). removeAllListeners on close.\n* 0.2.1 - Fix issue with invalid `added` events in current working dir.\n* 0.2.0 - Support and mark folders with `path.sep`. Add `forceWatchMethod` option. Support `renamed` events.\n* 0.1.6 - Recognize the `cwd` option properly\n* 0.1.5 - Catch too many open file errors\n* 0.1.4 - Really fix the race condition with 2 watches\n* 0.1.3 - Fix race condition with 2 watches\n* 0.1.2 - Read triggering changed event fix\n* 0.1.1 - Minor fixes\n* 0.1.0 - Initial release\n\n## License\nCopyright (c) 2013 Kyle Robinson Young\nLicensed under the MIT license.\n", + "readmeFilename": "README.md", "_id": "gaze@0.3.4", "_from": "gaze@~0.3.4" } diff --git a/node/node_modules/grunt-contrib-watch/package.json b/node/node_modules/grunt-contrib-watch/package.json index baed08b28..b9dd5cffd 100644 --- a/node/node_modules/grunt-contrib-watch/package.json +++ b/node/node_modules/grunt-contrib-watch/package.json @@ -44,8 +44,6 @@ "gruntplugin", "watch" ], - "readme": "# grunt-contrib-watch [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-watch.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-watch)\n\n> Run predefined tasks whenever watched file patterns are added, changed or deleted.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-watch --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-contrib-watch');\n```\n\n\n\n\n## Watch task\n_Run this task with the `grunt watch` command._\n\n\n### Settings\n\nThere are a number of options available. Please review the [minimatch options here](https://github.com/isaacs/minimatch#options). As well as some additional options as follows:\n\n#### files\nType: `String|Array`\n\nThis defines what file patterns this task will watch. Can be a string or an array of files and/or minimatch patterns.\n\n#### tasks\nType: `String|Array`\n\nThis defines which tasks to run when a watched file event occurs.\n\n#### options.nospawn\nType: `Boolean`\nDefault: false\n\nThis instructs the watch task to not spawn task runs in a child process. Setting this option also speeds up the reaction time of the watch (usually 500ms faster for most) and allows subsequent task runs to share the same context (i.e., using a reload task). Not spawning task runs can make the watch more prone to failing so please use as needed.\n\nExample:\n```js\nwatch: {\n scripts: {\n files: ['**/*.js'],\n tasks: ['livereload'],\n options: {\n nospawn: true\n }\n }\n}\n```\n\n#### options.interrupt\nType: `Boolean`\nDefault: false\n\nAs files are modified this watch task will spawn tasks in child processes. The default behavior will only spawn a new child process per target when the previous process has finished. Set the `interrupt` option to true to terminate the previous process and spawn a new one upon later changes.\n\nExample:\n```js\nwatch: {\n scripts: {\n files: '**/*.js',\n tasks: ['jshint'],\n options: {\n interrupt: true\n }\n }\n}\n```\n\n#### options.debounceDelay\nType: `Integer`\nDefault: 500\n\nHow long to wait before emitting events in succession for the same filepath and status. For example if your `Gruntfile.js` file was `changed`, a `changed` event will only fire again after the given milliseconds.\n\nExample:\n```js\nwatch: {\n scripts: {\n files: '**/*.js',\n tasks: ['jshint'],\n options: {\n debounceDelay: 250\n }\n }\n}\n```\n\n#### options.interval\nType: `Integer`\nDefault: 100\n\nThe `interval` is passed to `fs.watchFile`. Since `interval` is only used by `fs.watchFile` and this watcher also uses `fs.watch`; it is recommended to ignore this option. *Default is 100ms*.\n\n###### options.event\nType: `String|Array`\nDefault: `'all'`\n\nSpecify the type watch event that trigger the specified task. This option can be one or many of: `'all'`, `'changed'`, `'added'` and `'deleted'`.\n\nExample:\n```js\nwatch: {\n scripts: {\n files: '**/*.js',\n tasks: ['generateFileManifest'],\n options: {\n event: ['added', 'deleted']\n }\n }\n}\n```\n\n#### options.forever\nType: `Boolean`\nDefault: true\n\nThis is *only a task level option* and cannot be configured per target. By default the watch task will duck punch `grunt.fatal` and `grunt.warn` to try and prevent them from exiting the watch process. If you don't want `grunt.fatal` and `grunt.warn` to be overridden set the `forever` option to `false`.\n\n#### options.livereload\nType: `Boolean|Number|Object`\nDefault: false\n\nSet to `true` or set `livereload: 1337` to a port number to enable live reloading. Default and recommended port is `35729`.\n\nIf enabled a live reload server will be started with the watch task per target. Then after the indicated tasks have ran, the live reload server will be triggered with the modified files.\n\nExample:\n```js\nwatch: {\n css: {\n files: '**/*.sass',\n tasks: ['sass'],\n options: {\n livereload: true,\n },\n },\n},\n```\n\n### Examples\n\n```js\n// Simple config to run jshint any time a file is added, changed or deleted\ngrunt.initConfig({\n watch: {\n files: '**/*',\n tasks: ['jshint']\n }\n});\n```\n\n```js\n// Advanced config. Run specific tasks when specific files are added, changed or deleted.\ngrunt.initConfig({\n watch: {\n gruntfile: {\n files: 'Gruntfile.js',\n tasks: ['jshint:gruntfile'],\n options: {\n nocase: true\n }\n },\n src: {\n files: ['lib/*.js', 'css/**/*.scss', '!lib/dontwatch.js'],\n tasks: ['default']\n },\n test: {\n files: '<%= jshint.test.src %>',\n tasks: ['jshint:test', 'qunit']\n }\n }\n});\n```\n\n#### Using the `watch` event\nThis task will emit a `watch` event when watched files are modified. This is useful if you would like a simple notification when files are edited or if you're using this task in tandem with another task, for example a live reload task. Here is a simple example using the `watch` event:\n\n```js\ngrunt.initConfig({\n watch: {\n scripts: {\n files: ['lib/*.js'],\n tasks: [''],\n },\n },\n});\ngrunt.event.on('watch', function(action, filepath) {\n grunt.log.writeln(filepath + ' has ' + action);\n});\n```\n\n**The `watch` event is not intended for replacing the standard Grunt API for configuring and running tasks. If you're trying to run tasks from within the `watch` event you're more than likely doing it wrong. Please read [configuring tasks](http://gruntjs.com/configuring-tasks).**\n\n##### Compiling Files As Needed\nA very common request is to only compile files as needed. Here is an example that will only lint changed files with the `jshint` task:\n\n```js\ngrunt.initConfig({\n watch: {\n scripts: {\n files: ['lib/*.js'],\n tasks: ['jshint'],\n },\n },\n jshint: {\n all: ['lib/*.js'],\n },\n});\n\n// on watch events configure jshint:all to only run on changed file\ngrunt.event.on('watch', function(action, filepath) {\n grunt.config(['jshint', 'all'], filepath);\n});\n```\n\nIf you save multiple files simultaneously you may opt for a more robust method:\n\n```js\nvar changedFiles = Object.create(null);\nvar onChange = grunt.util._.debounce(function() {\n grunt.config(['jshint', 'all'], Object.keys(changedFiles));\n changedFiles = Object.create(null);\n}, 200);\ngrunt.event.on('watch', function(action, filepath) {\n changedFiles[filepath] = action;\n onChange();\n});\n```\n\n#### Live Reloading\nLive reloading is built into the watch task. Set the option `livereload` to `true` to enable on the default port `35729` or set to a custom port: `livereload: 1337`.\n\nThe simplest way to add live reloading to all your watch targets is by setting `livereload` to `true` at the task level. This will run a single live reload server and trigger the live reload for all your watch targets:\n\n```js\ngrunt.initConfig({\n watch: {\n options: {\n livereload: true,\n },\n css: {\n files: ['public/scss/*.scss'],\n tasks: ['compass'],\n },\n },\n});\n```\n\nYou can also configure live reload for individual watch targets or run multiple live reload servers. Just be sure if you're starting multiple servers they operate on different ports:\n\n```js\ngrunt.initConfig({\n watch: {\n css: {\n files: ['public/scss/*.scss'],\n tasks: ['compass'],\n options: {\n // Start a live reload server on the default port 35729\n livereload: true,\n },\n },\n another: {\n files: ['lib/*.js'],\n tasks: ['anothertask'],\n options: {\n // Start another live reload server on port 1337\n livereload: 1337,\n },\n },\n dont: {\n files: ['other/stuff/*'],\n tasks: ['dostuff'],\n },\n },\n});\n```\n\n##### Enabling Live Reload in Your HTML\nOnce you've started a live reload server you'll be able to access the live reload script. To enable live reload on your page, add a script tag before your closing `` tag pointing to the `livereload.js` script:\n\n```html\n\n```\n\n##### Using Live Reload with the Browser Extension\nInstead of adding a script tag to your page, you can live reload your page by installing a browser extension. Please visit [how do I install and use the browser extensions](http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions-) for help installing an extension for your browser.\n\nOnce installed please use the default live reload port `35729` and the browser extension will automatically reload your page without needing the `\n```\n\n##### Using Live Reload with the Browser Extension\nInstead of adding a script tag to your page, you can live reload your page by installing a browser extension. Please visit [how do I install and use the browser extensions](http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions-) for help installing an extension for your browser.\n\nOnce installed please use the default live reload port `35729` and the browser extension will automatically reload your page without needing the `\n \n\n\n## Documentation\n\n### Collections\n\n* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n
    \n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the forEach function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n---------------------------------------\n\n\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n array to produce the next step in the reduction. The iterator is passed a\n callback which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n }, function(err, result){\n // result is now equal to the last value of memo, which is 6\n });\n\n---------------------------------------\n\n\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value undefined if none passed.\n\n__Example__\n\n async.detect(['file1','file2','file3'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.sortBy(['file1','file2','file3'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n }, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n });\n\n\n---------------------------------------\n\n\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n either true or false depending on the values of the async tests.\n\n__Example__\n\n async.some(['file1','file2','file3'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called after all the iterator\n functions have finished. Result will be either true or false depending on\n the values of the async tests.\n\n__Example__\n\n async.every(['file1','file2','file3'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n });\n\n---------------------------------------\n\n\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.series([\n function(callback){\n // do some stuff ...\n callback(null, 'one');\n },\n function(callback){\n // do some more stuff ...\n callback(null, 'two');\n },\n ],\n // optional callback\n function(err, results){\n // results is now equal to ['one', 'two']\n });\n\n\n // an example using an object instead of an array\n async.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equal to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, 'one');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, 'two');\n }, 100);\n },\n ],\n // optional callback\n function(err, results){\n // the results array will equal ['one','two'] even though\n // the second function had a shorter timeout.\n });\n\n\n // an example using an object instead of an array\n async.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first argument.\n* callback(err) - A callback which is called after the test fails and repeated\n execution of fn has stopped.\n\n__Example__\n\n var count = 0;\n\n async.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n );\n\n\n---------------------------------------\n\n\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n* callback(err, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n async.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\n callback(null, 'three');\n },\n function(arg1, callback){\n // arg1 now equals 'three'\n callback(null, 'done');\n }\n ], function (err, result) {\n // result now equals 'done' \n });\n\n\n---------------------------------------\n\n\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n run in parallel. This property can be changed after a queue is created to\n alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log('all items have been processed');\n }\n\n // add some items to the queue\n\n q.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n });\n q.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n });\n\n // add some items to the queue (batch-wise)\n\n q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n });\n\n\n---------------------------------------\n\n\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n },\n write_file: ['get_data', 'make_folder', function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, filename);\n }],\n email_link: ['write_file', function(callback, results){\n // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\n });\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n ]);\n\n node> var iterator2 = iterator();\n 'one'\n node> var iterator3 = iterator2();\n 'two'\n node> iterator3();\n 'three'\n node> var nextfn = iterator2.next();\n node> nextfn();\n 'three'\n\n\n---------------------------------------\n\n\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n // using apply\n\n async.parallel([\n async.apply(fs.writeFile, 'testfile1', 'test1'),\n async.apply(fs.writeFile, 'testfile2', 'test2'),\n ]);\n\n\n // the same process without using apply\n\n async.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n },\n ]);\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, 'one');\n node> fn('two', 'three');\n one\n two\n three\n\n---------------------------------------\n\n\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n var call_order = [];\n async.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two]\n });\n call_order.push('one')\n\n\n## Utils\n\n\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n results, it has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn('some name', function () {\n // callback\n });\n\n\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n };\n\n node> async.log(hello, 'world');\n 'hello world'\n\n\n---------------------------------------\n\n\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> async.dir(hello, 'world');\n {hello: 'world'}\n\n\n---------------------------------------\n\n\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n", "readmeFilename": "README.md", "_id": "async@0.1.22", - "_from": "async@~0.1.22" + "_from": "async@~0.1.22", + "scripts": {} } diff --git a/node/node_modules/grunt/node_modules/colors/package.json b/node/node_modules/grunt/node_modules/colors/package.json index 18082243d..99cfc2e0c 100644 --- a/node/node_modules/grunt/node_modules/colors/package.json +++ b/node/node_modules/grunt/node_modules/colors/package.json @@ -16,5 +16,6 @@ "readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n", "readmeFilename": "ReadMe.md", "_id": "colors@0.6.0-1", - "_from": "colors@~0.6.0-1" + "_from": "colors@~0.6.0-1", + "scripts": {} } diff --git a/node/node_modules/grunt/node_modules/dateformat/package.json b/node/node_modules/grunt/node_modules/dateformat/package.json index 91a795a0e..cd4b8961d 100644 --- a/node/node_modules/grunt/node_modules/dateformat/package.json +++ b/node/node_modules/grunt/node_modules/dateformat/package.json @@ -16,9 +16,5 @@ "readme": "# node-dateformat\n\nA node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function.\n\n## Modifications\n\n* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers.\n* Added a `module.exports = dateFormat;` statement at the bottom\n\n## Usage\n\nAs taken from Steven's post, modified to match the Modifications listed above:\n\n var dateFormat = require('dateformat');\n var now = new Date();\n\n // Basic usage\n dateFormat(now, \"dddd, mmmm dS, yyyy, h:MM:ss TT\");\n // Saturday, June 9th, 2007, 5:46:21 PM\n\n // You can use one of several named masks\n dateFormat(now, \"isoDateTime\");\n // 2007-06-09T17:46:21\n\n // ...Or add your own\n dateFormat.masks.hammerTime = 'HH:MM! \"Can\\'t touch this!\"';\n dateFormat(now, \"hammerTime\");\n // 17:46! Can't touch this!\n\n // When using the standalone dateFormat function,\n // you can also provide the date as a string\n dateFormat(\"Jun 9 2007\", \"fullDate\");\n // Saturday, June 9, 2007\n\n // Note that if you don't include the mask argument,\n // dateFormat.masks.default is used\n dateFormat(now);\n // Sat Jun 09 2007 17:46:21\n\n // And if you don't include the date argument,\n // the current date and time is used\n dateFormat();\n // Sat Jun 09 2007 17:46:22\n\n // You can also skip the date argument (as long as your mask doesn't\n // contain any numbers), in which case the current date/time is used\n dateFormat(\"longTime\");\n // 5:46:22 PM EST\n\n // And finally, you can convert local time to UTC time. Simply pass in\n // true as an additional argument (no argument skipping allowed in this case):\n dateFormat(now, \"longTime\", true);\n // 10:46:21 PM UTC\n\n // ...Or add the prefix \"UTC:\" to your mask.\n dateFormat(now, \"UTC:h:MM:ss TT Z\");\n // 10:46:21 PM UTC\n\n // You can also get the ISO 8601 week of the year:\n dateFormat(now, \"W\");\n // 42\n## License\n\n(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license.\n\n[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format\n[stevenlevithan]: http://stevenlevithan.com/\n", "readmeFilename": "Readme.md", "_id": "dateformat@1.0.2-1.2.3", - "dist": { - "shasum": "692290ea53102d50a82968882eab448a048a7f23" - }, - "_from": "dateformat@1.0.2-1.2.3", - "_resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + "_from": "dateformat@1.0.2-1.2.3" } diff --git a/node/node_modules/underscore/package.json b/node/node_modules/underscore/package.json index 014ab265f..56024e014 100644 --- a/node/node_modules/underscore/package.json +++ b/node/node_modules/underscore/package.json @@ -27,9 +27,6 @@ }, "readme": " __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n", "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/documentcloud/underscore/issues" - }, "_id": "underscore@1.4.4", "_from": "underscore@~1.4.3" } diff --git a/node/package.json b/node/package.json index 01edb0f81..721f24630 100755 --- a/node/package.json +++ b/node/package.json @@ -45,13 +45,12 @@ "underscore": "~1.4.3", "docpad-plugin-html2coffee": "~2.1.3", "docpad-plugin-jade": "~2.3.1", - "docpad-plugin-livereload": "~2.3.1", "docpad-plugin-ghpages": "~2.0.2", "docpad-plugin-paged": "~2.1.4", - "docpad-plugin-handlebars": "~2.2.1" + "docpad-plugin-handlebars": "~2.2.1", + "docpad-plugin-livereload": "~2.4.0" }, "devDependencies": { - "docpad-plugin-livereload": "2.x", "grunt-contrib-watch": "~0.4.0", "grunt-css": "~0.5.4", "grunt-bower-task": "~0.2.2", diff --git a/node/src/layouts/default.html.eco b/node/src/layouts/default.html.eco index 9f360e9d3..59faa2ddc 100755 --- a/node/src/layouts/default.html.eco +++ b/node/src/layouts/default.html.eco @@ -42,6 +42,8 @@ + <%- @getBlock('scripts').toHTML() %> +