diff --git a/.DS_Store b/.DS_Store index b28cc36..8ca7ade 100755 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/node_modules/cors/.npmignore b/node_modules/cors/.npmignore deleted file mode 100644 index 7595163..0000000 --- a/node_modules/cors/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -node_modules -npm-debug.log diff --git a/node_modules/cors/.travis.yml b/node_modules/cors/.travis.yml deleted file mode 100644 index 20fd86b..0000000 --- a/node_modules/cors/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.10 diff --git a/node_modules/cors/CONTRIBUTING.md b/node_modules/cors/CONTRIBUTING.md deleted file mode 100644 index 308ea77..0000000 --- a/node_modules/cors/CONTRIBUTING.md +++ /dev/null @@ -1,36 +0,0 @@ -# contributing to `cors` - -CORS is a node.js package for providing a [connect](http://www.senchalabs.org/connect/)/[express](http://expressjs.com/) middleware that can be used to enable [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) with various options. Learn more about the project in [the README](README.md). - -[![build status](https://secure.travis-ci.org/TroyGoode/node-cors.png)](http://travis-ci.org/TroyGoode/node-cors) - -## The CORS Spec - -[http://www.w3.org/TR/cors/](http://www.w3.org/TR/cors/) - -## Pull Requests Welcome - -* Include `'use strict';` in every javascript file. -* 2 space indentation. -* Please run the testing steps below before submitting. - -## Testing - -```bash -$ npm install -$ npm test -$ npm run lint -``` - -## Interactive Testing Harness - -[http://node-cors-client.herokuapp.com](http://node-cors-client.herokuapp.com) - -Related git repositories: - -* [https://github.com/TroyGoode/node-cors-server](https://github.com/TroyGoode/node-cors-server) -* [https://github.com/TroyGoode/node-cors-client](https://github.com/TroyGoode/node-cors-client) - -## License - -[MIT License](http://www.opensource.org/licenses/mit-license.php) diff --git a/node_modules/cors/LICENSE b/node_modules/cors/LICENSE deleted file mode 100644 index a01c3f3..0000000 --- a/node_modules/cors/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Troy Goode - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/cors/README.md b/node_modules/cors/README.md deleted file mode 100644 index 039ece9..0000000 --- a/node_modules/cors/README.md +++ /dev/null @@ -1,191 +0,0 @@ -# `cors` - -CORS is a node.js package for providing a [Connect](http://www.senchalabs.org/connect/)/[Express](http://expressjs.com/) middleware that can be used to enable [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) with various options. - -**[Follow me (@troygoode) on Twitter!](https://twitter.com/intent/user?screen_name=troygoode)** - -[![NPM](https://nodei.co/npm/cors.png?downloads=true&stars=true)](https://nodei.co/npm/cors/) - -[![build status](https://secure.travis-ci.org/troygoode/node-cors.png)](http://travis-ci.org/troygoode/node-cors) -* [Installation](#installation) -* [Usage](#usage) - * [Simple Usage](#simple-usage-enable-all-cors-requests) - * [Enable CORS for a Single Route](#enable-cors-for-a-single-route) - * [Configuring CORS](#configuring-cors) - * [Configuring CORS Asynchronously](#configuring-cors-asynchronously) - * [Enabling CORS Pre-Flight](#enabling-cors-pre-flight) -* [Configuration Options](#configuration-options) -* [Demo](#demo) -* [License](#license) -* [Author](#author) - -## Installation (via [npm](https://npmjs.org/package/cors)) - -```bash -$ npm install cors -``` - -## Usage - -### Simple Usage (Enable *All* CORS Requests) - -```javascript -var express = require('express') - , cors = require('cors') - , app = express(); - -app.use(cors()); - -app.get('/products/:id', function(req, res, next){ - res.json({msg: 'This is CORS-enabled for all origins!'}); -}); - -app.listen(80, function(){ - console.log('CORS-enabled web server listening on port 80'); -}); -``` - -### Enable CORS for a Single Route - -```javascript -var express = require('express') - , cors = require('cors') - , app = express(); - -app.get('/products/:id', cors(), function(req, res, next){ - res.json({msg: 'This is CORS-enabled for all origins!'}); -}); - -app.listen(80, function(){ - console.log('CORS-enabled web server listening on port 80'); -}); -``` - -### Configuring CORS - -```javascript -var express = require('express') - , cors = require('cors') - , app = express(); - -var corsOptions = { - origin: 'http://example.com' -}; - -app.get('/products/:id', cors(corsOptions), function(req, res, next){ - res.json({msg: 'This is CORS-enabled for only example.com.'}); -}); - -app.listen(80, function(){ - console.log('CORS-enabled web server listening on port 80'); -}); -``` - -### Configuring CORS w/ Dynamic Origin - -```javascript -var express = require('express') - , cors = require('cors') - , app = express(); - -var whitelist = ['http://example1.com', 'http://example2.com']; -var corsOptions = { - origin: function(origin, callback){ - var originIsWhitelisted = whitelist.indexOf(origin) !== -1; - callback(null, originIsWhitelisted); - } -}; - -app.get('/products/:id', cors(corsOptions), function(req, res, next){ - res.json({msg: 'This is CORS-enabled for a whitelisted domain.'}); -}); - -app.listen(80, function(){ - console.log('CORS-enabled web server listening on port 80'); -}); -``` - -### Enabling CORS Pre-Flight - -Certain CORS requests are considered 'complex' and require an initial -`OPTIONS` request (called the "pre-flight request"). An example of a -'complex' CORS request is one that uses an HTTP verb other than -GET/HEAD/POST (such as DELETE) or that uses custom headers. To enable -pre-flighting, you must add a new OPTIONS handler for the route you want -to support: - -```javascript -var express = require('express') - , cors = require('cors') - , app = express(); - -app.options('/products/:id', cors()); // enable pre-flight request for DELETE request -app.del('/products/:id', cors(), function(req, res, next){ - res.json({msg: 'This is CORS-enabled for all origins!'}); -}); - -app.listen(80, function(){ - console.log('CORS-enabled web server listening on port 80'); -}); -``` - -You can also enable pre-flight across-the-board like so: - -``` -app.options('*', cors()); // include before other routes -``` - -### Configuring CORS Asynchronously - -```javascript -var express = require('express') - , cors = require('cors') - , app = express(); - -var whitelist = ['http://example1.com', 'http://example2.com']; -var corsOptionsDelegate = function(req, callback){ - var corsOptions; - if(whitelist.indexOf(req.header('Origin')) !== -1){ - corsOptions = { origin: true }; // reflect (enable) the requested origin in the CORS response - }else{ - corsOptions = { origin: false }; // disable CORS for this request - } - callback(null, corsOptions); // callback expects two parameters: error and options -}; - -app.get('/products/:id', cors(corsOptionsDelegate), function(req, res, next){ - res.json({msg: 'This is CORS-enabled for a whitelisted domain.'}); -}); - -app.listen(80, function(){ - console.log('CORS-enabled web server listening on port 80'); -}); -``` - -## Configuration Options - -* `origin`: Configures the **Access-Control-Allow-Origin** CORS header. Expects a string (ex: "http://example.com"). Set to `true` to reflect the [request origin](http://tools.ietf.org/html/draft-abarth-origin-09), as defined by `req.header('Origin')`. Set to `false` to disable CORS. Can also be set to a function, which takes the request origin as the first parameter and a callback (which expects the signature `err [object], allow [bool]`) as the second. -* `methods`: Configures the **Access-Control-Allow-Methods** CORS header. Expects a comma-delimited string (ex: 'GET,PUT,POST') or an array (ex: `['GET', 'PUT', 'POST']`). -* `allowedHeaders`: Configures the **Access-Control-Allow-Headers** CORS header. Expects a comma-delimited string (ex: 'Content-Type,Authorization') or an array (ex: `['Content-Type', 'Authorization]`). If not specified, defaults to reflecting the headers specified in the request's **Access-Control-Request-Headers** header. -* `exposedHeaders`: Configures the **Access-Control-Expose-Headers** CORS header. Expects a comma-delimited string (ex: 'Content-Range,X-Content-Range') or an array (ex: `['Content-Range', 'X-Content-Range]`). If not specified, no custom headers are exposed. -* `credentials`: Configures the **Access-Control-Allow-Credentials** CORS header. Set to `true` to pass the header, otherwise it is omitted. -* `maxAge`: Configures the **Access-Control-Allow-Max-Age** CORS header. Set to an integer to pass the header, otherwise it is omitted. - -For details on the effect of each CORS header, [read this article on HTML5 Rocks](http://www.html5rocks.com/en/tutorials/cors/). - -## Demo - -A demo that illustrates CORS working (and not working) using jQuery is available here: [http://node-cors-client.herokuapp.com/](http://node-cors-client.herokuapp.com/) - -Code for that demo can be found here: - -* Client: [https://github.com/TroyGoode/node-cors-client](https://github.com/TroyGoode/node-cors-client) -* Server: [https://github.com/TroyGoode/node-cors-server](https://github.com/TroyGoode/node-cors-server) - -## License - -[MIT License](http://www.opensource.org/licenses/mit-license.php) - -## Author - -[Troy Goode](https://github.com/TroyGoode) ([troygoode@gmail.com](mailto:troygoode@gmail.com)) diff --git a/node_modules/cors/lib/index.js b/node_modules/cors/lib/index.js deleted file mode 100644 index 4f0e967..0000000 --- a/node_modules/cors/lib/index.js +++ /dev/null @@ -1,198 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true*/ - -(function () { - - 'use strict'; - - var vary = require('vary'), - defaults = { - origin: '*', - methods: 'GET,HEAD,PUT,PATCH,POST,DELETE' - }; - - function configureOrigin(options, req) { - if (!options.origin) { - return { - key: 'Access-Control-Allow-Origin', - value: '*' - }; - } else { - return [ - { - key: 'Access-Control-Allow-Origin', - value: options.origin === true ? req.headers.origin : options.origin - }, - { - key: 'Vary', - value: 'Origin' - } - ]; - } - } - - function configureMethods(options) { - var methods = options.methods || defaults.methods; - if (methods.join) { - methods = options.methods.join(','); // .methods is an array, so turn it into a string - } - return { - key: 'Access-Control-Allow-Methods', - value: methods - }; - } - - function configureCredentials(options) { - if (options.credentials === true) { - return { - key: 'Access-Control-Allow-Credentials', - value: 'true' - }; - } - return null; - } - - function configureAllowedHeaders(options, req) { - var headers = options.allowedHeaders || options.headers; - if (!headers) { - headers = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers - } else if (headers.join) { - headers = headers.join(','); // .headers is an array, so turn it into a string - } - if (headers && headers.length) { - return { - key: 'Access-Control-Allow-Headers', - value: headers - }; - } - return null; - } - - function configureExposedHeaders(options, req) { - var headers = options.exposedHeaders; - if (!headers) { - return null; - } else if (headers.join) { - headers = headers.join(','); // .headers is an array, so turn it into a string - } - if (headers && headers.length) { - return { - key: 'Access-Control-Expose-Headers', - value: headers - }; - } - return null; - } - - function configureMaxAge(options) { - var maxAge = options.maxAge && options.maxAge.toString(); - if (maxAge && maxAge.length) { - return { - key: 'Access-Control-Max-Age', - value: maxAge - }; - } - return null; - } - - function applyHeaders(headers, res) { - for (var i = 0, n = headers.length; i < n; i++) { - var header = headers[i]; - if (header) { - if (Array.isArray(header)) { - applyHeaders(header, res); - } else if (header.key === 'Vary' && header.value) { - vary(res, header.value); - } else if (header.value) { - res.setHeader(header.key, header.value); - } - } - } - } - - function cors(options, req, res, next) { - var headers = [], - method = req.method && req.method.toUpperCase && req.method.toUpperCase(); - - if (method === 'OPTIONS') { - // preflight - headers.push(configureOrigin(options, req)); - headers.push(configureCredentials(options, req)); - headers.push(configureMethods(options, req)); - headers.push(configureAllowedHeaders(options, req)); - headers.push(configureMaxAge(options, req)); - applyHeaders(headers, res); - res.statusCode = 204; - res.end(); - } else { - // actual response - headers.push(configureOrigin(options, req)); - headers.push(configureCredentials(options, req)); - headers.push(configureExposedHeaders(options, req)); - applyHeaders(headers, res); - next(); - } - } - - function middlewareWrapper(o) { - // if no options were passed in, use the defaults - if (!o) { - o = {}; - } - if (o.origin === undefined) { - o.origin = defaults.origin; - } - if (o.methods === undefined) { - o.methods = defaults.methods; - } - - // if options are static (either via defaults or custom options passed in), wrap in a function - var optionsCallback = null; - if (typeof o === 'function') { - optionsCallback = o; - } else { - /*jslint unparam: true*/ // `req` is part of the signature, but isn't used for this stub - optionsCallback = function (req, cb) { - cb(null, o); - }; - /*jslint unparam: false*/ - } - - return function (req, res, next) { - optionsCallback(req, function (err, options) { - if (err) { - next(err); - } else { - var originCallback = null; - if (options.origin && typeof options.origin === 'function') { - originCallback = options.origin; - } else if (options.origin) { - /*jslint unparam: true*/ // `origin` is part of the signature, but isn't used for this stub - originCallback = function (origin, cb) { - cb(null, options.origin); - }; - /*jslint unparam: false*/ - } - - if (originCallback) { - originCallback(req.headers.origin, function (err, origin) { - if (err || !origin) { - next(err); - } else { - var corsOptions = Object.create(options); - corsOptions.origin = origin; - cors(corsOptions, req, res, next); - } - }); - } else { - next(); - } - } - }); - }; - } - - // can pass either an options hash, an options delegate, or nothing - module.exports = middlewareWrapper; - -}()); diff --git a/node_modules/cors/node_modules/vary/.npmignore b/node_modules/cors/node_modules/vary/.npmignore deleted file mode 100644 index cd39b77..0000000 --- a/node_modules/cors/node_modules/vary/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -coverage/ -test/ -.travis.yml diff --git a/node_modules/cors/node_modules/vary/History.md b/node_modules/cors/node_modules/vary/History.md deleted file mode 100644 index e5d8e69..0000000 --- a/node_modules/cors/node_modules/vary/History.md +++ /dev/null @@ -1,16 +0,0 @@ -1.0.0 / 2014-08-10 -================== - - * Accept valid `Vary` header string as `field` - * Add `vary.append` for low-level string manipulation - * Move to `jshttp` orgainzation - -0.1.0 / 2014-06-05 -================== - - * Support array of fields to set - -0.0.0 / 2014-06-04 -================== - - * Initial release diff --git a/node_modules/cors/node_modules/vary/LICENSE b/node_modules/cors/node_modules/vary/LICENSE deleted file mode 100644 index b7dce6c..0000000 --- a/node_modules/cors/node_modules/vary/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/cors/node_modules/vary/README.md b/node_modules/cors/node_modules/vary/README.md deleted file mode 100644 index 82392d0..0000000 --- a/node_modules/cors/node_modules/vary/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# vary - -[![NPM Version](http://img.shields.io/npm/v/vary.svg?style=flat)](https://www.npmjs.org/package/vary) -[![Node.js Version](http://img.shields.io/badge/node.js->=_0.8-blue.svg?style=flat)](http://nodejs.org/download/) -[![Build Status](http://img.shields.io/travis/jshttp/vary.svg?style=flat)](https://travis-ci.org/jshttp/vary) -[![Coverage Status](https://img.shields.io/coveralls/jshttp/vary.svg?style=flat)](https://coveralls.io/r/jshttp/vary) -[![Gittip](http://img.shields.io/gittip/dougwilson.svg?style=flat)](https://www.gittip.com/dougwilson/) - -Manipulate the HTTP Vary header - -## Install - -```sh -$ npm install vary -``` - -## API - -```js -var vary = require('vary') -``` - -### vary(res, field) - -Adds the given header `field` to the `Vary` response header of `res`. -This can be a string of a single field, a string of a valid `Vary` -header, or an array of multiple fields. - -This will append the header if not already listed, otherwise leaves -it listed in the current location. - -```js -// Append "Origin" to the Vary header of the response -vary(res, 'Origin') -``` - -### vary.append(header, field) - -Adds the given header `field` to the `Vary` response header string `header`. -This can be a string of a single field, a string of a valid `Vary` header, -or an array of multiple fields. - -This will append the header if not already listed, otherwise leaves -it listed in the current location. The new header string is returned. - -```js -// Get header string appending "Origin" to "Accept, User-Agent" -vary.append('Accept, User-Agent', 'Origin') -``` - -## Testing - -```sh -$ npm test -``` - -## License - -[MIT](LICENSE) diff --git a/node_modules/cors/node_modules/vary/index.js b/node_modules/cors/node_modules/vary/index.js deleted file mode 100644 index 1e544e8..0000000 --- a/node_modules/cors/node_modules/vary/index.js +++ /dev/null @@ -1,112 +0,0 @@ -/*! - * vary - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = vary; -module.exports.append = append; - -/** - * Variables. - */ - -var separators = /[\(\)<>@,;:\\"\/\[\]\?=\{\}\u0020\u0009]/; - -/** - * Append a field to a vary header. - * - * @param {String} header - * @param {String|Array} field - * @return {String} - * @api public - */ - -function append(header, field) { - if (typeof header !== 'string') { - throw new TypeError('header argument is required'); - } - - if (!field) { - throw new TypeError('field argument is required'); - } - - // get fields array - var fields = !Array.isArray(field) - ? parse(String(field)) - : field; - - // assert on invalid fields - for (var i = 0; i < fields.length; i++) { - if (separators.test(fields[i])) { - throw new TypeError('field argument contains an invalid header'); - } - } - - // existing, unspecified vary - if (header === '*') { - return header; - } - - // enumerate current values - var vals = parse(header.toLowerCase()); - - // unspecified vary - if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) { - return '*'; - } - - for (var i = 0; i < fields.length; i++) { - field = fields[i].toLowerCase(); - - // append value (case-preserving) - if (vals.indexOf(field) === -1) { - vals.push(field); - header = header - ? header + ', ' + fields[i] - : fields[i]; - } - } - - return header; -} - -/** - * Parse a vary header into an array. - * - * @param {String} header - * @return {Array} - * @api private - */ - -function parse(header) { - return header.trim().split(/ *, */); -} - -/** - * Mark that a request is varied on a header field. - * - * @param {Object} res - * @param {String|Array} field - * @api public - */ - -function vary(res, field) { - if (!res || !res.getHeader || !res.setHeader) { - // quack quack - throw new TypeError('res argument is required'); - } - - // get existing header - var val = res.getHeader('Vary') || '' - var header = Array.isArray(val) - ? val.join(', ') - : String(val); - - // set new header - res.setHeader('Vary', append(header, field)); -} diff --git a/node_modules/cors/node_modules/vary/package.json b/node_modules/cors/node_modules/vary/package.json deleted file mode 100644 index 43acc43..0000000 --- a/node_modules/cors/node_modules/vary/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "vary", - "description": "Manipulate the HTTP Vary header", - "version": "1.0.0", - "author": { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - "license": "MIT", - "keywords": [ - "http", - "res", - "vary" - ], - "repository": { - "type": "git", - "url": "https://github.com/jshttp/vary" - }, - "devDependencies": { - "istanbul": "0.3.0", - "mocha": "~1.21.4", - "should": "~4.0.4", - "supertest": "~0.13.0" - }, - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" - }, - "gitHead": "56acecd9fa20888132563b00576625ea02a69a35", - "bugs": { - "url": "https://github.com/jshttp/vary/issues" - }, - "homepage": "https://github.com/jshttp/vary", - "_id": "vary@1.0.0", - "_shasum": "c5e76cec20d3820d8f2a96e7bee38731c34da1e7", - "_from": "vary@^1", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "shtylman", - "email": "shtylman@gmail.com" - } - ], - "dist": { - "shasum": "c5e76cec20d3820d8f2a96e7bee38731c34da1e7", - "tarball": "http://registry.npmjs.org/vary/-/vary-1.0.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/vary/-/vary-1.0.0.tgz" -} diff --git a/node_modules/cors/package.json b/node_modules/cors/package.json deleted file mode 100644 index 2677937..0000000 --- a/node_modules/cors/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "cors", - "version": "2.5.3", - "author": { - "name": "Troy Goode", - "email": "troygoode@gmail.com", - "url": "https://github.com/troygoode/" - }, - "description": "middleware for dynamically or statically enabling CORS in express/connect applications", - "keywords": [ - "cors", - "express", - "connect", - "middleware" - ], - "homepage": "https://github.com/troygoode/node-cors/", - "repository": { - "type": "git", - "url": "git://github.com/troygoode/node-cors.git" - }, - "contributors": [ - { - "name": "Troy Goode", - "email": "troygoode@gmail.com", - "url": "https://github.com/troygoode/" - } - ], - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - } - ], - "bugs": { - "url": "https://github.com/troygoode/node-cors/issues" - }, - "main": "./lib/index.js", - "engines": { - "node": ">=0.10.0" - }, - "dependencies": { - "vary": "^1" - }, - "devDependencies": { - "basic-auth-connect": "^1", - "body-parser": "^1.4.3", - "express": "^4", - "lint": "^1.1.2", - "mocha": "^1.18.2", - "should": "^3.3.1", - "supertest": "^0.12" - }, - "scripts": { - "test": "./node_modules/mocha/bin/mocha", - "lint": "./node_modules/lint/bin/node-lint lib test" - }, - "gitHead": "9959d2e4301bfb76e150c1c65e5ecd28924269fb", - "_id": "cors@2.5.3", - "_shasum": "0d70a211ec3b6cc9824e6cdc299c0630ef69c392", - "_from": "cors@", - "_npmVersion": "2.1.10", - "_nodeVersion": "0.10.26", - "_npmUser": { - "name": "troygoode", - "email": "troygoode@gmail.com" - }, - "maintainers": [ - { - "name": "troygoode", - "email": "troygoode@gmail.com" - } - ], - "dist": { - "shasum": "0d70a211ec3b6cc9824e6cdc299c0630ef69c392", - "tarball": "http://registry.npmjs.org/cors/-/cors-2.5.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/cors/-/cors-2.5.3.tgz" -} diff --git a/node_modules/cors/test/basic-auth.js b/node_modules/cors/test/basic-auth.js deleted file mode 100644 index bba15d5..0000000 --- a/node_modules/cors/test/basic-auth.js +++ /dev/null @@ -1,44 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true, setTimeout: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - express = require('express'), - supertest = require('supertest'), - basicAuth = require('basic-auth-connect'), - cors = require('../lib'), - app; - - /* -------------------------------------------------------------------------- */ - - app = express(); - app.use(basicAuth('username', 'password')); - app.use(cors()); - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app.post('/', function (req, res) { - res.send('hello world'); - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - describe('basic auth', function () { - it('POST works', function (done) { - supertest(app) - .post('/') - .auth('username', 'password') - .expect(200) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.eql('hello world'); - done(); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/body-events.js b/node_modules/cors/test/body-events.js deleted file mode 100644 index 05980f0..0000000 --- a/node_modules/cors/test/body-events.js +++ /dev/null @@ -1,87 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true, setTimeout: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - express = require('express'), - supertest = require('supertest'), - bodyParser = require('body-parser'), - cors = require('../lib'), - dynamicOrigin, - app1, - app2, - text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed justo turpis, tempor id sem fringilla, cursus tristique purus. Mauris a sollicitudin magna. Etiam dui lacus, vehicula non dictum at, cursus vitae libero. Curabitur lorem nulla, sollicitudin id enim ut, vehicula rhoncus felis. Ut nec iaculis velit. Vivamus at augue nulla. Fusce at molestie arcu. Duis at dui at tellus mattis tincidunt. Vestibulum sit amet dictum metus. Curabitur nec pretium ante. Proin vulputate elit ac lorem gravida, sit amet placerat lorem fringilla. Mauris fermentum, diam et volutpat auctor, ante enim imperdiet purus, sit amet tincidunt ipsum nulla nec est. Fusce id ipsum in sem malesuada laoreet vitae non magna. Praesent commodo turpis in nulla egestas, eu posuere magna venenatis. Integer in aliquam sem. Fusce quis lorem tincidunt eros rutrum lobortis.\n\nNam aliquam cursus ipsum, a hendrerit purus. Cras ultrices viverra nunc ac lacinia. Sed sed diam orci. Vestibulum ut orci a nibh scelerisque pretium. Sed suscipit vestibulum metus, ac ultricies leo sodales a. Aliquam erat volutpat. Vestibulum mauris massa, luctus et libero vel, cursus suscipit nulla. Cras sed erat quis massa fermentum congue. Mauris ultrices sem ligula, id malesuada lectus tincidunt eget. Donec sed nisl elit. Aenean ac lobortis massa. Phasellus felis nisl, dictum a dui volutpat, dictum sagittis diam. Vestibulum lacinia tellus vel commodo consequat.\n\nNulla at varius nibh, non posuere enim. Curabitur urna est, ultrices vel sem nec, consequat molestie nisi. Aliquam sed augue sit amet ante viverra pretium. Cras aliquam turpis vitae eros gravida egestas. Etiam quis dolor non quam suscipit iaculis. Sed euismod est libero, ac ullamcorper elit hendrerit vitae. Vivamus sollicitudin nulla dolor, vitae porta lacus suscipit ac.\n\nSed volutpat, magna in scelerisque dapibus, eros ante volutpat nisi, ac condimentum diam sem sed justo. Aenean justo risus, bibendum vitae blandit ac, mattis quis nunc. Quisque non felis nec justo auctor accumsan non id odio. Mauris vel dui feugiat dolor dapibus convallis in et neque. Phasellus fermentum sollicitudin tortor ac pretium. Proin tristique accumsan nulla eu venenatis. Cras porta lorem ac arcu accumsan pulvinar. Sed dignissim leo augue, a pretium ante viverra id. Phasellus blandit at purus a malesuada. Nam et cursus mauris. Vivamus accumsan augue laoreet lectus lacinia eleifend. Fusce sit amet felis nunc. Pellentesque eu turpis nisl.\n\nPellentesque vitae quam feugiat, volutpat lectus et, faucibus massa. Maecenas consectetur quis nisi eu aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam laoreet condimentum laoreet. Praesent sit amet massa sit amet dui porta condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed volutpat massa nec risus malesuada hendrerit.'; - - /* -------------------------------------------------------------------------- */ - - dynamicOrigin = function (origin, cb) { - setTimeout(function () { - cb(null, true); - }, 200); - }; - - /* -------------------------------------------------------------------------- */ - - app1 = express(); - app1.use(cors({origin: dynamicOrigin})); - app1.use(bodyParser.json()); - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app1.post('/', function (req, res) { - res.send(req.body); - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - app2 = express(); - app2.use(bodyParser.json()); - app2.use(cors({origin: dynamicOrigin})); - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app2.post('/', function (req, res) { - res.send(req.body); - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - describe('body-parser-events', function () { - describe('app1 (cors before bodyparser)', function () { - it('POST works', function (done) { - var body = { - example: text - }; - supertest(app1) - .post('/') - .send(body) - .expect(200) - .end(function (err, res) { - should.not.exist(err); - res.body.should.eql(body); - done(); - }); - }); - }); - - describe('app2 (bodyparser before cors)', function () { - it('POST works', function (done) { - var body = { - example: text - }; - supertest(app2) - .post('/') - .send(body) - .expect(200) - .end(function (err, res) { - should.not.exist(err); - res.body.should.eql(body); - done(); - }); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/cors.js b/node_modules/cors/test/cors.js deleted file mode 100644 index 046c812..0000000 --- a/node_modules/cors/test/cors.js +++ /dev/null @@ -1,600 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - cors = require('../lib'), - fakeRequest = function (headers) { - return { - headers: headers || { - 'origin': 'request.com', - 'access-control-request-headers': 'requestedHeader1,requestedHeader2' - }, - pause: function () { - // do nothing - return; - }, - resume: function () { - // do nothing - return; - } - }; - }, - fakeResponse = function () { - var headers = {}; - return { - allHeaders: function () { - return headers; - }, - getHeader: function (key) { - return headers[key]; - }, - setHeader: function (key, value) { - headers[key] = value; - return; - }, - get: function (key) { - return headers[key]; - } - }; - }; - - describe('cors', function () { - it('passes control to next middleware', function (done) { - // arrange - var req, res, next; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - done(); - }; - - // act - cors()(req, res, next); - }); - - it('shortcircuits preflight requests', function (done) { - // arrange - var req, res, next; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.statusCode.should.equal(204); - done(); - }; - next = function () { - // assert - done('should not be called'); - }; - - // act - cors()(req, res, next); - }); - - it('normalizes method names', function (done) { - // arrange - var req, res, next; - req = fakeRequest(); - req.method = 'options'; - res = fakeResponse(); - res.end = function () { - // assert - res.statusCode.should.equal(204); - done(); - }; - next = function () { - // assert - done('should not be called'); - }; - - // act - cors()(req, res, next); - }); - - it('no options enables default CORS to all origins', function (done) { - // arrange - var req, res, next; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('*'); - should.not.exist(res.getHeader('Access-Control-Allow-Methods')); - done(); - }; - - // act - cors()(req, res, next); - }); - - it('OPTION call with no options enables default CORS to all origins and methods', function (done) { - // arrange - var req, res, next; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.statusCode.should.equal(204); - done(); - }; - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('*'); - res.getHeader('Access-Control-Allow-Methods').should.equal('GET,PUT,PATCH,POST,DELETE'); - done(); - }; - - // act - cors()(req, res, next); - }); - - describe('passing static options', function () { - it('overrides defaults', function (done) { - // arrange - var req, res, next, options; - options = { - origin: 'example.com', - methods: ['FOO', 'bar'], - headers: ['FIZZ', 'buzz'], - credentials: true, - maxAge: 123 - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.statusCode.should.equal(204); - done(); - }; - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('example.com'); - res.getHeader('Access-Control-Allow-Methods').should.equal('FOO,bar'); - res.getHeader('Access-Control-Allow-Headers').should.equal('FIZZ,buzz'); - res.getHeader('Access-Control-Allow-Credentials').should.equal('true'); - res.getHeader('Access-Control-Allow-Max-Age').should.equal('123'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('origin of false disables cors', function (done) { - // arrange - var req, res, next, options; - options = { - origin: false, - methods: ['FOO', 'bar'], - headers: ['FIZZ', 'buzz'], - credentials: true, - maxAge: 123 - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - should.not.exist(res.getHeader('Access-Control-Allow-Origin')); - should.not.exist(res.getHeader('Access-Control-Allow-Methods')); - should.not.exist(res.getHeader('Access-Control-Allow-Headers')); - should.not.exist(res.getHeader('Access-Control-Allow-Credentials')); - should.not.exist(res.getHeader('Access-Control-Allow-Max-Age')); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('can override origin', function (done) { - // arrange - var req, res, next, options; - options = { - origin: 'example.com' - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('example.com'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('includes Vary header for specific origins', function (done) { - // arrange - var req, res, next, options; - options = { - origin: 'example.com' - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Vary').should.equal('Origin'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('appends to an existing Vary header', function (done) { - // arrange - var req, res, next, options; - options = { - origin: 'example.com' - }; - req = fakeRequest(); - res = fakeResponse(); - res.setHeader('Vary', 'Foo'); - next = function () { - // assert - res.getHeader('Vary').should.equal('Foo, Origin'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('origin defaults to *', function (done) { - // arrange - var req, res, next, options; - options = { - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('*'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('specifying true for origin reflects requesting origin', function (done) { - // arrange - var req, res, next, options; - options = { - origin: true - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('request.com'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('should allow origin when callback returns true', function (done) { - var req, res, next, options; - options = { - origin: function (sentOrigin, cb) { - sentOrigin.should.equal('request.com'); - cb(null, true); - } - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - res.getHeader('Access-Control-Allow-Origin').should.equal('request.com'); - done(); - }; - - cors(options)(req, res, next); - }); - - it('should not allow origin when callback returns false', function (done) { - var req, res, next, options; - options = { - origin: function (sentOrigin, cb) { - sentOrigin.should.equal('request.com'); - cb(null, false); - } - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - should.not.exist(res.getHeader('Access-Control-Allow-Origin')); - should.not.exist(res.getHeader('Access-Control-Allow-Methods')); - should.not.exist(res.getHeader('Access-Control-Allow-Headers')); - should.not.exist(res.getHeader('Access-Control-Allow-Credentials')); - should.not.exist(res.getHeader('Access-Control-Allow-Max-Age')); - done(); - }; - - cors(options)(req, res, next); - }); - - it('should not override options.origin callback', function (done) { - var req, res, next, options; - options = { - origin: function (sentOrigin, cb) { - var isValid = sentOrigin === 'request.com'; - cb(null, isValid); - } - }; - - req = fakeRequest(); - res = fakeResponse(); - next = function () { - res.getHeader('Access-Control-Allow-Origin').should.equal('request.com'); - }; - - cors(options)(req, res, next); - - req = fakeRequest({ - 'origin': 'invalid-request.com' - }); - res = fakeResponse(); - - next = function () { - should.not.exist(res.getHeader('Access-Control-Allow-Origin')); - should.not.exist(res.getHeader('Access-Control-Allow-Methods')); - should.not.exist(res.getHeader('Access-Control-Allow-Headers')); - should.not.exist(res.getHeader('Access-Control-Allow-Credentials')); - should.not.exist(res.getHeader('Access-Control-Allow-Max-Age')); - done(); - }; - - cors(options)(req, res, next); - }); - - - it('can override methods', function (done) { - // arrange - var req, res, next, options; - options = { - methods: ['method1', 'method2'] - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.statusCode.should.equal(204); - done(); - }; - next = function () { - // assert - res.getHeader('Access-Control-Allow-Methods').should.equal('method1,method2'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('methods defaults to GET, PUT, PATCH, POST, DELETE', function (done) { - // arrange - var req, res, next, options; - options = { - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.statusCode.should.equal(204); - done(); - }; - next = function () { - // assert - res.getHeader('Access-Control-Allow-Methods').should.equal('GET,PUT,PATCH,POST,DELETE'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('can specify allowed headers', function (done) { - // arrange - var req, res, options; - options = { - allowedHeaders: ['header1', 'header2'] - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.getHeader('Access-Control-Allow-Headers').should.equal('header1,header2'); - done(); - }; - - // act - cors(options)(req, res, null); - }); - - it('specifying an empty list or string of allowed headers will result in no response header for allowed headers', function (done) { - // arrange - var req, res, next, options; - options = { - allowedHeaders: [] - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - should.not.exist(res.getHeader('Access-Control-Allow-Headers')); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('if no allowed headers are specified, defaults to requested allowed headers', function (done) { - // arrange - var req, res, options; - options = { - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.getHeader('Access-Control-Allow-Headers').should.equal('requestedHeader1,requestedHeader2'); - done(); - }; - - // act - cors(options)(req, res, null); - }); - - it('can specify exposed headers', function (done) { - // arrange - var req, res, options, next; - options = { - exposedHeaders: ['custom-header1', 'custom-header2'] - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Access-Control-Expose-Headers').should.equal('custom-header1,custom-header2'); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('includes credentials if explicitly enabled', function (done) { - // arrange - var req, res, options; - options = { - credentials: true - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.getHeader('Access-Control-Allow-Credentials').should.equal('true'); - done(); - }; - - // act - cors(options)(req, res, null); - }); - - it('does not includes credentials unless explicitly enabled', function (done) { - // arrange - var req, res, next, options; - options = { - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - should.not.exist(res.getHeader('Access-Control-Allow-Credentials')); - done(); - }; - - // act - cors(options)(req, res, next); - }); - - it('includes maxAge when specified', function (done) { - // arrange - var req, res, options; - options = { - maxAge: 456 - }; - req = fakeRequest(); - req.method = 'OPTIONS'; - res = fakeResponse(); - res.end = function () { - // assert - res.getHeader('Access-Control-Max-Age').should.equal('456'); - done(); - }; - - // act - cors(options)(req, res, null); - }); - - it('does not includes maxAge unless specified', function (done) { - // arrange - var req, res, next, options; - options = { - }; - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - should.not.exist(res.getHeader('Access-Control-Allow-Max-Age')); - done(); - }; - - // act - cors(options)(req, res, next); - }); - }); - - describe('passing a function to build options', function () { - it('handles options specified via callback', function (done) { - // arrange - var req, res, next, delegate; - /*jslint unparam: true*/ // `req` is part of the signature, but not used in this route - delegate = function (req, cb) { - cb(null, { - origin: 'delegate.com' - }); - }; - /*jslint unparam: false*/ - req = fakeRequest(); - res = fakeResponse(); - next = function () { - // assert - res.getHeader('Access-Control-Allow-Origin').should.equal('delegate.com'); - done(); - }; - - // act - cors(delegate)(req, res, next); - }); - - it('handles error specified via callback', function (done) { - // arrange - var req, res, next, delegate; - /*jslint unparam: true*/ // `req` is part of the signature, but not used in this route - delegate = function (req, cb) { - cb('some error'); - }; - /*jslint unparam: false*/ - req = fakeRequest(); - res = fakeResponse(); - next = function (err) { - // assert - err.should.equal('some error'); - done(); - }; - - // act - cors(delegate)(req, res, next); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/error-response.js b/node_modules/cors/test/error-response.js deleted file mode 100644 index c900de2..0000000 --- a/node_modules/cors/test/error-response.js +++ /dev/null @@ -1,87 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true, setTimeout: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - express = require('express'), - supertest = require('supertest'), - cors = require('../lib'), - app; - - /* -------------------------------------------------------------------------- */ - - app = express(); - app.use(cors()); - - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app.post('/five-hundred', function (req, res, next) { - next(new Error('nope')); - }); - /*jslint unparam: false*/ - - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app.post('/four-oh-one', function (req, res, next) { - next(new Error('401')); - }); - /*jslint unparam: false*/ - - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app.post('/four-oh-four', function (req, res, next) { - next(); - }); - /*jslint unparam: false*/ - - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - app.use(function (err, req, res, next) { - if (err.message === '401') { - res.status(401).send('unauthorized'); - } else { - next(err); - } - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - describe('error response', function () { - it('500', function (done) { - supertest(app) - .post('/five-hundred') - .expect(500) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.startWith('Error: nope'); - done(); - }); - }); - - it('401', function (done) { - supertest(app) - .post('/four-oh-one') - .expect(401) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.eql('unauthorized'); - done(); - }); - }); - - it('404', function (done) { - supertest(app) - .post('/four-oh-four') - .expect(404) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - done(); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/example-app.js b/node_modules/cors/test/example-app.js deleted file mode 100644 index 656c648..0000000 --- a/node_modules/cors/test/example-app.js +++ /dev/null @@ -1,104 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - express = require('express'), - supertest = require('supertest'), - cors = require('../lib'), - simpleApp, - complexApp; - - /* -------------------------------------------------------------------------- */ - - simpleApp = express(); - /*jslint unparam: true*/ // `req` is part of the signature, but not used in these routes - simpleApp.head('/', cors(), function (req, res) { - res.status(204).send(); - }); - simpleApp.get('/', cors(), function (req, res) { - res.send('Hello World (Get)'); - }); - simpleApp.post('/', cors(), function (req, res) { - res.send('Hello World (Post)'); - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - complexApp = express(); - complexApp.options('/', cors()); - /*jslint unparam: true*/ // `req` is part of the signature, but not used in this route - complexApp.delete('/', cors(), function (req, res) { - res.send('Hello World (Delete)'); - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - describe('example app(s)', function () { - describe('simple methods', function () { - it('GET works', function (done) { - supertest(simpleApp) - .get('/') - .expect(200) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.eql('Hello World (Get)'); - done(); - }); - }); - it('HEAD works', function (done) { - supertest(simpleApp) - .head('/') - .expect(204) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - done(); - }); - }); - it('POST works', function (done) { - supertest(simpleApp) - .post('/') - .expect(200) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.eql('Hello World (Post)'); - done(); - }); - }); - }); - - describe('complex methods', function () { - it('OPTIONS works', function (done) { - supertest(complexApp) - .options('/') - .expect(204) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - done(); - }); - }); - it('DELETE works', function (done) { - supertest(complexApp) - .del('/') - .expect(200) - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.eql('Hello World (Delete)'); - done(); - }); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/issue-2.js b/node_modules/cors/test/issue-2.js deleted file mode 100644 index 52d4a96..0000000 --- a/node_modules/cors/test/issue-2.js +++ /dev/null @@ -1,60 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - express = require('express'), - supertest = require('supertest'), - cors = require('../lib'), - app, - corsOptions; - - /* -------------------------------------------------------------------------- */ - - app = express(); - corsOptions = { - origin: true, - methods: ['POST'], - credentials: true, - maxAge: 3600 - }; - app.options('/api/login', cors(corsOptions)); - /*jslint unparam: true*/ // `req` is part of the signature, but not used in this route - app.post('/api/login', cors(corsOptions), function (req, res) { - res.send('LOGIN'); - }); - /*jslint unparam: false*/ - - /* -------------------------------------------------------------------------- */ - - describe('issue #2', function () { - it('OPTIONS works', function (done) { - supertest(app) - .options('/api/login') - .expect(204) - .set('Origin', 'http://example.com') - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('http://example.com'); - done(); - }); - }); - it('POST works', function (done) { - supertest(app) - .post('/api/login') - .expect(200) - .set('Origin', 'http://example.com') - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('http://example.com'); - res.text.should.eql('LOGIN'); - done(); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/issue-31.js b/node_modules/cors/test/issue-31.js deleted file mode 100644 index 351dd19..0000000 --- a/node_modules/cors/test/issue-31.js +++ /dev/null @@ -1,60 +0,0 @@ -/*jslint indent: 2*/ -/*global require: true, module: true, describe: true, it: true*/ - -(function () { - - 'use strict'; - - var should = require('should'), - express = require('express'), - supertest = require('supertest'), - cors = require('../lib'), - app, - mainRouter, - itemsRouter; - - /* -------------------------------------------------------------------------- */ - - itemsRouter = express.Router(); - itemsRouter.get('/', function (req, res) { - res.send('hello world'); - }); - - mainRouter = express.Router(); - mainRouter.use('/items', itemsRouter); - - app = express(); - app.use(cors()); - app.use(mainRouter); - - /* -------------------------------------------------------------------------- */ - - describe('issue #31', function () { - it('OPTIONS works', function (done) { - supertest(app) - .options('/items') - .expect(204) - .set('Origin', 'http://example.com') - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - done(); - }); - }); - - it('GET works', function (done) { - supertest(app) - .get('/items') - .expect(200) - .set('Origin', 'http://example.com') - .end(function (err, res) { - should.not.exist(err); - res.headers['access-control-allow-origin'].should.eql('*'); - res.text.should.eql('hello world'); - done(); - }); - }); - }); - -}()); - diff --git a/node_modules/cors/test/mocha.opts b/node_modules/cors/test/mocha.opts deleted file mode 100644 index 780b796..0000000 --- a/node_modules/cors/test/mocha.opts +++ /dev/null @@ -1,3 +0,0 @@ ---ui bdd ---reporter spec ---require should diff --git a/public/controllers/controller.js b/public/controllers/controller.js index b7f3d72..950e4ec 100755 --- a/public/controllers/controller.js +++ b/public/controllers/controller.js @@ -27,9 +27,6 @@ details: "" } }); - - - }; $scope.updateTask = function(task) { diff --git a/public/index.html b/public/index.html index b4d8563..6f76a73 100755 --- a/public/index.html +++ b/public/index.html @@ -27,20 +27,21 @@ display:inline; Tasks + Actions - + -
    {{todo.taskname}}
+
    {{todo.taskname}}
diff --git a/server.js b/server.js index 2ee6253..ecb8f35 100755 --- a/server.js +++ b/server.js @@ -1,66 +1,131 @@ -var express = require('express'); -var app = express(); -var mongoose = require('mongoose'); -var Schema = mongoose.Schema; -var cors = require('cors'); - -app.use(cors()); - -var bodyParser = require('body-parser'); - -mongoose.connect('mongodb://127.0.0.1:27017/TodoAppDB'); - -app.use(express.static(__dirname + '/public')); -app.use(bodyParser.json()); - -// define DB -var schema = new Schema({ - taskname: String, - Done: Boolean, - details: String -}); - -var Todo = mongoose.model('tasks', schema); - -app.get('/todolist', function(req, res) { - console.log("I recived a get request."); - - Todo.find(function(err, tasks) { - res.json(tasks); - }); - -}); - -app.post('/todolist', function(req, res) { - Todo.create(req.body, function(err, tasks) { - res.json(tasks); - }); -}); - -app.put('/todolist/:id', function(req, res){ - console.log(req.body); - Todo.update({_id:req.params.id},req.body,{upsert:true},function(err) { - if(!err) { - res.send('updated'); - } - else { - console.log(err); - res.send(404); - } - }); -}); - -app.delete('/todolist/:id', function(req, res){ - Todo.remove({_id: req.params.id}, function(err) { - if(!err) { - res.send('deleted'); - } - else { - console.log(err); - res.send(404); - } - }); -}); - -app.listen(8080); +var express = require('express'); +var app = express(); +var mongoose = require('mongoose'); +var Schema = mongoose.Schema; + +var bodyParser = require('body-parser'); +//var methodOverride = require('method-override'); + +mongoose.connect('mongodb://127.0.0.1:27017/TodoAppDB'); + +app.use(express.static(__dirname + '/public')); +app.use(bodyParser.json()); +//app.use(methodOverride()); + +//============================================================================= +// define Schema for all table in the DB + +//tasks Schema +var TaskSchema = new Schema({ + task_name: String, + task_status: Boolean, + DueDate: Date, + Project_id: { type: Schema.Types.ObjectId, ref: 'Project' } + //CreatedById: [{ type: Schema.Types.ObjectId, ref: 'User' }] +}); + +var Task = mongoose.model('tasks', TaskSchema); // task model + +//projects Schema +var ProjectSchema = new Schema({ + project_name: String, + //CreatedById: [{ type: Schema.Types.ObjectId, ref: 'User' }], + project_status: Boolean +}); + +var Project = mongoose.model('projects', ProjectSchema); + + +//=============================================================================== + +//Task query + +app.get('/tasks', function(req, res) { + console.log("I recived a get request."); + + Task.find().exec(function(err, tasks) { + res.json(tasks); + }); + +}); + +app.post('/tasks', function(req, res) { + Task.create(req.body, function(err, tasks) { + res.json(tasks); + }); +}); + +app.put('/tasks/:id', function(req, res){ + console.log(req.body); + Task.update({_id:req.params.id},req.body,{upsert:true},function(err) { + if(!err) { + res.send('updated'); + } + else { + console.log(err); + res.send(404); + } + }); +}); + +app.delete('/tasks/:id', function(req, res){ + Task.remove({_id: req.params.id}, function(err) { + if(!err) { + res.send('deleted'); + } + else { + console.log(err); + res.send(404); + } + }); +}); + +// ================================================================================== +//Projects query + +app.get('/projects', function(req, res) { + + Project.find().exec(function(err, projects) { + res.json(projects); + }); + +}); + +app.post('/projects', function(req, res) { + Project.create(req.body, function(err, projects) { + res.json(projects); + }); +}); + +app.put('/projects/:id', function(req, res){ + console.log(req.body); + Project.update({_id:req.params.id},req.body,{upsert:true},function(err) { + if(!err) { + res.send('updated'); + } + else { + console.log(err); + res.send(404); + } + }); +}); + +app.delete('/projects/:id', function(req, res){ + Project.remove({_id: req.params.id}, function(err) { + if(!err) { + res.send('deleted'); + } + else { + console.log(err); + res.send(404); + } + }); +}); + +// ================================================================================== + + + + +app.listen(8080); console.log("Server started on port 8080..."); \ No newline at end of file -- libgit2 0.21.0