UNPKG

@modyo/cli

Version:

Modyo CLI Command line to expose local development tools

70 lines (69 loc) 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateWidgetFromResources = void 0; const tslib_1 = require("tslib"); const promises_1 = tslib_1.__importDefault(require("node:fs/promises")); const node_path_1 = tslib_1.__importDefault(require("node:path")); const node_fs_1 = tslib_1.__importDefault(require("node:fs")); const axios_1 = tslib_1.__importDefault(require("axios")); const form_data_1 = tslib_1.__importDefault(require("form-data")); const debug_1 = tslib_1.__importDefault(require("debug")); const path_exists_1 = tslib_1.__importDefault(require("../utils/path-exists")); const config_1 = require("../helpers/config"); const api_client_1 = tslib_1.__importDefault(require("../utils/api-client")); const getBytes = (string) => Buffer.byteLength(string, 'utf8'); const debug = (0, debug_1.default)('push/update-widget-from-resources.ts'); async function updateWidgetFromResources(widgetId, url, token, resources) { switch (resources.type) { case 'file': { const data = { id: widgetId, html: resources.html, js: resources.js, css: resources.css, public: true, }; const dataString = JSON.stringify(data); const bytes = getBytes(dataString); if (process.env.DEBUG === '*') { if (!(await (0, path_exists_1.default)('.debug'))) { debug('creating .debug dir'); await promises_1.default.mkdir(node_path_1.default.join('.debug')); } await promises_1.default.writeFile(node_path_1.default.resolve('.debug', 'body.json'), dataString, 'utf8'); } debug(`the body size is ${bytes / 1000000} MB`); debug(`body size ${bytes}`); const query = { method: 'PUT', url, headers: Object.assign(Object.assign({}, config_1.fetchConf), { Authorization: `Bearer ${token}` }), data, }; debug(query); return api_client_1.default.request(query); } case 'zip': { debug(`zip file to upload ${resources.zip}`); const readStream = node_fs_1.default.createReadStream(resources.zip); const data = new form_data_1.default(); data.append('file', readStream); data.append('id', widgetId); data.append('public', 'true'); data.append('entry_js', resources.entryJs); data.append('entry_css', resources.entryCss); const { 'Content-Type': ignored } = config_1.fetchConf, restProps = tslib_1.__rest(config_1.fetchConf, ['Content-Type']); const query = { method: 'PUT', url, headers: Object.assign(Object.assign({}, restProps), { Authorization: `Bearer ${token}` }), data, }; debug(query); return axios_1.default.request(query); } default: throw new Error('Bad request config to create/update a widget'); } } exports.updateWidgetFromResources = updateWidgetFromResources;