UNPKG

devshare

Version:

Library to communicate with devshare development sharing platform.

121 lines (102 loc) 3.43 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _isArray2 = require('lodash/isArray'); var _isArray3 = _interopRequireDefault(_isArray2); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.modeFromFileExtension = modeFromFileExtension; var _entity = require('./entity'); var _entity2 = _interopRequireDefault(_entity); var _firebaser = require('../../utils/firebaser'); var _firepader = require('../../utils/firepader'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (projectPath, filePath) { var pathArray = (0, _isArray3.default)(filePath) ? filePath : filePath.split('/'); var path = pathArray.join('/'); var fullPath = projectPath.concat(pathArray); var name = pathArray[pathArray.length - 1]; var methods = { /** * @description File's extension * @return {String} */ get ext() { var re = /(?:\.([^.]+))?$/; return re.exec(name)[1]; }, /** * @description File's syntaxMode for CodeMirror * @return {String} */ get syntaxMode() { return modeFromFileExtension(this.ext); }, /** * @description Set string content of file * @return {String} */ // TODO: Set content using firepad if available, or fall back to server endpoint setContent: function setContent(original) { return (0, _firebaser.set)(fullPath)({ meta: { path: path, name: name }, original: original }); }, /** * @description Get string content of file * @return {String} */ getContent: function getContent() { return (0, _firebaser.createFirebaseRef)(fullPath)().once('value').then(function (snap) { if (!snap || !snap.val()) return Promise.reject({ message: 'Entity does not exist.' }); // Load file from original content if no firepad history available if (snap.hasChild('original') && !snap.hasChild('history')) { undefined.content = snap.child('original').val(); /* istanbul ignore next */ return undefined.content; } return (0, _firepader.getTextFromRef)(snap.ref); }); } }; return _extends({}, (0, _entity2.default)(projectPath, filePath, 'file'), methods); }; /** * @description Get a file's CodeMirror syntax mode based on its file extension * @return {String} */ /* istanbul ignore next */ function modeFromFileExtension(mode) { switch (mode) { case 'js': case 'json': case 'ts': return 'javascript'; case 'html': return 'htmlmixed'; case 'scss': return 'text/x-scss'; case 'less': return 'text/x-less'; case 'ejs': return 'application/x-ejs'; case 'md': return 'markdown'; case 'yml': return 'yaml'; case 'java': return 'text/x-java'; case 'scala': return 'text/x-scala'; case 'c': case 'h': return 'text/x-csrc'; case 'cc': return 'text/x-c++src'; case 'm': return 'text/x-objectivec'; case 'py': return { name: 'python', version: 3, singleLineStringErrors: false }; case 'sh': return 'shell'; default: return mode; } }