Project Files
scripts / test-roundtrip.ts
// Manual round-trip test — not shipped, run via:
// npx tsx test-roundtrip.ts
// or compile + run.
import * as fs from "node:fs/promises";
import * as os from "node:os";
import * as path from "node:path";
import { writeDocx } from "../src/docxWrite";
import { readDocx } from "../src/docxRead";
const sample = `# Titre principal
Un paragraphe avec du **gras**, de l'*italique* et un peu de \`code\`.
## Section 2
- Premier point
- Deuxième point avec **emphase**
- Troisième point
1. Étape un
2. Étape deux
> Une citation à conserver
> sur deux lignes.
Voici un [lien externe](https://example.com).
\`\`\`
ligne de code 1
ligne de code 2
\`\`\`
`;
async function main() {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "docx-rt-"));
const outPath = path.join(dir, "sample.docx");
console.log("→ writing", outPath);
const w = await writeDocx(outPath, sample, {
fontFamily: "Calibri",
fontSizePt: 11,
pageMargin: "normal",
preserveListStyles: true,
title: "Round-trip test",
});
console.log(" wrote", w.bytes, "bytes,", w.paragraphs, "paragraphs");
console.log(" warnings:", w.warnings);
const r = await readDocx(outPath, { preserveStyles: true, includeMetadata: true });
console.log("\n→ markdown back:\n");
console.log(r.markdown);
console.log("\n→ metadata:", r.metadata);
console.log("→ warnings:", r.warnings);
}
main().catch((e) => {
console.error(e);
process.exit(1);
});