json-server
Advanced tools
Comparing version 0.7.2 to 0.7.3
{ | ||
"name": "json-server", | ||
"version": "0.7.2", | ||
"version": "0.7.3", | ||
"description": "Serves JSON files through REST routes.", | ||
@@ -21,4 +21,2 @@ "main": "./src/index.js", | ||
"node-uuid": "^1.4.2", | ||
"serve-static": "^1.6.1", | ||
"superagent": "^0.15.7", | ||
"underscore": "^1.5.2", | ||
@@ -25,0 +23,0 @@ "underscore-db": "^0.8.0", |
@@ -53,7 +53,8 @@ # JSON Server [![](https://travis-ci.org/typicode/json-server.svg)](https://travis-ci.org/typicode/json-server) [![](https://badge.fury.io/js/json-server.svg)](http://badge.fury.io/js/json-server) | ||
To slice resources, add `_start` and `_end`. An `X-Total-Count` header is included in the response. | ||
To slice resources, add `_start` and `_end` or `_limit`. An `X-Total-Count` header is included in the response. | ||
``` | ||
GET /posts?_start=0&_end=10 | ||
GET /posts/1/comments?_start=0&_end=10 | ||
GET /posts?_start=20&_end=30 | ||
GET /posts?_start=20&_limit=10 | ||
GET /posts/1/comments?_start=20&_end=30 | ||
``` | ||
@@ -60,0 +61,0 @@ |
var fs = require('fs') | ||
var express = require('express') | ||
var logger = require('morgan') | ||
var cors = require('cors') | ||
var serveStatic = require('serve-static') | ||
var errorhandler = require('errorhandler') | ||
@@ -16,5 +16,5 @@ | ||
if (fs.existsSync(process.cwd() + '/public')) { | ||
arr.push(serveStatic(process.cwd() + '/public')); | ||
arr.push(express.static(process.cwd() + '/public')); | ||
} else { | ||
arr.push(serveStatic(__dirname + '/public')); | ||
arr.push(express.static(__dirname + '/public')); | ||
} | ||
@@ -21,0 +21,0 @@ |
@@ -10,3 +10,3 @@ var express = require('express') | ||
low.mixin(require('underscore.inflections')) | ||
low.mixin({ createId: utils.createId }) | ||
low.mixin({createId: utils.createId}) | ||
@@ -19,3 +19,3 @@ module.exports = function(source) { | ||
router.use(bodyParser.json({limit: '10mb'})) | ||
router.use(bodyParser.urlencoded({ extended: false })) | ||
router.use(bodyParser.urlencoded({extended: false})) | ||
router.use(methodOverride()) | ||
@@ -57,3 +57,3 @@ | ||
// Remove _start and _end from req.query to avoid filtering using those | ||
// Remove _start, _end and _limit from req.query to avoid filtering using those | ||
// parameters | ||
@@ -64,3 +64,3 @@ var _start = req.query._start | ||
var _order = req.query._order | ||
var _limit = req.query._limit | ||
delete req.query._start | ||
@@ -70,2 +70,3 @@ delete req.query._end | ||
delete req.query._order | ||
delete req.query._limit | ||
@@ -90,3 +91,3 @@ if (req.query.q) { | ||
if (req.params.parent) { | ||
filters[req.params.parent.slice(0, - 1) + 'Id'] = +req.params.parentId | ||
filters[req.params.parent.slice(0, -1) + 'Id'] = +req.params.parentId | ||
} | ||
@@ -113,3 +114,3 @@ | ||
// Sort | ||
if(_sort) { | ||
if (_sort) { | ||
_order = _order || 'ASC' | ||
@@ -127,9 +128,14 @@ | ||
// Slice result | ||
if (_end) { | ||
if (_end || _limit) { | ||
res.setHeader('X-Total-Count', array.length) | ||
res.setHeader('Access-Control-Expose-Headers', 'X-Total-Count') | ||
} | ||
_start = _start || 0 | ||
_start = parseInt(_start) || 0 | ||
array = array.slice(_start, _end) | ||
if (_end) { | ||
array = array.slice(_start, parseInt(_end)) | ||
} else if (_limit) { | ||
// Convert strings to int and sum to get end value | ||
array = array.slice(_start, parseInt(_start) + parseInt(_limit)) | ||
} | ||
@@ -136,0 +142,0 @@ |
@@ -52,3 +52,3 @@ var _ = require('underscore') | ||
if (/Id$/.test(key)) { | ||
var refName = _.pluralize(key.slice(0, - 2)) | ||
var refName = _.pluralize(key.slice(0, -2)) | ||
// Test if table exists | ||
@@ -59,3 +59,3 @@ if (db[refName]) { | ||
if (_.isUndefined(ref)) { | ||
removable.push({ name: collName, id: doc.id }) | ||
removable.push({name: collName, id: doc.id}) | ||
} | ||
@@ -62,0 +62,0 @@ } |
var request = require('supertest') | ||
var assert = require('assert') | ||
var jsonServer = require('../src/') | ||
var assert = require('assert') | ||
var jsonServer = require('../src/') | ||
var utils = require('../src/utils') | ||
describe('Server', function() { | ||
@@ -26,7 +26,7 @@ | ||
db.comments = [ | ||
{id: 1, published: true, postId: 1}, | ||
{id: 1, published: true, postId: 1}, | ||
{id: 2, published: false, postId: 1}, | ||
{id: 3, published: false, postId: 2}, | ||
{id: 4, published: false, postId: 2}, | ||
{id: 5, published: false, postId: 2}, | ||
{id: 5, published: false, postId: 2} | ||
] | ||
@@ -93,7 +93,7 @@ | ||
it('should return an empty array when nothing is matched', function(done) { | ||
request(server) | ||
.get('/tags?q=nope') | ||
.expect('Content-Type', /json/) | ||
.expect([]) | ||
.expect(200, done) | ||
request(server) | ||
.get('/tags?q=nope') | ||
.expect('Content-Type', /json/) | ||
.expect([]) | ||
.expect(200, done) | ||
}) | ||
@@ -115,25 +115,25 @@ }) | ||
describe('GET /:resource?sort=', function() { | ||
it('should respond with json and sort on a field', function(done) { | ||
request(server) | ||
.get('/tags?_sort=body') | ||
.expect('Content-Type', /json/) | ||
.expect([db.tags[1], db.tags[0], db.tags[2]]) | ||
.expect(200, done) | ||
}) | ||
it('should respond with json and sort on a field', function(done) { | ||
request(server) | ||
.get('/tags?_sort=body') | ||
.expect('Content-Type', /json/) | ||
.expect([db.tags[1], db.tags[0], db.tags[2]]) | ||
.expect(200, done) | ||
}) | ||
it('should reverse sorting with _order=DESC', function(done) { | ||
request(server) | ||
.get('/tags?_sort=body&_order=DESC') | ||
.expect('Content-Type', /json/) | ||
.expect([db.tags[2], db.tags[0], db.tags[1]]) | ||
.expect(200, done) | ||
}) | ||
it('should reverse sorting with _order=DESC', function(done) { | ||
request(server) | ||
.get('/tags?_sort=body&_order=DESC') | ||
.expect('Content-Type', /json/) | ||
.expect([db.tags[2], db.tags[0], db.tags[1]]) | ||
.expect(200, done) | ||
}) | ||
it('should sort on numerical field', function(done) { | ||
request(server) | ||
.get('/posts?_sort=id&_order=DESC') | ||
.expect('Content-Type', /json/) | ||
.expect(db.posts.reverse()) | ||
.expect(200, done) | ||
}) | ||
it('should sort on numerical field', function(done) { | ||
request(server) | ||
.get('/posts?_sort=id&_order=DESC') | ||
.expect('Content-Type', /json/) | ||
.expect(db.posts.reverse()) | ||
.expect(200, done) | ||
}) | ||
}) | ||
@@ -153,2 +153,14 @@ | ||
describe('GET /:resource?_start=&_limit=', function() { | ||
it('should respond with a limited array', function(done) { | ||
request(server) | ||
.get('/comments?_start=1&_limit=1') | ||
.expect('Content-Type', /json/) | ||
.expect('x-total-count', db.comments.length.toString()) | ||
.expect('Access-Control-Expose-Headers', 'X-Total-Count') | ||
.expect(db.comments.slice(1, 2)) | ||
.expect(200, done) | ||
}) | ||
}) | ||
describe('GET /:parent/:parentId/:resource', function() { | ||
@@ -161,3 +173,4 @@ it('should respond with json and corresponding nested resources', function(done) { | ||
db.comments[0], | ||
db.comments[1] | ||
db.comments[1], | ||
]) | ||
@@ -204,3 +217,3 @@ .expect(200, done) | ||
.expect(200) | ||
.end(function(err, res){ | ||
.end(function(err, res) { | ||
if (err) return done(err) | ||
@@ -219,3 +232,3 @@ assert.equal(db.posts.length, 3) | ||
.expect(200) | ||
.end(function(err, res){ | ||
.end(function(err, res) { | ||
if (err) return done(err) | ||
@@ -236,3 +249,3 @@ assert.equal(db.refs.length, 2) | ||
.expect(200) | ||
.end(function(err, res){ | ||
.end(function(err, res) { | ||
if (err) return done(err) | ||
@@ -263,3 +276,3 @@ // assert it was created in database too | ||
.expect(200) | ||
.end(function(err, res){ | ||
.end(function(err, res) { | ||
if (err) return done(err) | ||
@@ -288,3 +301,3 @@ // assert it was created in database too | ||
.expect(200) | ||
.end(function(err, res){ | ||
.end(function(err, res) { | ||
if (err) return done(err) | ||
@@ -291,0 +304,0 @@ assert.equal(db.posts.length, 1) |
var assert = require('assert') | ||
var utils = require('../src/utils') | ||
var utils = require('../src/utils') | ||
@@ -23,4 +23,4 @@ describe('utils', function() { | ||
var expected = [ | ||
{ name: 'comments', id: 2 }, | ||
{ name: 'comments', id: 3 } | ||
{name: 'comments', id: 2}, | ||
{name: 'comments', id: 3} | ||
] | ||
@@ -27,0 +27,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
29959
15
687
171
- Removedserve-static@^1.6.1
- Removedsuperagent@^0.15.7
- Removedcookiejar@1.3.0(transitive)
- Removeddebug@0.7.4(transitive)
- Removedemitter-component@1.0.0(transitive)
- Removedformidable@1.0.14(transitive)
- Removedmethods@0.0.1(transitive)
- Removedmime@1.2.5(transitive)
- Removedqs@0.6.5(transitive)
- Removedreduce-component@1.0.1(transitive)
- Removedsuperagent@0.15.7(transitive)