Changeset 487 for Dev/trunk/src/node_modules
- Timestamp:
- 03/05/14 22:44:48 (11 years ago)
- Location:
- Dev/trunk/src/node_modules
- Files:
-
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/trunk/src/node_modules/express/node_modules/buffer-crc32/package.json
r484 r487 20 20 "main": "index.js", 21 21 "scripts": { 22 "test": " ./node_modules/.bin/tap tests/*.test.js"22 "test": "tap tests/*.test.js" 23 23 }, 24 24 "dependencies": {}, … … 36 36 }, 37 37 "_id": "buffer-crc32@0.2.1", 38 "_from": "buffer-crc32@0.2.1" 38 "dist": { 39 "shasum": "d4831cc88b961550a88d829efbc0b139caf22d8c" 40 }, 41 "_from": "buffer-crc32@0.2.1", 42 "_resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz" 39 43 } -
Dev/trunk/src/node_modules/express/node_modules/commander/package.json
r484 r487 34 34 "url": "https://github.com/visionmedia/commander.js/issues" 35 35 }, 36 "homepage": "https://github.com/visionmedia/commander.js", 36 37 "_id": "commander@0.6.1", 37 "_from": "commander@0.6.1" 38 "dist": { 39 "shasum": "c725ed5e9b2bf532b3fe3cba4f81b552cecf0550" 40 }, 41 "_from": "commander@0.6.1", 42 "_resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" 38 43 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/bytes/package.json
r484 r487 17 17 "readmeFilename": "Readme.md", 18 18 "_id": "bytes@0.2.0", 19 "_from": "bytes@0.2.0" 19 "dist": { 20 "shasum": "b4c569295d86a498a119945f1d8a26f76e4b5462" 21 }, 22 "_from": "bytes@0.2.0", 23 "_resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.0.tgz" 20 24 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/cookie/package.json
r484 r487 32 32 "url": "https://github.com/shtylman/node-cookie/issues" 33 33 }, 34 "homepage": "https://github.com/shtylman/node-cookie", 34 35 "_id": "cookie@0.0.5", 35 "_from": "cookie@0.0.5" 36 "dist": { 37 "shasum": "2597397e06ec3eaf53c88851570e97949c1e4dcd" 38 }, 39 "_from": "cookie@0.0.5", 40 "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz" 36 41 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/formidable/package.json
r484 r487 35 35 "dependencies": {}, 36 36 "_id": "formidable@1.0.14", 37 "_from": "formidable@1.0.14" 37 "dist": { 38 "shasum": "08be7c89a9ebffbe5b2fbd4df0ad3f5cd19c5147" 39 }, 40 "_from": "formidable@1.0.14", 41 "_resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz" 38 42 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/pause/package.json
r484 r487 17 17 "readmeFilename": "Readme.md", 18 18 "_id": "pause@0.0.1", 19 "_from": "pause@0.0.1" 19 "dist": { 20 "shasum": "dc3b2287742f3f6249f2d228e74cff5a3f9fe8da" 21 }, 22 "_from": "pause@0.0.1", 23 "_resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" 20 24 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/qs/package.json
r484 r487 33 33 "url": "https://github.com/visionmedia/node-querystring/issues" 34 34 }, 35 "homepage": "https://github.com/visionmedia/node-querystring", 35 36 "_id": "qs@0.6.5", 36 "_from": "qs@0.6.5" 37 "dist": { 38 "shasum": "cdaafb6ed1dbcf48405f41ca92bf95361ad923dc" 39 }, 40 "_from": "qs@0.6.5", 41 "_resolved": "https://registry.npmjs.org/qs/-/qs-0.6.5.tgz" 37 42 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/node_modules/mime/README.md
r484 r487 12 12 13 13 ### mime.lookup(path) 14 Get 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.14 Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. 15 15 16 16 var mime = require('mime'); … … 20 20 mime.lookup('.TXT'); // => 'text/plain' 21 21 mime.lookup('htm'); // => 'text/html' 22 23 ### mime.default_type 24 Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) 22 25 23 26 ### mime.extension(type) -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/node_modules/mime/mime.js
r484 r487 70 70 */ 71 71 Mime.prototype.lookup = function(path, fallback) { 72 var ext = path.replace(/.*[\.\/ ]/, '').toLowerCase();72 var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); 73 73 74 74 return this.types[ext] || fallback || this.default_type; … … 79 79 */ 80 80 Mime.prototype.extension = function(mimeType) { 81 return this.extensions[mimeType]; 81 var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); 82 return this.extensions[type]; 82 83 }; 83 84 -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/node_modules/mime/package.json
r484 r487 25 25 "type": "git" 26 26 }, 27 "version": "1.2. 9",28 "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",27 "version": "1.2.11", 28 "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, if no mime type is found `application/octet-stream` is returned. 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.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)\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", 29 29 "readmeFilename": "README.md", 30 30 "bugs": { 31 31 "url": "https://github.com/broofa/node-mime/issues" 32 32 }, 33 "_id": "mime@1.2.9", 33 "homepage": "https://github.com/broofa/node-mime", 34 "_id": "mime@1.2.11", 34 35 "_from": "mime@~1.2.9" 35 36 } -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/node_modules/mime/test.js
r484 r487 5 5 var mime = require('./mime'); 6 6 var assert = require('assert'); 7 var path = require('path'); 7 8 8 9 function eq(a, b) { … … 18 19 // 19 20 20 eq('text/plain', mime.lookup('text.txt')); 21 eq('text/plain', mime.lookup(' .text.txt'));22 eq('text/plain', mime.lookup(' .txt'));23 eq('text/plain', mime.lookup(' txt'));24 eq(' application/octet-stream', mime.lookup('text.nope'));25 eq(' fallback', mime.lookup('text.fallback', 'fallback'));26 eq(' application/octet-stream', mime.lookup('constructor'));27 eq('text/plain', mime.lookup(' TEXT.TXT'));28 eq(' text/event-stream', mime.lookup('text/event-stream'));29 eq(' application/x-web-app-manifest+json', mime.lookup('text.webapp'));21 eq('text/plain', mime.lookup('text.txt')); // normal file 22 eq('text/plain', mime.lookup('TEXT.TXT')); // uppercase 23 eq('text/plain', mime.lookup('dir/text.txt')); // dir + file 24 eq('text/plain', mime.lookup('.text.txt')); // hidden file 25 eq('text/plain', mime.lookup('.txt')); // nameless 26 eq('text/plain', mime.lookup('txt')); // extension-only 27 eq('text/plain', mime.lookup('/txt')); // extension-less () 28 eq('text/plain', mime.lookup('\\txt')); // Windows, extension-less 29 eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized 30 eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default 30 31 31 32 // … … 36 37 eq('html', mime.extension(mime.types.htm)); 37 38 eq('bin', mime.extension('application/octet-stream')); 38 eq(undefined, mime.extension('constructor')); 39 eq('bin', mime.extension('application/octet-stream ')); 40 eq('html', mime.extension(' text/html; charset=UTF-8')); 41 eq('html', mime.extension('text/html; charset=UTF-8 ')); 42 eq('html', mime.extension('text/html; charset=UTF-8')); 43 eq('html', mime.extension('text/html ; charset=UTF-8')); 44 eq('html', mime.extension('text/html;charset=UTF-8')); 45 eq('html', mime.extension('text/Html;charset=UTF-8')); 46 eq(undefined, mime.extension('unrecognized')); 39 47 40 48 // 41 // Test node types49 // Test node.types lookups 42 50 // 43 51 52 eq('application/font-woff', mime.lookup('file.woff')); 44 53 eq('application/octet-stream', mime.lookup('file.buffer')); 45 54 eq('audio/mp4', mime.lookup('file.m4a')); 55 eq('font/opentype', mime.lookup('file.otf')); 46 56 47 57 // … … 53 63 eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); 54 64 65 // 66 // Test for overlaps between mime.types and node.types 67 // 68 69 var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime(); 70 apacheTypes.load(path.join(__dirname, 'types/mime.types')); 71 nodeTypes.load(path.join(__dirname, 'types/node.types')); 72 73 var keys = [].concat(Object.keys(apacheTypes.types)) 74 .concat(Object.keys(nodeTypes.types)); 75 keys.sort(); 76 for (var i = 1; i < keys.length; i++) { 77 if (keys[i] == keys[i-1]) { 78 console.warn('Warning: ' + 79 'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] + 80 ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]); 81 } 82 } 83 55 84 console.log('\nOK'); -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/node_modules/mime/types/mime.types
r484 r487 1055 1055 application/x-font-ttf ttf ttc 1056 1056 application/x-font-type1 pfa pfb pfm afm 1057 application/ x-font-woff woff1057 application/font-woff woff 1058 1058 # application/x-font-vfont 1059 1059 application/x-freearc arc -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/node_modules/mime/types/node.types
r484 r487 16 16 text/x-component htc 17 17 18 # What: HTML5 application cache manifes t18 # What: HTML5 application cache manifes ('.manifest' extension) 19 19 # Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps 20 20 # per https://developer.mozilla.org/en/offline_resources_in_firefox 21 21 # Added by: louisremi 22 text/cache-manifest appcachemanifest22 text/cache-manifest manifest 23 23 24 24 # What: node binary buffer format … … 59 59 # Added by: avoidwork 60 60 text/x-markdown markdown md mkd 61 62 # What: ini files 63 # Why: because they're just text files 64 # Added by: Matthew Kastor 65 text/plain ini 66 67 # What: DASH Adaptive Streaming manifest 68 # Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video 69 # Added by: eelcocramer 70 application/dash+xml mdp 71 72 # What: OpenType font files - http://www.microsoft.com/typography/otspec/ 73 # Why: Browsers usually ignore the font MIME types and sniff the content, 74 # but Chrome, shows a warning if OpenType fonts aren't served with 75 # the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png. 76 # Added by: alrra 77 font/opentype otf -
Dev/trunk/src/node_modules/express/node_modules/connect/node_modules/send/package.json
r484 r487 37 37 "url": "https://github.com/visionmedia/send/issues" 38 38 }, 39 "homepage": "https://github.com/visionmedia/send", 39 40 "_id": "send@0.1.1", 40 "_from": "send@0.1.1" 41 "dist": { 42 "shasum": "40ded726322604c29d7229683f9207bd6d76e217" 43 }, 44 "_from": "send@0.1.1", 45 "_resolved": "https://registry.npmjs.org/send/-/send-0.1.1.tgz" 41 46 } -
Dev/trunk/src/node_modules/express/node_modules/connect/package.json
r484 r487 49 49 "url": "https://github.com/senchalabs/connect/issues" 50 50 }, 51 "homepage": "https://github.com/senchalabs/connect", 51 52 "_id": "connect@2.7.11", 52 "_from": "connect@2.7.11" 53 "dist": { 54 "shasum": "839e3928b727827db859a4b3a1d04ea9a06b6ab1" 55 }, 56 "_from": "connect@2.7.11", 57 "_resolved": "https://registry.npmjs.org/connect/-/connect-2.7.11.tgz" 53 58 } -
Dev/trunk/src/node_modules/express/node_modules/cookie-signature/package.json
r484 r487 21 21 "readmeFilename": "Readme.md", 22 22 "_id": "cookie-signature@1.0.1", 23 "_from": "cookie-signature@1.0.1" 23 "dist": { 24 "shasum": "404efcace10fb30f3451483045d743463ae8602c" 25 }, 26 "_from": "cookie-signature@1.0.1", 27 "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz" 24 28 } -
Dev/trunk/src/node_modules/express/node_modules/cookie/package.json
r484 r487 32 32 "url": "https://github.com/shtylman/node-cookie/issues" 33 33 }, 34 "homepage": "https://github.com/shtylman/node-cookie", 34 35 "_id": "cookie@0.1.0", 35 "_from": "cookie@0.1.0" 36 "dist": { 37 "shasum": "b56ac6108fcab9073208d405c4fa8aaa35f00810" 38 }, 39 "_from": "cookie@0.1.0", 40 "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" 36 41 } -
Dev/trunk/src/node_modules/express/node_modules/debug/Readme.md
r484 r487 1 2 1 # debug 3 2 … … 59 58  60 59 61 When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: 60 When stderr is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: 61 _(NOTE: Debug now uses stderr instead of stdout, so the correct shell command for this example is actually `DEBUG=* node example/worker 2> out &`)_ 62 62 63 63  64 64 65 65 ## Conventions 66 66 -
Dev/trunk/src/node_modules/express/node_modules/debug/debug.js
r484 r487 18 18 19 19 return function(fmt){ 20 fmt = coerce(fmt); 21 20 22 var curr = new Date; 21 23 var ms = curr - (debug[name] || curr); … … 120 122 }; 121 123 124 /** 125 * Coerce `val`. 126 */ 127 128 function coerce(val) { 129 if (val instanceof Error) return val.stack || val.message; 130 return val; 131 } 132 122 133 // persist 123 134 124 if (window.localStorage) debug.enable(localStorage.debug); 135 try { 136 if (window.localStorage) debug.enable(localStorage.debug); 137 } catch(e){} -
Dev/trunk/src/node_modules/express/node_modules/debug/lib/debug.js
r484 r487 109 109 110 110 function colored(fmt) { 111 fmt = coerce(fmt); 112 111 113 var curr = new Date; 112 114 var ms = curr - (prev[name] || curr); … … 122 124 123 125 function plain(fmt) { 126 fmt = coerce(fmt); 127 124 128 fmt = new Date().toUTCString() 125 129 + ' ' + name + ' ' + fmt; … … 133 137 : plain; 134 138 } 139 140 /** 141 * Coerce `val`. 142 */ 143 144 function coerce(val) { 145 if (val instanceof Error) return val.stack || val.message; 146 return val; 147 } -
Dev/trunk/src/node_modules/express/node_modules/debug/package.json
r484 r487 1 1 { 2 2 "name": "debug", 3 "version": "0.7. 2",3 "version": "0.7.4", 4 4 "repository": { 5 5 "type": "git", … … 21 21 }, 22 22 "main": "lib/debug.js", 23 "browser ify": "debug.js",23 "browser": "./debug.js", 24 24 "engines": { 25 25 "node": "*" 26 26 }, 27 "files": [ 28 "lib/debug.js", 29 "debug.js", 30 "index.js" 31 ], 27 32 "component": { 28 33 "scripts": { … … 31 36 } 32 37 }, 33 "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 \n\n \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 \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 \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.",38 "readme": "# 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 \n\n \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 \n\n When stderr is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n _(NOTE: Debug now uses stderr instead of stdout, so the correct shell command for this example is actually `DEBUG=* node example/worker 2> out &`)_\n \n \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.\n", 34 39 "readmeFilename": "Readme.md", 35 40 "bugs": { 36 41 "url": "https://github.com/visionmedia/debug/issues" 37 42 }, 38 " _id": "debug@0.7.2",39 "_ from": "debug@*",40 " scripts": {}43 "homepage": "https://github.com/visionmedia/debug", 44 "_id": "debug@0.7.4", 45 "_from": "debug@*" 41 46 } -
Dev/trunk/src/node_modules/express/node_modules/fresh/package.json
r484 r487 17 17 "readmeFilename": "Readme.md", 18 18 "_id": "fresh@0.1.0", 19 "_from": "fresh@0.1.0" 19 "dist": { 20 "shasum": "97ce63fda273b033f866d3a29b9920d034aa2074" 21 }, 22 "_from": "fresh@0.1.0", 23 "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz" 20 24 } -
Dev/trunk/src/node_modules/express/node_modules/methods/package.json
r484 r487 17 17 "readme": "ERROR: No README data found!", 18 18 "_id": "methods@0.0.1", 19 "_from": "methods@0.0.1" 19 "dist": { 20 "shasum": "c0a484b3e1f28764c5cfd234e1a156d47092ecca" 21 }, 22 "_from": "methods@0.0.1", 23 "_resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz" 20 24 } -
Dev/trunk/src/node_modules/express/node_modules/mkdirp/package.json
r484 r487 32 32 "url": "https://github.com/substack/node-mkdirp/issues" 33 33 }, 34 "homepage": "https://github.com/substack/node-mkdirp", 34 35 "_id": "mkdirp@0.3.4", 35 "_from": "mkdirp@0.3.4" 36 "dist": { 37 "shasum": "8642eb45b73f5cd19824e94b572871013af8a305" 38 }, 39 "_from": "mkdirp@0.3.4", 40 "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.4.tgz" 36 41 } -
Dev/trunk/src/node_modules/express/node_modules/range-parser/package.json
r484 r487 17 17 "readmeFilename": "Readme.md", 18 18 "_id": "range-parser@0.0.4", 19 "_from": "range-parser@0.0.4" 19 "dist": { 20 "shasum": "a91c03c737187765f0dcdbe32fa824e52b47a9a6" 21 }, 22 "_from": "range-parser@0.0.4", 23 "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz" 20 24 } -
Dev/trunk/src/node_modules/express/node_modules/send/node_modules/mime/package.json
r484 r487 31 31 "url": "https://github.com/broofa/node-mime/issues" 32 32 }, 33 "homepage": "https://github.com/broofa/node-mime", 33 34 "_id": "mime@1.2.6", 34 "_from": "mime@1.2.6" 35 "dist": { 36 "shasum": "193c6817fabeefd6a5f29acabd0b6cebc2c0910f" 37 }, 38 "_from": "mime@1.2.6", 39 "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.6.tgz" 35 40 } -
Dev/trunk/src/node_modules/express/node_modules/send/package.json
r484 r487 31 31 "readmeFilename": "Readme.md", 32 32 "_id": "send@0.1.0", 33 "_from": "send@0.1.0" 33 "dist": { 34 "shasum": "4ea2b3aca167b22699fdbe4eb5bce35fc57ca7d5" 35 }, 36 "_from": "send@0.1.0", 37 "_resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz" 34 38 } -
Dev/trunk/src/node_modules/express/package.json
r484 r487 80 80 "url": "https://github.com/visionmedia/express/issues" 81 81 }, 82 "homepage": "https://github.com/visionmedia/express", 82 83 "_id": "express@3.2.6", 83 "_from": "express@~3.2.3" 84 "dist": { 85 "shasum": "4e16430ceaf29ac1f185c6996d50ca6394ec6357" 86 }, 87 "_from": "express@3.2.6", 88 "_resolved": "https://registry.npmjs.org/express/-/express-3.2.6.tgz" 84 89 } -
Dev/trunk/src/node_modules/tv4/README.md
r484 r487 85 85 ## Cyclical JavaScript objects 86 86 87 While they don't occur in proper JSON, JavaScript does support self-referencing objects. Any of the above calls support an optional final argument, checkRecursive. If true, tv4 will handle self-referencing objects properly - this slows down validation slightly, but that's better than a hanging script.87 While they don't occur in proper JSON, JavaScript does support self-referencing objects. Any of the above calls support an optional third argument: `checkRecursive`. If true, tv4 will handle self-referencing objects properly - this slows down validation slightly, but that's better than a hanging script. 88 88 89 89 Consider this data, notice how both `a` and `b` refer to each other: … … 99 99 ``` 100 100 101 If the final checkRecursiveargument were missing, this would throw a "too much recursion" error.102 103 To enable supp rot for thispass `true` as additional argument to any of the regular validation methods:101 If the `checkRecursive` argument were missing, this would throw a "too much recursion" error. 102 103 To enable support for this, pass `true` as additional argument to any of the regular validation methods: 104 104 105 105 ```javascript 106 106 tv4.validate(a, aSchema, true); 107 tv4.validate(a, schema, asynchronousFunction, true);108 109 107 tv4.validateResult(data, aSchema, true); 110 108 tv4.validateMultiple(data, aSchema, true); 111 109 ``` 112 110 111 ## The `banUnknownProperties` flag 112 113 Sometimes, it is desirable to flag all unknown properties as an error. This is especially useful during development, to catch typos and the like, even when extra custom-defined properties are allowed. 114 115 As such, tv4 implements ["ban unknown properties" mode](https://github.com/json-schema/json-schema/wiki/ban-unknown-properties-mode-\(v5-proposal\)), enabled by a fourth-argument flag: 116 117 ```javascript 118 tv4.validate(data, schema, checkRecursive, true); 119 tv4.validateResult(data, schema, checkRecursive, true); 120 tv4.validateMultiple(data, schema, checkRecursive, true); 121 ``` 122 113 123 ## API 114 124 … … 229 239 ##### addFormat(format, validationFunction) 230 240 231 Add a custom format validator. 241 Add a custom format validator. (There are no built-in format validators.) 232 242 233 243 * `format` is a string, corresponding to the `"format"` value in schemas. -
Dev/trunk/src/node_modules/tv4/package.json
r484 r487 1 1 { 2 2 "name": "tv4", 3 "version": "1.0.1 1",3 "version": "1.0.16", 4 4 "author": { 5 5 "name": "Geraint Luff" … … 51 51 "grunt-markdown": "~0.3.0", 52 52 "grunt-component": "~0.1.4", 53 "grunt-push-release": "~0.1.1" 53 "grunt-push-release": "~0.1.1", 54 "grunt-regex-replace": "~0.2.5" 54 55 }, 55 56 "engines": { … … 57 58 }, 58 59 "scripts": { 59 "test": "grunt test" 60 "test": "grunt test", 61 "prepublish": "grunt prepublish" 60 62 }, 61 "readme": "# Tiny Validator (for v4 JSON Schema)\n\n[](http://travis-ci.org/geraintluff/tv4) [](https://gemnasium.com/geraintluff/tv4) [](http://badge.fury.io/js/tv4)\n\nUse [json-schema](http://json-schema.org/) [draft v4](http://json-schema.org/latest/json-schema-core.html) to validate simple values and complex objects using a rich [validation vocabulary](http://json-schema.org/latest/json-schema-validation.html) ([examples](http://json-schema.org/examples.html)).\n\nThere is support for `$ref` with JSON Pointer fragment paths (```other-schema.json#/properties/myKey```).\n\n## Usage 1: Simple validation\n\n```javascript\nvar valid = tv4.validate(data, schema);\n```\n\nIf validation returns ```false```, then an explanation of why validation failed can be found in ```tv4.error```.\n\nThe error object will look something like:\n```json\n{\n \"code\": 0,\n \"message\": \"Invalid type: string\",\n \"dataPath\": \"/intKey\",\n \"schemaKey\": \"/properties/intKey/type\"\n}\n```\n\nThe `\"code\"` property will refer to one of the values in `tv4.errorCodes` - in this case, `tv4.errorCodes.INVALID_TYPE`.\n\nTo enable external schema to be referenced, you use:\n```javascript\ntv4.addSchema(url, schema);\n```\n\nIf schemas are referenced (```$ref```) but not known, then validation will return ```true``` and the missing schema(s) will be listed in ```tv4.missing```. For more info see the API documentation below.\n\n## Usage 2: Multi-threaded validation\n\nStoring the error and missing schemas does not work well in multi-threaded environments, so there is an alternative syntax:\n\n```javascript\nvar result = tv4.validateResult(data, schema);\n```\n\nThe result will look something like:\n```json\n{\n \"valid\": false,\n \"error\": {...},\n \"missing\": [...]\n}\n```\n\n## Usage 3: Multiple errors\n\nNormally, `tv4` stops when it encounters the first validation error. However, you can collect an array of validation errors using:\n\n```javascript\nvar result = tv4.validateMultiple(data, schema);\n```\n\nThe result will look something like:\n```json\n{\n \"valid\": false,\n \"errors\": [\n {...},\n ...\n ],\n \"missing\": [...]\n}\n```\n\n## Asynchronous validation\n\nSupport for asynchronous validation (where missing schemas are fetched) can be added by including an extra JavaScript file. Currently, the only version requires jQuery (`tv4.async-jquery.js`), but the code is very short and should be fairly easy to modify for other libraries (such as MooTools).\n\nUsage:\n\n```javascript\ntv4.validate(data, schema, function (isValid, validationError) { ... });\n```\n\n`validationFailure` is simply taken from `tv4.error`.\n\n## Cyclical JavaScript objects\n\nWhile they don't occur in proper JSON, JavaScript does support self-referencing objects. Any of the above calls support an optional final argument, checkRecursive. If true, tv4 will handle self-referencing objects properly - this slows down validation slightly, but that's better than a hanging script.\n\nConsider this data, notice how both `a` and `b` refer to each other:\n\n```javascript\nvar a = {};\nvar b = { a: a };\na.b = b;\nvar aSchema = { properties: { b: { $ref: 'bSchema' }}};\nvar bSchema = { properties: { a: { $ref: 'aSchema' }}};\ntv4.addSchema('aSchema', aSchema);\ntv4.addSchema('bSchema', bSchema);\n```\n\nIf the final checkRecursive argument were missing, this would throw a \"too much recursion\" error. \n\nTo enable supprot for this pass `true` as additional argument to any of the regular validation methods: \n\n```javascript\ntv4.validate(a, aSchema, true);\ntv4.validate(a, schema, asynchronousFunction, true);\n\ntv4.validateResult(data, aSchema, true); \ntv4.validateMultiple(data, aSchema, true);\n```\n\n## API\n\nThere are additional api commands available for more complex use-cases:\n\n##### addSchema(uri, schema)\nPre-register a schema for reference by other schema and synchronous validation.\n\n````js\ntv4.addSchema('http://example.com/schema', { ... });\n````\n\n* `uri` the uri to identify this schema.\n* `schema` the schema object.\n\nSchemas that have their `id` property set can be added directly.\n\n````js\ntv4.addSchema({ ... });\n````\n\n##### getSchema(uri)\n\nReturn a schema from the cache.\n\n* `uri` the uri of the schema (may contain a `#` fragment)\n\n````js\nvar schema = tv4.getSchema('http://example.com/schema');\n````\n\n##### getSchemaMap()\n\nReturn a shallow copy of the schema cache, mapping schema document URIs to schema objects.\n\n````\nvar map = tv4.getSchemaMap();\n\nvar schema = map[uri];\n````\n\n##### getSchemaUris(filter)\n\nReturn an Array with known schema document URIs.\n\n* `filter` optional RegExp to filter URIs\n\n````\nvar arr = tv4.getSchemaUris();\n\n// optional filter using a RegExp\nvar arr = tv4.getSchemaUris(/^https?://example.com/);\n````\n\n##### getMissingUris(filter)\n\nReturn an Array with schema document URIs that are used as `$ref` in known schemas but which currently have no associated schema data.\n\nUse this in combination with `tv4.addSchema(uri, schema)` to preload the cache for complete synchronous validation with.\n\n* `filter` optional RegExp to filter URIs\n\n````\nvar arr = tv4.getMissingUris();\n\n// optional filter using a RegExp\nvar arr = tv4.getMissingUris(/^https?://example.com/);\n````\n\n##### dropSchemas()\n\nDrop all known schema document URIs from the cache.\n\n````\ntv4.dropSchemas();\n````\n\n##### freshApi()\n\nReturn a new tv4 instance with no shared state.\n\n````\nvar otherTV4 = tv4.freshApi();\n````\n\n##### reset()\n\nManually reset validation status from the simple `tv4.validate(data, schema)`. Although tv4 will self reset on each validation there are some implementation scenarios where this is useful.\n\n````\ntv4.reset();\n````\n\n##### language(code)\n\nSelect the language map used for reporting.\n\n* `code` is a language code, like `'en'` or `'en-gb'`\n\n````\ntv4.language('en-gb');\n````\n\n##### addLanguage(code, map)\n\nAdd a new language map for selection by `tv4.language(code)`\n\n* `code` is new language code\n* `map` is an object mapping error IDs or constant names (e.g. `103` or `\"NUMBER_MAXIMUM\"`) to language strings.\n\n````\ntv4.addLanguage('fr', { ... });\n\n// select for use\ntv4.language('fr')\n````\n\n##### addFormat(format, validationFunction)\n\nAdd a custom format validator.\n\n* `format` is a string, corresponding to the `\"format\"` value in schemas.\n* `validationFunction` is a function that either returns:\n * `null` (meaning no error)\n * an error string (explaining the reason for failure)\n\n````\ntv4.addFormat('decimal-digits', function (data, schema) {\n\tif (typeof data === 'string' && !/^[0-9]+$/.test(data)) {\n\t\treturn null;\n\t}\n\treturn \"must be string of decimal digits\";\n});\n````\n\nAlternatively, multiple formats can be added at the same time using an object:\n````\ntv4.addFormat({\n\t'my-format': function () {...},\n\t'other-format': function () {...}\n});\n````\n\n## Demos\n\n### Basic usage\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo1\">\n<pre class=\"code\" id=\"demo1\">\nvar schema = {\n\t\"items\": {\n\t\t\"type\": \"boolean\"\n\t}\n};\nvar data1 = [true, false];\nvar data2 = [true, 123];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\nalert(\"data 2 error: \" + JSON.stringify(tv4.error, null, 4));\n</pre>\n</div>\n\n### Use of <code>$ref</code>\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo2\">\n<pre class=\"code\" id=\"demo2\">\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"#\"}\n};\nvar data1 = [[], [[]]];\nvar data2 = [[], [true, []]];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\n</pre>\n</div>\n\n### Missing schema\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo3\">\n<pre class=\"code\" id=\"demo3\">\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"http://example.com/schema\" }\n};\nvar data = [1, 2, 3];\n\nalert(\"Valid: \" + tv4.validate(data, schema)); // true\nalert(\"Missing schemas: \" + JSON.stringify(tv4.missing));\n</pre>\n</div>\n\n### Referencing remote schema\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo4\">\n<pre class=\"code\" id=\"demo4\">\ntv4.addSchema(\"http://example.com/schema\", {\n\t\"definitions\": {\n\t\t\"arrayItem\": {\"type\": \"boolean\"}\n\t}\n});\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"http://example.com/schema#/definitions/arrayItem\" }\n};\nvar data1 = [true, false, true];\nvar data2 = [1, 2, 3];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\n</pre>\n</div>\n\n## Supported platforms\n\n* Node.js\n* All modern browsers\n* IE >= 7\n\n## Installation\n\nYou can manually download [`tv4.js`](https://raw.github.com/geraintluff/tv4/master/tv4.js) or the minified [`tv4.min.js`](https://raw.github.com/geraintluff/tv4/master/tv4.min.js) and include it in your html to create the global `tv4` variable.\n\nAlternately use it as a CommonJS module:\n\n````js\nvar tv4 = require('tv4');\n````\n\n#### npm\n\n````\n$ npm install tv4\n````\n\n#### bower\n\n````\n$ bower install tv4\n````\n\n#### component.io\n\n````\n$ component install geraintluff/tv4\n````\n\n## Build and test\n\nYou can rebuild and run the node and browser tests using node.js and [grunt](http://http://gruntjs.com/):\n\nMake sure you have the global grunt cli command:\n````\n$ npm install grunt-cli -g\n````\n\nClone the git repos, open a shell in the root folder and install the development dependencies:\n\n````\n$ npm install\n````\n\nRebuild and run the tests:\n````\n$ grunt\n````\n\nIt will run a build and display one Spec-style report for the node.js and two Dot-style reports for both the plain and minified browser tests (via phantomJS). You can also use your own browser to manually run the suites by opening [`test/index.html`](http://geraintluff.github.io/tv4/test/index.html) and [`test/index-min.html`](http://geraintluff.github.io/tv4/test/index-min.html).\n\n## Contributing\n\nPull-requests for fixes and expansions are welcome. Edit the partial files in `/source` and add your tests in a suitable suite or folder under `/test/tests` and run `grunt` to rebuild and run the test suite. Try to maintain an idiomatic coding style and add tests for any new features. It is recommend to discuss big changes in an Issue.\n\n## Packages using tv4\n\n* [chai-json-schema](http://chaijs.com/plugins/chai-json-schema) is a [Chai Assertion Library](http://chaijs.com) plugin to assert values against json-schema.\n* [grunt-tv4](http://www.github.com/Bartvds/grunt-tv4) is a plugin for [Grunt](http://http://gruntjs.com/) that uses tv4 to bulk validate json files.\n\n## License\n\nThe code is available as \"public domain\", meaning that it is completely free to use, without any restrictions at all. Read the full license [here](http://geraintluff.github.com/tv4/LICENSE.txt).\n\nIt's also available under an [MIT license](http://jsonary.com/LICENSE.txt).\n",63 "readme": "# Tiny Validator (for v4 JSON Schema)\n\n[](http://travis-ci.org/geraintluff/tv4) [](https://gemnasium.com/geraintluff/tv4) [](http://badge.fury.io/js/tv4)\n\nUse [json-schema](http://json-schema.org/) [draft v4](http://json-schema.org/latest/json-schema-core.html) to validate simple values and complex objects using a rich [validation vocabulary](http://json-schema.org/latest/json-schema-validation.html) ([examples](http://json-schema.org/examples.html)).\n\nThere is support for `$ref` with JSON Pointer fragment paths (```other-schema.json#/properties/myKey```).\n\n## Usage 1: Simple validation\n\n```javascript\nvar valid = tv4.validate(data, schema);\n```\n\nIf validation returns ```false```, then an explanation of why validation failed can be found in ```tv4.error```.\n\nThe error object will look something like:\n```json\n{\n \"code\": 0,\n \"message\": \"Invalid type: string\",\n \"dataPath\": \"/intKey\",\n \"schemaKey\": \"/properties/intKey/type\"\n}\n```\n\nThe `\"code\"` property will refer to one of the values in `tv4.errorCodes` - in this case, `tv4.errorCodes.INVALID_TYPE`.\n\nTo enable external schema to be referenced, you use:\n```javascript\ntv4.addSchema(url, schema);\n```\n\nIf schemas are referenced (```$ref```) but not known, then validation will return ```true``` and the missing schema(s) will be listed in ```tv4.missing```. For more info see the API documentation below.\n\n## Usage 2: Multi-threaded validation\n\nStoring the error and missing schemas does not work well in multi-threaded environments, so there is an alternative syntax:\n\n```javascript\nvar result = tv4.validateResult(data, schema);\n```\n\nThe result will look something like:\n```json\n{\n \"valid\": false,\n \"error\": {...},\n \"missing\": [...]\n}\n```\n\n## Usage 3: Multiple errors\n\nNormally, `tv4` stops when it encounters the first validation error. However, you can collect an array of validation errors using:\n\n```javascript\nvar result = tv4.validateMultiple(data, schema);\n```\n\nThe result will look something like:\n```json\n{\n \"valid\": false,\n \"errors\": [\n {...},\n ...\n ],\n \"missing\": [...]\n}\n```\n\n## Asynchronous validation\n\nSupport for asynchronous validation (where missing schemas are fetched) can be added by including an extra JavaScript file. Currently, the only version requires jQuery (`tv4.async-jquery.js`), but the code is very short and should be fairly easy to modify for other libraries (such as MooTools).\n\nUsage:\n\n```javascript\ntv4.validate(data, schema, function (isValid, validationError) { ... });\n```\n\n`validationFailure` is simply taken from `tv4.error`.\n\n## Cyclical JavaScript objects\n\nWhile they don't occur in proper JSON, JavaScript does support self-referencing objects. Any of the above calls support an optional third argument: `checkRecursive`. If true, tv4 will handle self-referencing objects properly - this slows down validation slightly, but that's better than a hanging script.\n\nConsider this data, notice how both `a` and `b` refer to each other:\n\n```javascript\nvar a = {};\nvar b = { a: a };\na.b = b;\nvar aSchema = { properties: { b: { $ref: 'bSchema' }}};\nvar bSchema = { properties: { a: { $ref: 'aSchema' }}};\ntv4.addSchema('aSchema', aSchema);\ntv4.addSchema('bSchema', bSchema);\n```\n\nIf the `checkRecursive` argument were missing, this would throw a \"too much recursion\" error. \n\nTo enable support for this, pass `true` as additional argument to any of the regular validation methods: \n\n```javascript\ntv4.validate(a, aSchema, true);\ntv4.validateResult(data, aSchema, true); \ntv4.validateMultiple(data, aSchema, true);\n```\n\n## The `banUnknownProperties` flag\n\nSometimes, it is desirable to flag all unknown properties as an error. This is especially useful during development, to catch typos and the like, even when extra custom-defined properties are allowed.\n\nAs such, tv4 implements [\"ban unknown properties\" mode](https://github.com/json-schema/json-schema/wiki/ban-unknown-properties-mode-\\(v5-proposal\\)), enabled by a fourth-argument flag:\n\n```javascript\ntv4.validate(data, schema, checkRecursive, true);\ntv4.validateResult(data, schema, checkRecursive, true);\ntv4.validateMultiple(data, schema, checkRecursive, true);\n```\n\n## API\n\nThere are additional api commands available for more complex use-cases:\n\n##### addSchema(uri, schema)\nPre-register a schema for reference by other schema and synchronous validation.\n\n````js\ntv4.addSchema('http://example.com/schema', { ... });\n````\n\n* `uri` the uri to identify this schema.\n* `schema` the schema object.\n\nSchemas that have their `id` property set can be added directly.\n\n````js\ntv4.addSchema({ ... });\n````\n\n##### getSchema(uri)\n\nReturn a schema from the cache.\n\n* `uri` the uri of the schema (may contain a `#` fragment)\n\n````js\nvar schema = tv4.getSchema('http://example.com/schema');\n````\n\n##### getSchemaMap()\n\nReturn a shallow copy of the schema cache, mapping schema document URIs to schema objects.\n\n````\nvar map = tv4.getSchemaMap();\n\nvar schema = map[uri];\n````\n\n##### getSchemaUris(filter)\n\nReturn an Array with known schema document URIs.\n\n* `filter` optional RegExp to filter URIs\n\n````\nvar arr = tv4.getSchemaUris();\n\n// optional filter using a RegExp\nvar arr = tv4.getSchemaUris(/^https?://example.com/);\n````\n\n##### getMissingUris(filter)\n\nReturn an Array with schema document URIs that are used as `$ref` in known schemas but which currently have no associated schema data.\n\nUse this in combination with `tv4.addSchema(uri, schema)` to preload the cache for complete synchronous validation with.\n\n* `filter` optional RegExp to filter URIs\n\n````\nvar arr = tv4.getMissingUris();\n\n// optional filter using a RegExp\nvar arr = tv4.getMissingUris(/^https?://example.com/);\n````\n\n##### dropSchemas()\n\nDrop all known schema document URIs from the cache.\n\n````\ntv4.dropSchemas();\n````\n\n##### freshApi()\n\nReturn a new tv4 instance with no shared state.\n\n````\nvar otherTV4 = tv4.freshApi();\n````\n\n##### reset()\n\nManually reset validation status from the simple `tv4.validate(data, schema)`. Although tv4 will self reset on each validation there are some implementation scenarios where this is useful.\n\n````\ntv4.reset();\n````\n\n##### language(code)\n\nSelect the language map used for reporting.\n\n* `code` is a language code, like `'en'` or `'en-gb'`\n\n````\ntv4.language('en-gb');\n````\n\n##### addLanguage(code, map)\n\nAdd a new language map for selection by `tv4.language(code)`\n\n* `code` is new language code\n* `map` is an object mapping error IDs or constant names (e.g. `103` or `\"NUMBER_MAXIMUM\"`) to language strings.\n\n````\ntv4.addLanguage('fr', { ... });\n\n// select for use\ntv4.language('fr')\n````\n\n##### addFormat(format, validationFunction)\n\nAdd a custom format validator. (There are no built-in format validators.)\n\n* `format` is a string, corresponding to the `\"format\"` value in schemas.\n* `validationFunction` is a function that either returns:\n * `null` (meaning no error)\n * an error string (explaining the reason for failure)\n\n````\ntv4.addFormat('decimal-digits', function (data, schema) {\n\tif (typeof data === 'string' && !/^[0-9]+$/.test(data)) {\n\t\treturn null;\n\t}\n\treturn \"must be string of decimal digits\";\n});\n````\n\nAlternatively, multiple formats can be added at the same time using an object:\n````\ntv4.addFormat({\n\t'my-format': function () {...},\n\t'other-format': function () {...}\n});\n````\n\n## Demos\n\n### Basic usage\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo1\">\n<pre class=\"code\" id=\"demo1\">\nvar schema = {\n\t\"items\": {\n\t\t\"type\": \"boolean\"\n\t}\n};\nvar data1 = [true, false];\nvar data2 = [true, 123];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\nalert(\"data 2 error: \" + JSON.stringify(tv4.error, null, 4));\n</pre>\n</div>\n\n### Use of <code>$ref</code>\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo2\">\n<pre class=\"code\" id=\"demo2\">\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"#\"}\n};\nvar data1 = [[], [[]]];\nvar data2 = [[], [true, []]];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\n</pre>\n</div>\n\n### Missing schema\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo3\">\n<pre class=\"code\" id=\"demo3\">\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"http://example.com/schema\" }\n};\nvar data = [1, 2, 3];\n\nalert(\"Valid: \" + tv4.validate(data, schema)); // true\nalert(\"Missing schemas: \" + JSON.stringify(tv4.missing));\n</pre>\n</div>\n\n### Referencing remote schema\n<div class=\"content inline-demo\" markdown=\"1\" data-demo=\"demo4\">\n<pre class=\"code\" id=\"demo4\">\ntv4.addSchema(\"http://example.com/schema\", {\n\t\"definitions\": {\n\t\t\"arrayItem\": {\"type\": \"boolean\"}\n\t}\n});\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"http://example.com/schema#/definitions/arrayItem\" }\n};\nvar data1 = [true, false, true];\nvar data2 = [1, 2, 3];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\n</pre>\n</div>\n\n## Supported platforms\n\n* Node.js\n* All modern browsers\n* IE >= 7\n\n## Installation\n\nYou can manually download [`tv4.js`](https://raw.github.com/geraintluff/tv4/master/tv4.js) or the minified [`tv4.min.js`](https://raw.github.com/geraintluff/tv4/master/tv4.min.js) and include it in your html to create the global `tv4` variable.\n\nAlternately use it as a CommonJS module:\n\n````js\nvar tv4 = require('tv4');\n````\n\n#### npm\n\n````\n$ npm install tv4\n````\n\n#### bower\n\n````\n$ bower install tv4\n````\n\n#### component.io\n\n````\n$ component install geraintluff/tv4\n````\n\n## Build and test\n\nYou can rebuild and run the node and browser tests using node.js and [grunt](http://http://gruntjs.com/):\n\nMake sure you have the global grunt cli command:\n````\n$ npm install grunt-cli -g\n````\n\nClone the git repos, open a shell in the root folder and install the development dependencies:\n\n````\n$ npm install\n````\n\nRebuild and run the tests:\n````\n$ grunt\n````\n\nIt will run a build and display one Spec-style report for the node.js and two Dot-style reports for both the plain and minified browser tests (via phantomJS). You can also use your own browser to manually run the suites by opening [`test/index.html`](http://geraintluff.github.io/tv4/test/index.html) and [`test/index-min.html`](http://geraintluff.github.io/tv4/test/index-min.html).\n\n## Contributing\n\nPull-requests for fixes and expansions are welcome. Edit the partial files in `/source` and add your tests in a suitable suite or folder under `/test/tests` and run `grunt` to rebuild and run the test suite. Try to maintain an idiomatic coding style and add tests for any new features. It is recommend to discuss big changes in an Issue.\n\n## Packages using tv4\n\n* [chai-json-schema](http://chaijs.com/plugins/chai-json-schema) is a [Chai Assertion Library](http://chaijs.com) plugin to assert values against json-schema.\n* [grunt-tv4](http://www.github.com/Bartvds/grunt-tv4) is a plugin for [Grunt](http://http://gruntjs.com/) that uses tv4 to bulk validate json files.\n\n## License\n\nThe code is available as \"public domain\", meaning that it is completely free to use, without any restrictions at all. Read the full license [here](http://geraintluff.github.com/tv4/LICENSE.txt).\n\nIt's also available under an [MIT license](http://jsonary.com/LICENSE.txt).\n", 62 64 "readmeFilename": "README.md", 63 65 "bugs": { … … 65 67 }, 66 68 "homepage": "https://github.com/geraintluff/tv4", 67 "_id": "tv4@1.0.11", 68 "_from": "tv4@" 69 "_id": "tv4@1.0.16", 70 "dist": { 71 "shasum": "f35372c01e94355b7aaff5860455fd231e2d9802" 72 }, 73 "_from": "tv4@1.0.16", 74 "_resolved": "https://registry.npmjs.org/tv4/-/tv4-1.0.16.tgz" 69 75 } -
Dev/trunk/src/node_modules/tv4/tv4.async-jquery.js
r484 r487 4 4 if (typeof (tv4.asyncValidate) === 'undefined') { 5 5 tv4.syncValidate = tv4.validate; 6 tv4.validate = function (data, schema, callback, checkRecursive ) {6 tv4.validate = function (data, schema, callback, checkRecursive, banUnknownProperties) { 7 7 if (typeof (callback) === 'undefined') { 8 return this.syncValidate(data, schema, checkRecursive );8 return this.syncValidate(data, schema, checkRecursive, banUnknownProperties); 9 9 } else { 10 return this.asyncValidate(data, schema, callback, checkRecursive );10 return this.asyncValidate(data, schema, callback, checkRecursive, banUnknownProperties); 11 11 } 12 12 }; 13 tv4.asyncValidate = function (data, schema, callback, checkRecursive ) {13 tv4.asyncValidate = function (data, schema, callback, checkRecursive, banUnknownProperties) { 14 14 var $ = jQuery; 15 var result = tv4.validate(data, schema, checkRecursive );15 var result = tv4.validate(data, schema, checkRecursive, banUnknownProperties); 16 16 if (!tv4.missing.length) { 17 17 callback(result, tv4.error); … … 28 28 // When all requests done, try again 29 29 $.when.apply($, missingSchemas).done(function () { 30 var result = tv4.asyncValidate(data, schema, callback, checkRecursive );30 var result = tv4.asyncValidate(data, schema, callback, checkRecursive, banUnknownProperties); 31 31 }); 32 32 } -
Dev/trunk/src/node_modules/tv4/tv4.js
r484 r487 133 133 this.scannedFrozen = []; 134 134 this.scannedFrozenSchemas = []; 135 this.key = 'tv4_validation_id'; 135 this.scannedFrozenValidationErrors = []; 136 this.validatedSchemasKey = 'tv4_validation_id'; 137 this.validationErrorsKey = 'tv4_validation_errors_id'; 136 138 } 137 139 if (trackUnknownProperties) { … … 240 242 }; 241 243 ValidatorContext.prototype.searchSchemas = function (schema, url) { 242 if ( typeof schema.id === "string") {243 if ( isTrustedUrl(url, schema.id)) {244 if ( this.schemas[schema.id] === undefined) {245 this.schemas[schema.id] = schema;246 }247 }248 }249 if (typeof schema === "object") {244 if (schema && typeof schema === "object") { 245 if (typeof schema.id === "string") { 246 if (isTrustedUrl(url, schema.id)) { 247 if (this.schemas[schema.id] === undefined) { 248 this.schemas[schema.id] = schema; 249 } 250 } 251 } 250 252 for (var key in schema) { 251 253 if (key !== "enum") { … … 264 266 ValidatorContext.prototype.addSchema = function (url, schema) { 265 267 //overload 266 if (typeof schema === 'undefined') {268 if (typeof url !== 'string' || typeof schema === 'undefined') { 267 269 if (typeof url === 'object' && typeof url.id === 'string') { 268 270 schema = url; … … 331 333 } 332 334 333 if (this.checkRecursive && (typeof data) === 'object') { 335 var startErrorCount = this.errors.length; 336 var frozenIndex, scannedFrozenSchemaIndex = null, scannedSchemasIndex = null; 337 if (this.checkRecursive && data && typeof data === 'object') { 334 338 topLevel = !this.scanned.length; 335 if (data[this.key] && data[this.key].indexOf(schema) !== -1) { return null; } 336 var frozenIndex; 339 if (data[this.validatedSchemasKey]) { 340 var schemaIndex = data[this.validatedSchemasKey].indexOf(schema); 341 if (schemaIndex !== -1) { 342 this.errors = this.errors.concat(data[this.validationErrorsKey][schemaIndex]); 343 return null; 344 } 345 } 337 346 if (Object.isFrozen(data)) { 338 347 frozenIndex = this.scannedFrozen.indexOf(data); 339 if (frozenIndex !== -1 && this.scannedFrozenSchemas[frozenIndex].indexOf(schema) !== -1) { return null; } 348 if (frozenIndex !== -1) { 349 var frozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].indexOf(schema); 350 if (frozenSchemaIndex !== -1) { 351 this.errors = this.errors.concat(this.scannedFrozenValidationErrors[frozenIndex][frozenSchemaIndex]); 352 return null; 353 } 354 } 340 355 } 341 356 this.scanned.push(data); … … 346 361 this.scannedFrozenSchemas.push([]); 347 362 } 348 this.scannedFrozenSchemas[frozenIndex].push(schema); 363 scannedFrozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].length; 364 this.scannedFrozenSchemas[frozenIndex][scannedFrozenSchemaIndex] = schema; 365 this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = []; 349 366 } else { 350 if (!data[this. key]) {367 if (!data[this.validatedSchemasKey]) { 351 368 try { 352 Object.defineProperty(data, this.key, { 369 Object.defineProperty(data, this.validatedSchemasKey, { 370 value: [], 371 configurable: true 372 }); 373 Object.defineProperty(data, this.validationErrorsKey, { 353 374 value: [], 354 375 configurable: true … … 356 377 } catch (e) { 357 378 //IE 7/8 workaround 358 data[this.key] = []; 359 } 360 } 361 data[this.key].push(schema); 379 data[this.validatedSchemasKey] = []; 380 data[this.validationErrorsKey] = []; 381 } 382 } 383 scannedSchemasIndex = data[this.validatedSchemasKey].length; 384 data[this.validatedSchemasKey][scannedSchemasIndex] = schema; 385 data[this.validationErrorsKey][scannedSchemasIndex] = []; 362 386 } 363 387 } … … 376 400 while (this.scanned.length) { 377 401 var item = this.scanned.pop(); 378 delete item[this. key];402 delete item[this.validatedSchemasKey]; 379 403 } 380 404 this.scannedFrozen = []; … … 391 415 this.prefixErrors(errorCount, dataPart, schemaPart); 392 416 } 417 } 418 419 if (scannedFrozenSchemaIndex !== null) { 420 this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = this.errors.slice(startErrorCount); 421 } else if (scannedSchemasIndex !== null) { 422 data[this.validationErrorsKey][scannedSchemasIndex] = this.errors.slice(startErrorCount); 393 423 } 394 424 … … 996 1026 } 997 1027 function normSchema(schema, baseUri) { 998 if ( baseUri === undefined) {999 baseUri = schema.id;1000 } else if (typeof schema.id === "string") {1001 baseUri = resolveUrl(baseUri, schema.id);1002 schema.id = baseUri;1003 }1004 if (typeof schema === "object") {1028 if (schema && typeof schema === "object") { 1029 if (baseUri === undefined) { 1030 baseUri = schema.id; 1031 } else if (typeof schema.id === "string") { 1032 baseUri = resolveUrl(baseUri, schema.id); 1033 schema.id = baseUri; 1034 } 1005 1035 if (Array.isArray(schema)) { 1006 1036 for (var i = 0; i < schema.length; i++) { … … 1050 1080 FORMAT_CUSTOM: 500, 1051 1081 // Schema structure 1052 CIRCULAR_REFERENCE: 500,1082 CIRCULAR_REFERENCE: 600, 1053 1083 // Non-standard validation options 1054 1084 UNKNOWN_PROPERTY: 1000 … … 1091 1121 1092 1122 function ValidationError(code, message, dataPath, schemaPath, subErrors) { 1123 Error.call(this); 1093 1124 if (code === undefined) { 1094 1125 throw new Error ("No code supplied for error: "+ message); 1095 1126 } 1127 this.message = message; 1096 1128 this.code = code; 1097 this.message = message;1098 1129 this.dataPath = dataPath || ""; 1099 1130 this.schemaPath = schemaPath || ""; 1100 1131 this.subErrors = subErrors || null; 1101 } 1102 ValidationError.prototype = new Error(); 1132 1133 var err = new Error(this.message); 1134 this.stack = err.stack || err.stacktrace; 1135 if (!this.stack) { 1136 try { 1137 throw err; 1138 } 1139 catch(err) { 1140 this.stack = err.stack || err.stacktrace; 1141 } 1142 } 1143 } 1144 ValidationError.prototype = Object.create(Error.prototype); 1145 ValidationError.prototype.constructor = ValidationError; 1146 ValidationError.prototype.name = 'ValidationError'; 1147 1103 1148 ValidationError.prototype.prefixWith = function (dataPrefix, schemaPrefix) { 1104 1149 if (dataPrefix !== null) { … … 1265 1310 1266 1311 })(this); 1267 1268 //@ sourceMappingURL=tv4.js.map
Note: See TracChangeset
for help on using the changeset viewer.