@forestadmin/forest-cloud
Version:
Utility to bootstrap and publish forest admin cloud projects customization
55 lines • 5.04 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = publish;
const adm_zip_1 = __importDefault(require("adm-zip"));
const form_data_1 = __importDefault(require("form-data"));
const errors_1 = require("../errors");
function getKeyFromPolicy(policy) {
const decoded = JSON.parse(Buffer.from(policy.split('.')[0], 'base64').toString());
const keyCondition = decoded.conditions?.find(condition => Array.isArray(condition) && condition[0] === 'starts-with' && condition[1] === '$key');
return keyCondition[2];
}
async function publish(httpServer, distPathManager) {
try {
let buffer;
const zipPath = distPathManager.zip;
try {
const zip = new adm_zip_1.default(zipPath);
buffer = zip.toBuffer();
}
catch (error) {
throw new errors_1.BusinessError(`Cannot read code-customization zip file - At path: ${zipPath}\n ${error.message}`);
}
const { url, fields } = await httpServer.postUploadRequest(buffer.byteLength);
const form = new form_data_1.default();
// The key could either be in the fields or in the fields.Policy
form.append('key', fields.key || getKeyFromPolicy(fields.Policy));
Object.entries(fields).forEach(([field, value]) => {
// Doesn't append it twice
if (field !== 'key') {
form.append(field, value);
}
});
form.append('file', buffer);
await new Promise((resolve, reject) => {
form.submit(url, (err, res) => {
if (err) {
reject(err);
}
if (res.statusCode === 200 || res.statusCode === 204) {
resolve(res.statusCode);
}
reject(new Error(res.statusMessage));
});
});
const { subscriptionId } = await httpServer.postPublish();
return subscriptionId;
}
catch (error) {
throw new errors_1.BusinessError(`Publish failed: ${error.message}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9wdWJsaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBa0JBLDBCQWtEQztBQWpFRCxzREFBNkI7QUFDN0IsMERBQWlDO0FBRWpDLHNDQUEwQztBQUUxQyxTQUFTLGdCQUFnQixDQUFDLE1BQWM7SUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FDM0MsU0FBUyxDQUFDLEVBQUUsQ0FDVixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFhLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FDeEYsQ0FBQztJQUVGLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFYyxLQUFLLFVBQVUsT0FBTyxDQUNuQyxVQUFzQixFQUN0QixlQUFnQztJQUVoQyxJQUFJLENBQUM7UUFDSCxJQUFJLE1BQWMsQ0FBQztRQUNuQixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO1FBRXBDLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFXLElBQUksaUJBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLHNCQUFhLENBQ3JCLHNEQUFzRCxPQUFPLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUNuRixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlFLE1BQU0sSUFBSSxHQUFHLElBQUksbUJBQVEsRUFBRSxDQUFDO1FBQzVCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNoRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVCLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzVCLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO2dCQUVELE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTFELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLHNCQUFhLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7QUFDSCxDQUFDIn0=