Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if (opt.verbose)
console.log('compress:', relative)
const entry = libarchive.entryNew()
libarchive.entrySetPathname(entry, Memory.allocUtf8String(path.join(prefix, relative)))
libarchive.entrySetSize(entry, st.size)
libarchive.entrySetFiletype(entry, fs.constants.S_IFREG)
libarchive.entrySetPerm(entry, st.mode & 0o777)
libarchive.entrySetCtime(entry, timestamp(st.ctime), 0)
libarchive.entrySetMtime(entry, timestamp(st.mtime), 0)
libarchive.writeHeader(ar, entry)
const filename = relative in lookup ? lookup[relative].decrypted : absolute
let stream
try {
stream = fs.createReadStream(filename, { highWaterMark })
} catch (e) {
if (!/(\/Plugins\/(.*)\.appex\/)?SC_Info\//.test(relative))
console.warn(`unable to open ${filename} (${e.message})`)
continue
}
await new Promise((resolve, reject) =>
stream
.on('data', chunk => {
Memory.writeByteArray(buf, chunk)
libarchive.writeData(ar, buf, chunk.byteLength)
})
.on('end', resolve)
.on('error', reject))
// delete decrypted file
async function transfer(filename) {
const session = Math.random().toString(36).substr(2)
const highWaterMark = 4 * 1024 * 1024
const subject = 'download'
const { size } = fs.statSync(filename)
const stream = fs.createReadStream(filename, { highWaterMark })
console.log('start transfering')
send({
subject,
event: 'start',
session,
size,
})
const format = size => `${(size / 1024 / 1024).toFixed(2)}MiB`
let sent = 0
await new Promise((resolve, reject) =>
stream
.on('data', chunk => {
send({