UNPKG

@kintone/plugin-packer

Version:

Package your kintone plugin with pure JavaScript

58 lines 2.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; const yazl_1 = require("yazl"); const node_rsa_1 = __importDefault(require("node-rsa")); const stream_buffers_1 = __importDefault(require("stream-buffers")); const debug_1 = __importDefault(require("debug")); const sign_1 = require("./sign"); const uuid_1 = require("./uuid"); const zip_1 = require("./zip"); const debug = (0, debug_1.default)("packer"); const packer = (contentsZip, privateKey_) => { let privateKey = privateKey_; let key; if (privateKey) { key = new node_rsa_1.default(privateKey); } else { debug("generating a new key"); key = new node_rsa_1.default({ b: 1024 }); privateKey = key.exportKey("pkcs1-private"); } const signature = (0, sign_1.sign)(contentsZip, privateKey); const publicKey = key.exportKey("pkcs8-public-der"); const id = (0, uuid_1.uuid)(publicKey); debug(`id : ${id}`); return (0, zip_1.validateContentsZip)(contentsZip) .then(() => zip(contentsZip, publicKey, signature)) .then((plugin) => ({ plugin, privateKey, id, })); }; /** * Create plugin.zip */ const zip = (contentsZip, publicKey, signature) => { debug(`zip(): start`); return new Promise((res, rej) => { const output = new stream_buffers_1.default.WritableStreamBuffer(); const zipFile = new yazl_1.ZipFile(); output.on("finish", () => { debug(`zip(): output finish event`); res(output.getContents()); }); zipFile.outputStream.pipe(output); zipFile.addBuffer(contentsZip, "contents.zip"); zipFile.addBuffer(publicKey, "PUBKEY"); zipFile.addBuffer(signature, "SIGNATURE"); zipFile.end(undefined, ((finalSize) => { debug(`zip(): ZipFile end event: finalSize ${finalSize} bytes`); })); }); }; module.exports = packer; //# sourceMappingURL=index.js.map