remark-docx 0.0.7 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import * as docx from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as Latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBracket = (\n arg: Latex.Argument | undefined\n): arg is Latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBracket = (\n arg: Latex.Argument | undefined\n): arg is Latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): docx.MathRun => new docx.MathRun(s);\n\nconst mapMacro = (\n n: Latex.Macro,\n runs: docx.MathRun[]\n): docx.MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new docx.MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBracket(args[0]) &&\n hasCurlyBracket(args[1])\n ) {\n return new docx.MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBracket(args[0])) {\n return new docx.MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBracket(args[0]) &&\n hasCurlyBracket(args[1])\n ) {\n return new docx.MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: Latex.Node[]): docx.MathRun[] => {\n const group: docx.MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (\n n: Latex.Node,\n runs: docx.MathRun[]\n): docx.MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): docx.MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: docx.MathRun[][] = [[]];\n let runs: docx.MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import * as docx from \"docx\";\nimport { convertInchesToTwip, Packer } from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: docx.ILevelsOptions[] = [\n {\n level: 0,\n format: docx.LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: docx.AlignmentType.START,\n },\n {\n level: 1,\n format: docx.LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: docx.LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: docx.LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: docx.LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: docx.LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: docx.IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<\n {\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n }\n>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n list?: ListInfo;\n}>;\n\nexport type Opts = {\n output?: \"buffer\" | \"blob\";\n imageResolver?: ImageResolver;\n} & Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n>;\n\ntype DocxChild = docx.Paragraph | docx.Table | docx.TableOfContents;\ntype DocxContent = DocxChild | docx.ParagraphChild;\n\nexport function mdastToDocx(\n node: mdast.Root,\n {\n output,\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: Opts,\n images: ImageDataMap\n): Promise<any> {\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n }) as DocxChild[];\n const doc = new docx.Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n sections: [{ children: nodes }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output ?? \"buffer\") {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n}\n\nfunction convertNodes(nodes: mdast.Content[], ctx: Context): DocxContent[] {\n const results: DocxContent[] = [];\n\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n // FIXME: unimplemented\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n results.push(\n ...convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n })\n );\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // FIXME: unimplemented\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n}\n\nfunction buildParagraph({ children }: mdast.Paragraph, ctx: Context) {\n const list = ctx.list;\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n}\n\nfunction buildHeading({ children, depth }: mdast.Heading, ctx: Context) {\n let heading: docx.HeadingLevel;\n switch (depth) {\n case 1:\n heading = docx.HeadingLevel.TITLE;\n break;\n case 2:\n heading = docx.HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = docx.HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = docx.HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = docx.HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = docx.HeadingLevel.HEADING_5;\n break;\n }\n return new docx.Paragraph({\n heading,\n children: convertNodes(children, ctx),\n });\n}\n\nfunction buildThematicBreak(_: mdast.ThematicBreak) {\n return new docx.Paragraph({\n thematicBreak: true,\n });\n}\n\nfunction buildBlockquote({ children }: mdast.Blockquote, ctx: Context) {\n // FIXME: do nothing for now\n return convertNodes(children, ctx);\n}\n\nfunction buildList(\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n}\n\nfunction buildListItem(\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) {\n return convertNodes(children, ctx);\n}\n\nfunction buildTable({ children, align }: mdast.Table, ctx: Context) {\n const cellAligns: docx.AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return docx.AlignmentType.LEFT;\n case \"right\":\n return docx.AlignmentType.RIGHT;\n case \"center\":\n return docx.AlignmentType.CENTER;\n default:\n return docx.AlignmentType.LEFT;\n }\n });\n\n return new docx.Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n}\n\nfunction buildTableRow(\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: docx.AlignmentType[] | undefined\n) {\n return new docx.TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n}\n\nfunction buildTableCell(\n { children }: mdast.TableCell,\n ctx: Context,\n align: docx.AlignmentType | undefined\n) {\n return new docx.TableCell({\n children: [\n new docx.Paragraph({\n alignment: align,\n children: convertNodes(children, ctx),\n }),\n ],\n });\n}\n\nfunction buildHtml({ value }: mdast.HTML) {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n}\n\nfunction buildCode({ value, lang: _lang, meta: _meta }: mdast.Code) {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n}\n\nfunction buildMath({ value }: mdast.Math) {\n return parseLatex(value).map(\n (runs) =>\n new docx.Paragraph({\n children: [\n new docx.Math({\n children: runs,\n }),\n ],\n })\n );\n}\n\nfunction buildInlineMath({ value }: mdast.InlineMath) {\n return new docx.Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n}\n\nfunction buildText(text: string, deco: Decoration) {\n return new docx.TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n}\n\nfunction buildBreak(_: mdast.Break) {\n return new docx.TextRun({ text: \"\", break: 1 });\n}\n\nfunction buildLink({ children, url, title: _title }: mdast.Link, ctx: Context) {\n return new docx.ExternalHyperlink({\n link: url,\n children: convertNodes(children, ctx),\n });\n}\n\nfunction buildImage(\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new docx.ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n}\n\nfunction buildFootnote({ children }: mdast.Footnote, ctx: Context) {\n // FIXME: transform to paragraph for now\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n });\n}\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, Opts, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type Options = Opts;\n\nconst plugin: Plugin<[Options?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":["docx","parseMath","convertInchesToTwip","Packer","__awaiter","visit"],"mappings":"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"}