@modyo/cli
Version:
Modyo CLI Command line to expose local development tools
70 lines (69 loc) • 3.23 kB
JavaScript
;
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;