UNPKG

sbis3-node-ws

Version:

Модуль позволяет использовать ядро интерфейсного фреймворка sbis3-ws(`core.js`) и модуль работы с данными (`Source.js`) в приложении на nodejs.

79 lines (72 loc) 2.35 kB
define('js!Core/tmpl/js/helpers/requireFile', ['js!Core/tmpl/js/helpers/utils', 'js!Core/tmpl/js/helpers/State', 'js!Core/tmpl/js/helpers/errorHandling'], function requireFileLoader(utils, State, errorHandling) { 'use strict'; return function requireFile(url) { var isNode = utils.isNode(), resolver = function resolver(templatePath, ext) { return templatePath + '.' + ext; }, pathResolver = (this.resolver !== undefined) ? this.resolver : resolver, path = pathResolver(url, 'tmpl'); /** * If not node environment -> create empty requirejs module * */ if (isNode === false) { define('fs', function restrainFs() { return {}; }); } /** * Create XMLHttpRequest * @param {String} url * @return {Object} XMLHttpRequest */ function createRequest(url) { var request = new XMLHttpRequest(); request.open('GET', url); request.send(); return request; } /** * Read file with help of FileSystemApi * @param {String} url * @return {Object} State promise */ function readFileFs(url) { var fs, state = State.make(); try { fs = requirejs('fs'); } catch (e) { errorHandling("There is no requirejs for node included"); } fs.readFile(url, function readFileCallback(err, data) { if (err) { state.break(err); } else { state.keep(this.parse(data)); } }.bind(this)); return state.promise; } /** * Read file with XMLHttpRequest * @param {String} url * @return {Object} State Promise */ function readFileXMLHttpRequest(url) { var state = State.make(), req = createRequest(url); req.onreadystatechange = function requestHandler() { if (req.readyState === 4 && req.status === 200) { state.keep(this.parse(req.responseText)); } }.bind(this); return state.promise; } if (isNode) { return readFileFs.call(this, path); } return readFileXMLHttpRequest.call(this, path); }; });