feat: 实现 Pandoc DOCX 转换服务

This commit is contained in:
SkyJourney
2026-07-30 15:05:50 +08:00
parent fa159d916f
commit bf43433d38
32 changed files with 2908 additions and 61 deletions
@@ -6,7 +6,8 @@ import {
} from "../src/index.js";
function createReferencePackage(
overrides: Record<string, Uint8Array> = {}
overrides: Record<string, Uint8Array> = {},
mtime = new Date("2020-01-01T00:00:00.000Z")
) {
const entries = Object.fromEntries(
requiredReferenceDocxParts.map((name) => [
@@ -14,14 +15,25 @@ function createReferencePackage(
new TextEncoder().encode(`<part name="${name}"/>`)
])
);
return zipSync({ ...entries, ...overrides });
return zipSync(
Object.fromEntries(
Object.entries({ ...entries, ...overrides }).map(
([name, content]) => [name, [content, { mtime }]]
)
)
);
}
describe("reference.docx 包", () => {
it("预检中央目录并返回稳定指纹", () => {
const content = createReferencePackage();
const first = readReferenceDocxPackage(content);
const second = readReferenceDocxPackage(content);
const second = readReferenceDocxPackage(
createReferencePackage(
{},
new Date("2026-07-30T00:00:00.000Z")
)
);
expect(first.entries.size).toBe(requiredReferenceDocxParts.length);
expect(first.entries.has("word/styles.xml")).toBe(true);