pux-to-html
Version:
Converts 1PUX (export from 1Password) file to HTML files
29 lines (22 loc) • 813 B
JavaScript
import { join } from "node:path";
import slugify from "@sindresorhus/slugify";
import AdmZip from "adm-zip";
import { getVaultHtml } from "./get-vault-html.js";
import { writeFile } from "./write-file.js";
// Import templates
export async function puxToHtml(input, output) {
const pux = new AdmZip(input, {});
const _attributes = JSON.parse(pux.readAsText("export.attributes", "utf8"));
const data = JSON.parse(pux.readAsText("export.data", "utf8"));
for (const account of data.accounts) {
// Get directory name
const dir = slugify(account.attrs.name);
// Iterate over vaults
for (const vault of account.vaults) {
const fileName = `${slugify(vault.attrs.name)}.html`;
const html = getVaultHtml(vault);
// Write HTML files
await writeFile(join(output, dir, fileName), html);
}
}
}