@kintone/plugin-packer
Version:
Package your kintone plugin with pure JavaScript
58 lines • 2.05 kB
JavaScript
;
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