"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stabilizePageFile = stabilizePageFile; /** * Normalize-on-write helper (SPEC §11 "Резолюция"). * * git diffs byte-for-byte, so writing a page in a NON-fixpoint markdown form * would make the next pull re-export it to a slightly different (but stable) * form and produce a phantom diff -> churny commits. The converter has a couple * of known one-pass asymmetries (a block image after a paragraph adds an empty * paragraph; a diagram materializes `data-align`), all of which converge to a * fixpoint after ONE `export -> import -> export` round-trip. * * So at write time we run exactly that one pass and persist the fixpoint form. * Already-stable content is unaffected (the pass is idempotent), so re-pulls of * unchanged pages produce identical bytes and git sees no diff. */ const index_1 = require("../lib/index"); /** * Produce the self-contained `.md` file text for a page from its raw * ProseMirror `content` + identity meta, in the verified fixpoint form. * * md1 = convertProseMirrorToMarkdown(content) * doc2 = markdownToProseMirror(md1) // one import... * stableBody = convertProseMirrorToMarkdown(doc2) // ...and re-export * file = serializeDocmostMarkdownBody(meta, stableBody) * * The single export->import->export pass is the verified fixpoint (SPEC §11): * idempotent for already-stable content, and the convergence point for the * known converter asymmetries. */ async function stabilizePageFile(content, meta) { const md1 = (0, index_1.convertProseMirrorToMarkdown)(content); const doc2 = await (0, index_1.markdownToProseMirror)(md1); const stableBody = (0, index_1.convertProseMirrorToMarkdown)(doc2); // The meta shape is exactly what `exportPageBody` writes; cast to the lib's // DocmostMdMeta (a superset with optional fields) for the serializer. return (0, index_1.serializeDocmostMarkdownBody)(meta, stableBody); }