UNPKG

yahoi

Version:

Yet Another Highly Opinionated Isomorphic Framework

243 lines (205 loc) 6.87 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _ParameterBag = require('./ParameterBag'); var _ParameterBag2 = _interopRequireDefault(_ParameterBag); var _joi = require('joi'); var _joi2 = _interopRequireDefault(_joi); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _Renderer = require('./Renderer'); var Renderer = _interopRequireWildcard(_Renderer); var _ResponderTypes = require('./ResponderTypes'); var Responders = _interopRequireWildcard(_ResponderTypes); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ActionContext = function () { function ActionContext(props) { _classCallCheck(this, ActionContext); this.res = props.res; this.req = props.req; this.action = props.action; this.controller = props.controller; this.response = null; this.renderer = props.renderer; this.app = props.app; this.config = props.config; this.__reject = props.reject; this.parameterBag = new _ParameterBag2.default({ parameters: props.req.query, body: props.req.body, routeParams: typeof props.match != 'undefined' ? props.match.match : {}, autoReject: this.autoValidationReject.bind(this) }); this.Joi = _joi2.default; this.__send = props.send; this.__sendHasBeenCalled = false; } // String _createClass(ActionContext, [{ key: 'renderString', value: function renderString(str, data) { return new Renderer.StringRenderer({ string: str, data: data }).render(); } }, { key: 'sendString', value: function sendString(str, data) { var _this = this; this.renderString(str, data).then(function (renderedString) { var Responder = new Responders.StringResponder({ string: renderedString }); _this.response = Responder; _this.__send(_this); }).catch(function (e) { _this.__send(String(e)); }); } // Raw }, { key: 'send', value: function send(body) { try { var Responder = new Responders.RawResponder({ body: body }); this.response = Responder; this.__send(this); } catch (e) { this.__send(String(e)); } } // Json }, { key: 'renderJson', value: function renderJson(data) { return new Renderer.JsonRenderer({ data: data }).render(); } }, { key: 'sendJson', value: function sendJson(data) { var _this2 = this; this.renderJson(data).then(function (renderedJson) { var Responder = new Responders.JsonResponder({ data: renderedJson }); _this2.response = Responder; _this2.__send(_this2); }).catch(function (e) { _this2.__send(String(e)); }); } // View }, { key: 'renderView', value: function renderView(templatePath, data) { return new Renderer.ViewRenderer({ filePath: _path2.default.resolve(this.controller.getViewDirectory(), templatePath), data: data }).render(); } }, { key: 'sendView', value: function sendView(templatePath, data) { var _this3 = this; this.renderView(templatePath, data).then(function (renderedView) { var Responder = new Responders.ViewResponder({ body: renderedView }); _this3.response = Responder; _this3.__send(_this3); }).catch(function (e) { _this3.__send(String(e)); }); } //Client }, { key: 'renderClient', value: function renderClient(props) { console.log('r c'); return new Renderer.ClientRenderer({ projectPath: _path2.default.resolve(this.controller.getProjectDirectory()), state: props.state || {}, req: this.req, targetView: props.view || 'Client/index' }).render(); } }, { key: 'sendClient', value: function sendClient(props) { var _this4 = this; this.renderClient(props).then(function (renderedClient) { var Responder = new Responders.ClientResponder({ body: renderedClient }); _this4.response = Responder; _this4.__send(_this4); }).catch(function (e) { _this4.__send(String(e)); }); } }, { key: 'require', value: function require(schema) { this.parameterBag.setSchema(schema); } }, { key: 'autoValidationReject', value: function autoValidationReject(validationResult) { this.sendJson({ validationResult: validationResult }); } }, { key: 'getEnvironment', value: function getEnvironment() { return this.app.getEnvironment(); } }, { key: 'getService', value: function getService(name) { return this.app.getService(name); } /* sendComponent(componentPath) { this.response = new ResponseTypes.RenderComponent(path.resolve(this.controller.getComponentDirectory(), componentPath)) this.__send(this); } */ }, { key: 'setResponse', value: function setResponse(response) { this.response = response; } }, { key: 'getResponse', value: function getResponse() { return this.response; } }, { key: 'redirect', value: function redirect(url, props) { var Responder = new Responders.RedirectResponder({ url: url }); this.response = Responder; this.__send(this); } }, { key: 'reject', value: function reject(e) { this.__reject(e); } }, { key: 'run', value: function run() { try { this.action(this.parameterBag); } catch (e) { console.log('rejecting due to error'); this.__reject(e); } } }]); return ActionContext; }(); exports.default = ActionContext;