UNPKG

source-from-vercel-deployment

Version:

A simple package made for downloading the source code from your Vercel Deployment.

71 lines (55 loc) 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseStructure = exports.getAuthToken = exports.appendTeamId = void 0; var _axios = _interopRequireDefault(require("axios")); var _colors = _interopRequireDefault(require("colors")); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _path = require("path"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const getAuthToken = token => token.includes('Bearer') || token.includes('bearer') ? token[0].toUpperCase() + token.slice(1) : `bearer ${token}`; exports.getAuthToken = getAuthToken; const appendTeamId = (url, teamId, symbol = '?') => teamId ? `${url}${symbol}teamId=${teamId}` : url; exports.appendTeamId = appendTeamId; const generateFile = async (fileName, currentPath, env) => { const url = appendTeamId(`${env.DEPLOYMENT_FILE_URL}${fileName}`, env.TEAM_ID, '&'); try { const savePath = (0, _path.join)(currentPath, fileName); console.log(_colors.default.yellow('Downloading file: '), _colors.default.cyan(fileName), _colors.default.yellow(' to path: '), _colors.default.cyan(savePath)); const { data } = await _axios.default.get(url, { responseType: 'stream', headers: { Authorization: env.AUTHORIZATION_TOKEN } }); data.pipe(_fsExtra.default.createWriteStream(savePath)); } catch (err) { console.log(_colors.default.red(`Cannot download from ${url}. Please raise an issue here: https://github.com/CalinaCristian/source-from-vercel-deployment/issues !`)); process.exit(); } }; const generateDirectory = path => { try { _fsExtra.default.mkdirpSync(path); } catch (err) { console.log(_colors.default.red(`Cannot write directory on path: ${path} !`)); process.exit(); } }; const parseCurrent = (node, currentPath, env) => { if (node.type === 'directory') { generateDirectory((0, _path.join)(currentPath, node.name)); parseStructure(node.children, (0, _path.join)(currentPath, node.name), env); } else if (node.type === 'file') { generateFile(node.name, currentPath, env); } }; const parseStructure = (folderStructure, currentPath, env) => { if (folderStructure) { folderStructure.forEach(structure => parseCurrent(structure, currentPath, env)); } }; exports.parseStructure = parseStructure;