UNPKG

@resin/pinejs

Version:

Pine.js is a sophisticated rules-driven API engine that enables you to define rules in a structured subset of English. Those rules are used in order for Pine.js to generate a database schema and the associated [OData](http://www.odata.org/) API. This make

203 lines (199 loc) 6.56 kB
// Generated by CoffeeScript 1.12.7 (function() { var slice = [].slice; define(['bluebird', 'lodash'], function(Promise, _) { var app, express; if (typeof window !== "undefined" && window !== null) { window.GLOBAL_PERMISSIONS = ['resource.all']; } app = (function() { var addHandler, appVars, enabled, handlers, process; enabled = {}; enabled.promise = new Promise(function(resolve) { return enabled.resolve = resolve; }); appVars = { env: 'development' }; handlers = { USE: [], POST: [], PUT: [], DELETE: [], GET: [], PATCH: [], MERGE: [], OPTIONS: [] }; addHandler = function() { var handlerName, match, middleware, newMatch, paramMatch, paramName; handlerName = arguments[0], match = arguments[1], middleware = 3 <= arguments.length ? slice.call(arguments, 2) : []; match = match.toLowerCase(); newMatch = match.replace(/[\/\*]*$/, ''); if (newMatch !== match) { match = newMatch; paramName = '*'; } else { paramMatch = /:(.*)$/.exec(match); paramName = paramMatch == null ? null : paramMatch[1]; } return handlers[handlerName].push({ match: match, paramName: paramName, middleware: _.flattenDeep(middleware) }); }; process = function(method, uri, headers, body) { var req; if (body == null) { body = ''; } if (!handlers[method]) { return Promise.rejected(404); } req = { user: { permissions: window.GLOBAL_PERMISSIONS }, method: method, body: body, headers: headers, url: uri, params: {}, query: {}, login: function(user, callback) { return callback(); } }; console.log(method, uri, body); if (uri.slice(-1) === '/') { uri = uri.slice(0, uri.length - 1); } uri = uri.toLowerCase(); return new Promise(function(resolve, reject) { var checkMethodHandlers, i, j, methodHandlers, next, res; res = { statusCode: 200, status: function(statusCode1) { this.statusCode = statusCode1; return this; }, json: function(obj) { obj = JSON.parse(JSON.stringify(obj)); if (this.statusCode >= 400) { return reject([this.statusCode, obj, null]); } else { return resolve([this.statusCode, obj, null]); } }, send: function(data) { data = _.cloneDeep(data); if (this.statusCode >= 400) { return reject([this.statusCode, data, null]); } else { return resolve([this.statusCode, data, null]); } }, sendStatus: function(statusCode) { if (statusCode == null) { statusCode = this.statusCode; } if (statusCode >= 400) { return reject([statusCode, null, null]); } else { return resolve([statusCode, null, null]); } }, redirect: function() { return reject([307]); }, set: function() {}, type: function() {} }; methodHandlers = handlers.USE.concat(handlers[method]); i = -1; j = -1; next = function(route) { j++; if (route === 'route' || j >= methodHandlers[i].middleware.length) { return checkMethodHandlers(); } else { return methodHandlers[i].middleware[j](req, res, next); } }; checkMethodHandlers = function() { i++; if (i < methodHandlers.length) { if (uri.slice(0, methodHandlers[i].match.length) === methodHandlers[i].match) { j = -1; req.params = {}; if (methodHandlers[i].paramName != null) { req.params[methodHandlers[i].paramName] = uri.slice(methodHandlers[i].match.length); return next(); } else if (uri.length !== methodHandlers[i].match.length) { return checkMethodHandlers(); } else { return next(); } } else { return checkMethodHandlers(); } } else { return res.sendStatus(404); } }; return checkMethodHandlers(); }); }; return { use: _.partial(addHandler, 'USE', '/*'), get: function() { var callback, name; name = arguments[0], callback = arguments[arguments.length - 1]; if (_.isFunction(callback)) { return addHandler.apply(null, ['GET'].concat(slice.call(arguments))); } else { return appVars[name]; } }, post: _.partial(addHandler, 'POST'), put: _.partial(addHandler, 'PUT'), "delete": _.partial(addHandler, 'DELETE'), patch: _.partial(addHandler, 'PATCH'), merge: _.partial(addHandler, 'MERGE'), options: _.partial(addHandler, 'OPTIONS'), all: function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; this.post.apply(this, args); this.get.apply(this, args); this.put.apply(this, args); return this["delete"].apply(this, args); }, process: function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return enabled.promise.then(function() { return process.apply(null, args); }); }, listen: function() { var callback; callback = arguments[arguments.length - 1]; enabled.resolve(); if (_.isFunction(callback)) { return enabled.promise.then(callback); } }, set: function(name, value) { return appVars[name] = value; } }; })(); express = function() { return app; }; return express; }); }).call(this); //# sourceMappingURL=express.js.map