UNPKG

devshare

Version:

Library to communicate with devshare development sharing platform.

110 lines (84 loc) 3.8 kB
'use strict'; 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'];