summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/node_modules/okadminview/index.js28
-rw-r--r--app/node_modules/okadminview/package.json1
-rw-r--r--app/node_modules/okquery/index.js9
-rw-r--r--app/node_modules/okquery/package.json1
-rw-r--r--app/node_modules/okserver/index.js10
5 files changed, 28 insertions, 21 deletions
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js
index a376df5..05e2251 100644
--- a/app/node_modules/okadminview/index.js
+++ b/app/node_modules/okadminview/index.js
@@ -1,4 +1,5 @@
-var assign = require('object-assign')
+var assign = require('object-assign');
+var cloneDeep = require('lodash.clonedeep');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var Q = require('q');
@@ -22,12 +23,14 @@ function OKAdminView(options) {
throw new Error('No templateProvider provided to OKAdminView');
if (!options.meta)
throw new Error('No meta query provided to OKAdminView');
+
var app = options.app;
var express = options.express;
var meta = options.meta;
var resourceCache = this._resourceCache = options.resourceCache;
- var resourceConfig = this._resourceConfig = options.resourceConfig;
+ var resourceConfig = this._resourceConfig = cloneDeep(options.resourceConfig);
var provider = options.templateProvider;
+
// Load templates
var templates = this._templates =
['index', 'resource', 'resource_new'].reduce(function(cache, name) {
@@ -37,6 +40,7 @@ function OKAdminView(options) {
cache[name] = template;
return cache;
}, {});
+
// OKAdmin middleware is a router, so mounts on 'use'
Object.defineProperty(this, 'mount', {
value: 'use',
@@ -120,13 +124,14 @@ function OKAdminView(options) {
resource: resource,
query: id
});
- fetchResourceTemplateData(meta, query, getResourceTemplateData).then(function(data) {
- if (!data) {
- resourceMissingHandler(req, res)()
- } else {
- view.renderResource(req, res, data);
- }
- }).fail(errorHandler(req, res));
+ fetchResourceTemplateData(meta, query, getResourceTemplateData)
+ .then(function(data) {
+ if (!data) {
+ resourceMissingHandler(req, res)()
+ } else {
+ view.renderResource(req, res, data);
+ }
+ }).fail(errorHandler(req, res));
}
});
@@ -201,6 +206,7 @@ function getResourceTemplateData(meta, resource, data) {
meta = meta || {};
resource = resource || {};
data = data || {};
+ // Decorate spec with actual resource values
var spec = Object.keys(resource.spec).reduce(function(cache, prop) {
var value = data[prop];
cache[prop].value = value;
@@ -245,7 +251,7 @@ OKAdminView.prototype.renderResourceNew = function(req, res, data) {
* Annotate template data with schema info
*/
function fetchIndexTemplateData(meta, queries) {
- return Q.Promise(function(resolve, reject) {
+ return Q.promise(function(resolve, reject) {
Q.all([meta.get()].concat(queries.map(function(query) {
return query.get();
}))).then(function(results) {
@@ -293,7 +299,7 @@ function fetchIndexTemplateData(meta, queries) {
*/
function fetchResourceTemplateData(meta, query, fn) {
fn = fn || function(m, r, d) { return {meta: m, resource: d}; };
- return Q.Promise(function(resolve, reject) {
+ return Q.promise(function(resolve, reject) {
meta.get().then(function(metadata) {
query.get().then(function(data) {
var resource = query.resource;
diff --git a/app/node_modules/okadminview/package.json b/app/node_modules/okadminview/package.json
index 4832db1..c428645 100644
--- a/app/node_modules/okadminview/package.json
+++ b/app/node_modules/okadminview/package.json
@@ -10,6 +10,7 @@
"license": "None",
"dependencies": {
"body-parser": "^1.12.2",
+ "lodash.clonedeep": "^3.0.0",
"method-override": "^2.3.2",
"object-assign": "^2.0.0",
"pluralize": "^1.1.2",
diff --git a/app/node_modules/okquery/index.js b/app/node_modules/okquery/index.js
index 2d93e2a..89c8b73 100644
--- a/app/node_modules/okquery/index.js
+++ b/app/node_modules/okquery/index.js
@@ -1,3 +1,4 @@
+var cloneDeep = require('lodash.clonedeep');
var assign = require('object-assign');
var isobject = require('lodash.isobject');
var Q = require('q');
@@ -16,6 +17,9 @@ function OKQuery(options) {
var resource = options.resource;
var type = resource.type;
var query = options.query || '*';
+ // Ensure immutability
+ if (isobject(query))
+ query = cloneDeep(query);
Object.defineProperty(this, 'resource', {
value: resource,
@@ -55,6 +59,9 @@ function createQuery(resource, query, options) {
function queryComplex(resource, query) {
var dynamicProp;
+ // Query is an object specifying key value pairs against which
+ // to match DB entries. Iterate through and check if any of the values
+ // is unbound e.g. :id
var notDynamic = Object.keys(query).every(function(prop) {
var matcher = query[prop];
if (isDynamic(matcher)) {
@@ -71,6 +78,8 @@ function queryComplex(resource, query) {
}
} else {
return function(id) {
+ // Bind the dynamic property to its value
+ // and add the pair to the query
var dynamicQuery = {};
dynamicQuery[dynamicProp] = id;
var query = assign({}, query, dynamicQuery);
diff --git a/app/node_modules/okquery/package.json b/app/node_modules/okquery/package.json
index 606d45b..5ba9dd5 100644
--- a/app/node_modules/okquery/package.json
+++ b/app/node_modules/okquery/package.json
@@ -9,6 +9,7 @@
"author": "OKFocus",
"license": "None",
"dependencies": {
+ "lodash.clonedeep": "^3.0.0",
"lodash.isobject": "^3.0.1",
"object-assign": "^2.0.0",
"q": "^1.2.0"
diff --git a/app/node_modules/okserver/index.js b/app/node_modules/okserver/index.js
index 1645eaa..cf06b3c 100644
--- a/app/node_modules/okserver/index.js
+++ b/app/node_modules/okserver/index.js
@@ -67,16 +67,6 @@ function OKServer(options) {
// Make sure this lady is last. Checks whether the desired
// route has a trailing-slash counterpart and redirects there
app.use(slash());
-
- /**
- * Create a handler which redirect all requests to
- * the same route with a trailing slash appended
- */
- function redirect(routeNoSlash) {
- return function(req, res) {
- res.redirect(301, routeNoSlash + '/');
- }
- }
}
OKServer.prototype.listen = function listen(port) {