devshare
Version:
Library to communicate with devshare development sharing platform.
110 lines (84 loc) • 3.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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; };
var _file2 = require('./file');
var _file3 = _interopRequireDefault(_file2);
var _entity2 = require('./entity');
var _entity3 = _interopRequireDefault(_entity2);
var _folder2 = require('./folder');
var _folder3 = _interopRequireDefault(_folder2);
var _config = require('../../config');
var _zipper = require('../../utils/zipper');
var _firebaser = require('../../utils/firebaser');
var _firebaser2 = _interopRequireDefault(_firebaser);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (templateName) {
var relativePath = [_config.paths.templateFiles, templateName];
// const projectUrl = `${paths.files}/projects/${owner}/${templateName}`
var methods = {
firebaseUrl: function firebaseUrl() {
return (0, _firebaser.createFirebaseUrl)(relativePath)();
},
firebaseRef: function firebaseRef() {
return (0, _firebaser.createFirebaseRef)(relativePath)();
},
addFile: function addFile(filePath, content) {
return (0, _file3.default)(relativePath, filePath).add(content);
},
addFolder: function addFolder(folderPath) {
return (0, _folder3.default)(relativePath, folderPath).add();
},
clone: function clone(newOwner, newName) {
return (0, _firebaser.get)(relativePath)().then(function (files) {
return (0, _firebaser.set)([_config.paths.templateFiles, newOwner, newName || templateName])(files).then(function () {
return files;
});
});
},
copyToProject: function copyToProject(projectOwner, projectName) {
// TODO: Check that current user is owner of template
// TODO: Check that current user is owner or collaborator of project
if (!projectOwner || !projectName) {
return Promise.reject('Both owner and projectName are required to copy template to project.');
}
return (0, _firebaser.get)(relativePath)().then(function (files) {
return (0, _firebaser.update)([_config.paths.files, projectOwner, projectName])(files).then(function () {
return files;
});
});
},
copyFromProject: function copyFromProject(projectOwner, projectName) {
// TODO: Check that current user is owner of template
// TODO: Check that current user is owner or collaborator of project
if (!projectOwner || !projectName) {
return Promise.reject('Both owner and projectName are required to copy template to project.');
}
return (0, _firebaser.get)([_config.paths.files, projectOwner, projectName])().then(function (files) {
return (0, _firebaser.update)(relativePath)(files).then(function () {
return files;
});
});
},
zip: function zip() {
return (0, _zipper.zipFileSystem)({ name: templateName }, relativePath);
},
download: function download() {
return (0, _zipper.zipFileSystem)({ name: templateName }, relativePath);
}
};
var subModels = {
entity: function entity(entityPath) {
return (0, _entity3.default)(relativePath, entityPath);
},
file: function file(filePath) {
return (0, _file3.default)(relativePath, filePath);
},
folder: function folder(folderPath) {
return (0, _folder3.default)(relativePath, folderPath);
}
};
return _extends({}, (0, _firebaser2.default)(relativePath, ['get', 'sync']), methods, subModels);
};
module.exports = exports['default'];