Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ Every construct `src/lower`/`src/emit` cannot represent losslessly is a document
- **`md/image-unresolved`** — no resolver, `undefined` return, or non-PNG/JPEG bytes degrades to alt-text run.
- **`md/raw-html-preserved-as-text` / `md/raw-html-dropped`** — raw HTML kept as literal text (default) or dropped; never interpreted.
- **`md/front-matter-key-unmapped`** — no YAML/TOML engine; only five known `LayoutMetadata` keys recognised.
- **`md/heading-level-clamped`** — styleId beyond `Heading6` (from another format) clamps to level 6.
- **`md/heading-level-clamped`** — styleId beyond `Heading6` (from another format) clamps to level 6 via document-schema.js's shared `clampHeadingLevel()`.
- **`md/adjacent-links-merged`** / **`md/code-span-as-monospace-run`** — same-destination adjacent links merge; monospace runs emit as code spans.
- **`md/paragraph-indent-dropped`** — `indentLeftPt` without a recognised styleId; indent dropped, paragraph renders.
- **`md/list-numid-fallback`** — a foreign `numId` falls back to a plain bullet list.
Expand Down
73 changes: 68 additions & 5 deletions dist/codec.d.cts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { z } from "zod";
declare const MarkdownBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>, z.ZodDiscriminatedUnion<[z.ZodObject<{
kind: z.ZodLiteral<"wordprocessing">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand All @@ -29,7 +29,7 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"presentation">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down Expand Up @@ -62,13 +62,20 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
lineSpacingReduction: z.ZodOptional<z.ZodNumber>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
blocks: z.ZodArray<z.ZodCustom<import("document-schema.js").ContentBlock, import("document-schema.js").ContentBlock>>;
}, z.core.$strip>>;
notes: z.ZodString;
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"spreadsheet">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down Expand Up @@ -135,6 +142,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
hyperlink: z.ZodOptional<z.ZodString>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>>>;
colSpan: z.ZodOptional<z.ZodNumber>;
rowSpan: z.ZodOptional<z.ZodNumber>;
Expand Down Expand Up @@ -213,6 +227,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
middle: "middle";
}>>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>>;
columns: z.ZodArray<z.ZodObject<{
index: z.ZodNumber;
Expand All @@ -235,6 +256,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
heightPt: z.ZodNumber;
altText: z.ZodOptional<z.ZodString>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
anchorRow: z.ZodNumber;
anchorColumn: z.ZodNumber;
offsetXPt: z.ZodNumber;
Expand Down Expand Up @@ -285,7 +313,7 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"drawing">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down Expand Up @@ -318,6 +346,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
lineSpacingReduction: z.ZodOptional<z.ZodNumber>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
blocks: z.ZodArray<z.ZodCustom<import("document-schema.js").ContentBlock, import("document-schema.js").ContentBlock>>;
}, z.core.$strip>>;
vectors: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
Expand Down Expand Up @@ -350,6 +385,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"ellipse">;
frame: z.ZodObject<{
Expand Down Expand Up @@ -380,6 +422,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"line">;
from: z.ZodObject<{
Expand All @@ -406,6 +455,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"path">;
frame: z.ZodObject<{
Expand Down Expand Up @@ -468,11 +524,18 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>], "kind">>;
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"formula">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down
73 changes: 68 additions & 5 deletions dist/codec.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { z } from "zod";
declare const MarkdownBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>, z.ZodDiscriminatedUnion<[z.ZodObject<{
kind: z.ZodLiteral<"wordprocessing">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand All @@ -29,7 +29,7 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"presentation">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down Expand Up @@ -62,13 +62,20 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
lineSpacingReduction: z.ZodOptional<z.ZodNumber>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
blocks: z.ZodArray<z.ZodCustom<import("document-schema.js").ContentBlock, import("document-schema.js").ContentBlock>>;
}, z.core.$strip>>;
notes: z.ZodString;
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"spreadsheet">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down Expand Up @@ -135,6 +142,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
hyperlink: z.ZodOptional<z.ZodString>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>>>;
colSpan: z.ZodOptional<z.ZodNumber>;
rowSpan: z.ZodOptional<z.ZodNumber>;
Expand Down Expand Up @@ -213,6 +227,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
middle: "middle";
}>>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>>;
columns: z.ZodArray<z.ZodObject<{
index: z.ZodNumber;
Expand All @@ -235,6 +256,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
heightPt: z.ZodNumber;
altText: z.ZodOptional<z.ZodString>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
anchorRow: z.ZodNumber;
anchorColumn: z.ZodNumber;
offsetXPt: z.ZodNumber;
Expand Down Expand Up @@ -285,7 +313,7 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"drawing">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down Expand Up @@ -318,6 +346,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
lineSpacingReduction: z.ZodOptional<z.ZodNumber>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
blocks: z.ZodArray<z.ZodCustom<import("document-schema.js").ContentBlock, import("document-schema.js").ContentBlock>>;
}, z.core.$strip>>;
vectors: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
Expand Down Expand Up @@ -350,6 +385,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"ellipse">;
frame: z.ZodObject<{
Expand Down Expand Up @@ -380,6 +422,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"line">;
from: z.ZodObject<{
Expand All @@ -406,6 +455,13 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"path">;
frame: z.ZodObject<{
Expand Down Expand Up @@ -468,11 +524,18 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
}, z.core.$strip>>;
paintOrder: z.ZodOptional<z.ZodNumber>;
sourcePath: z.ZodOptional<z.ZodString>;
frames: z.ZodOptional<z.ZodArray<z.ZodObject<{
pageIndex: z.ZodNumber;
xPt: z.ZodNumber;
yPt: z.ZodNumber;
widthPt: z.ZodNumber;
heightPt: z.ZodNumber;
}, z.core.$strip>>>;
}, z.core.$strip>], "kind">>;
}, z.core.$strip>>;
}, z.core.$strip>, z.ZodObject<{
kind: z.ZodLiteral<"formula">;
formatVersion: z.ZodLiteral<2>;
formatVersion: z.ZodLiteral<3>;
metadata: z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
author: z.ZodOptional<z.ZodString>;
Expand Down
16 changes: 7 additions & 9 deletions dist/emit/emit.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const require_emit_front_matter = require("./front-matter.cjs");
const require_emit_inline = require("./inline.cjs");
const require_emit_image = require("./image.cjs");
const require_emit_table = require("./table.cjs");
let document_schema_js = require("document-schema.js");
//#region src/emit/emit.ts
const MAX_SETEXT_LEVEL = 2;
const SETEXT_LEVEL_1_CHAR = "=";
Expand Down Expand Up @@ -56,15 +57,12 @@ function renderParagraphBody(paragraph, context) {
if (paragraph.styleId === "MathBlock") return `$$\n${paragraph.runs.map((run) => run.text).join("")}\n$$`;
const headingLevel = paragraph.styleId === void 0 ? void 0 : require_shared_style_constants.parseHeadingStyleId(paragraph.styleId);
if (headingLevel !== void 0) {
let level = headingLevel;
if (level > 6) {
context.sink({
code: require_diagnostics_diagnostics.MarkdownDiagnosticCodes.HEADING_LEVEL_CLAMPED,
severity: "info",
message: `heading level ${String(level)} exceeds ATX's own six-"#" ceiling and is clamped to ${String(6)}`
});
level = 6;
}
const level = (0, document_schema_js.clampHeadingLevel)(headingLevel);
if (level !== headingLevel) context.sink({
code: require_diagnostics_diagnostics.MarkdownDiagnosticCodes.HEADING_LEVEL_CLAMPED,
severity: "info",
message: `heading level ${String(headingLevel)} exceeds ATX's own six-"#" ceiling and is clamped to ${String(level)}`
});
const text = require_emit_inline.emitRuns(paragraph.runs, context);
if (context.headingStyle === "setext" && level <= MAX_SETEXT_LEVEL) return renderSetextHeading(level, text);
return `${"#".repeat(level)} ${text}`;
Expand Down
Loading
Loading