}, function (cb) { var headerPickle = pickle.createEmpty(); headerPickle.writeString(JSON.stringify(filesystem.header)); var headerBuf = headerPickle.toBuffer(); var sizePickle = pickle.createEmpty(); sizePickle.writeUInt32(headerBuf.length); var sizeBuf = sizePickle.toBuffer(); outLen += headerBuf.length; outLen += sizeBuf.length; out.unshift(headerBuf); out.unshift(sizeBuf); var archive = Buffer.concat(out, outLen); out = []; this.push(new util.File({ cwd: cwd, base: cwd, path: targetFilename, contents: archive, enc: 'utf8' })); cb(); });
function writeAsarFile(filesystem, dest, toPack, changedFiles) { const headerPickle = pickle.createEmpty(); headerPickle.writeString(JSON.stringify(filesystem.header)); const headerBuf = headerPickle.toBuffer(); const sizePickle = pickle.createEmpty(); sizePickle.writeUInt32(headerBuf.length); const sizeBuf = sizePickle.toBuffer(); const writeStream = fs_extra_p_1.createWriteStream(dest); return new bluebird_1.Promise((resolve, reject) => { writeStream.on("error", reject); writeStream.once("finish", resolve); writeStream.write(sizeBuf); function w(list, index) { if (list.length === index) { writeStream.end(); return; } const file = list[index]; const data = changedFiles.get(file); if (data != null) { writeStream.write(data, () => w(list, index + 1)); return; } const readStream = fs_extra_p_1.createReadStream(file); readStream.on("error", reject); readStream.once("end", () => w(list, index + 1)); readStream.pipe(writeStream, { end: false }); } writeStream.write(headerBuf, () => w(toPack, 0)); }); }
module.exports.writeFilesystem = function(dest, filesystem, files, cb) { var headerPickle = pickle.createEmpty(); headerPickle.writeString(JSON.stringify(filesystem.header)); var headerBuf = headerPickle.toBuffer(); var sizePickle = pickle.createEmpty(); sizePickle.writeUInt32(headerBuf.length); var sizeBuf = sizePickle.toBuffer(); var out = fs.createWriteStream(dest); out.write(sizeBuf); out.write(headerBuf, writeFileListToStream.bind(this, dest, filesystem, out, files, cb)); };
module.exports.writeFilesystem = async function (dest, filesystem, files, metadata) { const headerPickle = pickle.createEmpty() headerPickle.writeString(JSON.stringify(filesystem.header)) const headerBuf = headerPickle.toBuffer() const sizePickle = pickle.createEmpty() sizePickle.writeUInt32(headerBuf.length) const sizeBuf = sizePickle.toBuffer() const out = fs.createWriteStream(dest) await new Promise((resolve, reject) => { out.on('error', reject) out.write(sizeBuf) return out.write(headerBuf, () => resolve()) }) return writeFileListToStream(dest, filesystem, out, files, metadata) }
let finish = () => { { const headerPickle = pickle.createEmpty(); headerPickle.writeString(JSON.stringify(filesystem.header)); const headerBuf = headerPickle.toBuffer(); const sizePickle = pickle.createEmpty(); sizePickle.writeUInt32(headerBuf.length); const sizeBuf = sizePickle.toBuffer(); out.unshift(headerBuf); out.unshift(sizeBuf); } const contents = Buffer.concat(out); out.length = 0; this.queue(new VinylFile({ cwd: folderPath, base: folderPath, path: destFilename, contents: contents })); this.queue(null); };
module.exports.writeFilesystem = function (dest, filesystem, files, metadata, callback) { let sizeBuf let headerBuf try { const headerPickle = pickle.createEmpty() headerPickle.writeString(JSON.stringify(filesystem.header)) headerBuf = headerPickle.toBuffer() const sizePickle = pickle.createEmpty() sizePickle.writeUInt32(headerBuf.length) sizeBuf = sizePickle.toBuffer() } catch (error) { return callback(error) } const out = fs.createWriteStream(dest) out.on('error', callback) out.write(sizeBuf) return out.write(headerBuf, function () { return writeFileListToStream(dest, filesystem, out, files, metadata, callback) }) }