UNPKG

@dpkit/zip

Version:

Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames

30 lines 4.37 kB
import { readFile, writeFile } from "node:fs/promises"; import { mkdir } from "node:fs/promises"; import { dirname, join } from "node:path"; import { loadPackageDescriptor } from "@dpkit/core"; import { getTempFolderPath } from "@dpkit/folder"; import { unzip } from "fflate"; export async function loadPackageFromZip(archivePath) { const basepath = getTempFolderPath(); const zipData = await readFile(archivePath); const entries = await new Promise((resolve, reject) => { unzip(zipData, (err, unzipped) => { if (err) reject(err); else resolve(unzipped); }); }); for (const [filename, data] of Object.entries(entries)) { const path = join(basepath, filename); if (filename.endsWith("/")) { await mkdir(path, { recursive: true }); continue; } await mkdir(dirname(path), { recursive: true }); await writeFile(path, data); } const dataPackage = await loadPackageDescriptor(join(basepath, "datapackage.json")); return dataPackage; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2UvbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFOUIsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxXQUFtQjtJQUMxRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRTNDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxPQUFPLENBQy9CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2xCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxHQUFHO2dCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTs7Z0JBQ2YsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUNGLENBQUE7SUFFRCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFckMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7WUFDdEMsU0FBUTtRQUNWLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUMvQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0scUJBQXFCLENBQzdDLElBQUksQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FDbkMsQ0FBQTtJQUVELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHsgbWtkaXIgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBsb2FkUGFja2FnZURlc2NyaXB0b3IgfSBmcm9tIFwiQGRwa2l0L2NvcmVcIlxuaW1wb3J0IHsgZ2V0VGVtcEZvbGRlclBhdGggfSBmcm9tIFwiQGRwa2l0L2ZvbGRlclwiXG5pbXBvcnQgeyB1bnppcCB9IGZyb20gXCJmZmxhdGVcIlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBhY2thZ2VGcm9tWmlwKGFyY2hpdmVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgYmFzZXBhdGggPSBnZXRUZW1wRm9sZGVyUGF0aCgpXG4gIGNvbnN0IHppcERhdGEgPSBhd2FpdCByZWFkRmlsZShhcmNoaXZlUGF0aClcblxuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgbmV3IFByb21pc2U8UmVjb3JkPHN0cmluZywgVWludDhBcnJheT4+KFxuICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHVuemlwKHppcERhdGEsIChlcnIsIHVuemlwcGVkKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpXG4gICAgICAgIGVsc2UgcmVzb2x2ZSh1bnppcHBlZClcbiAgICAgIH0pXG4gICAgfSxcbiAgKVxuXG4gIGZvciAoY29uc3QgW2ZpbGVuYW1lLCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhlbnRyaWVzKSkge1xuICAgIGNvbnN0IHBhdGggPSBqb2luKGJhc2VwYXRoLCBmaWxlbmFtZSlcblxuICAgIGlmIChmaWxlbmFtZS5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAgIGF3YWl0IG1rZGlyKHBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGRhdGEpXG4gIH1cblxuICBjb25zdCBkYXRhUGFja2FnZSA9IGF3YWl0IGxvYWRQYWNrYWdlRGVzY3JpcHRvcihcbiAgICBqb2luKGJhc2VwYXRoLCBcImRhdGFwYWNrYWdlLmpzb25cIiksXG4gIClcblxuICByZXR1cm4gZGF0YVBhY2thZ2Vcbn1cbiJdfQ==