UNPKG

devshare

Version:

Library to communicate with devshare development sharing platform.

73 lines (55 loc) 2.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.zipFileSystem = exports.createZip = undefined; var _each2 = require('lodash/each'); var _each3 = _interopRequireDefault(_each2); var _jszip = require('jszip'); var _jszip2 = _interopRequireDefault(_jszip); var _nodeSafeFilesaver = require('node-safe-filesaver'); var _config = require('../config'); var _firebaser = require('./firebaser'); var _file = require('../project/file-system/file'); var _file2 = _interopRequireDefault(_file); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var createZip = exports.createZip = function createZip(relativePath, directory) { var zip = new _jszip2.default(); var promiseArray = []; var handleZip = function handleZip(fbChildren) { (0, _each3.default)(fbChildren, function (child) { if (!child.meta || child.meta.entityType === 'folder') { delete child.meta; return handleZip(child); } var promise = (0, _file2.default)(relativePath, child.meta.path).getContent().then(function (content) { return zip.file(child.meta.path, content); }); promiseArray.push(promise); }); }; handleZip(directory); var projectName = relativePath[relativePath.length - 1]; return Promise.all(promiseArray).then(function () { return zip.generateAsync({ type: 'blob' }).then(function (content) { return (0, _nodeSafeFilesaver.saveAs)(content, '' + projectName + _config.zipSuffix + '.zip'); }).catch(function (error) { return Promise.reject(error); }); }); }; /** * @description Create a zip file with all of the files within a project's file system * Note: Firepad is used to get the file's contents for zipping */ var zipFileSystem = exports.zipFileSystem = function zipFileSystem(_ref, relativePath) { var owner = _ref.owner, name = _ref.name; return (0, _firebaser.get)(relativePath)().then(function (content) { return createZip(relativePath, content); }); }; exports.default = { createZip: createZip, zipFileSystem: zipFileSystem };