| /** | ||
| * Parser-backed OOXML layer. | ||
| * | ||
| * A `.docx` is a zip of XML parts. Reading those parts with regexes breaks on | ||
| * the variability real Word emits: marker elements carry attributes beyond | ||
| * `w:id`, anchor text spans many runs, the WordprocessingML namespace can be | ||
| * bound to a prefix other than `w`, runs are separated by `<w:tab/>`/`<w:br/>`, | ||
| * and prose lives in parts other than `document.xml` (footnotes, endnotes, | ||
| * headers, footers). | ||
| * | ||
| * This module tokenizes the XML structurally and walks it once into an ordered | ||
| * flow of paragraphs, runs, text, track-change spans, and comment-range | ||
| * markers. Every reader (text extraction, comment anchors, headings) and the | ||
| * comment injector derive from that single walk — there is no second engine to | ||
| * drift from. | ||
| */ | ||
| import AdmZip from 'adm-zip'; | ||
| export declare const WML_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; | ||
| /** Open a `.docx` package. Throws a clear error if it is not a valid zip. */ | ||
| export declare function openDocx(docxPath: string): AdmZip; | ||
| /** Read a single part as UTF-8 text, or `null` when the part is absent. */ | ||
| export declare function readPartText(zip: AdmZip, partName: string): string | null; | ||
| /** | ||
| * The WordprocessingML parts that carry running prose, in reading order: | ||
| * the main story first, then footnotes, endnotes, headers, and footers. | ||
| * A reader that opens only `document.xml` loses everything else. | ||
| */ | ||
| export declare function listProseParts(zip: AdmZip): string[]; | ||
| /** Decode the XML entities that appear in `.docx` text and attribute values. */ | ||
| export declare function decodeXmlEntities(text: string): string; | ||
| /** Encode text for placement inside an XML element (`<w:t>`). */ | ||
| export declare function encodeXmlText(text: string): string; | ||
| /** Encode text for placement inside a double-quoted XML attribute value. */ | ||
| export declare function encodeXmlAttr(text: string): string; | ||
| export interface XmlAttr { | ||
| /** Qualified name as written, e.g. `w:id`. */ | ||
| name: string; | ||
| prefix: string; | ||
| local: string; | ||
| /** Entity-decoded value. */ | ||
| value: string; | ||
| } | ||
| export type XmlTokenKind = 'open' | 'close' | 'selfclose' | 'text' | 'comment' | 'cdata' | 'decl' | 'pi'; | ||
| export interface XmlToken { | ||
| kind: XmlTokenKind; | ||
| /** Byte offset of `<` (or text start) in the source. */ | ||
| start: number; | ||
| /** Byte offset just past `>` (or text end) in the source. */ | ||
| end: number; | ||
| /** Exact source slice [start, end). */ | ||
| raw: string; | ||
| name?: string; | ||
| prefix?: string; | ||
| local?: string; | ||
| attrs?: XmlAttr[]; | ||
| /** Entity-decoded text, for `text` and `cdata` tokens. */ | ||
| text?: string; | ||
| } | ||
| /** | ||
| * Tokenize an XML string into an ordered, offset-tagged token stream. | ||
| * Quote-aware so a raw `>` inside an attribute value does not end a tag early. | ||
| */ | ||
| export declare function tokenizeXml(xml: string): XmlToken[]; | ||
| export interface NsContext { | ||
| uriForPrefix(prefix: string): string | undefined; | ||
| /** True when an element token lives in the WordprocessingML namespace. */ | ||
| isWml(token: XmlToken): boolean; | ||
| /** Value of the WML-namespaced attribute with the given local name, if present. */ | ||
| wmlAttr(token: XmlToken, local: string): string | undefined; | ||
| } | ||
| /** | ||
| * Build a namespace context from a token stream. Declarations are read from | ||
| * every element (the root carries them in practice), so the WML namespace is | ||
| * matched by URI rather than by assuming the `w` prefix. | ||
| */ | ||
| export declare function resolveNamespaces(tokens: XmlToken[]): NsContext; | ||
| export type FlowItem = { | ||
| kind: 'text'; | ||
| text: string; | ||
| } | { | ||
| kind: 'paraStart'; | ||
| style: string | null; | ||
| level: number; | ||
| xmlStart: number; | ||
| } | { | ||
| kind: 'paraEnd'; | ||
| } | { | ||
| kind: 'runStart'; | ||
| xmlStart: number; | ||
| xmlContentStart: number; | ||
| } | { | ||
| kind: 'runEnd'; | ||
| xmlEnd: number; | ||
| } | { | ||
| kind: 'commentStart'; | ||
| id: string; | ||
| xmlStart: number; | ||
| xmlEnd: number; | ||
| } | { | ||
| kind: 'commentEnd'; | ||
| id: string; | ||
| xmlStart: number; | ||
| xmlEnd: number; | ||
| } | { | ||
| kind: 'commentRef'; | ||
| id: string; | ||
| } | { | ||
| kind: 'insStart'; | ||
| } | { | ||
| kind: 'insEnd'; | ||
| } | { | ||
| kind: 'delStart'; | ||
| } | { | ||
| kind: 'delEnd'; | ||
| }; | ||
| /** | ||
| * Walk a part's XML once into an ordered flow. Text-bearing items appear in | ||
| * document order interleaved with paragraph, run, track-change, and | ||
| * comment-range boundaries, each tagged with the source offsets a later | ||
| * injection step needs. | ||
| */ | ||
| export declare function walkBody(xml: string, ns?: NsContext): FlowItem[]; | ||
| export interface CommentRange { | ||
| id: string; | ||
| /** Concatenated anchor text between the range markers. */ | ||
| anchor: string; | ||
| /** Start offset of the anchor in `text`. */ | ||
| start: number; | ||
| /** End offset of the anchor in `text`. */ | ||
| end: number; | ||
| /** True when the range encloses no text (a zero-width / point anchor). */ | ||
| isEmpty: boolean; | ||
| } | ||
| export interface DocTextModel { | ||
| /** Plain text: runs concatenated, paragraphs joined with nothing between. */ | ||
| text: string; | ||
| /** Comment ranges with offsets into `text`. */ | ||
| comments: CommentRange[]; | ||
| /** Heading paragraphs with their offset into `text`. */ | ||
| headings: Array<{ | ||
| style: string; | ||
| level: number; | ||
| text: string; | ||
| position: number; | ||
| }>; | ||
| } | ||
| /** | ||
| * Build the plain-text model used for comment-anchor matching. Runs are | ||
| * concatenated and paragraphs are joined with no separator, matching the | ||
| * coordinate system the placement engine expects, but namespace-aware and | ||
| * robust to marker-attribute variation and multi-run anchors. | ||
| */ | ||
| export declare function buildDocTextModel(xml: string): DocTextModel; | ||
| export interface TextRunSlot { | ||
| /** Source offset of the enclosing run's `<w:r>`. */ | ||
| runOpenStart: number; | ||
| /** Source offset just past the enclosing run's `</w:r>`. */ | ||
| runCloseEnd: number; | ||
| /** Raw `<w:rPr>...</w:rPr>` of the enclosing run, or '' when it has none. */ | ||
| rPr: string; | ||
| /** Raw opening `<w:t ...>` tag of this text element. */ | ||
| tOpenTag: string; | ||
| /** Source offset just past `<w:t ...>`. */ | ||
| contentStart: number; | ||
| /** Source offset of `</w:t>`. */ | ||
| contentEnd: number; | ||
| /** Raw (still XML-encoded) text between the `<w:t>` tags. */ | ||
| content: string; | ||
| } | ||
| /** | ||
| * Index every `<w:t>` text element with its enclosing run's exact boundaries | ||
| * and run properties, derived from the token nesting rather than by scanning | ||
| * backwards for the nearest `<w:r`. This locates the correct run even when the | ||
| * text sits inside a hyperlink, a field, or an `mc:AlternateContent` block, and | ||
| * naturally ignores marker-like text that lives in attributes (it is not inside | ||
| * a `<w:t>`). | ||
| */ | ||
| export declare function indexTextRuns(xml: string): TextRunSlot[]; | ||
| export interface ExtractedComment { | ||
| id: string; | ||
| author: string; | ||
| /** Full ISO date string as written, or '' when absent. */ | ||
| date: string; | ||
| text: string; | ||
| /** Parent comment id for a reply, resolved from commentsExtended.xml. */ | ||
| parentId?: string; | ||
| } | ||
| /** | ||
| * Extract comment bodies from `word/comments.xml` and reply threading from | ||
| * `word/commentsExtended.xml`. Structural elements are matched by local name | ||
| * in the WordprocessingML namespace, so a document that binds WML to a prefix | ||
| * other than `w` still yields its comments. | ||
| */ | ||
| export declare function extractComments(zip: AdmZip): ExtractedComment[]; | ||
| /** Parts that can carry comment ranges, in reading order. */ | ||
| export declare const COMMENT_PARTS: string[]; | ||
| /** | ||
| * Comment ranges across every part that can hold them — not just | ||
| * `document.xml`, so a comment anchored in a footnote or endnote is found | ||
| * rather than silently lost. Positions are offsets into the concatenated | ||
| * `fullDocText`. | ||
| */ | ||
| export declare function buildCommentAnchorModel(zip: AdmZip): { | ||
| fullDocText: string; | ||
| comments: CommentRange[]; | ||
| }; | ||
| //# sourceMappingURL=ooxml.d.ts.map |
| {"version":3,"file":"ooxml.d.ts","sourceRoot":"","sources":["../../lib/ooxml.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Parser-backed OOXML layer. | ||
| * | ||
| * A `.docx` is a zip of XML parts. Reading those parts with regexes breaks on | ||
| * the variability real Word emits: marker elements carry attributes beyond | ||
| * `w:id`, anchor text spans many runs, the WordprocessingML namespace can be | ||
| * bound to a prefix other than `w`, runs are separated by `<w:tab/>`/`<w:br/>`, | ||
| * and prose lives in parts other than `document.xml` (footnotes, endnotes, | ||
| * headers, footers). | ||
| * | ||
| * This module tokenizes the XML structurally and walks it once into an ordered | ||
| * flow of paragraphs, runs, text, track-change spans, and comment-range | ||
| * markers. Every reader (text extraction, comment anchors, headings) and the | ||
| * comment injector derive from that single walk — there is no second engine to | ||
| * drift from. | ||
| */ | ||
| import AdmZip from 'adm-zip'; | ||
| export const WML_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'; | ||
| // ============================================================================= | ||
| // Package access | ||
| // ============================================================================= | ||
| /** Open a `.docx` package. Throws a clear error if it is not a valid zip. */ | ||
| export function openDocx(docxPath) { | ||
| try { | ||
| return new AdmZip(docxPath); | ||
| } | ||
| catch (err) { | ||
| throw new Error(`Invalid Word document (not a valid .docx file): ${err.message}`); | ||
| } | ||
| } | ||
| /** Read a single part as UTF-8 text, or `null` when the part is absent. */ | ||
| export function readPartText(zip, partName) { | ||
| const entry = zip.getEntry(partName); | ||
| if (!entry) | ||
| return null; | ||
| return entry.getData().toString('utf8'); | ||
| } | ||
| /** | ||
| * The WordprocessingML parts that carry running prose, in reading order: | ||
| * the main story first, then footnotes, endnotes, headers, and footers. | ||
| * A reader that opens only `document.xml` loses everything else. | ||
| */ | ||
| export function listProseParts(zip) { | ||
| const parts = []; | ||
| if (zip.getEntry('word/document.xml')) | ||
| parts.push('word/document.xml'); | ||
| for (const fixed of ['word/footnotes.xml', 'word/endnotes.xml']) { | ||
| if (zip.getEntry(fixed)) | ||
| parts.push(fixed); | ||
| } | ||
| const headerFooter = zip | ||
| .getEntries() | ||
| .map((e) => e.entryName) | ||
| .filter((name) => /^word\/(header|footer)\d*\.xml$/.test(name)) | ||
| .sort(); | ||
| parts.push(...headerFooter); | ||
| return parts; | ||
| } | ||
| // ============================================================================= | ||
| // Entity coding | ||
| // ============================================================================= | ||
| /** Decode the XML entities that appear in `.docx` text and attribute values. */ | ||
| export function decodeXmlEntities(text) { | ||
| return text | ||
| .replace(/</g, '<') | ||
| .replace(/>/g, '>') | ||
| .replace(/"/g, '"') | ||
| .replace(/'/g, "'") | ||
| .replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(parseInt(code, 10))) | ||
| .replace(/&#x([0-9a-fA-F]+);/g, (_, code) => String.fromCodePoint(parseInt(code, 16))) | ||
| .replace(/&/g, '&'); // ampersand last so decoded text is not re-decoded | ||
| } | ||
| /** Encode text for placement inside an XML element (`<w:t>`). */ | ||
| export function encodeXmlText(text) { | ||
| return text | ||
| .replace(/&/g, '&') | ||
| .replace(/</g, '<') | ||
| .replace(/>/g, '>'); | ||
| } | ||
| /** Encode text for placement inside a double-quoted XML attribute value. */ | ||
| export function encodeXmlAttr(text) { | ||
| return encodeXmlText(text).replace(/"/g, '"'); | ||
| } | ||
| function splitQName(name) { | ||
| const colon = name.indexOf(':'); | ||
| return colon === -1 | ||
| ? { prefix: '', local: name } | ||
| : { prefix: name.slice(0, colon), local: name.slice(colon + 1) }; | ||
| } | ||
| const WS = /\s/; | ||
| function parseTag(raw, start, end) { | ||
| const isClose = raw.startsWith('</'); | ||
| const selfClose = !isClose && raw.endsWith('/>'); | ||
| const body = raw.slice(isClose ? 2 : 1, selfClose ? raw.length - 2 : raw.length - 1); | ||
| let p = 0; | ||
| while (p < body.length && !WS.test(body[p]) && body[p] !== '/') | ||
| p++; | ||
| const name = body.slice(0, p); | ||
| const { prefix, local } = splitQName(name); | ||
| const attrs = []; | ||
| while (p < body.length) { | ||
| while (p < body.length && WS.test(body[p])) | ||
| p++; | ||
| if (p >= body.length) | ||
| break; | ||
| const nameStart = p; | ||
| while (p < body.length && body[p] !== '=' && !WS.test(body[p])) | ||
| p++; | ||
| const attrName = body.slice(nameStart, p); | ||
| while (p < body.length && WS.test(body[p])) | ||
| p++; | ||
| if (body[p] !== '=') { | ||
| // Valueless attribute (not used by WML, but keep the lexer honest). | ||
| if (attrName) { | ||
| const q = splitQName(attrName); | ||
| attrs.push({ name: attrName, prefix: q.prefix, local: q.local, value: '' }); | ||
| } | ||
| continue; | ||
| } | ||
| p++; // skip '=' | ||
| while (p < body.length && WS.test(body[p])) | ||
| p++; | ||
| const quote = body[p]; | ||
| let value = ''; | ||
| if (quote === '"' || quote === "'") { | ||
| p++; | ||
| const valueStart = p; | ||
| while (p < body.length && body[p] !== quote) | ||
| p++; | ||
| value = body.slice(valueStart, p); | ||
| p++; // skip closing quote | ||
| } | ||
| else { | ||
| const valueStart = p; | ||
| while (p < body.length && !WS.test(body[p])) | ||
| p++; | ||
| value = body.slice(valueStart, p); | ||
| } | ||
| const q = splitQName(attrName); | ||
| attrs.push({ name: attrName, prefix: q.prefix, local: q.local, value: decodeXmlEntities(value) }); | ||
| } | ||
| return { | ||
| kind: isClose ? 'close' : selfClose ? 'selfclose' : 'open', | ||
| start, | ||
| end, | ||
| raw, | ||
| name, | ||
| prefix, | ||
| local, | ||
| attrs, | ||
| }; | ||
| } | ||
| /** | ||
| * Tokenize an XML string into an ordered, offset-tagged token stream. | ||
| * Quote-aware so a raw `>` inside an attribute value does not end a tag early. | ||
| */ | ||
| export function tokenizeXml(xml) { | ||
| const tokens = []; | ||
| const n = xml.length; | ||
| let i = 0; | ||
| while (i < n) { | ||
| const lt = xml.indexOf('<', i); | ||
| if (lt === -1) { | ||
| tokens.push({ kind: 'text', start: i, end: n, raw: xml.slice(i, n), text: decodeXmlEntities(xml.slice(i, n)) }); | ||
| break; | ||
| } | ||
| if (lt > i) { | ||
| tokens.push({ kind: 'text', start: i, end: lt, raw: xml.slice(i, lt), text: decodeXmlEntities(xml.slice(i, lt)) }); | ||
| } | ||
| if (xml.startsWith('<!--', lt)) { | ||
| const close = xml.indexOf('-->', lt + 4); | ||
| const end = close === -1 ? n : close + 3; | ||
| tokens.push({ kind: 'comment', start: lt, end, raw: xml.slice(lt, end) }); | ||
| i = end; | ||
| continue; | ||
| } | ||
| if (xml.startsWith('<![CDATA[', lt)) { | ||
| const close = xml.indexOf(']]>', lt + 9); | ||
| const end = close === -1 ? n : close + 3; | ||
| tokens.push({ | ||
| kind: 'cdata', | ||
| start: lt, | ||
| end, | ||
| raw: xml.slice(lt, end), | ||
| text: xml.slice(lt + 9, close === -1 ? n : close), | ||
| }); | ||
| i = end; | ||
| continue; | ||
| } | ||
| if (xml.startsWith('<?', lt)) { | ||
| const close = xml.indexOf('?>', lt + 2); | ||
| const end = close === -1 ? n : close + 2; | ||
| tokens.push({ kind: xml.startsWith('<?xml', lt) ? 'decl' : 'pi', start: lt, end, raw: xml.slice(lt, end) }); | ||
| i = end; | ||
| continue; | ||
| } | ||
| // Element tag: find the closing '>' that is not inside a quoted value. | ||
| let j = lt + 1; | ||
| let quote = ''; | ||
| while (j < n) { | ||
| const ch = xml[j]; | ||
| if (quote) { | ||
| if (ch === quote) | ||
| quote = ''; | ||
| } | ||
| else if (ch === '"' || ch === "'") { | ||
| quote = ch; | ||
| } | ||
| else if (ch === '>') { | ||
| break; | ||
| } | ||
| j++; | ||
| } | ||
| const end = j < n ? j + 1 : n; | ||
| tokens.push(parseTag(xml.slice(lt, end), lt, end)); | ||
| i = end; | ||
| } | ||
| return tokens; | ||
| } | ||
| /** | ||
| * Build a namespace context from a token stream. Declarations are read from | ||
| * every element (the root carries them in practice), so the WML namespace is | ||
| * matched by URI rather than by assuming the `w` prefix. | ||
| */ | ||
| export function resolveNamespaces(tokens) { | ||
| const prefixToUri = new Map(); | ||
| for (const tok of tokens) { | ||
| if (tok.kind !== 'open' && tok.kind !== 'selfclose') | ||
| continue; | ||
| for (const attr of tok.attrs ?? []) { | ||
| if (attr.name === 'xmlns') | ||
| prefixToUri.set('', attr.value); | ||
| else if (attr.prefix === 'xmlns') | ||
| prefixToUri.set(attr.local, attr.value); | ||
| } | ||
| } | ||
| const uriForPrefix = (prefix) => prefixToUri.get(prefix); | ||
| const isWml = (token) => prefixToUri.get(token.prefix ?? '') === WML_NS; | ||
| const wmlAttr = (token, local) => { | ||
| for (const attr of token.attrs ?? []) { | ||
| if (attr.local !== local) | ||
| continue; | ||
| // An unprefixed attribute is in no namespace; a prefixed one resolves | ||
| // through the same table. Marker ids share their element's prefix. | ||
| if (attr.prefix === '' || prefixToUri.get(attr.prefix) === WML_NS) | ||
| return attr.value; | ||
| } | ||
| return undefined; | ||
| }; | ||
| return { uriForPrefix, isWml, wmlAttr }; | ||
| } | ||
| /** | ||
| * Walk a part's XML once into an ordered flow. Text-bearing items appear in | ||
| * document order interleaved with paragraph, run, track-change, and | ||
| * comment-range boundaries, each tagged with the source offsets a later | ||
| * injection step needs. | ||
| */ | ||
| export function walkBody(xml, ns) { | ||
| const tokens = tokenizeXml(xml); | ||
| const nsCtx = ns ?? resolveNamespaces(tokens); | ||
| const flow = []; | ||
| // Track nesting so content is read precisely: literal text only counts | ||
| // inside `<w:t>`/`<w:delText>` (never `<w:instrText>` field codes), and | ||
| // `<w:tab/>`/`<w:br/>` only count inside a run (never a `<w:pPr>` tab-stop | ||
| // definition). | ||
| let runDepth = 0; | ||
| let inPPr = 0; | ||
| let textDepth = 0; | ||
| let currentPara = null; | ||
| const local = (t) => (nsCtx.isWml(t) ? t.local : undefined); | ||
| for (let idx = 0; idx < tokens.length; idx++) { | ||
| const tok = tokens[idx]; | ||
| if (tok.kind === 'text') { | ||
| if (textDepth > 0 && tok.text) | ||
| flow.push({ kind: 'text', text: tok.text }); | ||
| continue; | ||
| } | ||
| if (tok.kind === 'cdata') { | ||
| if (textDepth > 0 && tok.text) | ||
| flow.push({ kind: 'text', text: tok.text }); | ||
| continue; | ||
| } | ||
| if (tok.kind !== 'open' && tok.kind !== 'close' && tok.kind !== 'selfclose') | ||
| continue; | ||
| const ln = local(tok); | ||
| if (ln === undefined) | ||
| continue; | ||
| if (tok.kind === 'open') { | ||
| switch (ln) { | ||
| case 'p': | ||
| currentPara = { kind: 'paraStart', style: null, level: 0, xmlStart: tok.start }; | ||
| flow.push(currentPara); | ||
| break; | ||
| case 'pPr': | ||
| inPPr++; | ||
| break; | ||
| case 't': | ||
| case 'delText': | ||
| textDepth++; | ||
| break; | ||
| case 'r': | ||
| runDepth++; | ||
| flow.push({ kind: 'runStart', xmlStart: tok.start, xmlContentStart: tok.end }); | ||
| break; | ||
| case 'ins': | ||
| flow.push({ kind: 'insStart' }); | ||
| break; | ||
| case 'del': | ||
| flow.push({ kind: 'delStart' }); | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| } | ||
| else if (tok.kind === 'close') { | ||
| switch (ln) { | ||
| case 'p': | ||
| flow.push({ kind: 'paraEnd' }); | ||
| currentPara = null; | ||
| break; | ||
| case 'pPr': | ||
| if (inPPr > 0) | ||
| inPPr--; | ||
| break; | ||
| case 't': | ||
| case 'delText': | ||
| if (textDepth > 0) | ||
| textDepth--; | ||
| break; | ||
| case 'r': | ||
| if (runDepth > 0) | ||
| runDepth--; | ||
| flow.push({ kind: 'runEnd', xmlEnd: tok.start }); | ||
| break; | ||
| case 'ins': | ||
| flow.push({ kind: 'insEnd' }); | ||
| break; | ||
| case 'del': | ||
| flow.push({ kind: 'delEnd' }); | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| } | ||
| else { | ||
| // self-close | ||
| switch (ln) { | ||
| case 'pStyle': { | ||
| const val = nsCtx.wmlAttr(tok, 'val'); | ||
| if (currentPara && inPPr > 0 && val) { | ||
| currentPara.style = val; | ||
| const m = val.match(/(\d+)/); | ||
| if (/heading/i.test(val)) | ||
| currentPara.level = m ? parseInt(m[1], 10) : 0; | ||
| } | ||
| break; | ||
| } | ||
| case 'tab': | ||
| if (runDepth > 0 && inPPr === 0) | ||
| flow.push({ kind: 'text', text: '\t' }); | ||
| break; | ||
| case 'br': | ||
| case 'cr': | ||
| if (runDepth > 0 && inPPr === 0) | ||
| flow.push({ kind: 'text', text: '\n' }); | ||
| break; | ||
| case 'commentRangeStart': { | ||
| const id = nsCtx.wmlAttr(tok, 'id'); | ||
| if (id !== undefined) | ||
| flow.push({ kind: 'commentStart', id, xmlStart: tok.start, xmlEnd: tok.end }); | ||
| break; | ||
| } | ||
| case 'commentRangeEnd': { | ||
| const id = nsCtx.wmlAttr(tok, 'id'); | ||
| if (id !== undefined) | ||
| flow.push({ kind: 'commentEnd', id, xmlStart: tok.start, xmlEnd: tok.end }); | ||
| break; | ||
| } | ||
| case 'commentReference': { | ||
| const id = nsCtx.wmlAttr(tok, 'id'); | ||
| if (id !== undefined) | ||
| flow.push({ kind: 'commentRef', id }); | ||
| break; | ||
| } | ||
| default: | ||
| break; | ||
| } | ||
| } | ||
| } | ||
| return flow; | ||
| } | ||
| /** | ||
| * Build the plain-text model used for comment-anchor matching. Runs are | ||
| * concatenated and paragraphs are joined with no separator, matching the | ||
| * coordinate system the placement engine expects, but namespace-aware and | ||
| * robust to marker-attribute variation and multi-run anchors. | ||
| */ | ||
| export function buildDocTextModel(xml) { | ||
| const flow = walkBody(xml); | ||
| let text = ''; | ||
| const startOffsets = new Map(); | ||
| const endOffsets = new Map(); | ||
| const comments = []; | ||
| const headings = []; | ||
| let paraStartOffset = 0; | ||
| let paraStyle = null; | ||
| let paraLevel = 0; | ||
| let paraText = ''; | ||
| for (const item of flow) { | ||
| switch (item.kind) { | ||
| case 'text': | ||
| text += item.text; | ||
| paraText += item.text; | ||
| break; | ||
| case 'paraStart': | ||
| paraStartOffset = text.length; | ||
| paraStyle = item.style; | ||
| paraLevel = item.level; | ||
| paraText = ''; | ||
| break; | ||
| case 'paraEnd': | ||
| if (paraStyle && /heading/i.test(paraStyle) && paraText.trim()) { | ||
| headings.push({ style: paraStyle, level: paraLevel, text: paraText.trim(), position: paraStartOffset }); | ||
| } | ||
| break; | ||
| case 'commentStart': | ||
| if (!startOffsets.has(item.id)) | ||
| startOffsets.set(item.id, text.length); | ||
| break; | ||
| case 'commentEnd': | ||
| if (!endOffsets.has(item.id)) | ||
| endOffsets.set(item.id, text.length); | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| } | ||
| // The paragraph style can be set after `paraStart` (pStyle lives early in | ||
| // the paragraph), so headings are recorded at paraEnd above. | ||
| for (const [id, start] of startOffsets) { | ||
| const end = endOffsets.get(id); | ||
| if (end === undefined) | ||
| continue; | ||
| const anchor = text.slice(start, Math.max(start, end)); | ||
| comments.push({ id, anchor: anchor.trim(), start, end: Math.max(start, end), isEmpty: !anchor.trim() }); | ||
| } | ||
| return { text, comments, headings }; | ||
| } | ||
| /** | ||
| * Index every `<w:t>` text element with its enclosing run's exact boundaries | ||
| * and run properties, derived from the token nesting rather than by scanning | ||
| * backwards for the nearest `<w:r`. This locates the correct run even when the | ||
| * text sits inside a hyperlink, a field, or an `mc:AlternateContent` block, and | ||
| * naturally ignores marker-like text that lives in attributes (it is not inside | ||
| * a `<w:t>`). | ||
| */ | ||
| export function indexTextRuns(xml) { | ||
| const tokens = tokenizeXml(xml); | ||
| const ns = resolveNamespaces(tokens); | ||
| const slots = []; | ||
| const runStack = []; | ||
| let tOpenTag = ''; | ||
| let tContentStart = -1; | ||
| let inT = false; | ||
| for (const tok of tokens) { | ||
| if (tok.kind === 'open' || tok.kind === 'close' || tok.kind === 'selfclose') { | ||
| const ln = ns.isWml(tok) ? tok.local : undefined; | ||
| const top = runStack[runStack.length - 1]; | ||
| if (tok.kind === 'open') { | ||
| if (ln === 'r') { | ||
| runStack.push({ openStart: tok.start, rPr: '', rPrOpenStart: -1, pending: [] }); | ||
| } | ||
| else if (ln === 'rPr' && top) { | ||
| top.rPrOpenStart = tok.start; | ||
| } | ||
| else if (ln === 't' && top) { | ||
| tOpenTag = tok.raw; | ||
| tContentStart = tok.end; | ||
| inT = true; | ||
| } | ||
| } | ||
| else if (tok.kind === 'close') { | ||
| if (ln === 'rPr' && top && top.rPrOpenStart >= 0) { | ||
| top.rPr = xml.slice(top.rPrOpenStart, tok.end); | ||
| top.rPrOpenStart = -1; | ||
| } | ||
| else if (ln === 't' && top && inT) { | ||
| top.pending.push({ | ||
| runOpenStart: top.openStart, | ||
| runCloseEnd: -1, | ||
| rPr: top.rPr, | ||
| tOpenTag, | ||
| contentStart: tContentStart, | ||
| contentEnd: tok.start, | ||
| content: xml.slice(tContentStart, tok.start), | ||
| }); | ||
| inT = false; | ||
| } | ||
| else if (ln === 'r') { | ||
| const frame = runStack.pop(); | ||
| if (frame) { | ||
| for (const slot of frame.pending) { | ||
| slot.runCloseEnd = tok.end; | ||
| slots.push(slot); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| slots.sort((a, b) => a.contentStart - b.contentStart); | ||
| return slots; | ||
| } | ||
| /** First attribute with the given local name, regardless of namespace prefix. */ | ||
| function attrByLocal(token, local) { | ||
| for (const attr of token.attrs ?? []) { | ||
| if (attr.local === local) | ||
| return attr.value; | ||
| } | ||
| return undefined; | ||
| } | ||
| /** | ||
| * Extract comment bodies from `word/comments.xml` and reply threading from | ||
| * `word/commentsExtended.xml`. Structural elements are matched by local name | ||
| * in the WordprocessingML namespace, so a document that binds WML to a prefix | ||
| * other than `w` still yields its comments. | ||
| */ | ||
| export function extractComments(zip) { | ||
| const commentsXml = readPartText(zip, 'word/comments.xml'); | ||
| if (commentsXml === null) | ||
| return []; | ||
| const tokens = tokenizeXml(commentsXml); | ||
| const ns = resolveNamespaces(tokens); | ||
| const wmlLocal = (t) => (ns.isWml(t) ? t.local : undefined); | ||
| const comments = []; | ||
| const paraIdToCommentId = new Map(); | ||
| let current = null; | ||
| let textDepth = 0; | ||
| for (const tok of tokens) { | ||
| if (tok.kind === 'text' || tok.kind === 'cdata') { | ||
| if (current && textDepth > 0 && tok.text) | ||
| current.text += tok.text; | ||
| continue; | ||
| } | ||
| const ln = tok.kind === 'open' || tok.kind === 'close' || tok.kind === 'selfclose' | ||
| ? wmlLocal(tok) | ||
| : undefined; | ||
| if (ln === undefined) | ||
| continue; | ||
| // Word stores the threading key (w14:paraId) on each comment paragraph; | ||
| // a reply's second paragraph is an empty self-closed <w:p/>, so read it on | ||
| // open and self-close alike. | ||
| if ((tok.kind === 'open' || tok.kind === 'selfclose') && ln === 'p' && current) { | ||
| const paraId = attrByLocal(tok, 'paraId'); | ||
| if (paraId && current.id) | ||
| paraIdToCommentId.set(paraId, current.id); | ||
| } | ||
| if (tok.kind === 'open') { | ||
| if (ln === 'comment') { | ||
| current = { | ||
| id: ns.wmlAttr(tok, 'id') ?? '', | ||
| author: ns.wmlAttr(tok, 'author') ?? 'Unknown', | ||
| date: ns.wmlAttr(tok, 'date') ?? '', | ||
| text: '', | ||
| }; | ||
| } | ||
| else if ((ln === 't' || ln === 'delText') && current) { | ||
| textDepth++; | ||
| } | ||
| } | ||
| else if (tok.kind === 'close') { | ||
| if (ln === 'comment' && current) { | ||
| current.text = current.text.trim(); | ||
| comments.push(current); | ||
| current = null; | ||
| textDepth = 0; | ||
| } | ||
| else if ((ln === 't' || ln === 'delText') && textDepth > 0) { | ||
| textDepth--; | ||
| } | ||
| } | ||
| } | ||
| // Resolve reply links from commentsExtended.xml (absent for non-Word sources). | ||
| const extendedXml = readPartText(zip, 'word/commentsExtended.xml'); | ||
| if (extendedXml && paraIdToCommentId.size > 0) { | ||
| const parentByCommentId = new Map(); | ||
| for (const tok of tokenizeXml(extendedXml)) { | ||
| if (tok.kind !== 'selfclose' && tok.kind !== 'open') | ||
| continue; | ||
| if (tok.local !== 'commentEx') | ||
| continue; | ||
| const paraId = attrByLocal(tok, 'paraId'); | ||
| const parentParaId = attrByLocal(tok, 'paraIdParent'); | ||
| if (!paraId || !parentParaId) | ||
| continue; | ||
| const childId = paraIdToCommentId.get(paraId); | ||
| const parentId = paraIdToCommentId.get(parentParaId); | ||
| if (childId && parentId && childId !== parentId) { | ||
| parentByCommentId.set(childId, parentId); | ||
| } | ||
| } | ||
| for (const c of comments) { | ||
| const parent = parentByCommentId.get(c.id); | ||
| if (parent) | ||
| c.parentId = parent; | ||
| } | ||
| } | ||
| return comments; | ||
| } | ||
| /** Parts that can carry comment ranges, in reading order. */ | ||
| export const COMMENT_PARTS = ['word/document.xml', 'word/footnotes.xml', 'word/endnotes.xml']; | ||
| /** | ||
| * Comment ranges across every part that can hold them — not just | ||
| * `document.xml`, so a comment anchored in a footnote or endnote is found | ||
| * rather than silently lost. Positions are offsets into the concatenated | ||
| * `fullDocText`. | ||
| */ | ||
| export function buildCommentAnchorModel(zip) { | ||
| let fullDocText = ''; | ||
| const comments = []; | ||
| for (const part of COMMENT_PARTS) { | ||
| const xml = readPartText(zip, part); | ||
| if (xml === null) | ||
| continue; | ||
| const model = buildDocTextModel(xml); | ||
| const offset = fullDocText.length; | ||
| fullDocText += model.text; | ||
| for (const c of model.comments) { | ||
| comments.push({ id: c.id, anchor: c.anchor, start: c.start + offset, end: c.end + offset, isEmpty: c.isEmpty }); | ||
| } | ||
| } | ||
| return { fullDocText, comments }; | ||
| } | ||
| //# sourceMappingURL=ooxml.js.map |
| {"version":3,"file":"ooxml.js","sourceRoot":"","sources":["../../lib/ooxml.ts"],"names":[],"mappings":"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"} |
+768
| /** | ||
| * Parser-backed OOXML layer. | ||
| * | ||
| * A `.docx` is a zip of XML parts. Reading those parts with regexes breaks on | ||
| * the variability real Word emits: marker elements carry attributes beyond | ||
| * `w:id`, anchor text spans many runs, the WordprocessingML namespace can be | ||
| * bound to a prefix other than `w`, runs are separated by `<w:tab/>`/`<w:br/>`, | ||
| * and prose lives in parts other than `document.xml` (footnotes, endnotes, | ||
| * headers, footers). | ||
| * | ||
| * This module tokenizes the XML structurally and walks it once into an ordered | ||
| * flow of paragraphs, runs, text, track-change spans, and comment-range | ||
| * markers. Every reader (text extraction, comment anchors, headings) and the | ||
| * comment injector derive from that single walk — there is no second engine to | ||
| * drift from. | ||
| */ | ||
| import AdmZip from 'adm-zip'; | ||
| export const WML_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'; | ||
| // ============================================================================= | ||
| // Package access | ||
| // ============================================================================= | ||
| /** Open a `.docx` package. Throws a clear error if it is not a valid zip. */ | ||
| export function openDocx(docxPath: string): AdmZip { | ||
| try { | ||
| return new AdmZip(docxPath); | ||
| } catch (err: any) { | ||
| throw new Error(`Invalid Word document (not a valid .docx file): ${err.message}`); | ||
| } | ||
| } | ||
| /** Read a single part as UTF-8 text, or `null` when the part is absent. */ | ||
| export function readPartText(zip: AdmZip, partName: string): string | null { | ||
| const entry = zip.getEntry(partName); | ||
| if (!entry) return null; | ||
| return entry.getData().toString('utf8'); | ||
| } | ||
| /** | ||
| * The WordprocessingML parts that carry running prose, in reading order: | ||
| * the main story first, then footnotes, endnotes, headers, and footers. | ||
| * A reader that opens only `document.xml` loses everything else. | ||
| */ | ||
| export function listProseParts(zip: AdmZip): string[] { | ||
| const parts: string[] = []; | ||
| if (zip.getEntry('word/document.xml')) parts.push('word/document.xml'); | ||
| for (const fixed of ['word/footnotes.xml', 'word/endnotes.xml']) { | ||
| if (zip.getEntry(fixed)) parts.push(fixed); | ||
| } | ||
| const headerFooter = zip | ||
| .getEntries() | ||
| .map((e) => e.entryName) | ||
| .filter((name) => /^word\/(header|footer)\d*\.xml$/.test(name)) | ||
| .sort(); | ||
| parts.push(...headerFooter); | ||
| return parts; | ||
| } | ||
| // ============================================================================= | ||
| // Entity coding | ||
| // ============================================================================= | ||
| /** Decode the XML entities that appear in `.docx` text and attribute values. */ | ||
| export function decodeXmlEntities(text: string): string { | ||
| return text | ||
| .replace(/</g, '<') | ||
| .replace(/>/g, '>') | ||
| .replace(/"/g, '"') | ||
| .replace(/'/g, "'") | ||
| .replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(parseInt(code, 10))) | ||
| .replace(/&#x([0-9a-fA-F]+);/g, (_, code) => String.fromCodePoint(parseInt(code, 16))) | ||
| .replace(/&/g, '&'); // ampersand last so decoded text is not re-decoded | ||
| } | ||
| /** Encode text for placement inside an XML element (`<w:t>`). */ | ||
| export function encodeXmlText(text: string): string { | ||
| return text | ||
| .replace(/&/g, '&') | ||
| .replace(/</g, '<') | ||
| .replace(/>/g, '>'); | ||
| } | ||
| /** Encode text for placement inside a double-quoted XML attribute value. */ | ||
| export function encodeXmlAttr(text: string): string { | ||
| return encodeXmlText(text).replace(/"/g, '"'); | ||
| } | ||
| // ============================================================================= | ||
| // Tokenizer | ||
| // ============================================================================= | ||
| export interface XmlAttr { | ||
| /** Qualified name as written, e.g. `w:id`. */ | ||
| name: string; | ||
| prefix: string; | ||
| local: string; | ||
| /** Entity-decoded value. */ | ||
| value: string; | ||
| } | ||
| export type XmlTokenKind = | ||
| | 'open' | ||
| | 'close' | ||
| | 'selfclose' | ||
| | 'text' | ||
| | 'comment' | ||
| | 'cdata' | ||
| | 'decl' | ||
| | 'pi'; | ||
| export interface XmlToken { | ||
| kind: XmlTokenKind; | ||
| /** Byte offset of `<` (or text start) in the source. */ | ||
| start: number; | ||
| /** Byte offset just past `>` (or text end) in the source. */ | ||
| end: number; | ||
| /** Exact source slice [start, end). */ | ||
| raw: string; | ||
| name?: string; | ||
| prefix?: string; | ||
| local?: string; | ||
| attrs?: XmlAttr[]; | ||
| /** Entity-decoded text, for `text` and `cdata` tokens. */ | ||
| text?: string; | ||
| } | ||
| function splitQName(name: string): { prefix: string; local: string } { | ||
| const colon = name.indexOf(':'); | ||
| return colon === -1 | ||
| ? { prefix: '', local: name } | ||
| : { prefix: name.slice(0, colon), local: name.slice(colon + 1) }; | ||
| } | ||
| const WS = /\s/; | ||
| function parseTag(raw: string, start: number, end: number): XmlToken { | ||
| const isClose = raw.startsWith('</'); | ||
| const selfClose = !isClose && raw.endsWith('/>'); | ||
| const body = raw.slice(isClose ? 2 : 1, selfClose ? raw.length - 2 : raw.length - 1); | ||
| let p = 0; | ||
| while (p < body.length && !WS.test(body[p]!) && body[p] !== '/') p++; | ||
| const name = body.slice(0, p); | ||
| const { prefix, local } = splitQName(name); | ||
| const attrs: XmlAttr[] = []; | ||
| while (p < body.length) { | ||
| while (p < body.length && WS.test(body[p]!)) p++; | ||
| if (p >= body.length) break; | ||
| const nameStart = p; | ||
| while (p < body.length && body[p] !== '=' && !WS.test(body[p]!)) p++; | ||
| const attrName = body.slice(nameStart, p); | ||
| while (p < body.length && WS.test(body[p]!)) p++; | ||
| if (body[p] !== '=') { | ||
| // Valueless attribute (not used by WML, but keep the lexer honest). | ||
| if (attrName) { | ||
| const q = splitQName(attrName); | ||
| attrs.push({ name: attrName, prefix: q.prefix, local: q.local, value: '' }); | ||
| } | ||
| continue; | ||
| } | ||
| p++; // skip '=' | ||
| while (p < body.length && WS.test(body[p]!)) p++; | ||
| const quote = body[p]; | ||
| let value = ''; | ||
| if (quote === '"' || quote === "'") { | ||
| p++; | ||
| const valueStart = p; | ||
| while (p < body.length && body[p] !== quote) p++; | ||
| value = body.slice(valueStart, p); | ||
| p++; // skip closing quote | ||
| } else { | ||
| const valueStart = p; | ||
| while (p < body.length && !WS.test(body[p]!)) p++; | ||
| value = body.slice(valueStart, p); | ||
| } | ||
| const q = splitQName(attrName); | ||
| attrs.push({ name: attrName, prefix: q.prefix, local: q.local, value: decodeXmlEntities(value) }); | ||
| } | ||
| return { | ||
| kind: isClose ? 'close' : selfClose ? 'selfclose' : 'open', | ||
| start, | ||
| end, | ||
| raw, | ||
| name, | ||
| prefix, | ||
| local, | ||
| attrs, | ||
| }; | ||
| } | ||
| /** | ||
| * Tokenize an XML string into an ordered, offset-tagged token stream. | ||
| * Quote-aware so a raw `>` inside an attribute value does not end a tag early. | ||
| */ | ||
| export function tokenizeXml(xml: string): XmlToken[] { | ||
| const tokens: XmlToken[] = []; | ||
| const n = xml.length; | ||
| let i = 0; | ||
| while (i < n) { | ||
| const lt = xml.indexOf('<', i); | ||
| if (lt === -1) { | ||
| tokens.push({ kind: 'text', start: i, end: n, raw: xml.slice(i, n), text: decodeXmlEntities(xml.slice(i, n)) }); | ||
| break; | ||
| } | ||
| if (lt > i) { | ||
| tokens.push({ kind: 'text', start: i, end: lt, raw: xml.slice(i, lt), text: decodeXmlEntities(xml.slice(i, lt)) }); | ||
| } | ||
| if (xml.startsWith('<!--', lt)) { | ||
| const close = xml.indexOf('-->', lt + 4); | ||
| const end = close === -1 ? n : close + 3; | ||
| tokens.push({ kind: 'comment', start: lt, end, raw: xml.slice(lt, end) }); | ||
| i = end; | ||
| continue; | ||
| } | ||
| if (xml.startsWith('<![CDATA[', lt)) { | ||
| const close = xml.indexOf(']]>', lt + 9); | ||
| const end = close === -1 ? n : close + 3; | ||
| tokens.push({ | ||
| kind: 'cdata', | ||
| start: lt, | ||
| end, | ||
| raw: xml.slice(lt, end), | ||
| text: xml.slice(lt + 9, close === -1 ? n : close), | ||
| }); | ||
| i = end; | ||
| continue; | ||
| } | ||
| if (xml.startsWith('<?', lt)) { | ||
| const close = xml.indexOf('?>', lt + 2); | ||
| const end = close === -1 ? n : close + 2; | ||
| tokens.push({ kind: xml.startsWith('<?xml', lt) ? 'decl' : 'pi', start: lt, end, raw: xml.slice(lt, end) }); | ||
| i = end; | ||
| continue; | ||
| } | ||
| // Element tag: find the closing '>' that is not inside a quoted value. | ||
| let j = lt + 1; | ||
| let quote = ''; | ||
| while (j < n) { | ||
| const ch = xml[j]; | ||
| if (quote) { | ||
| if (ch === quote) quote = ''; | ||
| } else if (ch === '"' || ch === "'") { | ||
| quote = ch; | ||
| } else if (ch === '>') { | ||
| break; | ||
| } | ||
| j++; | ||
| } | ||
| const end = j < n ? j + 1 : n; | ||
| tokens.push(parseTag(xml.slice(lt, end), lt, end)); | ||
| i = end; | ||
| } | ||
| return tokens; | ||
| } | ||
| // ============================================================================= | ||
| // Namespace resolution | ||
| // ============================================================================= | ||
| export interface NsContext { | ||
| uriForPrefix(prefix: string): string | undefined; | ||
| /** True when an element token lives in the WordprocessingML namespace. */ | ||
| isWml(token: XmlToken): boolean; | ||
| /** Value of the WML-namespaced attribute with the given local name, if present. */ | ||
| wmlAttr(token: XmlToken, local: string): string | undefined; | ||
| } | ||
| /** | ||
| * Build a namespace context from a token stream. Declarations are read from | ||
| * every element (the root carries them in practice), so the WML namespace is | ||
| * matched by URI rather than by assuming the `w` prefix. | ||
| */ | ||
| export function resolveNamespaces(tokens: XmlToken[]): NsContext { | ||
| const prefixToUri = new Map<string, string>(); | ||
| for (const tok of tokens) { | ||
| if (tok.kind !== 'open' && tok.kind !== 'selfclose') continue; | ||
| for (const attr of tok.attrs ?? []) { | ||
| if (attr.name === 'xmlns') prefixToUri.set('', attr.value); | ||
| else if (attr.prefix === 'xmlns') prefixToUri.set(attr.local, attr.value); | ||
| } | ||
| } | ||
| const uriForPrefix = (prefix: string) => prefixToUri.get(prefix); | ||
| const isWml = (token: XmlToken) => prefixToUri.get(token.prefix ?? '') === WML_NS; | ||
| const wmlAttr = (token: XmlToken, local: string) => { | ||
| for (const attr of token.attrs ?? []) { | ||
| if (attr.local !== local) continue; | ||
| // An unprefixed attribute is in no namespace; a prefixed one resolves | ||
| // through the same table. Marker ids share their element's prefix. | ||
| if (attr.prefix === '' || prefixToUri.get(attr.prefix) === WML_NS) return attr.value; | ||
| } | ||
| return undefined; | ||
| }; | ||
| return { uriForPrefix, isWml, wmlAttr }; | ||
| } | ||
| // ============================================================================= | ||
| // Ordered document flow | ||
| // ============================================================================= | ||
| export type FlowItem = | ||
| | { kind: 'text'; text: string } | ||
| | { kind: 'paraStart'; style: string | null; level: number; xmlStart: number } | ||
| | { kind: 'paraEnd' } | ||
| | { kind: 'runStart'; xmlStart: number; xmlContentStart: number } | ||
| | { kind: 'runEnd'; xmlEnd: number } | ||
| | { kind: 'commentStart'; id: string; xmlStart: number; xmlEnd: number } | ||
| | { kind: 'commentEnd'; id: string; xmlStart: number; xmlEnd: number } | ||
| | { kind: 'commentRef'; id: string } | ||
| | { kind: 'insStart' } | ||
| | { kind: 'insEnd' } | ||
| | { kind: 'delStart' } | ||
| | { kind: 'delEnd' }; | ||
| /** | ||
| * Walk a part's XML once into an ordered flow. Text-bearing items appear in | ||
| * document order interleaved with paragraph, run, track-change, and | ||
| * comment-range boundaries, each tagged with the source offsets a later | ||
| * injection step needs. | ||
| */ | ||
| export function walkBody(xml: string, ns?: NsContext): FlowItem[] { | ||
| const tokens = tokenizeXml(xml); | ||
| const nsCtx = ns ?? resolveNamespaces(tokens); | ||
| const flow: FlowItem[] = []; | ||
| // Track nesting so content is read precisely: literal text only counts | ||
| // inside `<w:t>`/`<w:delText>` (never `<w:instrText>` field codes), and | ||
| // `<w:tab/>`/`<w:br/>` only count inside a run (never a `<w:pPr>` tab-stop | ||
| // definition). | ||
| let runDepth = 0; | ||
| let inPPr = 0; | ||
| let textDepth = 0; | ||
| let currentPara: Extract<FlowItem, { kind: 'paraStart' }> | null = null; | ||
| const local = (t: XmlToken) => (nsCtx.isWml(t) ? t.local : undefined); | ||
| for (let idx = 0; idx < tokens.length; idx++) { | ||
| const tok = tokens[idx]!; | ||
| if (tok.kind === 'text') { | ||
| if (textDepth > 0 && tok.text) flow.push({ kind: 'text', text: tok.text }); | ||
| continue; | ||
| } | ||
| if (tok.kind === 'cdata') { | ||
| if (textDepth > 0 && tok.text) flow.push({ kind: 'text', text: tok.text }); | ||
| continue; | ||
| } | ||
| if (tok.kind !== 'open' && tok.kind !== 'close' && tok.kind !== 'selfclose') continue; | ||
| const ln = local(tok); | ||
| if (ln === undefined) continue; | ||
| if (tok.kind === 'open') { | ||
| switch (ln) { | ||
| case 'p': | ||
| currentPara = { kind: 'paraStart', style: null, level: 0, xmlStart: tok.start }; | ||
| flow.push(currentPara); | ||
| break; | ||
| case 'pPr': | ||
| inPPr++; | ||
| break; | ||
| case 't': | ||
| case 'delText': | ||
| textDepth++; | ||
| break; | ||
| case 'r': | ||
| runDepth++; | ||
| flow.push({ kind: 'runStart', xmlStart: tok.start, xmlContentStart: tok.end }); | ||
| break; | ||
| case 'ins': | ||
| flow.push({ kind: 'insStart' }); | ||
| break; | ||
| case 'del': | ||
| flow.push({ kind: 'delStart' }); | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| } else if (tok.kind === 'close') { | ||
| switch (ln) { | ||
| case 'p': | ||
| flow.push({ kind: 'paraEnd' }); | ||
| currentPara = null; | ||
| break; | ||
| case 'pPr': | ||
| if (inPPr > 0) inPPr--; | ||
| break; | ||
| case 't': | ||
| case 'delText': | ||
| if (textDepth > 0) textDepth--; | ||
| break; | ||
| case 'r': | ||
| if (runDepth > 0) runDepth--; | ||
| flow.push({ kind: 'runEnd', xmlEnd: tok.start }); | ||
| break; | ||
| case 'ins': | ||
| flow.push({ kind: 'insEnd' }); | ||
| break; | ||
| case 'del': | ||
| flow.push({ kind: 'delEnd' }); | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| } else { | ||
| // self-close | ||
| switch (ln) { | ||
| case 'pStyle': { | ||
| const val = nsCtx.wmlAttr(tok, 'val'); | ||
| if (currentPara && inPPr > 0 && val) { | ||
| currentPara.style = val; | ||
| const m = val.match(/(\d+)/); | ||
| if (/heading/i.test(val)) currentPara.level = m ? parseInt(m[1]!, 10) : 0; | ||
| } | ||
| break; | ||
| } | ||
| case 'tab': | ||
| if (runDepth > 0 && inPPr === 0) flow.push({ kind: 'text', text: '\t' }); | ||
| break; | ||
| case 'br': | ||
| case 'cr': | ||
| if (runDepth > 0 && inPPr === 0) flow.push({ kind: 'text', text: '\n' }); | ||
| break; | ||
| case 'commentRangeStart': { | ||
| const id = nsCtx.wmlAttr(tok, 'id'); | ||
| if (id !== undefined) flow.push({ kind: 'commentStart', id, xmlStart: tok.start, xmlEnd: tok.end }); | ||
| break; | ||
| } | ||
| case 'commentRangeEnd': { | ||
| const id = nsCtx.wmlAttr(tok, 'id'); | ||
| if (id !== undefined) flow.push({ kind: 'commentEnd', id, xmlStart: tok.start, xmlEnd: tok.end }); | ||
| break; | ||
| } | ||
| case 'commentReference': { | ||
| const id = nsCtx.wmlAttr(tok, 'id'); | ||
| if (id !== undefined) flow.push({ kind: 'commentRef', id }); | ||
| break; | ||
| } | ||
| default: | ||
| break; | ||
| } | ||
| } | ||
| } | ||
| return flow; | ||
| } | ||
| // ============================================================================= | ||
| // Derived readers | ||
| // ============================================================================= | ||
| export interface CommentRange { | ||
| id: string; | ||
| /** Concatenated anchor text between the range markers. */ | ||
| anchor: string; | ||
| /** Start offset of the anchor in `text`. */ | ||
| start: number; | ||
| /** End offset of the anchor in `text`. */ | ||
| end: number; | ||
| /** True when the range encloses no text (a zero-width / point anchor). */ | ||
| isEmpty: boolean; | ||
| } | ||
| export interface DocTextModel { | ||
| /** Plain text: runs concatenated, paragraphs joined with nothing between. */ | ||
| text: string; | ||
| /** Comment ranges with offsets into `text`. */ | ||
| comments: CommentRange[]; | ||
| /** Heading paragraphs with their offset into `text`. */ | ||
| headings: Array<{ style: string; level: number; text: string; position: number }>; | ||
| } | ||
| /** | ||
| * Build the plain-text model used for comment-anchor matching. Runs are | ||
| * concatenated and paragraphs are joined with no separator, matching the | ||
| * coordinate system the placement engine expects, but namespace-aware and | ||
| * robust to marker-attribute variation and multi-run anchors. | ||
| */ | ||
| export function buildDocTextModel(xml: string): DocTextModel { | ||
| const flow = walkBody(xml); | ||
| let text = ''; | ||
| const startOffsets = new Map<string, number>(); | ||
| const endOffsets = new Map<string, number>(); | ||
| const comments: CommentRange[] = []; | ||
| const headings: DocTextModel['headings'] = []; | ||
| let paraStartOffset = 0; | ||
| let paraStyle: string | null = null; | ||
| let paraLevel = 0; | ||
| let paraText = ''; | ||
| for (const item of flow) { | ||
| switch (item.kind) { | ||
| case 'text': | ||
| text += item.text; | ||
| paraText += item.text; | ||
| break; | ||
| case 'paraStart': | ||
| paraStartOffset = text.length; | ||
| paraStyle = item.style; | ||
| paraLevel = item.level; | ||
| paraText = ''; | ||
| break; | ||
| case 'paraEnd': | ||
| if (paraStyle && /heading/i.test(paraStyle) && paraText.trim()) { | ||
| headings.push({ style: paraStyle, level: paraLevel, text: paraText.trim(), position: paraStartOffset }); | ||
| } | ||
| break; | ||
| case 'commentStart': | ||
| if (!startOffsets.has(item.id)) startOffsets.set(item.id, text.length); | ||
| break; | ||
| case 'commentEnd': | ||
| if (!endOffsets.has(item.id)) endOffsets.set(item.id, text.length); | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| } | ||
| // The paragraph style can be set after `paraStart` (pStyle lives early in | ||
| // the paragraph), so headings are recorded at paraEnd above. | ||
| for (const [id, start] of startOffsets) { | ||
| const end = endOffsets.get(id); | ||
| if (end === undefined) continue; | ||
| const anchor = text.slice(start, Math.max(start, end)); | ||
| comments.push({ id, anchor: anchor.trim(), start, end: Math.max(start, end), isEmpty: !anchor.trim() }); | ||
| } | ||
| return { text, comments, headings }; | ||
| } | ||
| // ============================================================================= | ||
| // Run index (for comment injection) | ||
| // ============================================================================= | ||
| export interface TextRunSlot { | ||
| /** Source offset of the enclosing run's `<w:r>`. */ | ||
| runOpenStart: number; | ||
| /** Source offset just past the enclosing run's `</w:r>`. */ | ||
| runCloseEnd: number; | ||
| /** Raw `<w:rPr>...</w:rPr>` of the enclosing run, or '' when it has none. */ | ||
| rPr: string; | ||
| /** Raw opening `<w:t ...>` tag of this text element. */ | ||
| tOpenTag: string; | ||
| /** Source offset just past `<w:t ...>`. */ | ||
| contentStart: number; | ||
| /** Source offset of `</w:t>`. */ | ||
| contentEnd: number; | ||
| /** Raw (still XML-encoded) text between the `<w:t>` tags. */ | ||
| content: string; | ||
| } | ||
| interface RunFrame { | ||
| openStart: number; | ||
| rPr: string; | ||
| rPrOpenStart: number; | ||
| pending: TextRunSlot[]; | ||
| } | ||
| /** | ||
| * Index every `<w:t>` text element with its enclosing run's exact boundaries | ||
| * and run properties, derived from the token nesting rather than by scanning | ||
| * backwards for the nearest `<w:r`. This locates the correct run even when the | ||
| * text sits inside a hyperlink, a field, or an `mc:AlternateContent` block, and | ||
| * naturally ignores marker-like text that lives in attributes (it is not inside | ||
| * a `<w:t>`). | ||
| */ | ||
| export function indexTextRuns(xml: string): TextRunSlot[] { | ||
| const tokens = tokenizeXml(xml); | ||
| const ns = resolveNamespaces(tokens); | ||
| const slots: TextRunSlot[] = []; | ||
| const runStack: RunFrame[] = []; | ||
| let tOpenTag = ''; | ||
| let tContentStart = -1; | ||
| let inT = false; | ||
| for (const tok of tokens) { | ||
| if (tok.kind === 'open' || tok.kind === 'close' || tok.kind === 'selfclose') { | ||
| const ln = ns.isWml(tok) ? tok.local : undefined; | ||
| const top = runStack[runStack.length - 1]; | ||
| if (tok.kind === 'open') { | ||
| if (ln === 'r') { | ||
| runStack.push({ openStart: tok.start, rPr: '', rPrOpenStart: -1, pending: [] }); | ||
| } else if (ln === 'rPr' && top) { | ||
| top.rPrOpenStart = tok.start; | ||
| } else if (ln === 't' && top) { | ||
| tOpenTag = tok.raw; | ||
| tContentStart = tok.end; | ||
| inT = true; | ||
| } | ||
| } else if (tok.kind === 'close') { | ||
| if (ln === 'rPr' && top && top.rPrOpenStart >= 0) { | ||
| top.rPr = xml.slice(top.rPrOpenStart, tok.end); | ||
| top.rPrOpenStart = -1; | ||
| } else if (ln === 't' && top && inT) { | ||
| top.pending.push({ | ||
| runOpenStart: top.openStart, | ||
| runCloseEnd: -1, | ||
| rPr: top.rPr, | ||
| tOpenTag, | ||
| contentStart: tContentStart, | ||
| contentEnd: tok.start, | ||
| content: xml.slice(tContentStart, tok.start), | ||
| }); | ||
| inT = false; | ||
| } else if (ln === 'r') { | ||
| const frame = runStack.pop(); | ||
| if (frame) { | ||
| for (const slot of frame.pending) { | ||
| slot.runCloseEnd = tok.end; | ||
| slots.push(slot); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| slots.sort((a, b) => a.contentStart - b.contentStart); | ||
| return slots; | ||
| } | ||
| // ============================================================================= | ||
| // Comment bodies + threading | ||
| // ============================================================================= | ||
| export interface ExtractedComment { | ||
| id: string; | ||
| author: string; | ||
| /** Full ISO date string as written, or '' when absent. */ | ||
| date: string; | ||
| text: string; | ||
| /** Parent comment id for a reply, resolved from commentsExtended.xml. */ | ||
| parentId?: string; | ||
| } | ||
| /** First attribute with the given local name, regardless of namespace prefix. */ | ||
| function attrByLocal(token: XmlToken, local: string): string | undefined { | ||
| for (const attr of token.attrs ?? []) { | ||
| if (attr.local === local) return attr.value; | ||
| } | ||
| return undefined; | ||
| } | ||
| /** | ||
| * Extract comment bodies from `word/comments.xml` and reply threading from | ||
| * `word/commentsExtended.xml`. Structural elements are matched by local name | ||
| * in the WordprocessingML namespace, so a document that binds WML to a prefix | ||
| * other than `w` still yields its comments. | ||
| */ | ||
| export function extractComments(zip: AdmZip): ExtractedComment[] { | ||
| const commentsXml = readPartText(zip, 'word/comments.xml'); | ||
| if (commentsXml === null) return []; | ||
| const tokens = tokenizeXml(commentsXml); | ||
| const ns = resolveNamespaces(tokens); | ||
| const wmlLocal = (t: XmlToken) => (ns.isWml(t) ? t.local : undefined); | ||
| const comments: ExtractedComment[] = []; | ||
| const paraIdToCommentId = new Map<string, string>(); | ||
| let current: ExtractedComment | null = null; | ||
| let textDepth = 0; | ||
| for (const tok of tokens) { | ||
| if (tok.kind === 'text' || tok.kind === 'cdata') { | ||
| if (current && textDepth > 0 && tok.text) current.text += tok.text; | ||
| continue; | ||
| } | ||
| const ln = | ||
| tok.kind === 'open' || tok.kind === 'close' || tok.kind === 'selfclose' | ||
| ? wmlLocal(tok) | ||
| : undefined; | ||
| if (ln === undefined) continue; | ||
| // Word stores the threading key (w14:paraId) on each comment paragraph; | ||
| // a reply's second paragraph is an empty self-closed <w:p/>, so read it on | ||
| // open and self-close alike. | ||
| if ((tok.kind === 'open' || tok.kind === 'selfclose') && ln === 'p' && current) { | ||
| const paraId = attrByLocal(tok, 'paraId'); | ||
| if (paraId && current.id) paraIdToCommentId.set(paraId, current.id); | ||
| } | ||
| if (tok.kind === 'open') { | ||
| if (ln === 'comment') { | ||
| current = { | ||
| id: ns.wmlAttr(tok, 'id') ?? '', | ||
| author: ns.wmlAttr(tok, 'author') ?? 'Unknown', | ||
| date: ns.wmlAttr(tok, 'date') ?? '', | ||
| text: '', | ||
| }; | ||
| } else if ((ln === 't' || ln === 'delText') && current) { | ||
| textDepth++; | ||
| } | ||
| } else if (tok.kind === 'close') { | ||
| if (ln === 'comment' && current) { | ||
| current.text = current.text.trim(); | ||
| comments.push(current); | ||
| current = null; | ||
| textDepth = 0; | ||
| } else if ((ln === 't' || ln === 'delText') && textDepth > 0) { | ||
| textDepth--; | ||
| } | ||
| } | ||
| } | ||
| // Resolve reply links from commentsExtended.xml (absent for non-Word sources). | ||
| const extendedXml = readPartText(zip, 'word/commentsExtended.xml'); | ||
| if (extendedXml && paraIdToCommentId.size > 0) { | ||
| const parentByCommentId = new Map<string, string>(); | ||
| for (const tok of tokenizeXml(extendedXml)) { | ||
| if (tok.kind !== 'selfclose' && tok.kind !== 'open') continue; | ||
| if (tok.local !== 'commentEx') continue; | ||
| const paraId = attrByLocal(tok, 'paraId'); | ||
| const parentParaId = attrByLocal(tok, 'paraIdParent'); | ||
| if (!paraId || !parentParaId) continue; | ||
| const childId = paraIdToCommentId.get(paraId); | ||
| const parentId = paraIdToCommentId.get(parentParaId); | ||
| if (childId && parentId && childId !== parentId) { | ||
| parentByCommentId.set(childId, parentId); | ||
| } | ||
| } | ||
| for (const c of comments) { | ||
| const parent = parentByCommentId.get(c.id); | ||
| if (parent) c.parentId = parent; | ||
| } | ||
| } | ||
| return comments; | ||
| } | ||
| /** Parts that can carry comment ranges, in reading order. */ | ||
| export const COMMENT_PARTS = ['word/document.xml', 'word/footnotes.xml', 'word/endnotes.xml']; | ||
| /** | ||
| * Comment ranges across every part that can hold them — not just | ||
| * `document.xml`, so a comment anchored in a footnote or endnote is found | ||
| * rather than silently lost. Positions are offsets into the concatenated | ||
| * `fullDocText`. | ||
| */ | ||
| export function buildCommentAnchorModel(zip: AdmZip): { fullDocText: string; comments: CommentRange[] } { | ||
| let fullDocText = ''; | ||
| const comments: CommentRange[] = []; | ||
| for (const part of COMMENT_PARTS) { | ||
| const xml = readPartText(zip, part); | ||
| if (xml === null) continue; | ||
| const model = buildDocTextModel(xml); | ||
| const offset = fullDocText.length; | ||
| fullDocText += model.text; | ||
| for (const c of model.comments) { | ||
| comments.push({ id: c.id, anchor: c.anchor, start: c.start + offset, end: c.end + offset, isEmpty: c.isEmpty }); | ||
| } | ||
| } | ||
| return { fullDocText, comments }; | ||
| } |
@@ -17,3 +17,5 @@ /** | ||
| * `{++inserted++}`/`{--deleted--}`/etc. Used when an anchor lives | ||
| * underneath previously imported track changes. | ||
| * underneath previously imported track changes. Delegates to the single | ||
| * annotation stripper so the matcher and the build path resolve markup the | ||
| * same way — a payload containing `+`, `-`, or `~` is handled correctly. | ||
| */ | ||
@@ -20,0 +22,0 @@ export declare function stripCriticMarkup(text: string): string; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"anchor-match.d.ts","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,eAAe,GACf,wBAAwB,GACxB,gBAAgB,GAChB,yBAAyB,GACzB,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;;;GAIG;AACH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,CAqBR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,GACjB,kBAAkB,CAuKpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;AAElF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAsBlG"} | ||
| {"version":3,"file":"anchor-match.d.ts","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,eAAe,GACf,wBAAwB,GACxB,gBAAgB,GAChB,yBAAyB,GACzB,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,CAqBR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,GACjB,kBAAkB,CAuKpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;AAElF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAsBlG"} |
@@ -7,14 +7,12 @@ /** | ||
| */ | ||
| import { stripAnnotations } from './annotations.js'; | ||
| /** | ||
| * Strip CriticMarkup so the matcher sees plain prose instead of | ||
| * `{++inserted++}`/`{--deleted--}`/etc. Used when an anchor lives | ||
| * underneath previously imported track changes. | ||
| * underneath previously imported track changes. Delegates to the single | ||
| * annotation stripper so the matcher and the build path resolve markup the | ||
| * same way — a payload containing `+`, `-`, or `~` is handled correctly. | ||
| */ | ||
| export function stripCriticMarkup(text) { | ||
| return text | ||
| .replace(/\{\+\+([^+]*)\+\+\}/g, '$1') // insertions: keep new text | ||
| .replace(/\{--([^-]*)--\}/g, '') // deletions: remove old text | ||
| .replace(/\{~~([^~]*)~>([^~]*)~~\}/g, '$2') // substitutions: keep new text | ||
| .replace(/\{>>[\s\S]*?<<\}/g, '') // comments: remove (non-greedy; comment text may contain '<') | ||
| .replace(/\[([^\]]*)\]\{\.mark\}/g, '$1'); // marked text: keep text | ||
| return stripAnnotations(text); | ||
| } | ||
@@ -21,0 +19,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"anchor-match.js","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"anchor-match.js","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"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"} |
@@ -36,8 +36,2 @@ /** | ||
| export declare function stripToSingleSpace(text: string): string; | ||
| /** | ||
| * Check if text contains any CriticMarkup annotations | ||
| * @param text - Text to check | ||
| * @returns True if text contains any annotations | ||
| * @throws TypeError If text is not a string | ||
| */ | ||
| export declare function hasAnnotations(text: string): boolean; | ||
@@ -44,0 +38,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../lib/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAuHnG;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CA6G3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAyFjF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDvD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUpD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAiD3F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,UAAU,EAAE,CAyB1F;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAmB7F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAwB/D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6C3D"} | ||
| {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../lib/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAuHnG;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CA6G3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAyFjF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDvD;AAmBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD;AAeD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAiD3F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,UAAU,EAAE,CAyB1F;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAmB7F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAwB/D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6C3D"} |
@@ -362,2 +362,12 @@ /** | ||
| */ | ||
| // Non-global copies for membership tests. `.test()` on a global regex advances | ||
| // its lastIndex, so reusing PATTERNS here would make the result depend on prior | ||
| // calls and intermittently miss real annotations. | ||
| const ANNOTATION_TESTERS = [ | ||
| PATTERNS.insert, | ||
| PATTERNS.delete, | ||
| PATTERNS.substitute, | ||
| PATTERNS.comment, | ||
| PATTERNS.highlight, | ||
| ].map((re) => new RegExp(re.source, re.flags.replace('g', ''))); | ||
| export function hasAnnotations(text) { | ||
@@ -367,9 +377,17 @@ if (typeof text !== 'string') { | ||
| } | ||
| return PATTERNS.insert.test(text) || | ||
| PATTERNS.delete.test(text) || | ||
| PATTERNS.substitute.test(text) || | ||
| PATTERNS.comment.test(text) || | ||
| PATTERNS.highlight.test(text); | ||
| return ANNOTATION_TESTERS.some((re) => re.test(text)); | ||
| } | ||
| /** | ||
| * Replace the specific annotation occurrence at `position` rather than the | ||
| * first textual match. Two identical annotations (e.g. the same `{++the++}` | ||
| * twice) would otherwise have the wrong one edited. Falls back to a | ||
| * first-occurrence replace only if the recorded position no longer lines up. | ||
| */ | ||
| function replaceAnnotationAt(text, match, position, replacement) { | ||
| if (position >= 0 && text.startsWith(match, position)) { | ||
| return text.slice(0, position) + replacement + text.slice(position + match.length); | ||
| } | ||
| return text.replace(match, replacement); | ||
| } | ||
| /** | ||
| * Apply a decision to a single annotation (accept or reject) | ||
@@ -430,3 +448,3 @@ * @param text - Document text containing the annotation | ||
| } | ||
| return text.replace(annotation.match, replacement); | ||
| return replaceAnnotationAt(text, annotation.match, annotation.position, replacement); | ||
| } | ||
@@ -493,3 +511,3 @@ /** | ||
| const newMatch = originalMatch.replace(/<<\}$/, ' [RESOLVED]<<}'); | ||
| return text.replace(originalMatch, newMatch); | ||
| return replaceAnnotationAt(text, originalMatch, comment.position, newMatch); | ||
| } | ||
@@ -499,3 +517,3 @@ else { | ||
| const newMatch = originalMatch.replace(/\s*\[(RESOLVED|✓)\]<<\}$/, '<<}'); | ||
| return text.replace(originalMatch, newMatch); | ||
| return replaceAnnotationAt(text, originalMatch, comment.position, newMatch); | ||
| } | ||
@@ -502,0 +520,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../lib/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,6DAA6D;AAC7D,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,wEAAwE;AACxE,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,6CAA6C;AAC7C,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,yEAAyE;AACzE,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,oCAAoC;AACpC,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,iBAAiB;IAC1B,SAAS,EAAE,iBAAiB;CAC7B,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,cAAsB,EAAE,QAAgB,EAAE,QAAgB;IACxF,oDAAoD;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAEtG,iDAAiD;IACjD,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACnE,IAAI,UAAU,GAAG,WAAW;QAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;IAE/D,uEAAuE;IACvE,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,gBAAgB;IAEhE,wCAAwC;IACxC,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9D,IAAI,eAAe,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,qBAAqB;IAEjE,uDAAuD;IACvD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE7E,kCAAkC;IAClC,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC/D,IAAI,QAAQ,GAAG,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,yBAAyB;IAEhE,mCAAmC;IACnC,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACjE,IAAI,QAAQ,GAAG,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,0BAA0B;IAEjE,4DAA4D;IAE5D,sCAAsC;IACtC,IAAI,gEAAgE,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvG,4CAA4C;IAC5C,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpD,gFAAgF;IAChF,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,eAAe,GAAG,iCAAiC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,+EAA+E;IAC/E,IAAI,CAAC,eAAe,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAE9G,kDAAkD;IAClD,IAAI,6DAA6D,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpG,uEAAuE;IACvE,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,IAAI,cAAc,CAAC,MAAM,GAAG,0BAA0B;QAAE,OAAO,IAAI,CAAC;IAE5G,oFAAoF;IACpF,IAAI,2FAA2F,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5H,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,IAAI,yCAAyC,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhF,0CAA0C;IAC1C,IAAI,sCAAsC,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uDAAuD;AACvD,MAAM,oBAAoB,GAAG,kDAAkD,CAAC;AAEhF,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,2BAA2B;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC;QAClB,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,SAAS,OAAO,CAAC,QAAgB;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,QAAQ;gBAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,SAAS,UAAU,CAAC,QAAgB,EAAE,MAAc;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,oBAAoB,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,oBAAoB,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,QAAQ,EAAE,KAAK,CAAC,KAAK;YACrB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,GAAG,GAAG;SACP,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,QAAQ,EAAE,KAAK,CAAC,KAAK;YACrB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,GAAG,GAAG;SACP,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YAC3B,QAAQ,EAAE,KAAK,CAAC,KAAK;YACrB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,GAAG,GAAG;SACP,CAAC,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACxC,mEAAmE;QACnE,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,sBAAsB,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,WAAW,GAAG,cAAc,CAAC;QACjC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,wDAAwD;QACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YACjD,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC;QAED,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,OAAO,EAAE,WAAW;YACpB,MAAM;YACN,QAAQ,EAAE,KAAK,CAAC,KAAK;YACrB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,GAAG,GAAG;SACP,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,UAAwB,EAAE;IACvE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEzC,6DAA6D;IAC7D,IAAI,IAAY,CAAC;IACjB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC;QACF,IAAI,GAAG,IAAI,CAAC;QAEZ,4CAA4C;QAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE/C,sCAAsC;QACtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE3C,wCAAwC;QACxC,kEAAkE;QAClE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEzC,uCAAuC;QACvC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE9C,iCAAiC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,sDAAsD;QACtD,mEAAmE;QACnE,iEAAiE;QACjE,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,uBAAuB;QACvB,IAAI,GAAG,YAAY;YACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yCAAyC,EAAE,IAAI,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAElD,oDAAoD;QACpD,qEAAqE;QAErE,4CAA4C;QAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAE5C,0EAA0E;QAC1E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAEzC,4EAA4E;QAC5E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAExC,UAAU,EAAE,CAAC;IACf,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,UAAU,GAAG,oBAAoB,EAAE;IAE7D,kDAAkD;IAClD,2BAA2B;IAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEjC,2BAA2B;IAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE/B,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,yEAAyE;IACzE,qEAAqE;IACrE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAE7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,qDAAqD;IACrD,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAW,EAAE;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,mDAAmD;QACnD,qDAAqD;QACrD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QAED,mCAAmC;QACnC,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClC,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACvC,eAAe,GAAG,QAAQ,CAAC;oBAC3B,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpF,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,SAAS;QACX,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,UAAsB,EAAE,MAAe;IACjF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/F,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,WAAmB,CAAC;IAExB,0DAA0D;IAC1D,6EAA6E;IAC7E,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAC3C,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE9E,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,IAAI,MAAM,EAAE,CAAC;gBACX,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,+DAA+D;gBAC/D,WAAW,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,MAAM,EAAE,CAAC;gBACX,oEAAoE;gBACpE,WAAW,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;YACD,MAAM;QACR,KAAK,YAAY;YACf,IAAI,MAAM,EAAE,CAAC;gBACX,0EAA0E;gBAC1E,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC/E,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC3C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,6CAA6C;oBAC7C,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,CAAC;YACD,MAAM;QACR;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,iDAAiD;IACjD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,UAAgC,EAAE;IAC1E,iDAAiD;IACjD,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAC9D,IAAI,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAE1E,qDAAqD;IACrD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO;YACL,GAAG,CAAC;YACJ,QAAQ;YACR,OAAO,EAAE,QAAQ;gBACf,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;gBACtD,CAAC,CAAC,CAAC,CAAC,OAAO;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAmB,EAAE,QAAiB;IACnF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IACD,+BAA+B;IAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAEpC,IAAI,QAAQ,EAAE,CAAC;QACb,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,iDAAiD;IACjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAEnG,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM;YACR,KAAK,YAAY;gBACf,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,OAAO,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,kEAAkE;IAClE,uFAAuF;IACvF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IAEvD,iEAAiE;IACjE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAEnD,qEAAqE;IACrE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAEnD,oDAAoD;IACpD,wEAAwE;IACxE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qCAAqC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAChF,+DAA+D;QAC/D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mCAAmC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,mDAAmD;IACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,6CAA6C,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAC7F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,4CAA4C;YAC5C,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"} | ||
| {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../lib/annotations.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"} |
@@ -1256,10 +1256,14 @@ /** | ||
| if (code === 0) { | ||
| // For PPTX, post-process to add slide numbers, buildup colors, and logos | ||
| // For PPTX, post-process to add slide numbers, buildup colors, and logos. | ||
| // These steps enhance an already-written deck; a failure degrades the | ||
| // output rather than aborting it, so each is reported as a warning | ||
| // instead of silently swallowed — otherwise the user gets a deck | ||
| // missing slide numbers / colors / logos with no indication why. | ||
| if (format === 'pptx') { | ||
| const warn = (step, e) => console.warn(`Warning: PPTX ${step} failed; deck written without it (${e.message})`); | ||
| try { | ||
| // Inject slide numbers into content slides only | ||
| await injectSlideNumbers(outputPath); | ||
| } | ||
| catch (e) { | ||
| // Slide number injection failed but output was created | ||
| warn('slide numbering', e); | ||
| } | ||
@@ -1271,3 +1275,2 @@ try { | ||
| const buildupConfig = pptxConfig.buildup || {}; | ||
| // Merge colors and buildup config for applyBuildupColors | ||
| const colorConfig = { | ||
@@ -1283,3 +1286,3 @@ default: colorsConfig.default, | ||
| catch (e) { | ||
| // Color application failed but output was created | ||
| warn('color application', e); | ||
| } | ||
@@ -1292,3 +1295,3 @@ // Inject logos into cover slide (if media dir configured) | ||
| catch (e) { | ||
| // Logo injection failed but output was created | ||
| warn('logo injection', e); | ||
| } | ||
@@ -1295,0 +1298,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyxB3E"} | ||
| {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6xB3E"} |
@@ -8,2 +8,3 @@ /** | ||
| import * as readline from 'readline'; | ||
| import { getBuildSuggestions } from '../errors.js'; | ||
| /** | ||
@@ -572,2 +573,6 @@ * Register build commands with the program | ||
| console.error(chalk.red(`\n${f.format} error:\n${f.error}`)); | ||
| const issue = f.format === 'pdf' || f.format === 'beamer' ? 'latex_error' : 'pandoc_failed'; | ||
| for (const suggestion of getBuildSuggestions(issue, { format: f.format })) { | ||
| console.error(chalk.dim(` ${suggestion}`)); | ||
| } | ||
| } | ||
@@ -574,0 +579,0 @@ process.exit(1); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,EACL,EAAE,EACF,IAAI,EACJ,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAgCrC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAgB,EAAE,GAA0B;IACnE,6EAA6E;IAC7E,oDAAoD;IACpD,6EAA6E;IAE7E,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CAAC,QAAQ,EAAE,yCAAyC,CAAC;SAC7D,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,GAAG,CAAC;SACrE,MAAM,CAAC,CAAC,IAAwB,EAAE,OAAoB,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAErE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC3F,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACrG,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,6EAA6E;IAC7E,sDAAsD;IACtD,6EAA6E;IAE7E,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yDAAyD,CAAC;SACtE,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,GAAG,CAAC;SAC9D,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC;SAClD,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAuB,EAAE,EAAE;QACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,4BAA4B,CAAC,CAAC,CAAC;QAE5E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC9D,CAAC;iBAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,WAAW,CAAC,MAAM,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,MAAM,WAAW,GAAG,CAAC,MAAc,EAAmB,EAAE,CACtD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAErE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACzD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAErE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,wCAAwC,CAAC,CAAC,CAAC;oBACnF,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAEnF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAEtE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;oBACxC,MAAM;gBACR,CAAC;qBAAM,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;oBACxC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACrG,SAAS,EAAE,CAAC;oBAEZ,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBACtE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAClC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;wBAC9E,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;4BACpD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BACxH,SAAS,EAAE,CAAC;4BACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,KAAK,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC;wBACvE,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;qBAAM,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;oBACxC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACrG,SAAS,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,EAAE,CAAC,KAAK,EAAE,CAAC;YAEX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,SAAS,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC;YAE1E,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACrC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,6EAA6E;IAC7E,yCAAyC;IACzC,6EAA6E;IAE7E,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,SAAS,EAAE,4BAA4B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAEtD,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3C,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3D,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,kBAAkB,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mEAAmE,CAAC,CAAC,CAAC;YACjG,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAEnD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,kBAAkB;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,WAAW;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,kBAAkB;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC1E,IAAI,CAAC,WAAW;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,kBAAkB;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC1E,IAAI,CAAC,WAAW;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,kBAAkB;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,kBAAkB;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;gBAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC;gBACH,QAAQ,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;gBAEhF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;oBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAC;gBAEH,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;oBACzB,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;wBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;wBACrD,IAAI,CAAC;4BACH,IAAI,CAAC,kBAAkB,EAAE,CAAC;gCACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;gCACjD,QAAQ,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;4BAC3E,CAAC;4BACD,IAAI,CAAC,WAAW,EAAE,CAAC;gCACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gCAC1D,QAAQ,CAAC,iDAAiD,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;4BACpF,CAAC;4BACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;wBAC3E,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,KAAK,GAAG,GAAY,CAAC;4BAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;4BAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;wBAC7E,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,6EAA6E;IAC7E,2DAA2D;IAC3D,6EAA6E;IAE7E,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,SAAS,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAEzF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE9D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,OAAO,CAAC,OAAO,kBAAkB,CAAC,CAAC;YAC9E,MAAM,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,oBAAoB,WAAW,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,uCAAuC,CAAC,CAAC;YAC3E,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,CAAC;YAEpD,IAAI,CAAC;gBACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEhE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,CAAC;oBAC3D,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAED,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,cAAc,MAAM,CAAC,QAAQ,CAAC,MAAM,UAAU,CAAC,CAAC;oBAEjF,IAAI,OAAO,GAAG,CAAC,CAAC;oBAChB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAClC,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;wBACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;4BAAE,OAAO,EAAE,CAAC;oBACzC,CAAC;oBACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;wBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,0BAA0B,CAAC,CAAC;wBACzE,QAAQ,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC;gBAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACxB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;wBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5E,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iCAAiC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;wBAC1F,QAAQ,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,CAAU,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1E,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,kCAAkC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,oBAAoB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,mCAAmC,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,cAAc,QAAQ,eAAe,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,6EAA6E;IAC7E,kDAAkD;IAClD,6EAA6E;IAE7E,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,8CAA8C,CAAC;SAC3D,QAAQ,CAAC,cAAc,EAAE,mDAAmD,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC9F,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,GAAG,CAAC;SACzD,MAAM,CAAC,sBAAsB,EAAE,mDAAmD,CAAC;SACnF,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,OAAO,EAAE,2BAA2B,CAAC;SAC5C,MAAM,CAAC,gBAAgB,EAAE,qDAAqD,CAAC;SAC/E,MAAM,CAAC,QAAQ,EAAE,iEAAiE,CAAC;SACnF,MAAM,CAAC,oBAAoB,EAAE,iEAAiE,CAAC;SAC/F,MAAM,CAAC,gBAAgB,EAAE,0CAA0C,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;SACnD,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,CAAC;SAChE,MAAM,CACL,oBAAoB,EACpB,iIAAiI,EACjI,CAAC,GAAW,EAAE,OAAiB,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EACpD,EAAE,CACH;SACA,MAAM,CAAC,qBAAqB,EAAE,sMAAsM,CAAC;SACrO,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;SACnG,MAAM,CAAC,KAAK,EAAE,OAAiB,EAAE,OAAqB,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4EAA4E;QAC5E,IAAI,WAA+B,CAAC;QACpC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC7D,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;aAAM,IAAK,MAA0C,CAAC,OAAO,EAAE,CAAC;YAC/D,qFAAqF;YACrF,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,iBAAiB,CAAE,MAA0C,CAAC,OAAQ,CAAC,CAAC;YACxF,IAAI,OAAO;gBAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;QACtE,IAAI,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,iBAAiB,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACpH,IAAI,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAChD,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,4CAA4C,CAAC,CAAC,CAAC;gBACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3E,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAErE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC;gBAE3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;oBACxD,WAAW,EAAE,OAAO,CAAC,MAAM;oBAC3B,MAAM,EAAE,UAAU;iBACnB,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEtE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE;oBAChE,MAAM,EAAE,WAAW,EAAE,IAAI,QAAQ;iBAClC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,EAAE,CAAC;gBAEd,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;oBACxD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBACpD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,gBAAgB,MAAM,CAAC,KAAK,CAAC,SAAS,eAAe,MAAM,CAAC,KAAK,CAAC,aAAa,gBAAgB,CAAC,CAAC,CAAC;oBACxJ,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,GAAY,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE;gBAC9G,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,mBAAmB,oCAAoC,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,kEAAkE;oBAClE,wDAAwD;oBACxD,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC9C,KAAK,MAAM,IAAI,IAAI,IAAI;wBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,qBAAqB;YACrB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBACnG,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBAEzE,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAEnD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;wBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;wBACrD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC3B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,KAAK,EAAE,CAAC;4BACjF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;4BAClE,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAC3D,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gCACtB,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;gCAC9B,WAAW,CAAC,IAAI,EAAE,CAAC;gCACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,SAAS,CAAC,UAAU,0BAA0B,CAAC,CAAC,CAAC;4BACxF,CAAC;iCAAM,CAAC;gCACN,WAAW,CAAC,IAAI,EAAE,CAAC;gCACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;4BACzF,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;wBACpF,CAAC;oBACH,CAAC;oBAED,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAE9D,kEAAkE;oBAClE,mEAAmE;oBACnE,kDAAkD;oBAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACrD,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAErE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;oBAChE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;oBAC1E,WAAW,CAAC,IAAI,EAAE,CAAC;oBAEnB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;oBAC5E,CAAC;yBAAM,CAAC;wBACN,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;wBACtD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;wBAEtD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;wBACjE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;wBAC5D,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;wBAC5I,SAAS,CAAC,IAAI,EAAE,CAAC;wBAEjB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;4BAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAC/F,CAAC;6BAAM,CAAC;4BACN,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAW,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;4BACrF,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,KAAK,EAAE,CAAC;4BAC3E,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,cAAc,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;4BAChG,UAAU,CAAC,IAAI,EAAE,CAAC;4BAElB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gCACvB,IAAI,CAAC;oCACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oCAC1B,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gCAChC,CAAC;gCAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;4BAC1B,CAAC;4BAED,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gCAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;gCAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAW,CAAC,EAAE,CAAC,CAAC;gCACpE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,aAAa,CAAC,YAAY,YAAY,CAAC,CAAC;gCACvG,IAAI,aAAa,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;oCACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,aAAa,CAAC,eAAe,qDAAqD,CAAC,CAAC,CAAC;gCAC9H,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;4BACnG,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBACrE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,EAAE,8BAA8B,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBAC9E,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBAEzE,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACnD,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAE9D,4DAA4D;oBAC5D,iEAAiE;oBACjE,4DAA4D;oBAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACrD,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAEpE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;oBAClE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,8BAA8B,CAAC,QAAQ,EAAE;wBACjG,YAAY,EAAE,IAAI;wBAClB,aAAa,EAAE,IAAI;qBACpB,CAAC,CAAC;oBAEH,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,IAAI,EAAE,CAAC;wBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;oBAC5E,CAAC;yBAAM,CAAC;wBACN,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;wBAC5D,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;wBAEtD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC3D,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,IAAI,EAAE,CAAC;wBAEhD,gEAAgE;wBAChE,gEAAgE;wBAChE,wBAAwB;wBACxB,MAAM,aAAa,GAAa,EAAE,CAAC;wBACnC,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;wBAC1D,IAAI,cAAc,EAAE,CAAC;4BACnB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;gCAClD,CAAC,CAAC,cAAc;gCAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;4BACnC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gCAChC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;4BAC7D,CAAC;wBACH,CAAC;wBACD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;wBACrE,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;wBAClE,eAAe,CAAC,GAAG,CAAC,cAAc,GAAG,YAAY,CAAC;wBAClD,eAAe,CAAC,GAAG,CAAC,QAAQ,GAAG,oEAAoE,CAAC;wBAEpG,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;wBAClF,OAAO,CAAC,IAAI,GAAG,2BAA2B,CAAC;wBAC3C,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;wBACzJ,OAAO,CAAC,IAAI,EAAE,CAAC;wBAEf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;4BACvB,IAAI,CAAC;gCAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;4BAAC,CAAC;4BAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;4BAC5D,IAAI,CAAC;gCAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;4BAAC,CAAC;4BAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;wBAC7D,CAAC;wBAED,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;4BACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;4BAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAW,CAAC,EAAE,CAAC,CAAC;4BACnE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,YAAY,gBAAgB,CAAC,CAAC;wBAC/F,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAClG,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;YACvE,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBAC1D,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,UAAW,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,gCAAgC;oBAChC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,GAAY,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,GAAY,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"} | ||
| {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"doi.d.ts","sourceRoot":"","sources":["../../../lib/commands/doi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqZ/C"} | ||
| {"version":3,"file":"doi.d.ts","sourceRoot":"","sources":["../../../lib/commands/doi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqa/C"} |
@@ -42,2 +42,3 @@ /** | ||
| const invalid = results.entries.filter(e => e.status === 'invalid'); | ||
| const unreachable = results.entries.filter(e => e.status === 'unreachable'); | ||
| const missing = results.entries.filter(e => e.status === 'missing'); | ||
@@ -49,5 +50,7 @@ const skipped = results.entries.filter(e => e.status === 'skipped'); | ||
| [invalid.length > 0 ? chalk.red('Invalid') : 'Invalid', invalid.length > 0 ? chalk.red(invalid.length.toString()) : '0'], | ||
| [missing.length > 0 ? chalk.yellow('Missing (articles)') : 'Missing', missing.length > 0 ? chalk.yellow(missing.length.toString()) : '0'], | ||
| [chalk.dim('Skipped'), chalk.dim(skipped.length.toString())], | ||
| ]; | ||
| if (unreachable.length > 0) { | ||
| summaryRows.push([chalk.yellow('Unreachable'), chalk.yellow(unreachable.length.toString())]); | ||
| } | ||
| summaryRows.push([missing.length > 0 ? chalk.yellow('Missing (articles)') : 'Missing', missing.length > 0 ? chalk.yellow(missing.length.toString()) : '0'], [chalk.dim('Skipped'), chalk.dim(skipped.length.toString())]); | ||
| console.log(fmt.table(['Status', 'Count'], summaryRows)); | ||
@@ -64,2 +67,11 @@ console.log(); | ||
| } | ||
| // Show unreachable DOIs (network issue — not necessarily invalid) | ||
| if (unreachable.length > 0) { | ||
| console.log(chalk.yellow('Unreachable (could not contact registry — DOI may be fine):')); | ||
| for (const e of unreachable) { | ||
| console.log(` ${chalk.bold(e.key)}: ${e.doi || 'N/A'}`); | ||
| console.log(chalk.dim(` ${e.message}`)); | ||
| } | ||
| console.log(); | ||
| } | ||
| // Show missing (articles without DOI) | ||
@@ -66,0 +78,0 @@ if (missing.length > 0) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"doi.js","sourceRoot":"","sources":["../../../lib/commands/doi.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"doi.js","sourceRoot":"","sources":["../../../lib/commands/doi.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../lib/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAud/C"} | ||
| {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../lib/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+d/C"} |
@@ -230,2 +230,3 @@ /** | ||
| let totalCommentsPlaced = 0; | ||
| let totalCommentsLowConfidence = 0; | ||
| let totalCommentsDeduped = 0; | ||
@@ -295,3 +296,3 @@ let totalCommentsUnmatched = 0; | ||
| routedCommentIds.add(c.id); | ||
| const cstats = { placed: 0, deduped: 0, unmatched: 0 }; | ||
| const cstats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 }; | ||
| annotated = insertCommentsIntoMarkdown(annotated, sectionComments, anchors, { | ||
@@ -302,8 +303,12 @@ quiet: !process.env.DEBUG, | ||
| }); | ||
| stats.comments = (stats.comments || 0) + cstats.placed; | ||
| totalCommentsPlaced += cstats.placed; | ||
| // Both confident and approximate placements are written to the | ||
| // file; count both as placed, but track the approximate ones so | ||
| // the summary can flag them for review. | ||
| stats.comments = (stats.comments || 0) + cstats.placed + cstats.lowConfidence; | ||
| totalCommentsPlaced += cstats.placed + cstats.lowConfidence; | ||
| totalCommentsLowConfidence += cstats.lowConfidence; | ||
| totalCommentsDeduped += cstats.deduped; | ||
| totalCommentsUnmatched += cstats.unmatched; | ||
| if (process.env.DEBUG) { | ||
| console.log(`[DEBUG] ${section.file}: placed ${cstats.placed}, deduped ${cstats.deduped}, unmatched ${cstats.unmatched} of ${sectionComments.length}`); | ||
| console.log(`[DEBUG] ${section.file}: placed ${cstats.placed}, approx ${cstats.lowConfidence}, deduped ${cstats.deduped}, unmatched ${cstats.unmatched} of ${sectionComments.length}`); | ||
| } | ||
@@ -396,2 +401,5 @@ } | ||
| } | ||
| if (totalCommentsLowConfidence > 0) { | ||
| summaryLines.push(`${chalk.yellow(totalCommentsLowConfidence)} placed approximately (review with verify-anchors)`); | ||
| } | ||
| if (totalCommentsDeduped > 0) { | ||
@@ -493,3 +501,3 @@ summaryLines.push(`${chalk.cyan(totalCommentsDeduped)} already present (skipped)`); | ||
| if (!fs.existsSync(sectionPath)) { | ||
| results.push({ file: boundary.file, placed: 0, deduped: 0, unmatched: 0, skipped: true }); | ||
| results.push({ file: boundary.file, placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0, skipped: true }); | ||
| continue; | ||
@@ -510,7 +518,7 @@ } | ||
| if (sectionComments.length === 0) { | ||
| results.push({ file: boundary.file, placed: 0, deduped: 0, unmatched: 0, skipped: false }); | ||
| results.push({ file: boundary.file, placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0, skipped: false }); | ||
| continue; | ||
| } | ||
| const original = fs.readFileSync(sectionPath, 'utf-8'); | ||
| const stats = { placed: 0, deduped: 0, unmatched: 0 }; | ||
| const stats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 }; | ||
| const annotated = insertCommentsIntoMarkdown(original, sectionComments, anchors, { | ||
@@ -522,3 +530,3 @@ quiet: !process.env.DEBUG, | ||
| }); | ||
| if (!options.dryRun && stats.placed > 0) { | ||
| if (!options.dryRun && (stats.placed > 0 || stats.lowConfidence > 0)) { | ||
| fs.writeFileSync(sectionPath, annotated, 'utf-8'); | ||
@@ -535,2 +543,3 @@ } | ||
| chalk.green(`${r.placed}`), | ||
| r.lowConfidence > 0 ? chalk.yellow(`${r.lowConfidence}`) : chalk.dim('-'), | ||
| r.deduped > 0 ? chalk.cyan(`${r.deduped}`) : chalk.dim('-'), | ||
@@ -541,5 +550,6 @@ r.unmatched > 0 ? chalk.yellow(`${r.unmatched}`) : chalk.dim('-'), | ||
| }); | ||
| console.log(fmt.table(['File', 'Placed', 'Already', 'Unmatched', 'Mode'], tableRows, { align: ['left', 'right', 'right', 'right', 'left'] })); | ||
| console.log(fmt.table(['File', 'Placed', 'Approx', 'Already', 'Unmatched', 'Mode'], tableRows, { align: ['left', 'right', 'right', 'right', 'right', 'left'] })); | ||
| console.log(); | ||
| const totalPlaced = results.reduce((s, r) => s + r.placed, 0); | ||
| const totalLowConfidence = results.reduce((s, r) => s + r.lowConfidence, 0); | ||
| const totalDeduped = results.reduce((s, r) => s + r.deduped, 0); | ||
@@ -552,2 +562,5 @@ const totalUnmatched = results.reduce((s, r) => s + r.unmatched, 0); | ||
| } | ||
| if (totalLowConfidence > 0) { | ||
| lines.push(`${chalk.yellow(totalLowConfidence)} placed approximately (review with verify-anchors)`); | ||
| } | ||
| if (totalDeduped > 0) { | ||
@@ -562,7 +575,7 @@ lines.push(`${chalk.cyan(totalDeduped)} already present (skipped to avoid duplication)`); | ||
| } | ||
| else if (totalPlaced > 0) { | ||
| else if (totalPlaced > 0 || totalLowConfidence > 0) { | ||
| lines.push(chalk.dim('Existing prose unchanged.')); | ||
| } | ||
| console.log(fmt.box(lines.join('\n'), { title: 'Summary', padding: 0 })); | ||
| if (totalUnmatched > 0) { | ||
| if (totalUnmatched > 0 || totalLowConfidence > 0) { | ||
| console.log(); | ||
@@ -569,0 +582,0 @@ console.log(chalk.dim('Tip: run "rev verify-anchors" to see which comments drifted.')); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../lib/commands/sync.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../lib/commands/sync.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Realign comments from a reference DOCX to markdown | ||
| * Uses paragraph-level matching with exact positions | ||
| * Realign comments from a reference DOCX onto markdown. | ||
| * | ||
| * This is the same job as `rev sync`: read the comments and their anchors from | ||
| * a docx, then place them into the current markdown. It therefore reuses the | ||
| * one extraction + placement engine rather than carrying a second docx parser | ||
| * and a proportional position-mapper. | ||
| */ | ||
| interface CommentWithPosition { | ||
| id: string; | ||
| position: number; | ||
| author: string; | ||
| text: string; | ||
| } | ||
| interface Paragraph { | ||
| text: string; | ||
| comments: CommentWithPosition[]; | ||
| } | ||
| interface RealignOptions { | ||
| dryRun?: boolean; | ||
| /** When set, realign only comments by these authors; otherwise all. */ | ||
| author?: string; | ||
@@ -24,4 +19,3 @@ replyAuthor?: string; | ||
| insertions: number; | ||
| matched?: number; | ||
| unmatched?: number; | ||
| error?: string; | ||
| } | ||
@@ -39,14 +33,11 @@ interface RealignMarkdownOptions { | ||
| /** | ||
| * Extract paragraphs with their full text and comment positions from DOCX | ||
| * Realign the reference docx's comments onto an in-memory markdown string. | ||
| * Existing comments are cleared first so re-running is idempotent. | ||
| */ | ||
| export declare function extractParagraphsWithComments(docxPath: string): Promise<Paragraph[]>; | ||
| export declare function realignMarkdown(docxPath: string, markdown: string, options?: RealignMarkdownOptions): Promise<RealignMarkdownResult>; | ||
| /** | ||
| * Realign comments from reference DOCX to markdown | ||
| * Realign the reference docx's comments onto a markdown file in place. | ||
| */ | ||
| export declare function realignComments(docxPath: string, markdownPath: string, options?: RealignOptions): Promise<RealignResult>; | ||
| /** | ||
| * Realign comments in markdown string (in-memory, doesn't write to file) | ||
| */ | ||
| export declare function realignMarkdown(docxPath: string, markdown: string, options?: RealignMarkdownOptions): Promise<RealignMarkdownResult>; | ||
| export {}; | ||
| //# sourceMappingURL=comment-realign.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"comment-realign.d.ts","sourceRoot":"","sources":["../../lib/comment-realign.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AA2BD,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAyE1F;AAgMD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAgGxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA2DhC"} | ||
| {"version":3,"file":"comment-realign.d.ts","sourceRoot":"","sources":["../../lib/comment-realign.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD;;;GAGG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAsBhC;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAexB"} |
+39
-347
| /** | ||
| * Realign comments from a reference DOCX to markdown | ||
| * Uses paragraph-level matching with exact positions | ||
| * Realign comments from a reference DOCX onto markdown. | ||
| * | ||
| * This is the same job as `rev sync`: read the comments and their anchors from | ||
| * a docx, then place them into the current markdown. It therefore reuses the | ||
| * one extraction + placement engine rather than carrying a second docx parser | ||
| * and a proportional position-mapper. | ||
| */ | ||
| import * as fs from 'fs'; | ||
| import AdmZip from 'adm-zip'; | ||
| import { parseStringPromise } from 'xml2js'; | ||
| /** | ||
| * Extract paragraphs with their full text and comment positions from DOCX | ||
| */ | ||
| export async function extractParagraphsWithComments(docxPath) { | ||
| const zip = new AdmZip(docxPath); | ||
| const doc = zip.readAsText('word/document.xml'); | ||
| const commentsXml = zip.readAsText('word/comments.xml'); | ||
| // Parse comments to get authors and texts | ||
| const parsed = await parseStringPromise(commentsXml, { explicitArray: false }); | ||
| const commentNodes = parsed['w:comments']?.['w:comment']; | ||
| if (!commentNodes) | ||
| return []; | ||
| const nodes = Array.isArray(commentNodes) ? commentNodes : [commentNodes]; | ||
| const commentData = {}; | ||
| for (const c of nodes) { | ||
| const id = c.$?.['w:id'] ?? ''; | ||
| const author = c.$?.['w:author'] ?? 'Unknown'; | ||
| let text = ''; | ||
| const extractT = (n) => { | ||
| if (!n) | ||
| return; | ||
| if (n['w:t']) { | ||
| const t = n['w:t']; | ||
| text += typeof t === 'string' ? t : (t._ || t); | ||
| } | ||
| if (n['w:r']) { | ||
| (Array.isArray(n['w:r']) ? n['w:r'] : [n['w:r']]).forEach(extractT); | ||
| } | ||
| if (n['w:p']) { | ||
| (Array.isArray(n['w:p']) ? n['w:p'] : [n['w:p']]).forEach(extractT); | ||
| } | ||
| }; | ||
| extractT(c); | ||
| commentData[id] = { author, text: text.trim() }; | ||
| } | ||
| // Extract paragraphs with comments | ||
| const paragraphs = []; | ||
| const paraPattern = /<w:p\b[^>]*>([\s\S]*?)<\/w:p>/g; | ||
| let match; | ||
| while ((match = paraPattern.exec(doc)) !== null) { | ||
| const paraContent = match[1]; | ||
| const hasComments = /commentRangeStart/.test(paraContent); | ||
| // Build paragraph text and track comment positions | ||
| let text = ''; | ||
| const comments = []; | ||
| const tokenPattern = /<w:t[^>]*>([^<]*)<\/w:t>|<w:commentRangeStart[^>]*w:id="(\d+)"[^>]*\/?>/g; | ||
| let tokenMatch; | ||
| while ((tokenMatch = tokenPattern.exec(paraContent)) !== null) { | ||
| if (tokenMatch[1] !== undefined) { | ||
| text += tokenMatch[1]; | ||
| } | ||
| else if (tokenMatch[2] !== undefined) { | ||
| const cid = tokenMatch[2]; | ||
| const data = commentData[cid]; | ||
| if (data) { | ||
| comments.push({ | ||
| id: cid, | ||
| position: text.length, | ||
| author: data.author, | ||
| text: data.text, | ||
| }); | ||
| } | ||
| } | ||
| } | ||
| if (text.trim() || hasComments) { | ||
| paragraphs.push({ text: text.trim(), comments }); | ||
| } | ||
| } | ||
| return paragraphs; | ||
| import { extractWordComments, extractCommentAnchors } from './word-extraction.js'; | ||
| import { insertCommentsIntoMarkdown } from './import.js'; | ||
| /** Existing CriticMarkup comments, removed before the reference set is placed. */ | ||
| function stripExistingComments(markdown) { | ||
| return markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, ''); | ||
| } | ||
| /** | ||
| * Find best matching paragraph in markdown for a reference paragraph | ||
| * Realign the reference docx's comments onto an in-memory markdown string. | ||
| * Existing comments are cleared first so re-running is idempotent. | ||
| */ | ||
| function findMatchingParagraph(refText, mdParagraphs) { | ||
| // Normalize for comparison | ||
| const normalize = (s) => s.toLowerCase().replace(/\s+/g, ' ').trim(); | ||
| const refNorm = normalize(refText); | ||
| if (refNorm.length < 20) | ||
| return null; | ||
| let bestMatch = null; | ||
| let bestScore = 0; | ||
| for (let i = 0; i < mdParagraphs.length; i++) { | ||
| const mdNorm = normalize(mdParagraphs[i].text); | ||
| // Calculate word overlap | ||
| const refWords = new Set(refNorm.split(' ').filter((w) => w.length > 3)); | ||
| const mdWords = mdNorm.split(' ').filter((w) => w.length > 3); | ||
| const overlap = mdWords.filter((w) => refWords.has(w)).length; | ||
| const score = overlap / Math.max(refWords.size, 1); | ||
| // Also check for substring containment (for section headers) | ||
| const containsStart = mdNorm.includes(refNorm.slice(0, 50)); | ||
| if (score > bestScore || (containsStart && score > 0.3)) { | ||
| bestScore = Math.max(score, containsStart ? 0.8 : score); | ||
| bestMatch = { index: i, score: bestScore, paragraph: mdParagraphs[i] }; | ||
| export async function realignMarkdown(docxPath, markdown, options = {}) { | ||
| try { | ||
| let comments = await extractWordComments(docxPath); | ||
| const { anchors } = await extractCommentAnchors(docxPath); | ||
| if (options.author) { | ||
| const keep = new Set([options.author, options.replyAuthor].filter(Boolean)); | ||
| comments = comments.filter((c) => keep.has(c.author)); | ||
| } | ||
| const stripped = stripExistingComments(markdown); | ||
| const stats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 }; | ||
| const result = insertCommentsIntoMarkdown(stripped, comments, anchors, { | ||
| quiet: true, | ||
| wrapAnchor: false, | ||
| outStats: stats, | ||
| }); | ||
| return { success: true, markdown: result, insertions: stats.placed + stats.lowConfidence }; | ||
| } | ||
| return bestScore > 0.4 ? bestMatch : null; | ||
| } | ||
| /** | ||
| * Extract paragraphs from markdown (split by blank lines) | ||
| */ | ||
| function parseMdParagraphs(markdown) { | ||
| const paragraphs = []; | ||
| const parts = markdown.split(/\n\n+/); | ||
| let pos = 0; | ||
| for (const part of parts) { | ||
| const trimmed = part.trim(); | ||
| if (trimmed) { | ||
| const partStart = markdown.indexOf(part, pos); | ||
| if (partStart !== -1) { | ||
| paragraphs.push({ | ||
| text: trimmed, | ||
| start: partStart, | ||
| end: partStart + part.length, | ||
| }); | ||
| pos = partStart + part.length; | ||
| } | ||
| } | ||
| catch (err) { | ||
| return { success: false, markdown, insertions: 0, error: err.message }; | ||
| } | ||
| return paragraphs; | ||
| } | ||
| /** | ||
| * Normalize text for matching (remove citations, extra whitespace) | ||
| * Realign the reference docx's comments onto a markdown file in place. | ||
| */ | ||
| function normalizeForMatching(text) { | ||
| return text | ||
| // Remove Word citation placeholders | ||
| .replace(/\(\s*\$+\s*\)/g, '') | ||
| .replace(/\$+/g, '') | ||
| // Remove markdown citations | ||
| .replace(/\[@[^\]]+\]/g, '') | ||
| .replace(/@[A-Z][a-z]+\d{4}/g, '') | ||
| // Remove rendered citations like "(Author et al. 2021)" | ||
| .replace(/\([A-Z][a-z]+(?:\s+et\s+al\.?)?\s+\d{4}[a-z]?(?:[;,]\s*[A-Z][a-z]+(?:\s+et\s+al\.?)?\s+\d{4}[a-z]?)*\)/g, '') | ||
| // Remove figure references like "Fig. 1" or "(Fig. 1)" | ||
| .replace(/\(?Fig\.?\s*\d+[a-z]?\)?/gi, '') | ||
| // Normalize whitespace | ||
| .replace(/\s+/g, ' ') | ||
| .trim() | ||
| .toLowerCase(); | ||
| } | ||
| /** | ||
| * Find the word at or near a position in text | ||
| */ | ||
| function getWordAtPosition(text, pos) { | ||
| const before = text.slice(Math.max(0, pos - 30), pos); | ||
| const after = text.slice(pos, pos + 30); | ||
| // Get the last complete word before position | ||
| const beforeWords = before.split(/\s+/).filter(w => w.length > 2); | ||
| const afterWords = after.split(/\s+/).filter(w => w.length > 2); | ||
| return { | ||
| before: beforeWords.slice(-3), | ||
| after: afterWords.slice(0, 3) | ||
| }; | ||
| } | ||
| /** | ||
| * Find position in markdown paragraph matching reference position | ||
| * Uses the anchor word (word immediately before the comment) for precise matching | ||
| */ | ||
| function findMdPosition(refText, refPos, mdText) { | ||
| // Get the word(s) immediately before the comment position in reference | ||
| const refWords = getWordAtPosition(refText, refPos); | ||
| const normalizedMd = normalizeForMatching(mdText); | ||
| // The "anchor word" is the last word before the comment | ||
| const anchorWords = refWords.before; | ||
| if (anchorWords.length === 0) { | ||
| const ratio = refPos / Math.max(refText.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| // Try to find the anchor word(s) in markdown | ||
| // Start with the most specific (all words), fall back to fewer | ||
| for (let numWords = anchorWords.length; numWords >= 1; numWords--) { | ||
| const searchWords = anchorWords.slice(-numWords); | ||
| const pattern = searchWords.map(w => w.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('\\s+'); | ||
| const regex = new RegExp(pattern, 'g'); | ||
| const matches = [...normalizedMd.matchAll(regex)]; | ||
| if (matches.length === 1) { | ||
| // Unique match - use this position | ||
| const matchEnd = matches[0].index + matches[0][0].length; | ||
| // Map back to original markdown position | ||
| const ratio = matchEnd / Math.max(normalizedMd.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| else if (matches.length > 1) { | ||
| // Multiple matches - use context after to disambiguate | ||
| const afterWords = refWords.after; | ||
| if (afterWords.length > 0) { | ||
| const afterPattern = afterWords[0].toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | ||
| for (const match of matches) { | ||
| const matchEnd = match.index + match[0].length; | ||
| const afterContext = normalizedMd.slice(matchEnd, matchEnd + 50); | ||
| if (afterContext.includes(afterPattern)) { | ||
| const ratio = matchEnd / Math.max(normalizedMd.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| } | ||
| } | ||
| // Fall back to first match | ||
| const matchEnd = matches[0].index + matches[0][0].length; | ||
| const ratio = matchEnd / Math.max(normalizedMd.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| } | ||
| // Fallback: proportional position | ||
| const ratio = refPos / Math.max(refText.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| /** | ||
| * Extract reply comments that follow a parent comment | ||
| * Returns map of parent comment text -> array of reply texts | ||
| */ | ||
| function extractReplies(markdown, parentAuthor, replyAuthor) { | ||
| const replies = new Map(); | ||
| const pattern = new RegExp(`\\{>>${parentAuthor}:\\s*([^<]+)<<\\}((?:\\s*\\{>>${replyAuthor}:[^<]+<<\\})*)`, 'g'); | ||
| let match; | ||
| while ((match = pattern.exec(markdown)) !== null) { | ||
| const parentText = match[1].trim(); | ||
| const replyBlock = match[2]; | ||
| if (replyBlock) { | ||
| const replyPattern = new RegExp(`\\{>>${replyAuthor}:\\s*([^<]+)<<\\}`, 'g'); | ||
| const replyTexts = []; | ||
| let replyMatch; | ||
| while ((replyMatch = replyPattern.exec(replyBlock)) !== null) { | ||
| replyTexts.push(replyMatch[1].trim()); | ||
| } | ||
| if (replyTexts.length > 0) { | ||
| replies.set(parentText.slice(0, 50), replyTexts); // Use first 50 chars as key | ||
| } | ||
| } | ||
| } | ||
| return replies; | ||
| } | ||
| /** | ||
| * Realign comments from reference DOCX to markdown | ||
| */ | ||
| export async function realignComments(docxPath, markdownPath, options = {}) { | ||
| const { dryRun = false, author = 'Guy Colling', replyAuthor = 'Gilles Colling' } = options; | ||
| // Read original markdown to extract replies before stripping | ||
| const originalMarkdown = fs.readFileSync(markdownPath, 'utf-8'); | ||
| // Extract reply relationships | ||
| const replies = extractReplies(originalMarkdown, author, replyAuthor); | ||
| console.log(`Found ${replies.size} ${author} comments with ${replyAuthor} replies`); | ||
| // Extract reference paragraphs with comments | ||
| const refParagraphs = await extractParagraphsWithComments(docxPath); | ||
| const refWithComments = refParagraphs.filter((p) => p.comments.length > 0 && p.comments.some((c) => c.author === author)); | ||
| console.log(`Found ${refWithComments.length} paragraphs with ${author} comments in reference`); | ||
| // Strip ALL comments (both authors) from markdown to start fresh | ||
| let markdown = originalMarkdown; | ||
| markdown = markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, ''); | ||
| console.log(`Stripped all comments from markdown`); | ||
| // Parse markdown paragraphs | ||
| const mdParagraphs = parseMdParagraphs(markdown); | ||
| // Track insertions (position, text) - will insert from end to start | ||
| const insertions = []; | ||
| let matched = 0; | ||
| let unmatched = 0; | ||
| for (const refPara of refWithComments) { | ||
| const match = findMatchingParagraph(refPara.text, mdParagraphs); | ||
| if (!match) { | ||
| console.log(` No match for: "${refPara.text.slice(0, 60)}..."`); | ||
| unmatched++; | ||
| continue; | ||
| } | ||
| matched++; | ||
| const mdPara = match.paragraph; | ||
| // Get author's comments in this paragraph | ||
| const authorComments = refPara.comments.filter((c) => c.author === author); | ||
| for (const comment of authorComments) { | ||
| // Find corresponding position in markdown paragraph | ||
| const mdPos = findMdPosition(refPara.text, comment.position, mdPara?.text ?? ''); | ||
| const absolutePos = (mdPara?.start ?? 0) + mdPos; | ||
| // Build comment mark with any replies | ||
| let commentMark = ` {>>${comment.author}: ${comment.text}<<}`; | ||
| // Check for replies | ||
| const replyKey = comment.text.trim().slice(0, 50); | ||
| const replyTexts = replies.get(replyKey); | ||
| if (replyTexts) { | ||
| for (const replyText of replyTexts) { | ||
| commentMark += ` {>>${replyAuthor}: ${replyText}<<}`; | ||
| } | ||
| } | ||
| insertions.push({ | ||
| position: absolutePos, | ||
| text: commentMark, | ||
| commentText: comment.text.slice(0, 30), | ||
| hasReplies: !!replyTexts, | ||
| debug: `"${(mdPara?.text ?? '').slice(Math.max(0, mdPos - 20), mdPos)}|HERE|${(mdPara?.text ?? '').slice(mdPos, mdPos + 20)}"`, | ||
| }); | ||
| } | ||
| const { dryRun = false, author, replyAuthor } = options; | ||
| const original = fs.readFileSync(markdownPath, 'utf-8'); | ||
| const realigned = await realignMarkdown(docxPath, original, { author, replyAuthor }); | ||
| if (!realigned.success) { | ||
| return { success: false, insertions: 0, error: realigned.error }; | ||
| } | ||
| console.log(`Matched ${matched} paragraphs, ${unmatched} unmatched`); | ||
| console.log(`Inserting ${insertions.length} comments (${insertions.filter((i) => i.hasReplies).length} with replies)`); | ||
| if (dryRun) { | ||
| console.log('\nDry run - would insert:'); | ||
| for (const ins of insertions.slice(0, 10)) { | ||
| console.log(` At ${ins.position}: ${ins.debug}`); | ||
| console.log(` Comment: "${ins.commentText}..."${ins.hasReplies ? ' (+ replies)' : ''}`); | ||
| } | ||
| return { success: true, dryRun: true, insertions: insertions.length }; | ||
| return { success: true, dryRun: true, insertions: realigned.insertions }; | ||
| } | ||
| // Sort by position descending and insert | ||
| insertions.sort((a, b) => b.position - a.position); | ||
| for (const ins of insertions) { | ||
| markdown = markdown.slice(0, ins.position) + ins.text + markdown.slice(ins.position); | ||
| } | ||
| // Write result | ||
| fs.writeFileSync(markdownPath, markdown); | ||
| return { success: true, insertions: insertions.length, matched, unmatched }; | ||
| fs.writeFileSync(markdownPath, realigned.markdown); | ||
| return { success: true, insertions: realigned.insertions }; | ||
| } | ||
| /** | ||
| * Realign comments in markdown string (in-memory, doesn't write to file) | ||
| */ | ||
| export async function realignMarkdown(docxPath, markdown, options = {}) { | ||
| const { author = 'Guy Colling', replyAuthor = 'Gilles Colling' } = options; | ||
| try { | ||
| // Extract reply relationships from original markdown | ||
| const replies = extractReplies(markdown, author, replyAuthor); | ||
| // Extract reference paragraphs with comments | ||
| const refParagraphs = await extractParagraphsWithComments(docxPath); | ||
| const refWithComments = refParagraphs.filter((p) => p.comments.length > 0 && p.comments.some((c) => c.author === author)); | ||
| // Strip ALL comments from markdown | ||
| let result = markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, ''); | ||
| // Parse markdown paragraphs | ||
| const mdParagraphs = parseMdParagraphs(result); | ||
| // Track insertions | ||
| const insertions = []; | ||
| for (const refPara of refWithComments) { | ||
| const match = findMatchingParagraph(refPara.text, mdParagraphs); | ||
| if (!match) | ||
| continue; | ||
| const mdPara = match.paragraph; | ||
| const authorComments = refPara.comments.filter((c) => c.author === author); | ||
| for (const comment of authorComments) { | ||
| const mdPos = findMdPosition(refPara.text, comment.position, mdPara?.text ?? ''); | ||
| const absolutePos = (mdPara?.start ?? 0) + mdPos; | ||
| let commentMark = ` {>>${comment.author}: ${comment.text}<<}`; | ||
| // Check for replies | ||
| const replyKey = comment.text.trim().slice(0, 50); | ||
| const replyTexts = replies.get(replyKey); | ||
| if (replyTexts) { | ||
| for (const replyText of replyTexts) { | ||
| commentMark += ` {>>${replyAuthor}: ${replyText}<<}`; | ||
| } | ||
| } | ||
| insertions.push({ position: absolutePos, text: commentMark }); | ||
| } | ||
| } | ||
| // Sort by position descending and insert | ||
| insertions.sort((a, b) => b.position - a.position); | ||
| for (const ins of insertions) { | ||
| result = result.slice(0, ins.position) + ins.text + result.slice(ins.position); | ||
| } | ||
| return { success: true, markdown: result, insertions: insertions.length }; | ||
| } | ||
| catch (err) { | ||
| return { success: false, markdown, insertions: 0, error: err.message }; | ||
| } | ||
| } | ||
| //# sourceMappingURL=comment-realign.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"comment-realign.js","sourceRoot":"","sources":["../../lib/comment-realign.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"comment-realign.js","sourceRoot":"","sources":["../../lib/comment-realign.ts"],"names":[],"mappings":"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"} |
@@ -13,2 +13,12 @@ /** | ||
| /** | ||
| * Parsed pandoc version (e.g. "3.9"), or null when pandoc is unavailable. | ||
| */ | ||
| export declare function getPandocVersion(): string | null; | ||
| /** | ||
| * Whether pandoc bundles citeproc and accepts `--citeproc`. That flag and the | ||
| * built-in citeproc arrived in pandoc 2.11; earlier versions need the separate | ||
| * pandoc-citeproc filter. | ||
| */ | ||
| export declare function pandocSupportsCiteproc(): boolean; | ||
| /** | ||
| * Check if LaTeX is available (for PDF generation) | ||
@@ -15,0 +25,0 @@ */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../lib/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAwBjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,gBAAgB,CAmBpD"} | ||
| {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../lib/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAKhD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAOhD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAwBjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,gBAAgB,CAwBpD"} |
| /** | ||
| * Dependency checking utilities for pandoc, LaTeX, and related tools | ||
| */ | ||
| import { execSync } from 'child_process'; | ||
| import { execFileSync } from 'child_process'; | ||
| /** | ||
| * Check if a command is available by running it silently | ||
| * Run `<file> --version` without a shell and return its stdout, or null when | ||
| * the binary is absent (ENOENT) or exits non-zero (present but broken). Using | ||
| * execFileSync avoids shell quoting and treats both failure modes uniformly. | ||
| */ | ||
| function commandExists(cmd) { | ||
| function runVersion(file, args = ['--version']) { | ||
| try { | ||
| execSync(cmd, { stdio: 'ignore' }); | ||
| return true; | ||
| return execFileSync(file, args, { stdio: ['ignore', 'pipe', 'ignore'], encoding: 'utf-8' }); | ||
| } | ||
| catch { | ||
| return false; | ||
| return null; | ||
| } | ||
| } | ||
| function commandExists(file, args = ['--version']) { | ||
| return runVersion(file, args) !== null; | ||
| } | ||
| /** | ||
@@ -21,3 +25,3 @@ * Check if pandoc-crossref is available | ||
| export function hasPandocCrossref() { | ||
| return commandExists('pandoc-crossref --version'); | ||
| return commandExists('pandoc-crossref'); | ||
| } | ||
@@ -28,9 +32,33 @@ /** | ||
| export function hasPandoc() { | ||
| return commandExists('pandoc --version'); | ||
| return commandExists('pandoc'); | ||
| } | ||
| /** | ||
| * Parsed pandoc version (e.g. "3.9"), or null when pandoc is unavailable. | ||
| */ | ||
| export function getPandocVersion() { | ||
| const out = runVersion('pandoc'); | ||
| if (!out) | ||
| return null; | ||
| const m = out.match(/pandoc(?:\.exe)?\s+(\d+\.\d+(?:\.\d+)?)/i); | ||
| return m ? m[1] : null; | ||
| } | ||
| /** | ||
| * Whether pandoc bundles citeproc and accepts `--citeproc`. That flag and the | ||
| * built-in citeproc arrived in pandoc 2.11; earlier versions need the separate | ||
| * pandoc-citeproc filter. | ||
| */ | ||
| export function pandocSupportsCiteproc() { | ||
| const v = getPandocVersion(); | ||
| if (!v) | ||
| return false; | ||
| const parts = v.split('.').map((n) => parseInt(n, 10)); | ||
| const major = parts[0] ?? 0; | ||
| const minor = parts[1] ?? 0; | ||
| return major > 2 || (major === 2 && minor >= 11); | ||
| } | ||
| /** | ||
| * Check if LaTeX is available (for PDF generation) | ||
| */ | ||
| export function hasLatex() { | ||
| return commandExists('pdflatex --version') || commandExists('xelatex --version'); | ||
| return commandExists('pdflatex') || commandExists('xelatex'); | ||
| } | ||
@@ -77,2 +105,6 @@ /** | ||
| } | ||
| else if (!pandocSupportsCiteproc()) { | ||
| const version = getPandocVersion(); | ||
| status.messages.push(`Pandoc ${version ?? '(unknown version)'} is older than 2.11; citation processing (--citeproc) needs 2.11+. Upgrade with: ${getInstallInstructions('pandoc')}`); | ||
| } | ||
| if (!status.latex) { | ||
@@ -79,0 +111,0 @@ status.messages.push(`LaTeX not found (required for PDF). Install with: ${getInstallInstructions('latex')}`); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../lib/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,aAAa,CAAC,2BAA2B,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,aAAa,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,YAAY,GAA2C;QAC3D,MAAM,EAAE;YACN,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,sCAAsC;YAC7C,KAAK,EAAE,yBAAyB;SACjC;QACD,KAAK,EAAE;YACL,MAAM,EAAE,mCAAmC;YAC3C,KAAK,EAAE,iDAAiD;YACxD,KAAK,EAAE,+DAA+D;SACvE;QACD,iBAAiB,EAAE;YACjB,MAAM,EAAE,8BAA8B;YACtC,KAAK,EAAE,qEAAqE;YAC5E,KAAK,EAAE,qEAAqE;SAC7E;KACF,CAAC;IAEF,MAAM,oBAAoB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,oBAAoB;QAAE,OAAO,EAAE,CAAC;IAErC,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5E,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAqB;QAC/B,MAAM,EAAE,SAAS,EAAE;QACnB,KAAK,EAAE,QAAQ,EAAE;QACjB,QAAQ,EAAE,iBAAiB,EAAE;QAC7B,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mCAAmC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,qDAAqD,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,8EAA8E,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAClJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"} | ||
| {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../lib/dependencies.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"doi.d.ts","sourceRoot":"","sources":["../../lib/doi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA0B/G;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiG3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKrD;AAgDD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA6EzH;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkCzE;AAED,UAAU,mBAAmB;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkE9G;AAgHD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAW,EACnB,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,MAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CAyR1B;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,UAAU,sBAAsB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAsDnC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAmBxE"} | ||
| {"version":3,"file":"doi.d.ts","sourceRoot":"","sources":["../../lib/doi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoC/G;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiG3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKrD;AAED,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAsDzH;AAiCD;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkCzE;AAED,UAAU,mBAAmB;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwE9G;AAgHD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAW,EACnB,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,OAAO,GAAE,MAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CA6R1B;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,UAAU,sBAAsB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAsDnC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAmBxE"} |
+68
-80
@@ -21,2 +21,11 @@ /** | ||
| ]); | ||
| // Thresholds for the heuristic DOI-match score (title + author + year + | ||
| // journal). `high` auto-accepts, `medium` asks the user, below `medium` is a | ||
| // weak guess. `runnerUpMargin` is how far the best must beat the second-best | ||
| // to count as high — guards against picking the wrong one of two near-ties. | ||
| const DOI_CONFIDENCE = { | ||
| high: 120, | ||
| medium: 70, | ||
| runnerUpMargin: 30, | ||
| }; | ||
| // Entry types that should have DOIs | ||
@@ -126,40 +135,2 @@ const EXPECT_DOI_TYPES = new Set([ | ||
| /** | ||
| * Check if DOI resolves via DataCite (for Zenodo, Figshare, etc.) | ||
| */ | ||
| async function checkDoiDataCite(doi) { | ||
| try { | ||
| const response = await dataciteLimiter.fetchWithRetry(`https://api.datacite.org/dois/${encodeURIComponent(doi)}`, { | ||
| headers: { | ||
| 'Accept': 'application/vnd.api+json', | ||
| 'User-Agent': 'docrev/0.6.0 (https://github.com/gcol33/docrev)', | ||
| }, | ||
| }); | ||
| if (response.status === 404) { | ||
| return { valid: false, error: 'DOI not found in DataCite' }; | ||
| } | ||
| if (!response.ok) { | ||
| return { valid: false, error: `HTTP ${response.status}` }; | ||
| } | ||
| const data = await response.json(); | ||
| const attrs = data.data?.attributes; | ||
| if (!attrs) { | ||
| return { valid: false, error: 'Invalid DataCite response' }; | ||
| } | ||
| return { | ||
| valid: true, | ||
| source: 'datacite', | ||
| metadata: { | ||
| title: attrs.titles?.[0]?.title || '', | ||
| authors: attrs.creators?.map((c) => `${c.givenName || ''} ${c.familyName || ''}`.trim()) || [], | ||
| year: attrs.publicationYear, | ||
| journal: attrs.publisher || '', | ||
| type: attrs.types?.resourceTypeGeneral || '', | ||
| }, | ||
| }; | ||
| } | ||
| catch (err) { | ||
| return { valid: false, error: err.message }; | ||
| } | ||
| } | ||
| /** | ||
| * Check if DOI resolves (exists) - tries Crossref first, then DataCite | ||
@@ -179,29 +150,15 @@ * Results are cached for 7 days to reduce API calls. | ||
| } | ||
| // Zenodo DOIs start with 10.5281 - check DataCite first | ||
| const isZenodo = doi.startsWith('10.5281/'); | ||
| const isFigshare = doi.startsWith('10.6084/'); | ||
| const isDataCiteLikely = isZenodo || isFigshare; | ||
| if (isDataCiteLikely) { | ||
| const dataciteResult = await checkDoiDataCite(doi); | ||
| if (dataciteResult.valid) { | ||
| cacheDoi(doi, dataciteResult); | ||
| return dataciteResult; | ||
| } | ||
| } | ||
| // One resolution path: doi.org content negotiation returns CSL-JSON and | ||
| // federates every registration agency (Crossref, DataCite, mEDRA, ...), so | ||
| // there is no registrar to guess and no Crossref-then-DataCite fallback. | ||
| try { | ||
| // Use Crossref API to check DOI | ||
| const response = await crossrefLimiter.fetchWithRetry(`https://api.crossref.org/works/${encodeURIComponent(doi)}`, { | ||
| const response = await doiOrgLimiter.fetchWithRetry(`https://doi.org/${encodeURIComponent(doi)}`, { | ||
| headers: { | ||
| 'User-Agent': 'docrev/0.6.0 (https://github.com/gcol33/docrev; mailto:docrev@example.com)', | ||
| 'Accept': 'application/vnd.citationstyles.csl+json', | ||
| 'User-Agent': 'docrev (https://github.com/gcol33/docrev)', | ||
| }, | ||
| redirect: 'follow', | ||
| }); | ||
| if (response.status === 404) { | ||
| // Try DataCite as fallback (if not already tried) | ||
| if (!isDataCiteLikely) { | ||
| const dataciteResult = await checkDoiDataCite(doi); | ||
| if (dataciteResult.valid) { | ||
| cacheDoi(doi, dataciteResult); | ||
| return dataciteResult; | ||
| } | ||
| } | ||
| if (response.status === 404 || response.status === 410) { | ||
| // Definitive: the registry resolved and the DOI is not registered. | ||
| const result = { valid: false, error: 'DOI not found' }; | ||
@@ -212,17 +169,11 @@ cacheDoi(doi, result); | ||
| if (!response.ok) { | ||
| // Don't cache transient errors | ||
| return { valid: false, error: `HTTP ${response.status}` }; | ||
| // 5xx or unexpected: the registry is reachable but not answering — the | ||
| // DOI's status is unknown, so do not declare it invalid or cache it. | ||
| return { valid: false, unreachable: true, error: `HTTP ${response.status}` }; | ||
| } | ||
| const data = await response.json(); | ||
| const work = data.message; | ||
| const work = await response.json(); | ||
| const result = { | ||
| valid: true, | ||
| source: 'crossref', | ||
| metadata: { | ||
| title: work.title?.[0] || '', | ||
| authors: work.author?.map((a) => `${a.given || ''} ${a.family || ''}`.trim()) || [], | ||
| year: work.published?.['date-parts']?.[0]?.[0] || work.created?.['date-parts']?.[0]?.[0], | ||
| journal: work['container-title']?.[0] || '', | ||
| type: work.type, | ||
| }, | ||
| source: 'doi.org', | ||
| metadata: metadataFromCsl(work), | ||
| }; | ||
@@ -233,7 +184,33 @@ cacheDoi(doi, result); | ||
| catch (err) { | ||
| // Don't cache network errors | ||
| return { valid: false, error: err.message }; | ||
| // Network failure / timeout: cannot reach the resolver. Unknown, not invalid. | ||
| return { valid: false, unreachable: true, error: err.message }; | ||
| } | ||
| } | ||
| /** | ||
| * Extract docrev's metadata fields from a CSL-JSON record — the shape doi.org | ||
| * content negotiation returns for any registrar. | ||
| */ | ||
| function metadataFromCsl(work) { | ||
| const dateParts = work?.issued?.['date-parts']?.[0] || | ||
| work?.published?.['date-parts']?.[0] || | ||
| work?.created?.['date-parts']?.[0]; | ||
| const year = Array.isArray(dateParts) ? dateParts[0] : undefined; | ||
| const authors = Array.isArray(work?.author) | ||
| ? work.author | ||
| .map((a) => `${a.given || a.givenName || ''} ${a.family || a.familyName || ''}`.trim()) | ||
| .filter((s) => s.length > 0) | ||
| : []; | ||
| const title = Array.isArray(work?.title) ? work.title[0] : work?.title; | ||
| const journal = Array.isArray(work?.['container-title']) | ||
| ? work['container-title'][0] | ||
| : work?.['container-title'] || work?.publisher; | ||
| return { | ||
| title: title || '', | ||
| authors, | ||
| year: year || 0, | ||
| journal: journal || '', | ||
| type: work?.type, | ||
| }; | ||
| } | ||
| /** | ||
| * Fetch BibTeX from DOI using content negotiation | ||
@@ -277,2 +254,3 @@ */ | ||
| let invalid = 0; | ||
| let unreachable = 0; | ||
| let missing = 0; | ||
@@ -317,2 +295,8 @@ let skipped = 0; | ||
| } | ||
| else if (check.unreachable) { | ||
| // Registry unreachable — the DOI may be perfectly valid; don't | ||
| // condemn it. Offline runs report unreachable, not a wall of invalid. | ||
| unreachable++; | ||
| return { ...entry, status: 'unreachable', message: check.error }; | ||
| } | ||
| else { | ||
@@ -329,3 +313,3 @@ invalid++; | ||
| } | ||
| return { entries: results, valid, invalid, missing, skipped }; | ||
| return { entries: results, valid, invalid, unreachable, missing, skipped }; | ||
| } | ||
@@ -590,7 +574,11 @@ /** | ||
| } | ||
| // Confidence thresholds | ||
| // Confidence: a "high" pick must clear the high threshold AND beat the | ||
| // runner-up by a margin, so two near-identical candidates are reported as | ||
| // "medium" (needs review) instead of one being auto-written as if certain. | ||
| const runnerUp = (mainPapers.length > 0 ? mainPapers : scored).find(s => s.doi !== best.doi); | ||
| const margin = runnerUp ? best.score - runnerUp.score : Infinity; | ||
| let confidence = 'low'; | ||
| if (best.score >= 120) | ||
| if (best.score >= DOI_CONFIDENCE.high && margin >= DOI_CONFIDENCE.runnerUpMargin) | ||
| confidence = 'high'; | ||
| else if (best.score >= 70) | ||
| else if (best.score >= DOI_CONFIDENCE.medium) | ||
| confidence = 'medium'; | ||
@@ -623,3 +611,3 @@ // === NEW: Try DataCite if Crossref confidence is low === | ||
| doi: dcItem.DOI, | ||
| confidence: dcScore >= 120 ? 'high' : dcScore >= 70 ? 'medium' : 'low', | ||
| confidence: dcScore >= DOI_CONFIDENCE.high ? 'high' : dcScore >= DOI_CONFIDENCE.medium ? 'medium' : 'low', | ||
| score: dcScore, | ||
@@ -626,0 +614,0 @@ metadata: { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"doi.js","sourceRoot":"","sources":["../../lib/doi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExD,6CAA6C;AAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,MAAM,EAAY,+CAA+C;IACjE,QAAQ,EAAU,2BAA2B;IAC7C,QAAQ,EAAU,0BAA0B;IAC5C,eAAe;IACf,WAAW;IACX,MAAM,EAAY,0BAA0B;IAC5C,aAAa,EAAK,gBAAgB;IAClC,QAAQ,EAAU,mBAAmB;IACrC,YAAY,EAAM,sBAAsB;IACxC,SAAS;CACV,CAAC,CAAC;AAEH,oCAAoC;AACpC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,SAAS,EAAS,oCAAoC;IACtD,eAAe,EAAG,+BAA+B;IACjD,aAAa;IACb,cAAc,EAAI,+BAA+B;CAClD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,sCAAsC;IACtC,MAAM,YAAY,GAAG,8BAA8B,CAAC;IAEpD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QAE7B,uBAAuB;QACvB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,IAAI,EAAE,CAAC;QAClC,CAAC;QAED,sDAAsD;QACtD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvB,UAAU,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC9B,UAAU,EAAE,CAAC;gBACb,IAAI,OAAO,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBAChC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEvD,oBAAoB;QACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrE,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhD,2CAA2C;QAC3C,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,4BAA4B;QAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnE,4BAA4B;QAC5B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5D,eAAe;QACf,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAExD,kBAAkB;QAClB,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5D,wDAAwD;QACxD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;QAEzB,8DAA8D;QAC9D,6EAA6E;QAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QACzE,+FAA+F;QAC/F,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC7F,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEvD,OAAO,CAAC,IAAI,CAAC;YACX,GAAG;YACH,IAAI;YACJ,GAAG,EAAE,GAAG,IAAI,IAAI;YAChB,KAAK;YACL,SAAS;YACT,IAAI;YACJ,OAAO;YACP,IAAI,EAAE,IAAI,IAAI,WAAW;YACzB,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YACrC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7B,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,+BAA+B;IAC/B,0DAA0D;IAC1D,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,cAAc,CACnD,iCAAiC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAC1D;YACE,OAAO,EAAE;gBACP,QAAQ,EAAE,0BAA0B;gBACpC,YAAY,EAAE,iDAAiD;aAChE;SACF,CACF,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE;gBACR,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;gBACrC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;gBACnG,IAAI,EAAE,KAAK,CAAC,eAAe;gBAC3B,OAAO,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;gBAC9B,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,mBAAmB,IAAI,EAAE;aAC7C;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;AACH,CAAC;AAMD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,UAA2B,EAAE;IACvE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACvD,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAA2C,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,QAAQ,IAAI,UAAU,CAAC;IAEhD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC9B,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,cAAc,CACnD,kCAAkC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAC3D;YACE,OAAO,EAAE;gBACP,YAAY,EAAE,4EAA4E;aAC3F;SACF,CACF,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,kDAAkD;YAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACnD,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;oBACzB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;oBAC9B,OAAO,cAAc,CAAC;gBACxB,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,+BAA+B;YAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAE1B,MAAM,MAAM,GAAmB;YAC7B,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;gBACxF,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxF,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC;QAEF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6BAA6B;QAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,YAAY;IACZ,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;IAExD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,cAAc,CACjD,mBAAmB,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAC5C;YACE,OAAO,EAAE;gBACP,QAAQ,EAAE,sBAAsB;gBAChC,YAAY,EAAE,iDAAiD;aAChE;YACD,QAAQ,EAAE,QAAQ;SACnB,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAOD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,UAA+B,EAAE;IACnF,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEvD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAA8E,EAAE,CAAC;IAE9F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,4CAA4C;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,iBAAiB;YACjB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACtE,CAAC;YAED,eAAe;YACf,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACf,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,iCAAiC;oBACjC,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,uBAAuB,EAAE,CAAC;gBACxF,CAAC;qBAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC3B,8BAA8B;oBAC9B,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;gBAC1F,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,4BAA4B;YAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;YACxE,CAAC;YAED,wBAAwB;YACxB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAE9B,oDAAoD;QACpD,IAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAChE,CAAC;AAYD;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,SAAiB,EAAE,EAAE,OAAsB,IAAI;IAC1F,IAAI,CAAC;QACH,wBAAwB;QACxB,IAAI,KAAK,GAAG,gBAAgB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QACzD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,IAAI,sBAAsB,MAAM,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,IAAI,wBAAwB,IAAI,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,cAAc,CACnD,iCAAiC,MAAM,EAAE,EACzC;YACE,OAAO,EAAE;gBACP,QAAQ,EAAE,0BAA0B;gBACpC,YAAY,EAAE,iDAAiD;aAChE;SACF,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA+B,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAE9B,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9B,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,EAAE;gBACZ,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;gBACtF,iBAAiB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE;gBAC9D,iBAAiB,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC1C,KAAK,EAAE,EAAE,EAAE,kCAAkC;gBAC7C,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAE,sBAAsB;SAC9C,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAE,mCAAmC;SACjE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE,UAAkB,EAAE;IACjF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnD,iCAAiC;IACjC,IAAI,mDAAmD,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,IAAI,mDAAmD,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAaD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAa,EACb,SAAiB,EAAE,EACnB,OAAsB,IAAI,EAC1B,UAAkB,EAAE;IAEpB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IACxE,CAAC;IAED,0DAA0D;IAC1D,MAAM,YAAY,GAAG,mDAAmD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErF,IAAI,CAAC;QACH,6EAA6E;QAC7E,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,CAAC;QACD,2CAA2C;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,GAAmB,EAAE,CAAC;QAE/B,2DAA2D;QAC3D,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC;YAC3C,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,8EAA8E;SACvF,CAAC,CAAC;QACH,gBAAgB,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC;YACX,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,QAAQ,GAAG,MAAM,eAAe,CAAC,cAAc,CACjD,kCAAkC,gBAAgB,EAAE,EACpD;YACE,OAAO,EAAE;gBACP,YAAY,EAAE,4EAA4E;aAC3F;SACF,CACF,CAAC;QAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA8C,CAAC;YAC/E,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,+FAA+F;QAC/F,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;gBACtC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,8EAA8E;aACvF,CAAC,CAAC;YACH,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAEtC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,cAAc,CACpD,kCAAkC,WAAW,EAAE,EAC/C;gBACE,OAAO,EAAE;oBACP,YAAY,EAAE,4EAA4E;iBAC3F;aACF,CACF,CAAC;YAEF,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAA8C,CAAC;gBAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC3C,qCAAqC;gBACrC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;gBACtC,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,8EAA8E;aACvF,CAAC,CAAC;YAEH,QAAQ,GAAG,MAAM,eAAe,CAAC,cAAc,CAC7C,kCAAkC,WAAW,EAAE,EAC/C;gBACE,OAAO,EAAE;oBACP,YAAY,EAAE,4EAA4E;iBAC3F;aACF,CACF,CAAC;YAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA8C,CAAC;gBAC/E,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAChE,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAExD,oBAAoB;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAEhE,iDAAiD;YACjD,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC3D,KAAK,IAAI,GAAG,CAAC,CAAE,0CAA0C;YAC3D,CAAC;YAED,4CAA4C;YAC5C,IAAI,mBAAmB,KAAK,qBAAqB,EAAE,CAAC;gBAClD,KAAK,IAAI,GAAG,CAAC,CAAE,cAAc;YAC/B,CAAC;iBAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBACnD,qBAAqB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC/D,KAAK,IAAI,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,qBAAqB;gBACrB,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjF,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC7E,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CACvD,CAAC;gBACF,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACnE,CAAC;YAED,uBAAuB;YACvB,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACpD,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;gBACF,IAAI,SAAS;oBAAE,KAAK,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,8BAA8B;YAC9B,IAAI,iBAAiB,IAAI,qBAAqB,EAAE,CAAC;gBAC/C,uDAAuD;gBACvD,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC9E,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEtF,uBAAuB;gBACvB,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7C,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;gBAEF,IAAI,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9D,KAAK,IAAI,EAAE,CAAC,CAAE,qBAAqB;gBACrC,CAAC;qBAAM,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtC,KAAK,IAAI,EAAE,CAAC,CAAE,gBAAgB;gBAChC,CAAC;gBAED,gCAAgC;gBAChC,IAAI,qBAAqB,KAAK,iBAAiB,EAAE,CAAC;oBAChD,KAAK,IAAI,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAED,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,KAAK,IAAI,EAAE,CAAC,CAAE,6CAA6C;gBAC7D,CAAC;qBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,KAAK,IAAI,EAAE,CAAC,CAAE,uCAAuC;gBACvD,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,EAAE,CAAC,CAAE,kCAAkC;gBAClD,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,KAAK,IAAI,EAAE,CAAC,CAAE,oBAAoB;YACpC,CAAC;YAED,0CAA0C;YAC1C,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAEvC,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;gBACjF,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,WAAW;gBACpB,KAAK;gBACL,aAAa,EAAE,IAAI,CAAC,KAAK;gBACzB,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC;aACrE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,wEAAwE;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;QAC3D,CAAC;QAED,wBAAwB;QACxB,IAAI,UAAU,GAA8B,KAAK,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,UAAU,GAAG,MAAM,CAAC;aACtC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,UAAU,GAAG,QAAQ,CAAC;QAEjD,0DAA0D;QAC1D,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAChE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,yCAAyC;gBACzC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;oBACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACxC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBACxD,IAAI,OAAO,GAAG,CAAC,CAAC;oBAEhB,cAAc;oBACd,IAAI,iBAAiB,KAAK,qBAAqB,EAAE,CAAC;wBAChD,OAAO,IAAI,GAAG,CAAC;oBACjB,CAAC;yBAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,qBAAqB,CAAC;wBACjD,qBAAqB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBAC7D,OAAO,IAAI,EAAE,CAAC;oBAChB,CAAC;oBAED,aAAa;oBACb,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnE,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;wBACtC,OAAO,IAAI,EAAE,CAAC;oBAChB,CAAC;oBAED,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;wBACzB,OAAO;4BACL,KAAK,EAAE,IAAI;4BACX,GAAG,EAAE,MAAM,CAAC,GAAG;4BACf,UAAU,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;4BACtE,KAAK,EAAE,OAAO;4BACd,QAAQ,EAAE;gCACR,KAAK,EAAE,OAAO;gCACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;gCAC1F,IAAI,EAAE,MAAM;gCACZ,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;6BAC9C;4BACD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;yBACjC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;gBACpB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;YACD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;AACH,CAAC;AAeD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,UAAoC,EAAE;IAEtC,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE7C,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,CAAC,GAAG;QACN,CAAC,CAAC,CAAC,IAAI;QACP,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAC1B,CAAC;IAEF,MAAM,OAAO,GAA6B,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,kDAAkD;YAClD,qDAAqD;YACrD,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,sCAAsC;gBACtC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACrC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAE/E,OAAO;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM;aACP,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAE9B,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAQD;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAc;IACtD,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;IACjF,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExB,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,uBAAuB,OAAO,EAAE,EAAE,CAAC;IAChF,CAAC;IAED,iBAAiB;IACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAChC,CAAC"} | ||
| {"version":3,"file":"doi.js","sourceRoot":"","sources":["../../lib/doi.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,MAAM,CAW/E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCrE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAmDrE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAuC3E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,EAAE,CAuCvF;AAuDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,KAAK,CAGhF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAe,GAAG,IAAI,CAO7E"} | ||
| {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,MAAM,CAW/E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA6CrE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAmDrE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAuC3E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,EAAE,CAuCvF;AAuDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,KAAK,CAGhF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAe,GAAG,IAAI,CAO7E"} |
@@ -36,3 +36,5 @@ /** | ||
| suggestions.push(`Directory does not exist: ${dir}`); | ||
| suggestions.push(`Create it with: mkdir -p "${dir}"`); | ||
| suggestions.push(process.platform === 'win32' | ||
| ? `Create it with: New-Item -ItemType Directory -Force "${dir}"` | ||
| : `Create it with: mkdir -p "${dir}"`); | ||
| return suggestions; | ||
@@ -39,0 +41,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../lib/errors.ts"],"names":[],"mappings":"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"} |
@@ -32,6 +32,8 @@ /** | ||
| * Mutable output: when provided, the function fills in counters so callers | ||
| * can distinguish placement outcomes in their summary. `placed` counts new | ||
| * insertions, `deduped` counts comments that were already present at their | ||
| * anchor (skipped to avoid duplication on re-sync), `unmatched` counts | ||
| * comments whose anchor couldn't be located. | ||
| * can distinguish placement outcomes in their summary. `placed` counts | ||
| * insertions made at a matched anchor or context, `lowConfidence` counts | ||
| * insertions made at an approximate (proportional / context-only) position | ||
| * that should be reviewed with `rev verify-anchors`, `deduped` counts | ||
| * comments already present at their anchor (skipped on re-sync), and | ||
| * `unmatched` counts comments that could not be placed at all. | ||
| */ | ||
@@ -42,2 +44,3 @@ outStats?: { | ||
| unmatched: number; | ||
| lowConfidence?: number; | ||
| }; | ||
@@ -44,0 +47,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"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"} |
+58
-62
@@ -16,3 +16,3 @@ /** | ||
| import { restoreCrossrefFromWord, restoreImagesFromRegistry, convertVisibleComments, } from './restore-references.js'; | ||
| import { findAnchorInText, findAllOccurrences } from './anchor-match.js'; | ||
| import { findAnchorInText } from './anchor-match.js'; | ||
| /** | ||
@@ -26,3 +26,3 @@ * Pick the best position from candidate `occurrences` given the | ||
| */ | ||
| function pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions) { | ||
| function pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions, nearPos) { | ||
| if (occurrences.length === 0) | ||
@@ -37,2 +37,7 @@ return -1; | ||
| let bestScore = -1; | ||
| // Tie-break by context score first; when scores tie, prefer the occurrence | ||
| // nearest `nearPos` (a section-position estimate) if given, else the | ||
| // leftmost. The estimate only orders equally-scored candidates — it is never | ||
| // the returned position. | ||
| const closer = (pos, incumbent) => nearPos === undefined ? pos < incumbent : Math.abs(pos - nearPos) < Math.abs(incumbent - nearPos); | ||
| for (const pos of occurrences) { | ||
@@ -64,3 +69,3 @@ if (usedPositions.has(pos)) | ||
| } | ||
| if (score > bestScore || (score === bestScore && pos < bestIdx)) { | ||
| if (score > bestScore || (score === bestScore && closer(pos, bestIdx))) { | ||
| bestScore = score; | ||
@@ -77,2 +82,12 @@ bestIdx = pos; | ||
| const execAsync = promisify(exec); | ||
| /** | ||
| * Whether a resolved placement landed on matched anchor/context text (high) or | ||
| * on an approximate position the user should review (low). Low-confidence | ||
| * strategies place the comment without matching the anchor word itself. | ||
| */ | ||
| function placementConfidence(strategy) { | ||
| if (!strategy) | ||
| return 'high'; | ||
| return /proportional|position-only|context/.test(strategy) ? 'low' : 'high'; | ||
| } | ||
| // ============================================ | ||
@@ -157,2 +172,3 @@ // Functions | ||
| let placedCount = 0; | ||
| let lowConfidenceCount = 0; | ||
| const duplicateWarnings = []; | ||
@@ -207,19 +223,14 @@ const usedPositions = new Set(); // For tie-breaking: track used positions | ||
| const docPosition = typeof anchorData === 'object' ? anchorData.docPosition : undefined; | ||
| // Position-based insertion (most reliable) | ||
| // Section-scoped insertion. The comment is known to belong to this | ||
| // section (the caller already filtered by docPosition); place it by | ||
| // matching its anchor text within the section, never by mapping a length | ||
| // ratio across the docx and markdown coordinate systems. The section | ||
| // estimate only seeds duplicate tie-breaking and the final fallback. | ||
| if (sectionBoundary && docPosition !== undefined) { | ||
| const sectionLength = sectionBoundary.end - sectionBoundary.start; | ||
| if (sectionLength > 0) { | ||
| let relativePos; | ||
| if (docPosition < sectionBoundary.start) { | ||
| relativePos = 0; | ||
| } | ||
| else { | ||
| relativePos = docPosition - sectionBoundary.start; | ||
| } | ||
| const relativePos = docPosition < sectionBoundary.start ? 0 : docPosition - sectionBoundary.start; | ||
| const proportion = Math.min(relativePos / sectionLength, 1.0); | ||
| const markdownPos = Math.floor(proportion * result.length); | ||
| // For empty anchors, before/after context is the only signal that | ||
| // pinpoints the original split — without it, proportional placement | ||
| // can land mid-word or split unrelated phrases. Try context match | ||
| // first; only fall through to proportional when context is gone. | ||
| const estimatedPos = Math.floor(proportion * result.length); | ||
| // Empty anchor: before/after context is the only text signal. | ||
| if ((!anchor || isEmpty) && (before || after)) { | ||
@@ -232,52 +243,27 @@ const ctx = findAnchorInText('', result, before, after); | ||
| } | ||
| let insertPos = markdownPos; | ||
| // Look for nearby word boundary | ||
| const searchWindow = result.slice(Math.max(0, markdownPos - 25), Math.min(result.length, markdownPos + 25)); | ||
| const spaceIdx = searchWindow.indexOf(' ', 25); | ||
| if (spaceIdx !== -1 && spaceIdx < 50) { | ||
| insertPos = Math.max(0, markdownPos - 25) + spaceIdx; | ||
| } | ||
| // If we have anchor text, try to find it near this position. | ||
| // Collect ALL occurrences in the local window, then disambiguate | ||
| // via before/after context + usedPositions — otherwise two | ||
| // comments sharing the same anchor word would both collide at | ||
| // the leftmost match. The context-scoring helper handles the | ||
| // "repeated formulaic prose" case using docx-side context, which | ||
| // is a stronger signal than raw distance to the proportional | ||
| // insertPos (insertPos is itself an approximation). | ||
| // Non-empty anchor: locate it anywhere in the section text. Duplicates | ||
| // are disambiguated by before/after context and, only as a tie-break, | ||
| // by proximity to the section estimate. | ||
| if (anchor && !isEmpty) { | ||
| const searchStart = Math.max(0, insertPos - 200); | ||
| const searchEnd = Math.min(result.length, insertPos + 200); | ||
| const localSearch = result.slice(searchStart, searchEnd).toLowerCase(); | ||
| const anchorLower = anchor.toLowerCase(); | ||
| const localHits = findAllOccurrences(localSearch, anchorLower).map(i => searchStart + i); | ||
| if (localHits.length > 0) { | ||
| const chosen = pickBestOccurrence(localHits, result, before, after, anchor.length, usedPositions); | ||
| if (chosen >= 0) { | ||
| if (localHits.length > 1) { | ||
| duplicateWarnings.push(`"${anchor.slice(0, 40)}${anchor.length > 40 ? '...' : ''}" appears ${localHits.length} times in section window`); | ||
| } | ||
| usedPositions.add(chosen); | ||
| return { ...c, pos: chosen, anchorText: anchor, anchorEnd: chosen + anchor.length, strategy: 'position+text' }; | ||
| const { occurrences, matchedAnchor, strategy } = findAnchorInText(anchor, result, before, after); | ||
| if (occurrences.length > 0) { | ||
| const anchorLen = matchedAnchor ? matchedAnchor.length : 0; | ||
| const chosen = pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions, estimatedPos); | ||
| const finalIdx = chosen >= 0 ? chosen : occurrences[0]; | ||
| if (occurrences.length > 1 && matchedAnchor) { | ||
| duplicateWarnings.push(`"${matchedAnchor.slice(0, 40)}${matchedAnchor.length > 40 ? '...' : ''}" appears ${occurrences.length} times in section`); | ||
| } | ||
| } | ||
| // Try first few words | ||
| const words = anchor.split(/\s+/).slice(0, 4).join(' ').toLowerCase(); | ||
| if (words.length >= 10) { | ||
| const partialHits = findAllOccurrences(localSearch, words).map(i => searchStart + i); | ||
| if (partialHits.length > 0) { | ||
| const chosen = pickBestOccurrence(partialHits, result, before, after, words.length, usedPositions); | ||
| if (chosen >= 0) { | ||
| usedPositions.add(chosen); | ||
| return { ...c, pos: chosen, anchorText: words, anchorEnd: chosen + words.length, strategy: 'position+partial' }; | ||
| } | ||
| usedPositions.add(finalIdx); | ||
| if (matchedAnchor) { | ||
| return { ...c, pos: finalIdx, anchorText: matchedAnchor, anchorEnd: finalIdx + anchorLen, strategy: `section:${strategy}` }; | ||
| } | ||
| return { ...c, pos: finalIdx, anchorText: null, strategy: `section:${strategy}` }; | ||
| } | ||
| } | ||
| // A docPosition at the very start of a section maps to markdownPos=0, | ||
| // which sits before the file's `# Heading` line and gets rendered in | ||
| // the previous section. Push past the heading line so the comment | ||
| // stays inside the section it was authored in. | ||
| insertPos = pushPastSectionHeading(result, insertPos); | ||
| return { ...c, pos: insertPos, anchorText: null, strategy: 'position-only' }; | ||
| // Anchor text and context are both gone from the section. The docx | ||
| // marker's offset is the only remaining signal: map it proportionally | ||
| // and snap to a word boundary. This is an approximate placement, not a | ||
| // match — flagged low-confidence so the summary surfaces it. | ||
| const insertPos = pushPastSectionHeading(result, snapToWordBoundary(result, estimatedPos)); | ||
| return { ...c, pos: insertPos, anchorText: null, strategy: 'proportional-fallback' }; | ||
| } | ||
@@ -421,6 +407,13 @@ } | ||
| } | ||
| placedCount += 1 + replies.length; | ||
| // Replies inherit the root's confidence — they ride the same position. | ||
| if (placementConfidence(c.strategy) === 'low') { | ||
| lowConfidenceCount += 1 + replies.length; | ||
| } | ||
| else { | ||
| placedCount += 1 + replies.length; | ||
| } | ||
| } | ||
| if (outStats) { | ||
| outStats.placed = placedCount; | ||
| outStats.lowConfidence = lowConfidenceCount; | ||
| outStats.deduped = dedupedCount; | ||
@@ -434,2 +427,5 @@ outStats.unmatched = unmatchedCount; | ||
| } | ||
| if (lowConfidenceCount > 0) { | ||
| console.warn(`Note: ${lowConfidenceCount} comment(s) placed approximately — run \`rev verify-anchors\` to review`); | ||
| } | ||
| if (dedupedCount > 0) { | ||
@@ -436,0 +432,0 @@ console.warn(`Note: ${dedupedCount} comment(s) already present at anchor — skipped to avoid duplication`); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"import.js","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"import.js","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"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"} |
@@ -9,3 +9,10 @@ /** | ||
| backoffFactor?: number; | ||
| /** Per-request timeout in ms; a stalled connection aborts instead of hanging. */ | ||
| requestTimeout?: number; | ||
| } | ||
| /** | ||
| * Parse an HTTP `Retry-After` header, which may be a delay in seconds or an | ||
| * HTTP-date. Returns the delay in milliseconds, or null when unparseable. | ||
| */ | ||
| export declare function parseRetryAfter(value: string | null, now?: number): number | null; | ||
| export declare class RateLimiter { | ||
@@ -16,2 +23,3 @@ private minDelay; | ||
| private backoffFactor; | ||
| private requestTimeout; | ||
| private lastRequestTime; | ||
@@ -18,0 +26,0 @@ private currentDelay; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../lib/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,OAAO,GAAE,kBAAuB;IAUtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,SAAS,IAAI,IAAI;IAMjB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkChF;AAGD,eAAO,MAAM,eAAe,aAAsD,CAAC;AACnF,eAAO,MAAM,eAAe,aAAsD,CAAC;AACnF,eAAO,MAAM,aAAa,aAAsD,CAAC"} | ||
| {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../lib/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAO7F;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,OAAO,GAAE,kBAAuB;IAWtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,SAAS,IAAI,IAAI;IAMjB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS9B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkDhF;AAGD,eAAO,MAAM,eAAe,aAAsD,CAAC;AACnF,eAAO,MAAM,eAAe,aAAsD,CAAC;AACnF,eAAO,MAAM,aAAa,aAAsD,CAAC"} |
| /** | ||
| * Rate Limiter - Prevents API abuse with exponential backoff | ||
| */ | ||
| /** | ||
| * Parse an HTTP `Retry-After` header, which may be a delay in seconds or an | ||
| * HTTP-date. Returns the delay in milliseconds, or null when unparseable. | ||
| */ | ||
| export function parseRetryAfter(value, now = Date.now()) { | ||
| if (!value) | ||
| return null; | ||
| const seconds = Number(value); | ||
| if (Number.isFinite(seconds)) | ||
| return Math.max(0, seconds * 1000); | ||
| const date = Date.parse(value); | ||
| if (!Number.isNaN(date)) | ||
| return Math.max(0, date - now); | ||
| return null; | ||
| } | ||
| export class RateLimiter { | ||
@@ -9,2 +24,3 @@ minDelay; | ||
| backoffFactor; | ||
| requestTimeout; | ||
| lastRequestTime; | ||
@@ -18,2 +34,3 @@ currentDelay; | ||
| this.backoffFactor = options.backoffFactor || 2; | ||
| this.requestTimeout = options.requestTimeout || 15000; // Abort a stalled request | ||
| this.lastRequestTime = 0; | ||
@@ -46,10 +63,21 @@ this.currentDelay = this.minDelay; | ||
| let lastError; | ||
| const callerSignal = options.signal ?? undefined; | ||
| for (let attempt = 0; attempt <= this.maxRetries; attempt++) { | ||
| await this.wait(); | ||
| // Bound each attempt so a half-open connection cannot hang the run | ||
| // forever; merge the caller's signal so an external cancel still works. | ||
| const controller = new AbortController(); | ||
| const timer = setTimeout(() => controller.abort(new Error('Request timed out')), this.requestTimeout); | ||
| const onCallerAbort = () => controller.abort(callerSignal.reason); | ||
| if (callerSignal) { | ||
| if (callerSignal.aborted) | ||
| controller.abort(callerSignal.reason); | ||
| else | ||
| callerSignal.addEventListener('abort', onCallerAbort, { once: true }); | ||
| } | ||
| try { | ||
| const response = await fetch(url, options); | ||
| const response = await fetch(url, { ...options, signal: controller.signal }); | ||
| if (response.status === 429) { | ||
| // Rate limited - back off | ||
| const retryAfter = response.headers.get('Retry-After'); | ||
| const delay = retryAfter ? parseInt(retryAfter, 10) * 1000 : this.currentDelay * 2; | ||
| // Rate limited - back off. Retry-After may be seconds or an HTTP-date. | ||
| const delay = parseRetryAfter(response.headers.get('Retry-After')) ?? this.currentDelay * 2; | ||
| this.currentDelay = Math.min(this.maxDelay, delay); | ||
@@ -70,2 +98,6 @@ if (!this.onError(429)) | ||
| catch (err) { | ||
| // A caller-initiated abort is intentional cancellation, not a failure | ||
| // to retry around. | ||
| if (callerSignal?.aborted) | ||
| throw err; | ||
| lastError = err; | ||
@@ -75,2 +107,7 @@ if (!this.onError(0)) | ||
| } | ||
| finally { | ||
| clearTimeout(timer); | ||
| if (callerSignal) | ||
| callerSignal.removeEventListener('abort', onCallerAbort); | ||
| } | ||
| } | ||
@@ -77,0 +114,0 @@ throw lastError || new Error('Max retries exceeded'); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../lib/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,OAAO,WAAW;IACd,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,aAAa,CAAS;IACtB,eAAe,CAAS;IACxB,YAAY,CAAS;IACrB,iBAAiB,CAAS;IAElC,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAM,kCAAkC;QAChF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAI,+BAA+B;QAC7E,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAI,qBAAqB;QACnE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,CAAC;IAED,SAAS;QACP,oCAAoC;QACpC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,CAAC,UAAkB;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,sBAAsB;QACtB,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,UAAuB,EAAE;QACzD,IAAI,SAA4B,CAAC;QAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAElB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAE3C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,0BAA0B;oBAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACvD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;oBACnF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;wBAAE,MAAM;oBAC9B,SAAS;gBACX,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxD,oCAAoC;oBACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAAE,MAAM;oBAC1C,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAY,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,MAAM;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACvD,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC"} | ||
| {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../lib/rate-limiter.ts"],"names":[],"mappings":"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"} |
@@ -191,3 +191,9 @@ /** | ||
| valid: boolean; | ||
| source?: 'crossref' | 'datacite'; | ||
| source?: 'crossref' | 'datacite' | 'doi.org'; | ||
| /** | ||
| * True when the registry could not be reached (network error, timeout, or | ||
| * 5xx) — the DOI's validity is unknown, distinct from a definitive "not | ||
| * found". Callers must not report an unreachable DOI as invalid. | ||
| */ | ||
| unreachable?: boolean; | ||
| metadata?: { | ||
@@ -233,2 +239,4 @@ title: string; | ||
| invalid: number; | ||
| /** DOIs whose registry could not be reached (network/timeout) — not invalid. */ | ||
| unreachable: number; | ||
| missing: number; | ||
@@ -235,0 +243,0 @@ skipped: number; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAQ,SAAQ,UAAU;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,QAAQ,EAAE;QACR,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QACvC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,UAAU,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrD,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE;QACJ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACzF,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAMD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,aAAa,EAAE,aAAa,EAAE,CAAC;CAChC;AAMD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAMD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"word-extraction.d.ts","sourceRoot":"","sources":["../../lib/word-extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6HlF;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6J3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoE9E;AA2GD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2C9E;AAqCD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA0IhC"} | ||
| {"version":3,"file":"word-extraction.d.ts","sourceRoot":"","sources":["../../lib/word-extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAclF;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuC3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAe9E;AA2GD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2C9E;AAqCD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA0IhC"} |
+48
-307
@@ -8,2 +8,3 @@ /** | ||
| import { promisify } from 'util'; | ||
| import { buildDocTextModel, buildCommentAnchorModel, extractComments, openDocx, readPartText } from './ooxml.js'; | ||
| const execAsync = promisify(exec); | ||
@@ -17,119 +18,14 @@ // ============================================ | ||
| export async function extractWordComments(docxPath) { | ||
| const AdmZip = (await import('adm-zip')).default; | ||
| const { parseStringPromise } = await import('xml2js'); | ||
| const comments = []; | ||
| // Validate file exists | ||
| if (!fs.existsSync(docxPath)) { | ||
| throw new Error(`File not found: ${docxPath}`); | ||
| } | ||
| try { | ||
| let zip; | ||
| try { | ||
| zip = new AdmZip(docxPath); | ||
| } | ||
| catch (err) { | ||
| throw new Error(`Invalid Word document (not a valid .docx file): ${err.message}`); | ||
| } | ||
| const commentsEntry = zip.getEntry('word/comments.xml'); | ||
| if (!commentsEntry) { | ||
| return comments; | ||
| } | ||
| let commentsXml; | ||
| try { | ||
| commentsXml = commentsEntry.getData().toString('utf8'); | ||
| } | ||
| catch (err) { | ||
| throw new Error(`Failed to read comments from document: ${err.message}`); | ||
| } | ||
| const parsed = await parseStringPromise(commentsXml, { explicitArray: false }); | ||
| const commentsRoot = parsed['w:comments']; | ||
| if (!commentsRoot || !commentsRoot['w:comment']) { | ||
| return comments; | ||
| } | ||
| // Ensure it's an array | ||
| const commentNodes = Array.isArray(commentsRoot['w:comment']) | ||
| ? commentsRoot['w:comment'] | ||
| : [commentsRoot['w:comment']]; | ||
| // Map every paraId that lives inside a comment back to that comment's id. | ||
| // Word's commentsExtended.xml expresses threading via w15:paraIdParent, | ||
| // which references the parent's first <w:p>. Replies use a secondary | ||
| // (often-empty) <w:p>, so each comment may contribute multiple paraIds. | ||
| const paraIdToCommentId = new Map(); | ||
| for (const comment of commentNodes) { | ||
| const id = comment.$?.['w:id'] || ''; | ||
| const author = comment.$?.['w:author'] || 'Unknown'; | ||
| const date = comment.$?.['w:date'] || ''; | ||
| // Extract text from nested w:p/w:r/w:t elements and record paraIds. | ||
| let text = ''; | ||
| const extractText = (node) => { | ||
| if (!node) | ||
| return; | ||
| if (typeof node === 'string') { | ||
| text += node; | ||
| return; | ||
| } | ||
| if (node['w:t']) { | ||
| const t = node['w:t']; | ||
| text += typeof t === 'string' ? t : (t._ || t); | ||
| } | ||
| if (node['w:r']) { | ||
| const runs = Array.isArray(node['w:r']) ? node['w:r'] : [node['w:r']]; | ||
| runs.forEach(extractText); | ||
| } | ||
| if (node['w:p']) { | ||
| const paras = Array.isArray(node['w:p']) ? node['w:p'] : [node['w:p']]; | ||
| for (const para of paras) { | ||
| const paraId = para?.$?.['w14:paraId']; | ||
| if (paraId && id) | ||
| paraIdToCommentId.set(paraId, id); | ||
| extractText(para); | ||
| } | ||
| } | ||
| }; | ||
| extractText(comment); | ||
| comments.push({ id, author, date: date.slice(0, 10), text: text.trim() }); | ||
| } | ||
| // Resolve parent links from commentsExtended.xml. Missing entry just | ||
| // means the docx has no threading metadata (e.g. legacy/non-Word source). | ||
| const extendedEntry = zip.getEntry('word/commentsExtended.xml'); | ||
| if (extendedEntry && paraIdToCommentId.size > 0) { | ||
| let extendedXml = ''; | ||
| try { | ||
| extendedXml = extendedEntry.getData().toString('utf8'); | ||
| } | ||
| catch { | ||
| // Unreadable threading metadata is non-fatal; skip parent linking. | ||
| } | ||
| if (extendedXml) { | ||
| const parentByCommentId = new Map(); | ||
| const exPattern = /<w15:commentEx\b([^>]*?)\/>/g; | ||
| let m; | ||
| while ((m = exPattern.exec(extendedXml)) !== null) { | ||
| const attrs = m[1] ?? ''; | ||
| const paraIdMatch = attrs.match(/w15:paraId="([^"]+)"/); | ||
| const parentMatch = attrs.match(/w15:paraIdParent="([^"]+)"/); | ||
| if (!paraIdMatch || !parentMatch) | ||
| continue; | ||
| const childCommentId = paraIdToCommentId.get(paraIdMatch[1]); | ||
| const parentCommentId = paraIdToCommentId.get(parentMatch[1]); | ||
| if (childCommentId && parentCommentId && childCommentId !== parentCommentId) { | ||
| parentByCommentId.set(childCommentId, parentCommentId); | ||
| } | ||
| } | ||
| for (const c of comments) { | ||
| const parent = parentByCommentId.get(c.id); | ||
| if (parent) | ||
| c.parentId = parent; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| catch (err) { | ||
| // Re-throw with more context if it's already an Error we created | ||
| if (err.message.includes('Invalid Word document') || err.message.includes('File not found')) { | ||
| throw err; | ||
| } | ||
| throw new Error(`Error extracting comments from ${path.basename(docxPath)}: ${err.message}`); | ||
| } | ||
| return comments; | ||
| const zip = openDocx(docxPath); | ||
| // Word truncates the stored date to its day for display; keep that contract. | ||
| return extractComments(zip).map((c) => ({ | ||
| id: c.id, | ||
| author: c.author, | ||
| date: c.date.slice(0, 10), | ||
| text: c.text, | ||
| parentId: c.parentId, | ||
| })); | ||
| } | ||
@@ -142,137 +38,34 @@ /** | ||
| export async function extractCommentAnchors(docxPath) { | ||
| const AdmZip = (await import('adm-zip')).default; | ||
| const anchors = new Map(); | ||
| let fullDocText = ''; | ||
| try { | ||
| const zip = new AdmZip(docxPath); | ||
| const docEntry = zip.getEntry('word/document.xml'); | ||
| if (!docEntry) { | ||
| return { anchors, fullDocText }; | ||
| } | ||
| const docXml = docEntry.getData().toString('utf8'); | ||
| // ======================================== | ||
| // STEP 1: Build text position mapping | ||
| // ======================================== | ||
| const textNodePattern = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| const textNodes = []; | ||
| let textPosition = 0; | ||
| let nodeMatch; | ||
| while ((nodeMatch = textNodePattern.exec(docXml)) !== null) { | ||
| const rawText = nodeMatch[1] ?? ''; | ||
| const decodedText = decodeXmlEntities(rawText); | ||
| textNodes.push({ | ||
| xmlStart: nodeMatch.index, | ||
| xmlEnd: nodeMatch.index + nodeMatch[0].length, | ||
| textStart: textPosition, | ||
| textEnd: textPosition + decodedText.length, | ||
| text: decodedText | ||
| }); | ||
| textPosition += decodedText.length; | ||
| } | ||
| fullDocText = textNodes.map(n => n.text).join(''); | ||
| // Helper: convert XML position to text position | ||
| function xmlPosToTextPos(xmlPos) { | ||
| for (let i = 0; i < textNodes.length; i++) { | ||
| const node = textNodes[i]; | ||
| if (!node) | ||
| continue; | ||
| if (xmlPos >= node.xmlStart && xmlPos < node.xmlEnd) { | ||
| return node.textStart; | ||
| } | ||
| if (xmlPos < node.xmlStart) { | ||
| return node.textStart; | ||
| } | ||
| } | ||
| const lastNode = textNodes[textNodes.length - 1]; | ||
| return lastNode ? lastNode.textEnd : 0; | ||
| } | ||
| // Helper: extract context before a position | ||
| function getContextBefore(position, maxLength = 150) { | ||
| const beforeText = fullDocText.slice(Math.max(0, position - maxLength), position); | ||
| const sentenceStart = beforeText.search(/[.!?]\s+[A-Z][^.!?]*$/); | ||
| return sentenceStart >= 0 | ||
| ? beforeText.slice(sentenceStart + 2).trim() | ||
| : beforeText.slice(-80).trim(); | ||
| } | ||
| // Helper: extract context after a position | ||
| function getContextAfter(position, maxLength = 150) { | ||
| const afterText = fullDocText.slice(position, position + maxLength); | ||
| const sentenceEnd = afterText.search(/[.!?]\s/); | ||
| return sentenceEnd >= 0 | ||
| ? afterText.slice(0, sentenceEnd + 1).trim() | ||
| : afterText.slice(0, 80).trim(); | ||
| } | ||
| // ======================================== | ||
| // STEP 2: Collect all start/end markers separately | ||
| // ======================================== | ||
| const startPattern = /<w:commentRangeStart[^>]*w:id="(\d+)"[^>]*\/?>/g; | ||
| const endPattern = /<w:commentRangeEnd[^>]*w:id="(\d+)"[^>]*\/?>/g; | ||
| const starts = new Map(); // id -> position after start tag | ||
| const ends = new Map(); // id -> position before end tag | ||
| let match; | ||
| while ((match = startPattern.exec(docXml)) !== null) { | ||
| const id = match[1]; | ||
| if (!starts.has(id)) { | ||
| starts.set(id, match.index + match[0].length); | ||
| } | ||
| } | ||
| while ((match = endPattern.exec(docXml)) !== null) { | ||
| const id = match[1]; | ||
| if (!ends.has(id)) { | ||
| ends.set(id, match.index); | ||
| } | ||
| } | ||
| // ======================================== | ||
| // STEP 3: Process each comment range by ID | ||
| // ======================================== | ||
| for (const [id, startXmlPos] of starts) { | ||
| const endXmlPos = ends.get(id); | ||
| // Missing end marker - skip with warning | ||
| if (endXmlPos === undefined) { | ||
| console.warn(`Comment ${id}: missing end marker`); | ||
| continue; | ||
| } | ||
| // Calculate text position | ||
| const docPosition = xmlPosToTextPos(startXmlPos); | ||
| // Handle empty or inverted ranges | ||
| if (endXmlPos <= startXmlPos) { | ||
| anchors.set(id, { | ||
| anchor: '', | ||
| before: getContextBefore(docPosition), | ||
| after: getContextAfter(docPosition), | ||
| docPosition, | ||
| docLength: fullDocText.length, | ||
| isEmpty: true | ||
| }); | ||
| continue; | ||
| } | ||
| // Extract XML segment between markers | ||
| const segment = docXml.slice(startXmlPos, endXmlPos); | ||
| // Extract text from w:t (regular) AND w:delText (deleted text in track changes) | ||
| const textInRangePattern = /<w:t[^>]*>([^<]*)<\/w:t>|<w:delText[^>]*>([^<]*)<\/w:delText>/g; | ||
| let anchorText = ''; | ||
| let tm; | ||
| while ((tm = textInRangePattern.exec(segment)) !== null) { | ||
| anchorText += tm[1] || tm[2] || ''; | ||
| } | ||
| anchorText = decodeXmlEntities(anchorText); | ||
| // Get context | ||
| const anchorLength = anchorText.length; | ||
| const before = getContextBefore(docPosition); | ||
| const after = getContextAfter(docPosition + anchorLength); | ||
| // ALWAYS add entry (even if anchor is empty) | ||
| anchors.set(id, { | ||
| anchor: anchorText.trim(), | ||
| before, | ||
| after, | ||
| docPosition, | ||
| docLength: fullDocText.length, | ||
| isEmpty: !anchorText.trim() | ||
| }); | ||
| } | ||
| } | ||
| catch (err) { | ||
| console.error('Error extracting comment anchors:', err.message); | ||
| const zip = openDocx(docxPath); | ||
| const { fullDocText, comments } = buildCommentAnchorModel(zip); | ||
| if (!fullDocText && comments.length === 0) { | ||
| return { anchors, fullDocText: '' }; | ||
| } | ||
| // Context surrounding the anchor, taken from the same plain-text coordinate | ||
| // system as docPosition so the placement engine can compare like with like. | ||
| function getContextBefore(position, maxLength = 150) { | ||
| const beforeText = fullDocText.slice(Math.max(0, position - maxLength), position); | ||
| const sentenceStart = beforeText.search(/[.!?]\s+[A-Z][^.!?]*$/); | ||
| return sentenceStart >= 0 | ||
| ? beforeText.slice(sentenceStart + 2).trim() | ||
| : beforeText.slice(-80).trim(); | ||
| } | ||
| function getContextAfter(position, maxLength = 150) { | ||
| const afterText = fullDocText.slice(position, position + maxLength); | ||
| const sentenceEnd = afterText.search(/[.!?]\s/); | ||
| return sentenceEnd >= 0 | ||
| ? afterText.slice(0, sentenceEnd + 1).trim() | ||
| : afterText.slice(0, 80).trim(); | ||
| } | ||
| for (const range of comments) { | ||
| anchors.set(range.id, { | ||
| anchor: range.anchor, | ||
| before: getContextBefore(range.start), | ||
| after: getContextAfter(range.end), | ||
| docPosition: range.start, | ||
| docLength: fullDocText.length, | ||
| isEmpty: range.isEmpty, | ||
| }); | ||
| } | ||
| return { anchors, fullDocText }; | ||
@@ -293,67 +86,15 @@ } | ||
| export async function extractHeadings(docxPath) { | ||
| const AdmZip = (await import('adm-zip')).default; | ||
| if (!fs.existsSync(docxPath)) { | ||
| throw new Error(`File not found: ${docxPath}`); | ||
| } | ||
| const zip = new AdmZip(docxPath); | ||
| const docEntry = zip.getEntry('word/document.xml'); | ||
| if (!docEntry) | ||
| const zip = openDocx(docxPath); | ||
| const docXml = readPartText(zip, 'word/document.xml'); | ||
| if (docXml === null) | ||
| return []; | ||
| const xml = docEntry.getData().toString('utf8'); | ||
| // Build the same xml-pos → text-pos mapping that extractCommentAnchors does | ||
| const textNodePattern = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| const nodes = []; | ||
| let textPos = 0; | ||
| let m; | ||
| while ((m = textNodePattern.exec(xml)) !== null) { | ||
| const decoded = decodeXmlEntities(m[1] ?? ''); | ||
| nodes.push({ | ||
| xmlStart: m.index, | ||
| xmlEnd: m.index + m[0].length, | ||
| textStart: textPos, | ||
| textEnd: textPos + decoded.length, | ||
| }); | ||
| textPos += decoded.length; | ||
| } | ||
| function xmlToTextPos(xmlPos) { | ||
| for (const n of nodes) { | ||
| if (xmlPos >= n.xmlStart && xmlPos < n.xmlEnd) | ||
| return n.textStart; | ||
| if (xmlPos < n.xmlStart) | ||
| return n.textStart; | ||
| } | ||
| return nodes.length ? nodes[nodes.length - 1].textEnd : 0; | ||
| } | ||
| const headings = []; | ||
| const paraPattern = /<w:p\b[^>]*>([\s\S]*?)<\/w:p>/g; | ||
| let pm; | ||
| while ((pm = paraPattern.exec(xml)) !== null) { | ||
| const inner = pm[1]; | ||
| const styleMatch = inner.match(/<w:pStyle[^>]*w:val="([^"]+)"/); | ||
| if (!styleMatch) | ||
| continue; | ||
| const style = styleMatch[1]; | ||
| if (!/heading/i.test(style)) | ||
| continue; | ||
| // Concatenate text runs; include w:delText so a heading inside a tracked | ||
| // deletion is still surfaced (verifying anchors against an original draft) | ||
| const textInRange = /<w:t[^>]*>([^<]*)<\/w:t>|<w:delText[^>]*>([^<]*)<\/w:delText>/g; | ||
| let txt = ''; | ||
| let tm; | ||
| while ((tm = textInRange.exec(inner)) !== null) { | ||
| txt += decodeXmlEntities(tm[1] || tm[2] || ''); | ||
| } | ||
| const trimmed = txt.trim(); | ||
| if (!trimmed) | ||
| continue; | ||
| const levelMatch = style.match(/(\d+)/); | ||
| const level = levelMatch ? parseInt(levelMatch[1], 10) : 0; | ||
| headings.push({ | ||
| style, | ||
| level, | ||
| text: trimmed, | ||
| docPosition: xmlToTextPos(pm.index), | ||
| }); | ||
| } | ||
| return headings; | ||
| return buildDocTextModel(docXml).headings.map((h) => ({ | ||
| style: h.style, | ||
| level: h.level, | ||
| text: h.text, | ||
| docPosition: h.position, | ||
| })); | ||
| } | ||
@@ -360,0 +101,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"word-extraction.js","sourceRoot":"","sources":["../../lib/word-extraction.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"word-extraction.js","sourceRoot":"","sources":["../../lib/word-extraction.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"word.d.ts","sourceRoot":"","sources":["../../lib/word.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkB/F;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAsDlF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAkEjG;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3E;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA+B7E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWxD;AAuBD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkDvF;AAqGD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD,CAAC,CA6HD;AAED,UAAU,8BAA8B;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CA4DvG"} | ||
| {"version":3,"file":"word.d.ts","sourceRoot":"","sources":["../../lib/word.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAwB/F;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAYlF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAqBjG;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3E;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA+B7E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWxD;AAuBD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkDvF;AAqGD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD,CAAC,CA2FD;AAED,UAAU,8BAA8B;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CA4DvG"} |
+80
-175
@@ -7,5 +7,3 @@ /** | ||
| import AdmZip from 'adm-zip'; | ||
| import { parseString } from 'xml2js'; | ||
| import { promisify } from 'util'; | ||
| const parseXml = promisify(parseString); | ||
| import { openDocx, readPartText, buildCommentAnchorModel, extractComments, walkBody, } from './ooxml.js'; | ||
| // ============================================================================= | ||
@@ -35,40 +33,6 @@ // Constants | ||
| } | ||
| const zip = new AdmZip(docxPath); | ||
| const commentsEntry = zip.getEntry('word/comments.xml'); | ||
| if (!commentsEntry) { | ||
| return []; // No comments in document | ||
| } | ||
| const commentsXml = zip.readAsText(commentsEntry); | ||
| const parsed = await parseXml(commentsXml); | ||
| if (!parsed?.['w:comments'] || !parsed['w:comments']['w:comment']) { | ||
| return []; | ||
| } | ||
| const comments = []; | ||
| const rawComments = parsed['w:comments']['w:comment']; | ||
| for (const comment of rawComments) { | ||
| const id = comment.$?.['w:id']; | ||
| const author = comment.$?.['w:author'] || 'Unknown'; | ||
| const date = comment.$?.['w:date']; | ||
| // Extract text from all paragraphs in comment | ||
| let text = ''; | ||
| const paragraphs = comment['w:p'] || []; | ||
| for (const para of paragraphs) { | ||
| const runs = para['w:r'] || []; | ||
| for (const run of runs) { | ||
| const texts = run['w:t'] || []; | ||
| for (const t of texts) { | ||
| text += typeof t === 'string' ? t : (t._ || ''); | ||
| } | ||
| } | ||
| } | ||
| if (id && text.trim()) { | ||
| comments.push({ | ||
| id, | ||
| author, | ||
| date, | ||
| text: text.trim(), | ||
| }); | ||
| } | ||
| } | ||
| return comments; | ||
| const zip = openDocx(docxPath); | ||
| return extractComments(zip) | ||
| .filter((c) => c.id && c.text) | ||
| .map((c) => ({ id: c.id, author: c.author, date: c.date, text: c.text })); | ||
| } | ||
@@ -87,49 +51,12 @@ /** | ||
| } | ||
| const zip = new AdmZip(docxPath); | ||
| const documentEntry = zip.getEntry('word/document.xml'); | ||
| if (!documentEntry) { | ||
| const zip = openDocx(docxPath); | ||
| if (!zip.getEntry('word/document.xml')) { | ||
| throw new Error('Invalid docx: no document.xml'); | ||
| } | ||
| const documentXml = zip.readAsText(documentEntry); | ||
| const { fullDocText, comments } = buildCommentAnchorModel(zip); | ||
| const anchors = new Map(); | ||
| // Find commentRangeStart and commentRangeEnd pairs | ||
| // The text between them is what the comment is anchored to | ||
| const startPattern = /<w:commentRangeStart w:id="(\d+)"\/>/g; | ||
| const endPattern = /<w:commentRangeEnd w:id="(\d+)"\/>/g; | ||
| let match; | ||
| const starts = new Map(); | ||
| const ends = new Map(); | ||
| while ((match = startPattern.exec(documentXml)) !== null) { | ||
| if (match[1]) { | ||
| starts.set(match[1], match.index); | ||
| } | ||
| } | ||
| while ((match = endPattern.exec(documentXml)) !== null) { | ||
| if (match[1]) { | ||
| ends.set(match[1], match.index); | ||
| } | ||
| } | ||
| // For each comment, extract the text between start and end | ||
| for (const [id, startPos] of starts) { | ||
| const endPos = ends.get(id); | ||
| if (!endPos) | ||
| continue; | ||
| const segment = documentXml.slice(startPos, endPos); | ||
| // Extract all text content from the segment | ||
| const textPattern = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let text = ''; | ||
| let textMatch; | ||
| while ((textMatch = textPattern.exec(segment)) !== null) { | ||
| text += textMatch[1] ?? ''; | ||
| } | ||
| // Get surrounding context (text before the anchor) | ||
| const contextStart = Math.max(0, startPos - CONTEXT_BEFORE_SIZE); | ||
| const contextSegment = documentXml.slice(contextStart, startPos); | ||
| let context = ''; | ||
| while ((textMatch = textPattern.exec(contextSegment)) !== null) { | ||
| context += textMatch[1] ?? ''; | ||
| } | ||
| anchors.set(id, { | ||
| text: text.trim(), | ||
| context: context.slice(-ANCHOR_CONTEXT_SIZE), | ||
| for (const range of comments) { | ||
| anchors.set(range.id, { | ||
| text: range.anchor, | ||
| context: fullDocText.slice(Math.max(0, range.start - CONTEXT_BEFORE_SIZE), range.start).slice(-ANCHOR_CONTEXT_SIZE), | ||
| }); | ||
@@ -398,101 +325,79 @@ } | ||
| } | ||
| const zip = new AdmZip(docxPath); | ||
| const docEntry = zip.getEntry('word/document.xml'); | ||
| if (!docEntry) { | ||
| const zip = openDocx(docxPath); | ||
| const docXml = readPartText(zip, 'word/document.xml'); | ||
| if (docXml === null) { | ||
| throw new Error('Invalid docx: no document.xml'); | ||
| } | ||
| let xml = docEntry.getData().toString('utf8'); | ||
| let insertions = 0; | ||
| let deletions = 0; | ||
| // Use unique markers (null bytes) that won't appear in normal text | ||
| const INS_S = '\x00IS\x00'; | ||
| const INS_E = '\x00IE\x00'; | ||
| const DEL_S = '\x00DS\x00'; | ||
| const DEL_E = '\x00DE\x00'; | ||
| // Step 1: Replace <w:ins> with marker-wrapped text injected as <w:t> | ||
| // Whitespace-only insertions are kept as plain text (not markers) to preserve spacing. | ||
| xml = xml.replace(/<w:ins\b[^>]*>([\s\S]*?)<\/w:ins>/g, (_match, content) => { | ||
| const texts = []; | ||
| const tPat = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let m; | ||
| while ((m = tPat.exec(content)) !== null) { | ||
| texts.push(m[1] || ''); | ||
| const paragraphs = []; | ||
| // One ordered walk drives everything: paragraph and heading boundaries, | ||
| // run text (entities already decoded, tabs/breaks rendered), and the | ||
| // track-change spans that become CriticMarkup. Field codes (w:instrText) | ||
| // never reach the text because the walker only reads w:t / w:delText. | ||
| let paraOut = ''; | ||
| let headingLevel = 0; | ||
| let mode = 'normal'; | ||
| let buffer = ''; | ||
| const flushSpan = (open, close, isIns) => { | ||
| if (buffer.trim()) { | ||
| if (isIns) | ||
| insertions++; | ||
| else | ||
| deletions++; | ||
| paraOut += `${open}${buffer}${close}`; | ||
| } | ||
| const text = texts.join(''); | ||
| if (text.trim()) { | ||
| insertions++; | ||
| return `<w:r><w:t>${INS_S}${text}${INS_E}</w:t></w:r>`; | ||
| else if (buffer.length > 0) { | ||
| // Whitespace-only edits are kept as plain text to preserve spacing. | ||
| paraOut += buffer; | ||
| } | ||
| // Whitespace-only: preserve as plain text for spacing | ||
| if (text.length > 0) { | ||
| return `<w:r><w:t>${text}</w:t></w:r>`; | ||
| } | ||
| return ''; | ||
| }); | ||
| // Step 2: Replace <w:del> similarly (uses w:delText inside) | ||
| // Whitespace-only deletions are kept as plain text to preserve spacing. | ||
| xml = xml.replace(/<w:del\b[^>]*>([\s\S]*?)<\/w:del>/g, (_match, content) => { | ||
| const texts = []; | ||
| const tPat = /<w:delText[^>]*>([^<]*)<\/w:delText>|<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let m; | ||
| while ((m = tPat.exec(content)) !== null) { | ||
| texts.push(m[1] || m[2] || ''); | ||
| } | ||
| const text = texts.join(''); | ||
| buffer = ''; | ||
| }; | ||
| const endParagraph = () => { | ||
| let text = mergeAdjacentMarkers(paraOut); | ||
| text = text.replace(/ {2,}/g, ' '); | ||
| if (text.trim()) { | ||
| deletions++; | ||
| return `<w:r><w:t>${DEL_S}${text}${DEL_E}</w:t></w:r>`; | ||
| paragraphs.push(headingLevel >= 1 && headingLevel <= 6 ? '#'.repeat(headingLevel) + ' ' + text.trim() : text); | ||
| } | ||
| // Whitespace-only: preserve as plain text for spacing | ||
| if (text.length > 0) { | ||
| return `<w:r><w:t>${text}</w:t></w:r>`; | ||
| paraOut = ''; | ||
| headingLevel = 0; | ||
| mode = 'normal'; | ||
| buffer = ''; | ||
| }; | ||
| for (const item of walkBody(docXml)) { | ||
| switch (item.kind) { | ||
| case 'paraStart': | ||
| paraOut = ''; | ||
| headingLevel = item.level; | ||
| mode = 'normal'; | ||
| buffer = ''; | ||
| break; | ||
| case 'paraEnd': | ||
| endParagraph(); | ||
| break; | ||
| case 'text': | ||
| if (mode === 'normal') | ||
| paraOut += item.text; | ||
| else | ||
| buffer += item.text; | ||
| break; | ||
| case 'insStart': | ||
| mode = 'ins'; | ||
| buffer = ''; | ||
| break; | ||
| case 'insEnd': | ||
| flushSpan('{++', '++}', true); | ||
| mode = 'normal'; | ||
| break; | ||
| case 'delStart': | ||
| mode = 'del'; | ||
| buffer = ''; | ||
| break; | ||
| case 'delEnd': | ||
| flushSpan('{--', '--}', false); | ||
| mode = 'normal'; | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| return ''; | ||
| }); | ||
| // Step 3: Extract text paragraph by paragraph | ||
| const paragraphs = []; | ||
| const paraPattern = /<w:p\b[^>]*>([\s\S]*?)<\/w:p>/g; | ||
| let pm; | ||
| while ((pm = paraPattern.exec(xml)) !== null) { | ||
| const paraXml = pm[1]; | ||
| // Detect heading level from paragraph style | ||
| let headingLevel = 0; | ||
| const styleMatch = paraXml.match(/<w:pStyle\s+w:val="Heading(\d)"/i); | ||
| if (styleMatch && styleMatch[1]) { | ||
| headingLevel = parseInt(styleMatch[1], 10); | ||
| } | ||
| // Extract all <w:t> text in order | ||
| const texts = []; | ||
| const tPat = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let tm; | ||
| while ((tm = tPat.exec(paraXml)) !== null) { | ||
| texts.push(tm[1] || ''); | ||
| } | ||
| let paraText = texts.join(''); | ||
| // Decode XML entities | ||
| paraText = paraText | ||
| .replace(/&/g, '&') | ||
| .replace(/</g, '<') | ||
| .replace(/>/g, '>') | ||
| .replace(/"/g, '"') | ||
| .replace(/'/g, "'"); | ||
| // Convert markers to CriticMarkup | ||
| paraText = paraText | ||
| .split(INS_S).join('{++') | ||
| .split(INS_E).join('++}') | ||
| .split(DEL_S).join('{--') | ||
| .split(DEL_E).join('--}'); | ||
| // Merge adjacent del+ins (or ins+del) into substitutions. | ||
| // Uses a scanner instead of regex to avoid backtracking across marker boundaries. | ||
| paraText = mergeAdjacentMarkers(paraText); | ||
| // Collapse runs of multiple spaces into single space | ||
| paraText = paraText.replace(/ {2,}/g, ' '); | ||
| if (paraText.trim()) { | ||
| if (headingLevel > 0 && headingLevel <= 6) { | ||
| paragraphs.push('#'.repeat(headingLevel) + ' ' + paraText.trim()); | ||
| } | ||
| else { | ||
| paragraphs.push(paraText); | ||
| } | ||
| } | ||
| } | ||
@@ -499,0 +404,0 @@ return { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"word.js","sourceRoot":"","sources":["../../lib/word.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AAExC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,8DAA8D;AAC9D,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,uDAAuD;AACvD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,kCAAkC,OAAO,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,0BAA0B;IACvC,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAQ,CAAC;IAElD,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;IAEtD,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEnC,8CAA8C;QAC9C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE;gBACF,MAAM;gBACN,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,kCAAkC,OAAO,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEjD,mDAAmD;IACnD,2DAA2D;IAC3D,MAAM,YAAY,GAAG,uCAAuC,CAAC;IAC7D,MAAM,UAAU,GAAG,qCAAqC,CAAC;IAEzD,IAAI,KAA6B,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEpD,4CAA4C;QAC5C,MAAM,WAAW,GAAG,2BAA2B,CAAC;QAChD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,SAAiC,CAAC;QACtC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,mDAAmD;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/D,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,kCAAkC,OAAO,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAChE,+EAA+E;IAC/E,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,CAAE,sBAAsB;IAC7E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAM,oBAAoB;IAC5E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAe,qBAAqB;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,kCAAkC,OAAO,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,iCAAiC;IACjC,MAAM,QAAQ,GAA2B;QACvC,KAAK,EAAE,+BAA+B;QACtC,MAAM,EAAE,mCAAmC;QAC3C,OAAO,EAAE,kDAAkD;QAC3D,QAAQ,EAAE,oDAAoD;KAC/D,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACT,QAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,oCAAoC;IACpC,MAAM,WAAW,GAAG,2BAA2B,CAAC;IAChD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,sCAAsC;IACtC,MAAM,cAAc,GAAG,uCAAuC,CAAC;IAC/D,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnD,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,uCAAuC;IACvC,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3F,CAAC;IAED,0DAA0D;IAC1D,wDAAwD;IACxD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,OAAO,MAAM,IAAI,KAAK,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,OAAO,MAAM,IAAI,KAAK,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,eAAe,EAAE,IAAI;QACrB,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;KACjC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,CAAS,EAAE,IAAY,EAAE,KAAa;IACzE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,CAAS,EAAE,IAAY,EAAE,KAAa;IAC9E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAEpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QACxB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,yBAAyB;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAE/C,iDAAiD;YACjD,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YAChB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC;YAE/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,GAAG,EAAE,CAAC;gBACR,0BAA0B;gBAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxE,MAAM,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC3F,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,uBAAuB;gBACvB,MAAM,IAAI,MAAM,GAAG,CAAC,OAAO,KAAK,CAAC;gBACjC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAE/C,gDAAgD;YAChD,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YAChB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC;YAE/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,GAAG,EAAE,CAAC;gBACR,sDAAsD;gBACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxE,MAAM,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC3F,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,MAAM,IAAI,MAAM,GAAG,CAAC,OAAO,KAAK,CAAC;gBACjC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,QAAgB;IAKrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,mEAAmE;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,KAAK,GAAG,YAAY,CAAC;IAE3B,qEAAqE;IACrE,uFAAuF;IACvF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,MAAM,EAAE,OAAe,EAAE,EAAE;QAClF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,2BAA2B,CAAC;QACzC,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,OAAO,aAAa,KAAK,GAAG,IAAI,GAAG,KAAK,cAAc,CAAC;QACzD,CAAC;QACD,sDAAsD;QACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,aAAa,IAAI,cAAc,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,wEAAwE;IACxE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,MAAM,EAAE,OAAe,EAAE,EAAE;QAClF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,gEAAgE,CAAC;QAC9E,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,OAAO,aAAa,KAAK,GAAG,IAAI,GAAG,KAAK,cAAc,CAAC;QACzD,CAAC;QACD,sDAAsD;QACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,aAAa,IAAI,cAAc,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,gCAAgC,CAAC;IACrD,IAAI,EAA0B,CAAC;IAE/B,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtB,4CAA4C;QAC5C,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrE,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,kCAAkC;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,2BAA2B,CAAC;QACzC,IAAI,EAA0B,CAAC;QAC/B,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,sBAAsB;QACtB,QAAQ,GAAG,QAAQ;aAChB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE3B,kCAAkC;QAClC,QAAQ,GAAG,QAAQ;aAChB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;aACxB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;aACxB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;aACxB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5B,0DAA0D;QAC1D,kFAAkF;QAClF,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE1C,qDAAqD;QACrD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE3C,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B,eAAe,EAAE,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC;QAChD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;KACjC,CAAC;AACJ,CAAC;AAMD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,UAA0C,EAAE;IAE5C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,gEAAgE;IAChE,4FAA4F;IAC5F,IAAI,UAAU,GAAG,IAAI,QAAQ,+CAA+C,CAAC;IAC7E,IAAI,QAAQ,EAAE,CAAC;QACb,UAAU,IAAI,qBAAqB,QAAQ,GAAG,CAAC;IACjD,CAAC;IAED,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,UAAU,UAAU,EAAE,EAAE;YACtC,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,mCAAmC;IACnC,2CAA2C;IAC3C,yCAAyC;IAEzC,uDAAuD;IACvD,mDAAmD;IACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mCAAmC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1E,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,UAAU,EAAE,CAAC;YACb,OAAO,MAAM,OAAO,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzE,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,SAAS,EAAE,CAAC;YACZ,OAAO,MAAM,OAAO,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;IAExD,OAAO;QACL,IAAI;QACJ,eAAe;QACf,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;KACjC,CAAC;AACJ,CAAC"} | ||
| {"version":3,"file":"word.js","sourceRoot":"","sources":["../../lib/word.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"wordcomments.d.ts","sourceRoot":"","sources":["../../lib/wordcomments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,aAAa;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAUD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAiN1E;AA4ID;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CA0Z1B"} | ||
| {"version":3,"file":"wordcomments.d.ts","sourceRoot":"","sources":["../../lib/wordcomments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,aAAa;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAUD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAiN1E;AA4ID;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAsW1B"} |
+53
-92
@@ -15,2 +15,3 @@ /** | ||
| import { escapeXml } from './utils.js'; | ||
| import { indexTextRuns } from './ooxml.js'; | ||
| const MARKER_START_PREFIX = '⟦CMS:'; | ||
@@ -387,3 +388,21 @@ const MARKER_END_PREFIX = '⟦CME:'; | ||
| const injectedIds = new Set(); | ||
| // Process only parent comments (non-replies) for document ranges | ||
| // Locate the enclosing run of each marker structurally, so placement never | ||
| // scans backwards for the nearest `<w:r`. Markers that pandoc duplicated | ||
| // into attributes (e.g. <wp:docPr descr="...">) are not inside a <w:t>, so | ||
| // they never appear in the index and cannot mislead the placement. | ||
| // See: https://github.com/gcol33/docrev/issues/4 | ||
| // | ||
| // The index is rebuilt each iteration against the current document: two | ||
| // markers can share one run, so splicing one run invalidates offsets into | ||
| // it for the next marker. | ||
| const findMarkerSlot = (slots, marker) => { | ||
| for (const slot of slots) { | ||
| const rel = slot.content.indexOf(marker); | ||
| if (rel >= 0) | ||
| return { slot, rel }; | ||
| } | ||
| return null; | ||
| }; | ||
| // Process only parent comments (non-replies) for document ranges, from the | ||
| // last document position backwards. | ||
| const parentComments = commentsWithIds.filter(c => !c.isReply); | ||
@@ -397,67 +416,13 @@ for (let i = parentComments.length - 1; i >= 0; i--) { | ||
| const endMarker = `${MARKER_END_PREFIX}${idx}${MARKER_SUFFIX}`; | ||
| // Pandoc duplicates inline image alt-text into <wp:docPr descr="..."> | ||
| // metadata attributes AND into the visible caption paragraph. A naive | ||
| // indexOf hits the metadata-attribute occurrence first, where there is | ||
| // no <w:t> element so dissectRun fails. Skip occurrences whose position | ||
| // is inside an XML tag (last unbalanced '<' before position). | ||
| // See: https://github.com/gcol33/docrev/issues/4 | ||
| function findInTextContent(haystack, needle, fromIdx = 0) { | ||
| let i = fromIdx; | ||
| while (true) { | ||
| const p = haystack.indexOf(needle, i); | ||
| if (p < 0) | ||
| return -1; | ||
| const lastLt = haystack.lastIndexOf('<', p); | ||
| const lastGt = haystack.lastIndexOf('>', p); | ||
| if (lastLt > lastGt) { | ||
| i = p + 1; | ||
| continue; | ||
| } | ||
| return p; | ||
| } | ||
| } | ||
| const startPos = findInTextContent(documentXml, startMarker); | ||
| const endPos = startPos === -1 | ||
| ? -1 | ||
| : findInTextContent(documentXml, endMarker, startPos + startMarker.length); | ||
| if (startPos === -1 || endPos === -1) | ||
| const slots = indexTextRuns(documentXml); | ||
| const startHit = findMarkerSlot(slots, startMarker); | ||
| const endHit = startHit ? findMarkerSlot(slots, endMarker) : null; | ||
| if (!startHit || !endHit) | ||
| continue; | ||
| // Find the runs containing each marker. Pandoc may split a single | ||
| // markdown anchor across multiple <w:r> blocks when it applies styling | ||
| // mid-anchor (smart-quote substitution, *italic*, `code`, **bold**). | ||
| // The same-run path (current happy path) collapses into the multi-run | ||
| // path when start and end runs coincide. | ||
| const startRunOpen = Math.max(documentXml.lastIndexOf('<w:r>', startPos), documentXml.lastIndexOf('<w:r ', startPos)); | ||
| const startRunCloseIdx = documentXml.indexOf('</w:r>', startPos); | ||
| const endRunOpen = Math.max(documentXml.lastIndexOf('<w:r>', endPos), documentXml.lastIndexOf('<w:r ', endPos)); | ||
| const endRunCloseIdx = documentXml.indexOf('</w:r>', endPos); | ||
| if (startRunOpen === -1 || startRunCloseIdx === -1 || | ||
| endRunOpen === -1 || endRunCloseIdx === -1) | ||
| continue; | ||
| const startRunClose = startRunCloseIdx + '</w:r>'.length; | ||
| const endRunClose = endRunCloseIdx + '</w:r>'.length; | ||
| const startRunFull = documentXml.slice(startRunOpen, startRunClose); | ||
| const endRunFull = documentXml.slice(endRunOpen, endRunClose); | ||
| // Extract <w:rPr> and <w:t> element shape from each run. Both pieces | ||
| // are needed verbatim so a textBefore split keeps its original styling | ||
| // and so the post-anchor textAfter render keeps the end run's styling. | ||
| function dissectRun(runXml, marker) { | ||
| const rPrMatch = runXml.match(/<w:rPr>[\s\S]*?<\/w:rPr>/); | ||
| const tMatch = runXml.match(/<w:t[^>]*>([\s\S]*?)<\/w:t>/); | ||
| if (!tMatch) | ||
| return null; | ||
| const tOpenMatch = tMatch[0].match(/<w:t[^>]*>/); | ||
| if (!tOpenMatch) | ||
| return null; | ||
| const tContent = tMatch[1] ?? ''; | ||
| const markerInT = tContent.indexOf(marker); | ||
| if (markerInT === -1) | ||
| return null; | ||
| return { | ||
| rPr: rPrMatch ? rPrMatch[0] : '', | ||
| tElement: tOpenMatch[0], | ||
| textBefore: tContent.slice(0, markerInT), | ||
| textAfter: tContent.slice(markerInT + marker.length), | ||
| }; | ||
| } | ||
| const startSlot = startHit.slot; | ||
| const endSlot = endHit.slot; | ||
| const startRunOpen = startSlot.runOpenStart; | ||
| const startRunClose = startSlot.runCloseEnd; | ||
| const endRunOpen = endSlot.runOpenStart; | ||
| const endRunClose = endSlot.runCloseEnd; | ||
| let replacement = ''; | ||
@@ -481,14 +446,12 @@ const replies = commentsWithIds.filter(c => c.isReply && c.parentIdx === comment?.commentIdx); | ||
| if (startRunOpen === endRunOpen) { | ||
| // Same-run path: both markers live inside one <w:t>. Original logic. | ||
| const startInfo = dissectRun(startRunFull, startMarker); | ||
| if (!startInfo) | ||
| continue; | ||
| const fullText = startInfo.textBefore + startMarker + startInfo.textAfter; | ||
| const endInTextRel = startInfo.textAfter.indexOf(endMarker); | ||
| // Same-run path: both markers live inside one <w:t>. | ||
| const rPr = startSlot.rPr; | ||
| const tElement = startSlot.tOpenTag; | ||
| const afterStart = startSlot.content.slice(startHit.rel + startMarker.length); | ||
| const endInTextRel = afterStart.indexOf(endMarker); | ||
| if (endInTextRel === -1) | ||
| continue; | ||
| const anchorTextSame = startInfo.textAfter.slice(0, endInTextRel); | ||
| let textAfter = startInfo.textAfter.slice(endInTextRel + endMarker.length); | ||
| let anchorText = anchorTextSame; | ||
| let textBefore = startInfo.textBefore; | ||
| let textBefore = startSlot.content.slice(0, startHit.rel); | ||
| let anchorText = afterStart.slice(0, endInTextRel); | ||
| let textAfter = afterStart.slice(endInTextRel + endMarker.length); | ||
| // Empty anchor: borrow the next word so the comment has something | ||
@@ -506,14 +469,12 @@ // to anchor on. Then normalize the trailing double space. | ||
| } | ||
| // Suppress unused warning for pre-empty-anchor fullText var | ||
| void fullText; | ||
| if (textBefore) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${textBefore}</w:t></w:r>`; | ||
| replacement += `<w:r>${rPr}${tElement}${textBefore}</w:t></w:r>`; | ||
| } | ||
| emitRangeStarts(); | ||
| if (anchorText) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${anchorText}</w:t></w:r>`; | ||
| replacement += `<w:r>${rPr}${tElement}${anchorText}</w:t></w:r>`; | ||
| } | ||
| emitRangeEnds(); | ||
| if (textAfter) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${textAfter}</w:t></w:r>`; | ||
| replacement += `<w:r>${rPr}${tElement}${textAfter}</w:t></w:r>`; | ||
| } | ||
@@ -528,21 +489,21 @@ documentXml = documentXml.slice(0, startRunOpen) + replacement + documentXml.slice(startRunClose); | ||
| // split the end run at the end marker. | ||
| const startInfo = dissectRun(startRunFull, startMarker); | ||
| const endInfo = dissectRun(endRunFull, endMarker); | ||
| if (!startInfo || !endInfo) | ||
| continue; | ||
| const startTextBefore = startSlot.content.slice(0, startHit.rel); | ||
| const startTextAfter = startSlot.content.slice(startHit.rel + startMarker.length); | ||
| const endTextBefore = endSlot.content.slice(0, endHit.rel); | ||
| const endTextAfter = endSlot.content.slice(endHit.rel + endMarker.length); | ||
| const middle = documentXml.slice(startRunClose, endRunOpen); | ||
| if (startInfo.textBefore) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${startInfo.textBefore}</w:t></w:r>`; | ||
| if (startTextBefore) { | ||
| replacement += `<w:r>${startSlot.rPr}${startSlot.tOpenTag}${startTextBefore}</w:t></w:r>`; | ||
| } | ||
| emitRangeStarts(); | ||
| if (startInfo.textAfter) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${startInfo.textAfter}</w:t></w:r>`; | ||
| if (startTextAfter) { | ||
| replacement += `<w:r>${startSlot.rPr}${startSlot.tOpenTag}${startTextAfter}</w:t></w:r>`; | ||
| } | ||
| replacement += middle; | ||
| if (endInfo.textBefore) { | ||
| replacement += `<w:r>${endInfo.rPr}${endInfo.tElement}${endInfo.textBefore}</w:t></w:r>`; | ||
| if (endTextBefore) { | ||
| replacement += `<w:r>${endSlot.rPr}${endSlot.tOpenTag}${endTextBefore}</w:t></w:r>`; | ||
| } | ||
| emitRangeEnds(); | ||
| if (endInfo.textAfter) { | ||
| replacement += `<w:r>${endInfo.rPr}${endInfo.tElement}${endInfo.textAfter}</w:t></w:r>`; | ||
| if (endTextAfter) { | ||
| replacement += `<w:r>${endSlot.rPr}${endSlot.tOpenTag}${endTextAfter}</w:t></w:r>`; | ||
| } | ||
@@ -549,0 +510,0 @@ documentXml = documentXml.slice(0, startRunOpen) + replacement + documentXml.slice(endRunClose); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"wordcomments.js","sourceRoot":"","sources":["../../lib/wordcomments.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"wordcomments.js","sourceRoot":"","sources":["../../lib/wordcomments.ts"],"names":[],"mappings":"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"} |
@@ -8,2 +8,4 @@ /** | ||
| import { stripAnnotations } from './annotations.js'; | ||
| export type AnchorStrategy = | ||
@@ -34,11 +36,8 @@ | 'direct' | ||
| * `{++inserted++}`/`{--deleted--}`/etc. Used when an anchor lives | ||
| * underneath previously imported track changes. | ||
| * underneath previously imported track changes. Delegates to the single | ||
| * annotation stripper so the matcher and the build path resolve markup the | ||
| * same way — a payload containing `+`, `-`, or `~` is handled correctly. | ||
| */ | ||
| export function stripCriticMarkup(text: string): string { | ||
| return text | ||
| .replace(/\{\+\+([^+]*)\+\+\}/g, '$1') // insertions: keep new text | ||
| .replace(/\{--([^-]*)--\}/g, '') // deletions: remove old text | ||
| .replace(/\{~~([^~]*)~>([^~]*)~~\}/g, '$2') // substitutions: keep new text | ||
| .replace(/\{>>[\s\S]*?<<\}/g, '') // comments: remove (non-greedy; comment text may contain '<') | ||
| .replace(/\[([^\]]*)\]\{\.mark\}/g, '$1'); // marked text: keep text | ||
| return stripAnnotations(text); | ||
| } | ||
@@ -45,0 +44,0 @@ |
+28
-8
@@ -415,2 +415,13 @@ /** | ||
| */ | ||
| // Non-global copies for membership tests. `.test()` on a global regex advances | ||
| // its lastIndex, so reusing PATTERNS here would make the result depend on prior | ||
| // calls and intermittently miss real annotations. | ||
| const ANNOTATION_TESTERS = [ | ||
| PATTERNS.insert, | ||
| PATTERNS.delete, | ||
| PATTERNS.substitute, | ||
| PATTERNS.comment, | ||
| PATTERNS.highlight, | ||
| ].map((re) => new RegExp(re.source, re.flags.replace('g', ''))); | ||
| export function hasAnnotations(text: string): boolean { | ||
@@ -421,10 +432,19 @@ if (typeof text !== 'string') { | ||
| return PATTERNS.insert.test(text) || | ||
| PATTERNS.delete.test(text) || | ||
| PATTERNS.substitute.test(text) || | ||
| PATTERNS.comment.test(text) || | ||
| PATTERNS.highlight.test(text); | ||
| return ANNOTATION_TESTERS.some((re) => re.test(text)); | ||
| } | ||
| /** | ||
| * Replace the specific annotation occurrence at `position` rather than the | ||
| * first textual match. Two identical annotations (e.g. the same `{++the++}` | ||
| * twice) would otherwise have the wrong one edited. Falls back to a | ||
| * first-occurrence replace only if the recorded position no longer lines up. | ||
| */ | ||
| function replaceAnnotationAt(text: string, match: string, position: number, replacement: string): string { | ||
| if (position >= 0 && text.startsWith(match, position)) { | ||
| return text.slice(0, position) + replacement + text.slice(position + match.length); | ||
| } | ||
| return text.replace(match, replacement); | ||
| } | ||
| /** | ||
| * Apply a decision to a single annotation (accept or reject) | ||
@@ -485,3 +505,3 @@ * @param text - Document text containing the annotation | ||
| return text.replace(annotation.match, replacement); | ||
| return replaceAnnotationAt(text, annotation.match, annotation.position, replacement); | ||
| } | ||
@@ -555,7 +575,7 @@ | ||
| const newMatch = originalMatch.replace(/<<\}$/, ' [RESOLVED]<<}'); | ||
| return text.replace(originalMatch, newMatch); | ||
| return replaceAnnotationAt(text, originalMatch, comment.position, newMatch); | ||
| } else { | ||
| // Remove resolved markers | ||
| const newMatch = originalMatch.replace(/\s*\[(RESOLVED|✓)\]<<\}$/, '<<}'); | ||
| return text.replace(originalMatch, newMatch); | ||
| return replaceAnnotationAt(text, originalMatch, comment.position, newMatch); | ||
| } | ||
@@ -562,0 +582,0 @@ } |
+10
-6
@@ -1618,9 +1618,14 @@ /** | ||
| if (code === 0) { | ||
| // For PPTX, post-process to add slide numbers, buildup colors, and logos | ||
| // For PPTX, post-process to add slide numbers, buildup colors, and logos. | ||
| // These steps enhance an already-written deck; a failure degrades the | ||
| // output rather than aborting it, so each is reported as a warning | ||
| // instead of silently swallowed — otherwise the user gets a deck | ||
| // missing slide numbers / colors / logos with no indication why. | ||
| if (format === 'pptx') { | ||
| const warn = (step: string, e: unknown) => | ||
| console.warn(`Warning: PPTX ${step} failed; deck written without it (${(e as Error).message})`); | ||
| try { | ||
| // Inject slide numbers into content slides only | ||
| await injectSlideNumbers(outputPath); | ||
| } catch (e) { | ||
| // Slide number injection failed but output was created | ||
| warn('slide numbering', e); | ||
| } | ||
@@ -1632,3 +1637,2 @@ try { | ||
| const buildupConfig = pptxConfig.buildup || {}; | ||
| // Merge colors and buildup config for applyBuildupColors | ||
| const colorConfig = { | ||
@@ -1643,3 +1647,3 @@ default: colorsConfig.default, | ||
| } catch (e) { | ||
| // Color application failed but output was created | ||
| warn('color application', e); | ||
| } | ||
@@ -1651,3 +1655,3 @@ // Inject logos into cover slide (if media dir configured) | ||
| } catch (e) { | ||
| // Logo injection failed but output was created | ||
| warn('logo injection', e); | ||
| } | ||
@@ -1654,0 +1658,0 @@ } |
@@ -28,2 +28,3 @@ /** | ||
| import * as readline from 'readline'; | ||
| import { getBuildSuggestions } from '../errors.js'; | ||
@@ -677,2 +678,6 @@ interface RefsOptions { | ||
| console.error(chalk.red(`\n${f.format} error:\n${f.error}`)); | ||
| const issue = f.format === 'pdf' || f.format === 'beamer' ? 'latex_error' : 'pandoc_failed'; | ||
| for (const suggestion of getBuildSuggestions(issue, { format: f.format })) { | ||
| console.error(chalk.dim(` ${suggestion}`)); | ||
| } | ||
| } | ||
@@ -679,0 +684,0 @@ process.exit(1); |
+17
-1
@@ -70,2 +70,3 @@ /** | ||
| const invalid = results.entries.filter(e => e.status === 'invalid'); | ||
| const unreachable = results.entries.filter(e => e.status === 'unreachable'); | ||
| const missing = results.entries.filter(e => e.status === 'missing'); | ||
@@ -78,5 +79,10 @@ const skipped = results.entries.filter(e => e.status === 'skipped'); | ||
| [invalid.length > 0 ? chalk.red('Invalid') : 'Invalid', invalid.length > 0 ? chalk.red(invalid.length.toString()) : '0'], | ||
| ]; | ||
| if (unreachable.length > 0) { | ||
| summaryRows.push([chalk.yellow('Unreachable'), chalk.yellow(unreachable.length.toString())]); | ||
| } | ||
| summaryRows.push( | ||
| [missing.length > 0 ? chalk.yellow('Missing (articles)') : 'Missing', missing.length > 0 ? chalk.yellow(missing.length.toString()) : '0'], | ||
| [chalk.dim('Skipped'), chalk.dim(skipped.length.toString())], | ||
| ]; | ||
| ); | ||
| console.log(fmt.table(['Status', 'Count'], summaryRows)); | ||
@@ -95,2 +101,12 @@ console.log(); | ||
| // Show unreachable DOIs (network issue — not necessarily invalid) | ||
| if (unreachable.length > 0) { | ||
| console.log(chalk.yellow('Unreachable (could not contact registry — DOI may be fine):')); | ||
| for (const e of unreachable) { | ||
| console.log(` ${chalk.bold(e.key)}: ${e.doi || 'N/A'}`); | ||
| console.log(chalk.dim(` ${e.message}`)); | ||
| } | ||
| console.log(); | ||
| } | ||
| // Show missing (articles without DOI) | ||
@@ -97,0 +113,0 @@ if (missing.length > 0) { |
+26
-13
@@ -308,2 +308,3 @@ /** | ||
| let totalCommentsPlaced = 0; | ||
| let totalCommentsLowConfidence = 0; | ||
| let totalCommentsDeduped = 0; | ||
@@ -379,3 +380,3 @@ let totalCommentsUnmatched = 0; | ||
| for (const c of sectionComments) routedCommentIds.add(c.id); | ||
| const cstats = { placed: 0, deduped: 0, unmatched: 0 }; | ||
| const cstats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 }; | ||
| annotated = insertCommentsIntoMarkdown(annotated, sectionComments, anchors, { | ||
@@ -386,4 +387,8 @@ quiet: !process.env.DEBUG, | ||
| }); | ||
| stats.comments = (stats.comments || 0) + cstats.placed; | ||
| totalCommentsPlaced += cstats.placed; | ||
| // Both confident and approximate placements are written to the | ||
| // file; count both as placed, but track the approximate ones so | ||
| // the summary can flag them for review. | ||
| stats.comments = (stats.comments || 0) + cstats.placed + cstats.lowConfidence; | ||
| totalCommentsPlaced += cstats.placed + cstats.lowConfidence; | ||
| totalCommentsLowConfidence += cstats.lowConfidence; | ||
| totalCommentsDeduped += cstats.deduped; | ||
@@ -393,3 +398,3 @@ totalCommentsUnmatched += cstats.unmatched; | ||
| if (process.env.DEBUG) { | ||
| console.log(`[DEBUG] ${section.file}: placed ${cstats.placed}, deduped ${cstats.deduped}, unmatched ${cstats.unmatched} of ${sectionComments.length}`); | ||
| console.log(`[DEBUG] ${section.file}: placed ${cstats.placed}, approx ${cstats.lowConfidence}, deduped ${cstats.deduped}, unmatched ${cstats.unmatched} of ${sectionComments.length}`); | ||
| } | ||
@@ -492,2 +497,5 @@ } | ||
| } | ||
| if (totalCommentsLowConfidence > 0) { | ||
| summaryLines.push(`${chalk.yellow(totalCommentsLowConfidence)} placed approximately (review with verify-anchors)`); | ||
| } | ||
| if (totalCommentsDeduped > 0) { | ||
@@ -595,3 +603,3 @@ summaryLines.push(`${chalk.cyan(totalCommentsDeduped)} already present (skipped)`); | ||
| const firstBoundaryStart = boundaries[0].start; | ||
| const results: Array<{ file: string; placed: number; deduped: number; unmatched: number; skipped: boolean }> = []; | ||
| const results: Array<{ file: string; placed: number; lowConfidence: number; deduped: number; unmatched: number; skipped: boolean }> = []; | ||
@@ -601,3 +609,3 @@ for (const boundary of activeBoundaries) { | ||
| if (!fs.existsSync(sectionPath)) { | ||
| results.push({ file: boundary.file, placed: 0, deduped: 0, unmatched: 0, skipped: true }); | ||
| results.push({ file: boundary.file, placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0, skipped: true }); | ||
| continue; | ||
@@ -617,3 +625,3 @@ } | ||
| if (sectionComments.length === 0) { | ||
| results.push({ file: boundary.file, placed: 0, deduped: 0, unmatched: 0, skipped: false }); | ||
| results.push({ file: boundary.file, placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0, skipped: false }); | ||
| continue; | ||
@@ -624,3 +632,3 @@ } | ||
| const stats = { placed: 0, deduped: 0, unmatched: 0 }; | ||
| const stats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 }; | ||
| const annotated = insertCommentsIntoMarkdown(original, sectionComments, anchors, { | ||
@@ -633,3 +641,3 @@ quiet: !process.env.DEBUG, | ||
| if (!options.dryRun && stats.placed > 0) { | ||
| if (!options.dryRun && (stats.placed > 0 || stats.lowConfidence > 0)) { | ||
| fs.writeFileSync(sectionPath, annotated, 'utf-8'); | ||
@@ -647,2 +655,3 @@ } | ||
| chalk.green(`${r.placed}`), | ||
| r.lowConfidence > 0 ? chalk.yellow(`${r.lowConfidence}`) : chalk.dim('-'), | ||
| r.deduped > 0 ? chalk.cyan(`${r.deduped}`) : chalk.dim('-'), | ||
@@ -655,5 +664,5 @@ r.unmatched > 0 ? chalk.yellow(`${r.unmatched}`) : chalk.dim('-'), | ||
| console.log(fmt.table( | ||
| ['File', 'Placed', 'Already', 'Unmatched', 'Mode'], | ||
| ['File', 'Placed', 'Approx', 'Already', 'Unmatched', 'Mode'], | ||
| tableRows, | ||
| { align: ['left', 'right', 'right', 'right', 'left'] }, | ||
| { align: ['left', 'right', 'right', 'right', 'right', 'left'] }, | ||
| )); | ||
@@ -663,2 +672,3 @@ console.log(); | ||
| const totalPlaced = results.reduce((s, r) => s + r.placed, 0); | ||
| const totalLowConfidence = results.reduce((s, r) => s + r.lowConfidence, 0); | ||
| const totalDeduped = results.reduce((s, r) => s + r.deduped, 0); | ||
@@ -672,2 +682,5 @@ const totalUnmatched = results.reduce((s, r) => s + r.unmatched, 0); | ||
| } | ||
| if (totalLowConfidence > 0) { | ||
| lines.push(`${chalk.yellow(totalLowConfidence)} placed approximately (review with verify-anchors)`); | ||
| } | ||
| if (totalDeduped > 0) { | ||
@@ -681,3 +694,3 @@ lines.push(`${chalk.cyan(totalDeduped)} already present (skipped to avoid duplication)`); | ||
| lines.push(chalk.yellow('Dry run — no files written')); | ||
| } else if (totalPlaced > 0) { | ||
| } else if (totalPlaced > 0 || totalLowConfidence > 0) { | ||
| lines.push(chalk.dim('Existing prose unchanged.')); | ||
@@ -687,3 +700,3 @@ } | ||
| if (totalUnmatched > 0) { | ||
| if (totalUnmatched > 0 || totalLowConfidence > 0) { | ||
| console.log(); | ||
@@ -690,0 +703,0 @@ console.log(chalk.dim('Tip: run "rev verify-anchors" to see which comments drifted.')); |
+46
-464
| /** | ||
| * Realign comments from a reference DOCX to markdown | ||
| * Uses paragraph-level matching with exact positions | ||
| * Realign comments from a reference DOCX onto markdown. | ||
| * | ||
| * This is the same job as `rev sync`: read the comments and their anchors from | ||
| * a docx, then place them into the current markdown. It therefore reuses the | ||
| * one extraction + placement engine rather than carrying a second docx parser | ||
| * and a proportional position-mapper. | ||
| */ | ||
| import * as fs from 'fs'; | ||
| import AdmZip from 'adm-zip'; | ||
| import { parseStringPromise } from 'xml2js'; | ||
| import { extractWordComments, extractCommentAnchors } from './word-extraction.js'; | ||
| import { insertCommentsIntoMarkdown } from './import.js'; | ||
| interface CommentData { | ||
| author: string; | ||
| text: string; | ||
| } | ||
| interface CommentWithPosition { | ||
| id: string; | ||
| position: number; | ||
| author: string; | ||
| text: string; | ||
| } | ||
| interface Paragraph { | ||
| text: string; | ||
| comments: CommentWithPosition[]; | ||
| } | ||
| interface MdParagraph { | ||
| text: string; | ||
| start: number; | ||
| end: number; | ||
| } | ||
| interface ParagraphMatch { | ||
| index: number; | ||
| score: number; | ||
| paragraph: MdParagraph; | ||
| } | ||
| interface WordContext { | ||
| before: string[]; | ||
| after: string[]; | ||
| } | ||
| interface CommentInsertion { | ||
| position: number; | ||
| text: string; | ||
| commentText: string; | ||
| hasReplies: boolean; | ||
| debug: string; | ||
| } | ||
| interface RealignOptions { | ||
| dryRun?: boolean; | ||
| /** When set, realign only comments by these authors; otherwise all. */ | ||
| author?: string; | ||
@@ -62,4 +25,3 @@ replyAuthor?: string; | ||
| insertions: number; | ||
| matched?: number; | ||
| unmatched?: number; | ||
| error?: string; | ||
| } | ||
@@ -79,441 +41,61 @@ | ||
| /** | ||
| * Extract paragraphs with their full text and comment positions from DOCX | ||
| */ | ||
| export async function extractParagraphsWithComments(docxPath: string): Promise<Paragraph[]> { | ||
| const zip = new AdmZip(docxPath); | ||
| const doc = zip.readAsText('word/document.xml'); | ||
| const commentsXml = zip.readAsText('word/comments.xml'); | ||
| // Parse comments to get authors and texts | ||
| const parsed = await parseStringPromise(commentsXml, { explicitArray: false }); | ||
| const commentNodes = parsed['w:comments']?.['w:comment']; | ||
| if (!commentNodes) return []; | ||
| const nodes = Array.isArray(commentNodes) ? commentNodes : [commentNodes]; | ||
| const commentData: Record<string, CommentData> = {}; | ||
| for (const c of nodes) { | ||
| const id = c.$?.['w:id'] ?? ''; | ||
| const author = c.$?.['w:author'] ?? 'Unknown'; | ||
| let text = ''; | ||
| const extractT = (n: any): void => { | ||
| if (!n) return; | ||
| if (n['w:t']) { | ||
| const t = n['w:t']; | ||
| text += typeof t === 'string' ? t : (t._ || t); | ||
| } | ||
| if (n['w:r']) { | ||
| (Array.isArray(n['w:r']) ? n['w:r'] : [n['w:r']]).forEach(extractT); | ||
| } | ||
| if (n['w:p']) { | ||
| (Array.isArray(n['w:p']) ? n['w:p'] : [n['w:p']]).forEach(extractT); | ||
| } | ||
| }; | ||
| extractT(c); | ||
| commentData[id] = { author, text: text.trim() }; | ||
| } | ||
| // Extract paragraphs with comments | ||
| const paragraphs: Paragraph[] = []; | ||
| const paraPattern = /<w:p\b[^>]*>([\s\S]*?)<\/w:p>/g; | ||
| let match; | ||
| while ((match = paraPattern.exec(doc)) !== null) { | ||
| const paraContent = match[1]; | ||
| const hasComments = /commentRangeStart/.test(paraContent); | ||
| // Build paragraph text and track comment positions | ||
| let text = ''; | ||
| const comments: CommentWithPosition[] = []; | ||
| const tokenPattern = /<w:t[^>]*>([^<]*)<\/w:t>|<w:commentRangeStart[^>]*w:id="(\d+)"[^>]*\/?>/g; | ||
| let tokenMatch; | ||
| while ((tokenMatch = tokenPattern.exec(paraContent)) !== null) { | ||
| if (tokenMatch[1] !== undefined) { | ||
| text += tokenMatch[1]; | ||
| } else if (tokenMatch[2] !== undefined) { | ||
| const cid = tokenMatch[2]; | ||
| const data = commentData[cid]; | ||
| if (data) { | ||
| comments.push({ | ||
| id: cid, | ||
| position: text.length, | ||
| author: data.author, | ||
| text: data.text, | ||
| }); | ||
| } | ||
| } | ||
| } | ||
| if (text.trim() || hasComments) { | ||
| paragraphs.push({ text: text.trim(), comments }); | ||
| } | ||
| } | ||
| return paragraphs; | ||
| /** Existing CriticMarkup comments, removed before the reference set is placed. */ | ||
| function stripExistingComments(markdown: string): string { | ||
| return markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, ''); | ||
| } | ||
| /** | ||
| * Find best matching paragraph in markdown for a reference paragraph | ||
| * Realign the reference docx's comments onto an in-memory markdown string. | ||
| * Existing comments are cleared first so re-running is idempotent. | ||
| */ | ||
| function findMatchingParagraph(refText: string, mdParagraphs: MdParagraph[]): ParagraphMatch | null { | ||
| // Normalize for comparison | ||
| const normalize = (s: string): string => s.toLowerCase().replace(/\s+/g, ' ').trim(); | ||
| const refNorm = normalize(refText); | ||
| export async function realignMarkdown( | ||
| docxPath: string, | ||
| markdown: string, | ||
| options: RealignMarkdownOptions = {}, | ||
| ): Promise<RealignMarkdownResult> { | ||
| try { | ||
| let comments = await extractWordComments(docxPath); | ||
| const { anchors } = await extractCommentAnchors(docxPath); | ||
| if (refNorm.length < 20) return null; | ||
| let bestMatch: ParagraphMatch | null = null; | ||
| let bestScore = 0; | ||
| for (let i = 0; i < mdParagraphs.length; i++) { | ||
| const mdNorm = normalize(mdParagraphs[i].text); | ||
| // Calculate word overlap | ||
| const refWords = new Set(refNorm.split(' ').filter((w) => w.length > 3)); | ||
| const mdWords = mdNorm.split(' ').filter((w) => w.length > 3); | ||
| const overlap = mdWords.filter((w) => refWords.has(w)).length; | ||
| const score = overlap / Math.max(refWords.size, 1); | ||
| // Also check for substring containment (for section headers) | ||
| const containsStart = mdNorm.includes(refNorm.slice(0, 50)); | ||
| if (score > bestScore || (containsStart && score > 0.3)) { | ||
| bestScore = Math.max(score, containsStart ? 0.8 : score); | ||
| bestMatch = { index: i, score: bestScore, paragraph: mdParagraphs[i] }; | ||
| if (options.author) { | ||
| const keep = new Set([options.author, options.replyAuthor].filter(Boolean) as string[]); | ||
| comments = comments.filter((c) => keep.has(c.author)); | ||
| } | ||
| } | ||
| return bestScore > 0.4 ? bestMatch : null; | ||
| } | ||
| const stripped = stripExistingComments(markdown); | ||
| const stats = { placed: 0, lowConfidence: 0, deduped: 0, unmatched: 0 }; | ||
| const result = insertCommentsIntoMarkdown(stripped, comments, anchors, { | ||
| quiet: true, | ||
| wrapAnchor: false, | ||
| outStats: stats, | ||
| }); | ||
| /** | ||
| * Extract paragraphs from markdown (split by blank lines) | ||
| */ | ||
| function parseMdParagraphs(markdown: string): MdParagraph[] { | ||
| const paragraphs: MdParagraph[] = []; | ||
| const parts = markdown.split(/\n\n+/); | ||
| let pos = 0; | ||
| for (const part of parts) { | ||
| const trimmed = part.trim(); | ||
| if (trimmed) { | ||
| const partStart = markdown.indexOf(part, pos); | ||
| if (partStart !== -1) { | ||
| paragraphs.push({ | ||
| text: trimmed, | ||
| start: partStart, | ||
| end: partStart + part.length, | ||
| }); | ||
| pos = partStart + part.length; | ||
| } | ||
| } | ||
| return { success: true, markdown: result, insertions: stats.placed + stats.lowConfidence }; | ||
| } catch (err: any) { | ||
| return { success: false, markdown, insertions: 0, error: err.message }; | ||
| } | ||
| return paragraphs; | ||
| } | ||
| /** | ||
| * Normalize text for matching (remove citations, extra whitespace) | ||
| * Realign the reference docx's comments onto a markdown file in place. | ||
| */ | ||
| function normalizeForMatching(text: string): string { | ||
| return text | ||
| // Remove Word citation placeholders | ||
| .replace(/\(\s*\$+\s*\)/g, '') | ||
| .replace(/\$+/g, '') | ||
| // Remove markdown citations | ||
| .replace(/\[@[^\]]+\]/g, '') | ||
| .replace(/@[A-Z][a-z]+\d{4}/g, '') | ||
| // Remove rendered citations like "(Author et al. 2021)" | ||
| .replace(/\([A-Z][a-z]+(?:\s+et\s+al\.?)?\s+\d{4}[a-z]?(?:[;,]\s*[A-Z][a-z]+(?:\s+et\s+al\.?)?\s+\d{4}[a-z]?)*\)/g, '') | ||
| // Remove figure references like "Fig. 1" or "(Fig. 1)" | ||
| .replace(/\(?Fig\.?\s*\d+[a-z]?\)?/gi, '') | ||
| // Normalize whitespace | ||
| .replace(/\s+/g, ' ') | ||
| .trim() | ||
| .toLowerCase(); | ||
| } | ||
| /** | ||
| * Find the word at or near a position in text | ||
| */ | ||
| function getWordAtPosition(text: string, pos: number): WordContext { | ||
| const before = text.slice(Math.max(0, pos - 30), pos); | ||
| const after = text.slice(pos, pos + 30); | ||
| // Get the last complete word before position | ||
| const beforeWords = before.split(/\s+/).filter(w => w.length > 2); | ||
| const afterWords = after.split(/\s+/).filter(w => w.length > 2); | ||
| return { | ||
| before: beforeWords.slice(-3), | ||
| after: afterWords.slice(0, 3) | ||
| }; | ||
| } | ||
| /** | ||
| * Find position in markdown paragraph matching reference position | ||
| * Uses the anchor word (word immediately before the comment) for precise matching | ||
| */ | ||
| function findMdPosition(refText: string, refPos: number, mdText: string): number { | ||
| // Get the word(s) immediately before the comment position in reference | ||
| const refWords = getWordAtPosition(refText, refPos); | ||
| const normalizedMd = normalizeForMatching(mdText); | ||
| // The "anchor word" is the last word before the comment | ||
| const anchorWords = refWords.before; | ||
| if (anchorWords.length === 0) { | ||
| const ratio = refPos / Math.max(refText.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| // Try to find the anchor word(s) in markdown | ||
| // Start with the most specific (all words), fall back to fewer | ||
| for (let numWords = anchorWords.length; numWords >= 1; numWords--) { | ||
| const searchWords = anchorWords.slice(-numWords); | ||
| const pattern = searchWords.map(w => | ||
| w.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&') | ||
| ).join('\\s+'); | ||
| const regex = new RegExp(pattern, 'g'); | ||
| const matches = [...normalizedMd.matchAll(regex)]; | ||
| if (matches.length === 1) { | ||
| // Unique match - use this position | ||
| const matchEnd = matches[0].index! + matches[0][0].length; | ||
| // Map back to original markdown position | ||
| const ratio = matchEnd / Math.max(normalizedMd.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } else if (matches.length > 1) { | ||
| // Multiple matches - use context after to disambiguate | ||
| const afterWords = refWords.after; | ||
| if (afterWords.length > 0) { | ||
| const afterPattern = afterWords[0].toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | ||
| for (const match of matches) { | ||
| const matchEnd = match.index! + match[0].length; | ||
| const afterContext = normalizedMd.slice(matchEnd, matchEnd + 50); | ||
| if (afterContext.includes(afterPattern)) { | ||
| const ratio = matchEnd / Math.max(normalizedMd.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| } | ||
| } | ||
| // Fall back to first match | ||
| const matchEnd = matches[0].index! + matches[0][0].length; | ||
| const ratio = matchEnd / Math.max(normalizedMd.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| } | ||
| // Fallback: proportional position | ||
| const ratio = refPos / Math.max(refText.length, 1); | ||
| return Math.round(ratio * mdText.length); | ||
| } | ||
| /** | ||
| * Extract reply comments that follow a parent comment | ||
| * Returns map of parent comment text -> array of reply texts | ||
| */ | ||
| function extractReplies(markdown: string, parentAuthor: string, replyAuthor: string): Map<string, string[]> { | ||
| const replies = new Map<string, string[]>(); | ||
| const pattern = new RegExp( | ||
| `\\{>>${parentAuthor}:\\s*([^<]+)<<\\}((?:\\s*\\{>>${replyAuthor}:[^<]+<<\\})*)`, | ||
| 'g' | ||
| ); | ||
| let match; | ||
| while ((match = pattern.exec(markdown)) !== null) { | ||
| const parentText = match[1].trim(); | ||
| const replyBlock = match[2]; | ||
| if (replyBlock) { | ||
| const replyPattern = new RegExp(`\\{>>${replyAuthor}:\\s*([^<]+)<<\\}`, 'g'); | ||
| const replyTexts: string[] = []; | ||
| let replyMatch; | ||
| while ((replyMatch = replyPattern.exec(replyBlock)) !== null) { | ||
| replyTexts.push(replyMatch[1].trim()); | ||
| } | ||
| if (replyTexts.length > 0) { | ||
| replies.set(parentText.slice(0, 50), replyTexts); // Use first 50 chars as key | ||
| } | ||
| } | ||
| } | ||
| return replies; | ||
| } | ||
| /** | ||
| * Realign comments from reference DOCX to markdown | ||
| */ | ||
| export async function realignComments( | ||
| docxPath: string, | ||
| markdownPath: string, | ||
| options: RealignOptions = {} | ||
| options: RealignOptions = {}, | ||
| ): Promise<RealignResult> { | ||
| const { dryRun = false, author = 'Guy Colling', replyAuthor = 'Gilles Colling' } = options; | ||
| const { dryRun = false, author, replyAuthor } = options; | ||
| // Read original markdown to extract replies before stripping | ||
| const originalMarkdown = fs.readFileSync(markdownPath, 'utf-8'); | ||
| // Extract reply relationships | ||
| const replies = extractReplies(originalMarkdown, author, replyAuthor); | ||
| console.log(`Found ${replies.size} ${author} comments with ${replyAuthor} replies`); | ||
| // Extract reference paragraphs with comments | ||
| const refParagraphs = await extractParagraphsWithComments(docxPath); | ||
| const refWithComments = refParagraphs.filter( | ||
| (p) => p.comments.length > 0 && p.comments.some((c) => c.author === author) | ||
| ); | ||
| console.log(`Found ${refWithComments.length} paragraphs with ${author} comments in reference`); | ||
| // Strip ALL comments (both authors) from markdown to start fresh | ||
| let markdown = originalMarkdown; | ||
| markdown = markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, ''); | ||
| console.log(`Stripped all comments from markdown`); | ||
| // Parse markdown paragraphs | ||
| const mdParagraphs = parseMdParagraphs(markdown); | ||
| // Track insertions (position, text) - will insert from end to start | ||
| const insertions: CommentInsertion[] = []; | ||
| let matched = 0; | ||
| let unmatched = 0; | ||
| for (const refPara of refWithComments) { | ||
| const match = findMatchingParagraph(refPara.text, mdParagraphs); | ||
| if (!match) { | ||
| console.log(` No match for: "${refPara.text.slice(0, 60)}..."`); | ||
| unmatched++; | ||
| continue; | ||
| } | ||
| matched++; | ||
| const mdPara = match.paragraph; | ||
| // Get author's comments in this paragraph | ||
| const authorComments = refPara.comments.filter((c) => c.author === author); | ||
| for (const comment of authorComments) { | ||
| // Find corresponding position in markdown paragraph | ||
| const mdPos = findMdPosition(refPara.text, comment.position, mdPara?.text ?? ''); | ||
| const absolutePos = (mdPara?.start ?? 0) + mdPos; | ||
| // Build comment mark with any replies | ||
| let commentMark = ` {>>${comment.author}: ${comment.text}<<}`; | ||
| // Check for replies | ||
| const replyKey = comment.text.trim().slice(0, 50); | ||
| const replyTexts = replies.get(replyKey); | ||
| if (replyTexts) { | ||
| for (const replyText of replyTexts) { | ||
| commentMark += ` {>>${replyAuthor}: ${replyText}<<}`; | ||
| } | ||
| } | ||
| insertions.push({ | ||
| position: absolutePos, | ||
| text: commentMark, | ||
| commentText: comment.text.slice(0, 30), | ||
| hasReplies: !!replyTexts, | ||
| debug: `"${(mdPara?.text ?? '').slice(Math.max(0, mdPos - 20), mdPos)}|HERE|${(mdPara?.text ?? '').slice(mdPos, mdPos + 20)}"`, | ||
| }); | ||
| } | ||
| const original = fs.readFileSync(markdownPath, 'utf-8'); | ||
| const realigned = await realignMarkdown(docxPath, original, { author, replyAuthor }); | ||
| if (!realigned.success) { | ||
| return { success: false, insertions: 0, error: realigned.error }; | ||
| } | ||
| console.log(`Matched ${matched} paragraphs, ${unmatched} unmatched`); | ||
| console.log(`Inserting ${insertions.length} comments (${insertions.filter((i) => i.hasReplies).length} with replies)`); | ||
| if (dryRun) { | ||
| console.log('\nDry run - would insert:'); | ||
| for (const ins of insertions.slice(0, 10)) { | ||
| console.log(` At ${ins.position}: ${ins.debug}`); | ||
| console.log(` Comment: "${ins.commentText}..."${ins.hasReplies ? ' (+ replies)' : ''}`); | ||
| } | ||
| return { success: true, dryRun: true, insertions: insertions.length }; | ||
| return { success: true, dryRun: true, insertions: realigned.insertions }; | ||
| } | ||
| // Sort by position descending and insert | ||
| insertions.sort((a, b) => b.position - a.position); | ||
| for (const ins of insertions) { | ||
| markdown = markdown.slice(0, ins.position) + ins.text + markdown.slice(ins.position); | ||
| } | ||
| // Write result | ||
| fs.writeFileSync(markdownPath, markdown); | ||
| return { success: true, insertions: insertions.length, matched, unmatched }; | ||
| fs.writeFileSync(markdownPath, realigned.markdown); | ||
| return { success: true, insertions: realigned.insertions }; | ||
| } | ||
| /** | ||
| * Realign comments in markdown string (in-memory, doesn't write to file) | ||
| */ | ||
| export async function realignMarkdown( | ||
| docxPath: string, | ||
| markdown: string, | ||
| options: RealignMarkdownOptions = {} | ||
| ): Promise<RealignMarkdownResult> { | ||
| const { author = 'Guy Colling', replyAuthor = 'Gilles Colling' } = options; | ||
| try { | ||
| // Extract reply relationships from original markdown | ||
| const replies = extractReplies(markdown, author, replyAuthor); | ||
| // Extract reference paragraphs with comments | ||
| const refParagraphs = await extractParagraphsWithComments(docxPath); | ||
| const refWithComments = refParagraphs.filter( | ||
| (p) => p.comments.length > 0 && p.comments.some((c) => c.author === author) | ||
| ); | ||
| // Strip ALL comments from markdown | ||
| let result = markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, ''); | ||
| // Parse markdown paragraphs | ||
| const mdParagraphs = parseMdParagraphs(result); | ||
| // Track insertions | ||
| const insertions: Array<{ position: number; text: string }> = []; | ||
| for (const refPara of refWithComments) { | ||
| const match = findMatchingParagraph(refPara.text, mdParagraphs); | ||
| if (!match) continue; | ||
| const mdPara = match.paragraph; | ||
| const authorComments = refPara.comments.filter((c) => c.author === author); | ||
| for (const comment of authorComments) { | ||
| const mdPos = findMdPosition(refPara.text, comment.position, mdPara?.text ?? ''); | ||
| const absolutePos = (mdPara?.start ?? 0) + mdPos; | ||
| let commentMark = ` {>>${comment.author}: ${comment.text}<<}`; | ||
| // Check for replies | ||
| const replyKey = comment.text.trim().slice(0, 50); | ||
| const replyTexts = replies.get(replyKey); | ||
| if (replyTexts) { | ||
| for (const replyText of replyTexts) { | ||
| commentMark += ` {>>${replyAuthor}: ${replyText}<<}`; | ||
| } | ||
| } | ||
| insertions.push({ position: absolutePos, text: commentMark }); | ||
| } | ||
| } | ||
| // Sort by position descending and insert | ||
| insertions.sort((a, b) => b.position - a.position); | ||
| for (const ins of insertions) { | ||
| result = result.slice(0, ins.position) + ins.text + result.slice(ins.position); | ||
| } | ||
| return { success: true, markdown: result, insertions: insertions.length }; | ||
| } catch (err: any) { | ||
| return { success: false, markdown, insertions: 0, error: err.message }; | ||
| } | ||
| } |
+43
-9
@@ -5,16 +5,21 @@ /** | ||
| import { execSync } from 'child_process'; | ||
| import { execFileSync } from 'child_process'; | ||
| /** | ||
| * Check if a command is available by running it silently | ||
| * Run `<file> --version` without a shell and return its stdout, or null when | ||
| * the binary is absent (ENOENT) or exits non-zero (present but broken). Using | ||
| * execFileSync avoids shell quoting and treats both failure modes uniformly. | ||
| */ | ||
| function commandExists(cmd: string): boolean { | ||
| function runVersion(file: string, args: string[] = ['--version']): string | null { | ||
| try { | ||
| execSync(cmd, { stdio: 'ignore' }); | ||
| return true; | ||
| return execFileSync(file, args, { stdio: ['ignore', 'pipe', 'ignore'], encoding: 'utf-8' }); | ||
| } catch { | ||
| return false; | ||
| return null; | ||
| } | ||
| } | ||
| function commandExists(file: string, args: string[] = ['--version']): boolean { | ||
| return runVersion(file, args) !== null; | ||
| } | ||
| /** | ||
@@ -24,3 +29,3 @@ * Check if pandoc-crossref is available | ||
| export function hasPandocCrossref(): boolean { | ||
| return commandExists('pandoc-crossref --version'); | ||
| return commandExists('pandoc-crossref'); | ||
| } | ||
@@ -32,10 +37,34 @@ | ||
| export function hasPandoc(): boolean { | ||
| return commandExists('pandoc --version'); | ||
| return commandExists('pandoc'); | ||
| } | ||
| /** | ||
| * Parsed pandoc version (e.g. "3.9"), or null when pandoc is unavailable. | ||
| */ | ||
| export function getPandocVersion(): string | null { | ||
| const out = runVersion('pandoc'); | ||
| if (!out) return null; | ||
| const m = out.match(/pandoc(?:\.exe)?\s+(\d+\.\d+(?:\.\d+)?)/i); | ||
| return m ? m[1]! : null; | ||
| } | ||
| /** | ||
| * Whether pandoc bundles citeproc and accepts `--citeproc`. That flag and the | ||
| * built-in citeproc arrived in pandoc 2.11; earlier versions need the separate | ||
| * pandoc-citeproc filter. | ||
| */ | ||
| export function pandocSupportsCiteproc(): boolean { | ||
| const v = getPandocVersion(); | ||
| if (!v) return false; | ||
| const parts = v.split('.').map((n) => parseInt(n, 10)); | ||
| const major = parts[0] ?? 0; | ||
| const minor = parts[1] ?? 0; | ||
| return major > 2 || (major === 2 && minor >= 11); | ||
| } | ||
| /** | ||
| * Check if LaTeX is available (for PDF generation) | ||
| */ | ||
| export function hasLatex(): boolean { | ||
| return commandExists('pdflatex --version') || commandExists('xelatex --version'); | ||
| return commandExists('pdflatex') || commandExists('xelatex'); | ||
| } | ||
@@ -92,2 +121,7 @@ | ||
| status.messages.push(`Pandoc not found. Install with: ${getInstallInstructions('pandoc')}`); | ||
| } else if (!pandocSupportsCiteproc()) { | ||
| const version = getPandocVersion(); | ||
| status.messages.push( | ||
| `Pandoc ${version ?? '(unknown version)'} is older than 2.11; citation processing (--citeproc) needs 2.11+. Upgrade with: ${getInstallInstructions('pandoc')}`, | ||
| ); | ||
| } | ||
@@ -94,0 +128,0 @@ if (!status.latex) { |
+76
-94
@@ -25,2 +25,12 @@ /** | ||
| // Thresholds for the heuristic DOI-match score (title + author + year + | ||
| // journal). `high` auto-accepts, `medium` asks the user, below `medium` is a | ||
| // weak guess. `runnerUpMargin` is how far the best must beat the second-best | ||
| // to count as high — guards against picking the wrong one of two near-ties. | ||
| const DOI_CONFIDENCE = { | ||
| high: 120, | ||
| medium: 70, | ||
| runnerUpMargin: 30, | ||
| }; | ||
| // Entry types that should have DOIs | ||
@@ -146,48 +156,2 @@ const EXPECT_DOI_TYPES = new Set([ | ||
| /** | ||
| * Check if DOI resolves via DataCite (for Zenodo, Figshare, etc.) | ||
| */ | ||
| async function checkDoiDataCite(doi: string): Promise<DoiCheckResult> { | ||
| try { | ||
| const response = await dataciteLimiter.fetchWithRetry( | ||
| `https://api.datacite.org/dois/${encodeURIComponent(doi)}`, | ||
| { | ||
| headers: { | ||
| 'Accept': 'application/vnd.api+json', | ||
| 'User-Agent': 'docrev/0.6.0 (https://github.com/gcol33/docrev)', | ||
| }, | ||
| } | ||
| ); | ||
| if (response.status === 404) { | ||
| return { valid: false, error: 'DOI not found in DataCite' }; | ||
| } | ||
| if (!response.ok) { | ||
| return { valid: false, error: `HTTP ${response.status}` }; | ||
| } | ||
| const data = await response.json() as any; | ||
| const attrs = data.data?.attributes; | ||
| if (!attrs) { | ||
| return { valid: false, error: 'Invalid DataCite response' }; | ||
| } | ||
| return { | ||
| valid: true, | ||
| source: 'datacite', | ||
| metadata: { | ||
| title: attrs.titles?.[0]?.title || '', | ||
| authors: attrs.creators?.map((c: any) => `${c.givenName || ''} ${c.familyName || ''}`.trim()) || [], | ||
| year: attrs.publicationYear, | ||
| journal: attrs.publisher || '', | ||
| type: attrs.types?.resourceTypeGeneral || '', | ||
| }, | ||
| }; | ||
| } catch (err) { | ||
| return { valid: false, error: (err as Error).message }; | ||
| } | ||
| } | ||
| interface CheckDoiOptions { | ||
@@ -214,36 +178,20 @@ skipCache?: boolean; | ||
| // Zenodo DOIs start with 10.5281 - check DataCite first | ||
| const isZenodo = doi.startsWith('10.5281/'); | ||
| const isFigshare = doi.startsWith('10.6084/'); | ||
| const isDataCiteLikely = isZenodo || isFigshare; | ||
| if (isDataCiteLikely) { | ||
| const dataciteResult = await checkDoiDataCite(doi); | ||
| if (dataciteResult.valid) { | ||
| cacheDoi(doi, dataciteResult); | ||
| return dataciteResult; | ||
| } | ||
| } | ||
| // One resolution path: doi.org content negotiation returns CSL-JSON and | ||
| // federates every registration agency (Crossref, DataCite, mEDRA, ...), so | ||
| // there is no registrar to guess and no Crossref-then-DataCite fallback. | ||
| try { | ||
| // Use Crossref API to check DOI | ||
| const response = await crossrefLimiter.fetchWithRetry( | ||
| `https://api.crossref.org/works/${encodeURIComponent(doi)}`, | ||
| const response = await doiOrgLimiter.fetchWithRetry( | ||
| `https://doi.org/${encodeURIComponent(doi)}`, | ||
| { | ||
| headers: { | ||
| 'User-Agent': 'docrev/0.6.0 (https://github.com/gcol33/docrev; mailto:docrev@example.com)', | ||
| 'Accept': 'application/vnd.citationstyles.csl+json', | ||
| 'User-Agent': 'docrev (https://github.com/gcol33/docrev)', | ||
| }, | ||
| } | ||
| redirect: 'follow', | ||
| }, | ||
| ); | ||
| if (response.status === 404) { | ||
| // Try DataCite as fallback (if not already tried) | ||
| if (!isDataCiteLikely) { | ||
| const dataciteResult = await checkDoiDataCite(doi); | ||
| if (dataciteResult.valid) { | ||
| cacheDoi(doi, dataciteResult); | ||
| return dataciteResult; | ||
| } | ||
| } | ||
| const result = { valid: false, error: 'DOI not found' }; | ||
| if (response.status === 404 || response.status === 410) { | ||
| // Definitive: the registry resolved and the DOI is not registered. | ||
| const result: DoiCheckResult = { valid: false, error: 'DOI not found' }; | ||
| cacheDoi(doi, result); | ||
@@ -254,19 +202,12 @@ return result; | ||
| if (!response.ok) { | ||
| // Don't cache transient errors | ||
| return { valid: false, error: `HTTP ${response.status}` }; | ||
| // 5xx or unexpected: the registry is reachable but not answering — the | ||
| // DOI's status is unknown, so do not declare it invalid or cache it. | ||
| return { valid: false, unreachable: true, error: `HTTP ${response.status}` }; | ||
| } | ||
| const data = await response.json() as any; | ||
| const work = data.message; | ||
| const work = await response.json() as any; | ||
| const result: DoiCheckResult = { | ||
| valid: true, | ||
| source: 'crossref', | ||
| metadata: { | ||
| title: work.title?.[0] || '', | ||
| authors: work.author?.map((a: any) => `${a.given || ''} ${a.family || ''}`.trim()) || [], | ||
| year: work.published?.['date-parts']?.[0]?.[0] || work.created?.['date-parts']?.[0]?.[0], | ||
| journal: work['container-title']?.[0] || '', | ||
| type: work.type, | ||
| }, | ||
| source: 'doi.org', | ||
| metadata: metadataFromCsl(work), | ||
| }; | ||
@@ -277,4 +218,4 @@ | ||
| } catch (err) { | ||
| // Don't cache network errors | ||
| return { valid: false, error: (err as Error).message }; | ||
| // Network failure / timeout: cannot reach the resolver. Unknown, not invalid. | ||
| return { valid: false, unreachable: true, error: (err as Error).message }; | ||
| } | ||
@@ -284,2 +225,33 @@ } | ||
| /** | ||
| * Extract docrev's metadata fields from a CSL-JSON record — the shape doi.org | ||
| * content negotiation returns for any registrar. | ||
| */ | ||
| function metadataFromCsl(work: any): DoiCheckResult['metadata'] { | ||
| const dateParts = | ||
| work?.issued?.['date-parts']?.[0] || | ||
| work?.published?.['date-parts']?.[0] || | ||
| work?.created?.['date-parts']?.[0]; | ||
| const year = Array.isArray(dateParts) ? dateParts[0] : undefined; | ||
| const authors = Array.isArray(work?.author) | ||
| ? work.author | ||
| .map((a: any) => `${a.given || a.givenName || ''} ${a.family || a.familyName || ''}`.trim()) | ||
| .filter((s: string) => s.length > 0) | ||
| : []; | ||
| const title = Array.isArray(work?.title) ? work.title[0] : work?.title; | ||
| const journal = Array.isArray(work?.['container-title']) | ||
| ? work['container-title'][0] | ||
| : work?.['container-title'] || work?.publisher; | ||
| return { | ||
| title: title || '', | ||
| authors, | ||
| year: year || 0, | ||
| journal: journal || '', | ||
| type: work?.type, | ||
| }; | ||
| } | ||
| /** | ||
| * Fetch BibTeX from DOI using content negotiation | ||
@@ -339,2 +311,3 @@ */ | ||
| let invalid = 0; | ||
| let unreachable = 0; | ||
| let missing = 0; | ||
@@ -382,2 +355,7 @@ let skipped = 0; | ||
| return { ...entry, status: 'valid', metadata: check.metadata }; | ||
| } else if (check.unreachable) { | ||
| // Registry unreachable — the DOI may be perfectly valid; don't | ||
| // condemn it. Offline runs report unreachable, not a wall of invalid. | ||
| unreachable++; | ||
| return { ...entry, status: 'unreachable', message: check.error }; | ||
| } else { | ||
@@ -398,3 +376,3 @@ invalid++; | ||
| return { entries: results, valid, invalid, missing, skipped }; | ||
| return { entries: results, valid, invalid, unreachable, missing, skipped }; | ||
| } | ||
@@ -737,6 +715,10 @@ | ||
| // Confidence thresholds | ||
| // Confidence: a "high" pick must clear the high threshold AND beat the | ||
| // runner-up by a margin, so two near-identical candidates are reported as | ||
| // "medium" (needs review) instead of one being auto-written as if certain. | ||
| const runnerUp = (mainPapers.length > 0 ? mainPapers : scored).find(s => s.doi !== best.doi); | ||
| const margin = runnerUp ? best.score - runnerUp.score : Infinity; | ||
| let confidence: 'low' | 'medium' | 'high' = 'low'; | ||
| if (best.score >= 120) confidence = 'high'; | ||
| else if (best.score >= 70) confidence = 'medium'; | ||
| if (best.score >= DOI_CONFIDENCE.high && margin >= DOI_CONFIDENCE.runnerUpMargin) confidence = 'high'; | ||
| else if (best.score >= DOI_CONFIDENCE.medium) confidence = 'medium'; | ||
@@ -771,3 +753,3 @@ // === NEW: Try DataCite if Crossref confidence is low === | ||
| doi: dcItem.DOI, | ||
| confidence: dcScore >= 120 ? 'high' : dcScore >= 70 ? 'medium' : 'low', | ||
| confidence: dcScore >= DOI_CONFIDENCE.high ? 'high' : dcScore >= DOI_CONFIDENCE.medium ? 'medium' : 'low', | ||
| score: dcScore, | ||
@@ -774,0 +756,0 @@ metadata: { |
+5
-1
@@ -47,3 +47,7 @@ /** | ||
| suggestions.push(`Directory does not exist: ${dir}`); | ||
| suggestions.push(`Create it with: mkdir -p "${dir}"`); | ||
| suggestions.push( | ||
| process.platform === 'win32' | ||
| ? `Create it with: New-Item -ItemType Directory -Force "${dir}"` | ||
| : `Create it with: mkdir -p "${dir}"`, | ||
| ); | ||
| return suggestions; | ||
@@ -50,0 +54,0 @@ } |
+65
-70
@@ -56,2 +56,3 @@ /** | ||
| usedPositions: Set<number>, | ||
| nearPos?: number, | ||
| ): number { | ||
@@ -67,2 +68,9 @@ if (occurrences.length === 0) return -1; | ||
| // Tie-break by context score first; when scores tie, prefer the occurrence | ||
| // nearest `nearPos` (a section-position estimate) if given, else the | ||
| // leftmost. The estimate only orders equally-scored candidates — it is never | ||
| // the returned position. | ||
| const closer = (pos: number, incumbent: number) => | ||
| nearPos === undefined ? pos < incumbent : Math.abs(pos - nearPos) < Math.abs(incumbent - nearPos); | ||
| for (const pos of occurrences) { | ||
@@ -92,3 +100,3 @@ if (usedPositions.has(pos)) continue; | ||
| if (score > bestScore || (score === bestScore && pos < bestIdx)) { | ||
| if (score > bestScore || (score === bestScore && closer(pos, bestIdx))) { | ||
| bestScore = score; | ||
@@ -166,10 +174,22 @@ bestIdx = pos; | ||
| * Mutable output: when provided, the function fills in counters so callers | ||
| * can distinguish placement outcomes in their summary. `placed` counts new | ||
| * insertions, `deduped` counts comments that were already present at their | ||
| * anchor (skipped to avoid duplication on re-sync), `unmatched` counts | ||
| * comments whose anchor couldn't be located. | ||
| * can distinguish placement outcomes in their summary. `placed` counts | ||
| * insertions made at a matched anchor or context, `lowConfidence` counts | ||
| * insertions made at an approximate (proportional / context-only) position | ||
| * that should be reviewed with `rev verify-anchors`, `deduped` counts | ||
| * comments already present at their anchor (skipped on re-sync), and | ||
| * `unmatched` counts comments that could not be placed at all. | ||
| */ | ||
| outStats?: { placed: number; deduped: number; unmatched: number }; | ||
| outStats?: { placed: number; deduped: number; unmatched: number; lowConfidence?: number }; | ||
| } | ||
| /** | ||
| * Whether a resolved placement landed on matched anchor/context text (high) or | ||
| * on an approximate position the user should review (low). Low-confidence | ||
| * strategies place the comment without matching the anchor word itself. | ||
| */ | ||
| function placementConfidence(strategy: string | undefined): 'high' | 'low' { | ||
| if (!strategy) return 'high'; | ||
| return /proportional|position-only|context/.test(strategy) ? 'low' : 'high'; | ||
| } | ||
| export interface CommentWithPos { | ||
@@ -326,2 +346,3 @@ id: string; | ||
| let placedCount = 0; | ||
| let lowConfidenceCount = 0; | ||
| const duplicateWarnings: string[] = []; | ||
@@ -378,20 +399,15 @@ const usedPositions = new Set<number>(); // For tie-breaking: track used positions | ||
| // Position-based insertion (most reliable) | ||
| // Section-scoped insertion. The comment is known to belong to this | ||
| // section (the caller already filtered by docPosition); place it by | ||
| // matching its anchor text within the section, never by mapping a length | ||
| // ratio across the docx and markdown coordinate systems. The section | ||
| // estimate only seeds duplicate tie-breaking and the final fallback. | ||
| if (sectionBoundary && docPosition !== undefined) { | ||
| const sectionLength = sectionBoundary.end - sectionBoundary.start; | ||
| if (sectionLength > 0) { | ||
| let relativePos; | ||
| if (docPosition < sectionBoundary.start) { | ||
| relativePos = 0; | ||
| } else { | ||
| relativePos = docPosition - sectionBoundary.start; | ||
| } | ||
| const relativePos = docPosition < sectionBoundary.start ? 0 : docPosition - sectionBoundary.start; | ||
| const proportion = Math.min(relativePos / sectionLength, 1.0); | ||
| const markdownPos = Math.floor(proportion * result.length); | ||
| const estimatedPos = Math.floor(proportion * result.length); | ||
| // For empty anchors, before/after context is the only signal that | ||
| // pinpoints the original split — without it, proportional placement | ||
| // can land mid-word or split unrelated phrases. Try context match | ||
| // first; only fall through to proportional when context is gone. | ||
| // Empty anchor: before/after context is the only text signal. | ||
| if ((!anchor || isEmpty) && (before || after)) { | ||
@@ -405,58 +421,28 @@ const ctx = findAnchorInText('', result, before, after); | ||
| let insertPos = markdownPos; | ||
| // Look for nearby word boundary | ||
| const searchWindow = result.slice(Math.max(0, markdownPos - 25), Math.min(result.length, markdownPos + 25)); | ||
| const spaceIdx = searchWindow.indexOf(' ', 25); | ||
| if (spaceIdx !== -1 && spaceIdx < 50) { | ||
| insertPos = Math.max(0, markdownPos - 25) + spaceIdx; | ||
| } | ||
| // If we have anchor text, try to find it near this position. | ||
| // Collect ALL occurrences in the local window, then disambiguate | ||
| // via before/after context + usedPositions — otherwise two | ||
| // comments sharing the same anchor word would both collide at | ||
| // the leftmost match. The context-scoring helper handles the | ||
| // "repeated formulaic prose" case using docx-side context, which | ||
| // is a stronger signal than raw distance to the proportional | ||
| // insertPos (insertPos is itself an approximation). | ||
| // Non-empty anchor: locate it anywhere in the section text. Duplicates | ||
| // are disambiguated by before/after context and, only as a tie-break, | ||
| // by proximity to the section estimate. | ||
| if (anchor && !isEmpty) { | ||
| const searchStart = Math.max(0, insertPos - 200); | ||
| const searchEnd = Math.min(result.length, insertPos + 200); | ||
| const localSearch = result.slice(searchStart, searchEnd).toLowerCase(); | ||
| const anchorLower = anchor.toLowerCase(); | ||
| const localHits = findAllOccurrences(localSearch, anchorLower).map(i => searchStart + i); | ||
| if (localHits.length > 0) { | ||
| const chosen = pickBestOccurrence(localHits, result, before, after, anchor.length, usedPositions); | ||
| if (chosen >= 0) { | ||
| if (localHits.length > 1) { | ||
| duplicateWarnings.push(`"${anchor.slice(0, 40)}${anchor.length > 40 ? '...' : ''}" appears ${localHits.length} times in section window`); | ||
| } | ||
| usedPositions.add(chosen); | ||
| return { ...c, pos: chosen, anchorText: anchor, anchorEnd: chosen + anchor.length, strategy: 'position+text' }; | ||
| const { occurrences, matchedAnchor, strategy } = findAnchorInText(anchor, result, before, after); | ||
| if (occurrences.length > 0) { | ||
| const anchorLen = matchedAnchor ? matchedAnchor.length : 0; | ||
| const chosen = pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions, estimatedPos); | ||
| const finalIdx = chosen >= 0 ? chosen : occurrences[0]; | ||
| if (occurrences.length > 1 && matchedAnchor) { | ||
| duplicateWarnings.push(`"${matchedAnchor.slice(0, 40)}${matchedAnchor.length > 40 ? '...' : ''}" appears ${occurrences.length} times in section`); | ||
| } | ||
| } | ||
| // Try first few words | ||
| const words = anchor.split(/\s+/).slice(0, 4).join(' ').toLowerCase(); | ||
| if (words.length >= 10) { | ||
| const partialHits = findAllOccurrences(localSearch, words).map(i => searchStart + i); | ||
| if (partialHits.length > 0) { | ||
| const chosen = pickBestOccurrence(partialHits, result, before, after, words.length, usedPositions); | ||
| if (chosen >= 0) { | ||
| usedPositions.add(chosen); | ||
| return { ...c, pos: chosen, anchorText: words, anchorEnd: chosen + words.length, strategy: 'position+partial' }; | ||
| } | ||
| usedPositions.add(finalIdx); | ||
| if (matchedAnchor) { | ||
| return { ...c, pos: finalIdx, anchorText: matchedAnchor, anchorEnd: finalIdx + anchorLen, strategy: `section:${strategy}` }; | ||
| } | ||
| return { ...c, pos: finalIdx, anchorText: null, strategy: `section:${strategy}` }; | ||
| } | ||
| } | ||
| // A docPosition at the very start of a section maps to markdownPos=0, | ||
| // which sits before the file's `# Heading` line and gets rendered in | ||
| // the previous section. Push past the heading line so the comment | ||
| // stays inside the section it was authored in. | ||
| insertPos = pushPastSectionHeading(result, insertPos); | ||
| return { ...c, pos: insertPos, anchorText: null, strategy: 'position-only' }; | ||
| // Anchor text and context are both gone from the section. The docx | ||
| // marker's offset is the only remaining signal: map it proportionally | ||
| // and snap to a word boundary. This is an approximate placement, not a | ||
| // match — flagged low-confidence so the summary surfaces it. | ||
| const insertPos = pushPastSectionHeading(result, snapToWordBoundary(result, estimatedPos)); | ||
| return { ...c, pos: insertPos, anchorText: null, strategy: 'proportional-fallback' }; | ||
| } | ||
@@ -609,3 +595,8 @@ } | ||
| } | ||
| placedCount += 1 + replies.length; | ||
| // Replies inherit the root's confidence — they ride the same position. | ||
| if (placementConfidence(c.strategy) === 'low') { | ||
| lowConfidenceCount += 1 + replies.length; | ||
| } else { | ||
| placedCount += 1 + replies.length; | ||
| } | ||
| } | ||
@@ -615,2 +606,3 @@ | ||
| outStats.placed = placedCount; | ||
| outStats.lowConfidence = lowConfidenceCount; | ||
| outStats.deduped = dedupedCount; | ||
@@ -625,2 +617,5 @@ outStats.unmatched = unmatchedCount; | ||
| } | ||
| if (lowConfidenceCount > 0) { | ||
| console.warn(`Note: ${lowConfidenceCount} comment(s) placed approximately — run \`rev verify-anchors\` to review`); | ||
| } | ||
| if (dedupedCount > 0) { | ||
@@ -627,0 +622,0 @@ console.warn(`Note: ${dedupedCount} comment(s) already present at anchor — skipped to avoid duplication`); |
+37
-4
@@ -10,4 +10,19 @@ /** | ||
| backoffFactor?: number; | ||
| /** Per-request timeout in ms; a stalled connection aborts instead of hanging. */ | ||
| requestTimeout?: number; | ||
| } | ||
| /** | ||
| * Parse an HTTP `Retry-After` header, which may be a delay in seconds or an | ||
| * HTTP-date. Returns the delay in milliseconds, or null when unparseable. | ||
| */ | ||
| export function parseRetryAfter(value: string | null, now: number = Date.now()): number | null { | ||
| if (!value) return null; | ||
| const seconds = Number(value); | ||
| if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000); | ||
| const date = Date.parse(value); | ||
| if (!Number.isNaN(date)) return Math.max(0, date - now); | ||
| return null; | ||
| } | ||
| export class RateLimiter { | ||
@@ -18,2 +33,3 @@ private minDelay: number; | ||
| private backoffFactor: number; | ||
| private requestTimeout: number; | ||
| private lastRequestTime: number; | ||
@@ -28,2 +44,3 @@ private currentDelay: number; | ||
| this.backoffFactor = options.backoffFactor || 2; | ||
| this.requestTimeout = options.requestTimeout || 15000; // Abort a stalled request | ||
| this.lastRequestTime = 0; | ||
@@ -60,2 +77,3 @@ this.currentDelay = this.minDelay; | ||
| let lastError: Error | undefined; | ||
| const callerSignal = options.signal ?? undefined; | ||
@@ -65,9 +83,18 @@ for (let attempt = 0; attempt <= this.maxRetries; attempt++) { | ||
| // Bound each attempt so a half-open connection cannot hang the run | ||
| // forever; merge the caller's signal so an external cancel still works. | ||
| const controller = new AbortController(); | ||
| const timer = setTimeout(() => controller.abort(new Error('Request timed out')), this.requestTimeout); | ||
| const onCallerAbort = () => controller.abort((callerSignal as AbortSignal).reason); | ||
| if (callerSignal) { | ||
| if (callerSignal.aborted) controller.abort(callerSignal.reason); | ||
| else callerSignal.addEventListener('abort', onCallerAbort, { once: true }); | ||
| } | ||
| try { | ||
| const response = await fetch(url, options); | ||
| const response = await fetch(url, { ...options, signal: controller.signal }); | ||
| if (response.status === 429) { | ||
| // Rate limited - back off | ||
| const retryAfter = response.headers.get('Retry-After'); | ||
| const delay = retryAfter ? parseInt(retryAfter, 10) * 1000 : this.currentDelay * 2; | ||
| // Rate limited - back off. Retry-After may be seconds or an HTTP-date. | ||
| const delay = parseRetryAfter(response.headers.get('Retry-After')) ?? this.currentDelay * 2; | ||
| this.currentDelay = Math.min(this.maxDelay, delay); | ||
@@ -87,4 +114,10 @@ if (!this.onError(429)) break; | ||
| } catch (err) { | ||
| // A caller-initiated abort is intentional cancellation, not a failure | ||
| // to retry around. | ||
| if (callerSignal?.aborted) throw err; | ||
| lastError = err as Error; | ||
| if (!this.onError(0)) break; | ||
| } finally { | ||
| clearTimeout(timer); | ||
| if (callerSignal) callerSignal.removeEventListener('abort', onCallerAbort); | ||
| } | ||
@@ -91,0 +124,0 @@ } |
+9
-1
@@ -221,3 +221,9 @@ /** | ||
| valid: boolean; | ||
| source?: 'crossref' | 'datacite'; | ||
| source?: 'crossref' | 'datacite' | 'doi.org'; | ||
| /** | ||
| * True when the registry could not be reached (network error, timeout, or | ||
| * 5xx) — the DOI's validity is unknown, distinct from a definitive "not | ||
| * found". Callers must not report an unreachable DOI as invalid. | ||
| */ | ||
| unreachable?: boolean; | ||
| metadata?: { | ||
@@ -262,2 +268,4 @@ title: string; | ||
| invalid: number; | ||
| /** DOIs whose registry could not be reached (network/timeout) — not invalid. */ | ||
| unreachable: number; | ||
| missing: number; | ||
@@ -264,0 +272,0 @@ skipped: number; |
+49
-330
@@ -9,2 +9,3 @@ /** | ||
| import { promisify } from 'util'; | ||
| import { buildDocTextModel, buildCommentAnchorModel, extractComments, openDocx, readPartText } from './ooxml.js'; | ||
@@ -103,8 +104,2 @@ const execAsync = promisify(exec); | ||
| export async function extractWordComments(docxPath: string): Promise<WordComment[]> { | ||
| const AdmZip = (await import('adm-zip')).default; | ||
| const { parseStringPromise } = await import('xml2js'); | ||
| const comments: WordComment[] = []; | ||
| // Validate file exists | ||
| if (!fs.existsSync(docxPath)) { | ||
@@ -114,116 +109,11 @@ throw new Error(`File not found: ${docxPath}`); | ||
| try { | ||
| let zip; | ||
| try { | ||
| zip = new AdmZip(docxPath); | ||
| } catch (err: any) { | ||
| throw new Error(`Invalid Word document (not a valid .docx file): ${err.message}`); | ||
| } | ||
| const commentsEntry = zip.getEntry('word/comments.xml'); | ||
| if (!commentsEntry) { | ||
| return comments; | ||
| } | ||
| let commentsXml; | ||
| try { | ||
| commentsXml = commentsEntry.getData().toString('utf8'); | ||
| } catch (err: any) { | ||
| throw new Error(`Failed to read comments from document: ${err.message}`); | ||
| } | ||
| const parsed = await parseStringPromise(commentsXml, { explicitArray: false }); | ||
| const commentsRoot = parsed['w:comments']; | ||
| if (!commentsRoot || !commentsRoot['w:comment']) { | ||
| return comments; | ||
| } | ||
| // Ensure it's an array | ||
| const commentNodes = Array.isArray(commentsRoot['w:comment']) | ||
| ? commentsRoot['w:comment'] | ||
| : [commentsRoot['w:comment']]; | ||
| // Map every paraId that lives inside a comment back to that comment's id. | ||
| // Word's commentsExtended.xml expresses threading via w15:paraIdParent, | ||
| // which references the parent's first <w:p>. Replies use a secondary | ||
| // (often-empty) <w:p>, so each comment may contribute multiple paraIds. | ||
| const paraIdToCommentId = new Map<string, string>(); | ||
| for (const comment of commentNodes) { | ||
| const id = comment.$?.['w:id'] || ''; | ||
| const author = comment.$?.['w:author'] || 'Unknown'; | ||
| const date = comment.$?.['w:date'] || ''; | ||
| // Extract text from nested w:p/w:r/w:t elements and record paraIds. | ||
| let text = ''; | ||
| const extractText = (node: any): void => { | ||
| if (!node) return; | ||
| if (typeof node === 'string') { | ||
| text += node; | ||
| return; | ||
| } | ||
| if (node['w:t']) { | ||
| const t = node['w:t']; | ||
| text += typeof t === 'string' ? t : (t._ || t); | ||
| } | ||
| if (node['w:r']) { | ||
| const runs = Array.isArray(node['w:r']) ? node['w:r'] : [node['w:r']]; | ||
| runs.forEach(extractText); | ||
| } | ||
| if (node['w:p']) { | ||
| const paras = Array.isArray(node['w:p']) ? node['w:p'] : [node['w:p']]; | ||
| for (const para of paras) { | ||
| const paraId = para?.$?.['w14:paraId']; | ||
| if (paraId && id) paraIdToCommentId.set(paraId, id); | ||
| extractText(para); | ||
| } | ||
| } | ||
| }; | ||
| extractText(comment); | ||
| comments.push({ id, author, date: date.slice(0, 10), text: text.trim() }); | ||
| } | ||
| // Resolve parent links from commentsExtended.xml. Missing entry just | ||
| // means the docx has no threading metadata (e.g. legacy/non-Word source). | ||
| const extendedEntry = zip.getEntry('word/commentsExtended.xml'); | ||
| if (extendedEntry && paraIdToCommentId.size > 0) { | ||
| let extendedXml = ''; | ||
| try { | ||
| extendedXml = extendedEntry.getData().toString('utf8'); | ||
| } catch { | ||
| // Unreadable threading metadata is non-fatal; skip parent linking. | ||
| } | ||
| if (extendedXml) { | ||
| const parentByCommentId = new Map<string, string>(); | ||
| const exPattern = /<w15:commentEx\b([^>]*?)\/>/g; | ||
| let m: RegExpExecArray | null; | ||
| while ((m = exPattern.exec(extendedXml)) !== null) { | ||
| const attrs = m[1] ?? ''; | ||
| const paraIdMatch = attrs.match(/w15:paraId="([^"]+)"/); | ||
| const parentMatch = attrs.match(/w15:paraIdParent="([^"]+)"/); | ||
| if (!paraIdMatch || !parentMatch) continue; | ||
| const childCommentId = paraIdToCommentId.get(paraIdMatch[1]); | ||
| const parentCommentId = paraIdToCommentId.get(parentMatch[1]); | ||
| if (childCommentId && parentCommentId && childCommentId !== parentCommentId) { | ||
| parentByCommentId.set(childCommentId, parentCommentId); | ||
| } | ||
| } | ||
| for (const c of comments) { | ||
| const parent = parentByCommentId.get(c.id); | ||
| if (parent) c.parentId = parent; | ||
| } | ||
| } | ||
| } | ||
| } catch (err: any) { | ||
| // Re-throw with more context if it's already an Error we created | ||
| if (err.message.includes('Invalid Word document') || err.message.includes('File not found')) { | ||
| throw err; | ||
| } | ||
| throw new Error(`Error extracting comments from ${path.basename(docxPath)}: ${err.message}`); | ||
| } | ||
| return comments; | ||
| const zip = openDocx(docxPath); | ||
| // Word truncates the stored date to its day for display; keep that contract. | ||
| return extractComments(zip).map((c) => ({ | ||
| id: c.id, | ||
| author: c.author, | ||
| date: c.date.slice(0, 10), | ||
| text: c.text, | ||
| parentId: c.parentId, | ||
| })); | ||
| } | ||
@@ -237,155 +127,37 @@ | ||
| export async function extractCommentAnchors(docxPath: string): Promise<CommentAnchorsResult> { | ||
| const AdmZip = (await import('adm-zip')).default; | ||
| const anchors = new Map<string, CommentAnchorData>(); | ||
| let fullDocText = ''; | ||
| try { | ||
| const zip = new AdmZip(docxPath); | ||
| const docEntry = zip.getEntry('word/document.xml'); | ||
| const zip = openDocx(docxPath); | ||
| const { fullDocText, comments } = buildCommentAnchorModel(zip); | ||
| if (!fullDocText && comments.length === 0) { | ||
| return { anchors, fullDocText: '' }; | ||
| } | ||
| if (!docEntry) { | ||
| return { anchors, fullDocText }; | ||
| } | ||
| // Context surrounding the anchor, taken from the same plain-text coordinate | ||
| // system as docPosition so the placement engine can compare like with like. | ||
| function getContextBefore(position: number, maxLength: number = 150): string { | ||
| const beforeText = fullDocText.slice(Math.max(0, position - maxLength), position); | ||
| const sentenceStart = beforeText.search(/[.!?]\s+[A-Z][^.!?]*$/); | ||
| return sentenceStart >= 0 | ||
| ? beforeText.slice(sentenceStart + 2).trim() | ||
| : beforeText.slice(-80).trim(); | ||
| } | ||
| const docXml = docEntry.getData().toString('utf8'); | ||
| function getContextAfter(position: number, maxLength: number = 150): string { | ||
| const afterText = fullDocText.slice(position, position + maxLength); | ||
| const sentenceEnd = afterText.search(/[.!?]\s/); | ||
| return sentenceEnd >= 0 | ||
| ? afterText.slice(0, sentenceEnd + 1).trim() | ||
| : afterText.slice(0, 80).trim(); | ||
| } | ||
| // ======================================== | ||
| // STEP 1: Build text position mapping | ||
| // ======================================== | ||
| const textNodePattern = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| const textNodes: TextNode[] = []; | ||
| let textPosition = 0; | ||
| let nodeMatch; | ||
| while ((nodeMatch = textNodePattern.exec(docXml)) !== null) { | ||
| const rawText = nodeMatch[1] ?? ''; | ||
| const decodedText = decodeXmlEntities(rawText); | ||
| textNodes.push({ | ||
| xmlStart: nodeMatch.index, | ||
| xmlEnd: nodeMatch.index + nodeMatch[0].length, | ||
| textStart: textPosition, | ||
| textEnd: textPosition + decodedText.length, | ||
| text: decodedText | ||
| }); | ||
| textPosition += decodedText.length; | ||
| } | ||
| fullDocText = textNodes.map(n => n.text).join(''); | ||
| // Helper: convert XML position to text position | ||
| function xmlPosToTextPos(xmlPos: number): number { | ||
| for (let i = 0; i < textNodes.length; i++) { | ||
| const node = textNodes[i]; | ||
| if (!node) continue; | ||
| if (xmlPos >= node.xmlStart && xmlPos < node.xmlEnd) { | ||
| return node.textStart; | ||
| } | ||
| if (xmlPos < node.xmlStart) { | ||
| return node.textStart; | ||
| } | ||
| } | ||
| const lastNode = textNodes[textNodes.length - 1]; | ||
| return lastNode ? lastNode.textEnd : 0; | ||
| } | ||
| // Helper: extract context before a position | ||
| function getContextBefore(position: number, maxLength: number = 150): string { | ||
| const beforeText = fullDocText.slice(Math.max(0, position - maxLength), position); | ||
| const sentenceStart = beforeText.search(/[.!?]\s+[A-Z][^.!?]*$/); | ||
| return sentenceStart >= 0 | ||
| ? beforeText.slice(sentenceStart + 2).trim() | ||
| : beforeText.slice(-80).trim(); | ||
| } | ||
| // Helper: extract context after a position | ||
| function getContextAfter(position: number, maxLength: number = 150): string { | ||
| const afterText = fullDocText.slice(position, position + maxLength); | ||
| const sentenceEnd = afterText.search(/[.!?]\s/); | ||
| return sentenceEnd >= 0 | ||
| ? afterText.slice(0, sentenceEnd + 1).trim() | ||
| : afterText.slice(0, 80).trim(); | ||
| } | ||
| // ======================================== | ||
| // STEP 2: Collect all start/end markers separately | ||
| // ======================================== | ||
| const startPattern = /<w:commentRangeStart[^>]*w:id="(\d+)"[^>]*\/?>/g; | ||
| const endPattern = /<w:commentRangeEnd[^>]*w:id="(\d+)"[^>]*\/?>/g; | ||
| const starts = new Map<string, number>(); // id -> position after start tag | ||
| const ends = new Map<string, number>(); // id -> position before end tag | ||
| let match; | ||
| while ((match = startPattern.exec(docXml)) !== null) { | ||
| const id = match[1]; | ||
| if (!starts.has(id)) { | ||
| starts.set(id, match.index + match[0].length); | ||
| } | ||
| } | ||
| while ((match = endPattern.exec(docXml)) !== null) { | ||
| const id = match[1]; | ||
| if (!ends.has(id)) { | ||
| ends.set(id, match.index); | ||
| } | ||
| } | ||
| // ======================================== | ||
| // STEP 3: Process each comment range by ID | ||
| // ======================================== | ||
| for (const [id, startXmlPos] of starts) { | ||
| const endXmlPos = ends.get(id); | ||
| // Missing end marker - skip with warning | ||
| if (endXmlPos === undefined) { | ||
| console.warn(`Comment ${id}: missing end marker`); | ||
| continue; | ||
| } | ||
| // Calculate text position | ||
| const docPosition = xmlPosToTextPos(startXmlPos); | ||
| // Handle empty or inverted ranges | ||
| if (endXmlPos <= startXmlPos) { | ||
| anchors.set(id, { | ||
| anchor: '', | ||
| before: getContextBefore(docPosition), | ||
| after: getContextAfter(docPosition), | ||
| docPosition, | ||
| docLength: fullDocText.length, | ||
| isEmpty: true | ||
| }); | ||
| continue; | ||
| } | ||
| // Extract XML segment between markers | ||
| const segment = docXml.slice(startXmlPos, endXmlPos); | ||
| // Extract text from w:t (regular) AND w:delText (deleted text in track changes) | ||
| const textInRangePattern = /<w:t[^>]*>([^<]*)<\/w:t>|<w:delText[^>]*>([^<]*)<\/w:delText>/g; | ||
| let anchorText = ''; | ||
| let tm; | ||
| while ((tm = textInRangePattern.exec(segment)) !== null) { | ||
| anchorText += tm[1] || tm[2] || ''; | ||
| } | ||
| anchorText = decodeXmlEntities(anchorText); | ||
| // Get context | ||
| const anchorLength = anchorText.length; | ||
| const before = getContextBefore(docPosition); | ||
| const after = getContextAfter(docPosition + anchorLength); | ||
| // ALWAYS add entry (even if anchor is empty) | ||
| anchors.set(id, { | ||
| anchor: anchorText.trim(), | ||
| before, | ||
| after, | ||
| docPosition, | ||
| docLength: fullDocText.length, | ||
| isEmpty: !anchorText.trim() | ||
| }); | ||
| } | ||
| } catch (err: any) { | ||
| console.error('Error extracting comment anchors:', err.message); | ||
| return { anchors, fullDocText: '' }; | ||
| for (const range of comments) { | ||
| anchors.set(range.id, { | ||
| anchor: range.anchor, | ||
| before: getContextBefore(range.start), | ||
| after: getContextAfter(range.end), | ||
| docPosition: range.start, | ||
| docLength: fullDocText.length, | ||
| isEmpty: range.isEmpty, | ||
| }); | ||
| } | ||
@@ -409,4 +181,2 @@ | ||
| export async function extractHeadings(docxPath: string): Promise<DocxHeading[]> { | ||
| const AdmZip = (await import('adm-zip')).default; | ||
| if (!fs.existsSync(docxPath)) { | ||
@@ -416,63 +186,12 @@ throw new Error(`File not found: ${docxPath}`); | ||
| const zip = new AdmZip(docxPath); | ||
| const docEntry = zip.getEntry('word/document.xml'); | ||
| if (!docEntry) return []; | ||
| const xml = docEntry.getData().toString('utf8'); | ||
| const zip = openDocx(docxPath); | ||
| const docXml = readPartText(zip, 'word/document.xml'); | ||
| if (docXml === null) return []; | ||
| // Build the same xml-pos → text-pos mapping that extractCommentAnchors does | ||
| const textNodePattern = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| const nodes: Array<{ xmlStart: number; xmlEnd: number; textStart: number; textEnd: number }> = []; | ||
| let textPos = 0; | ||
| let m; | ||
| while ((m = textNodePattern.exec(xml)) !== null) { | ||
| const decoded = decodeXmlEntities(m[1] ?? ''); | ||
| nodes.push({ | ||
| xmlStart: m.index, | ||
| xmlEnd: m.index + m[0].length, | ||
| textStart: textPos, | ||
| textEnd: textPos + decoded.length, | ||
| }); | ||
| textPos += decoded.length; | ||
| } | ||
| function xmlToTextPos(xmlPos: number): number { | ||
| for (const n of nodes) { | ||
| if (xmlPos >= n.xmlStart && xmlPos < n.xmlEnd) return n.textStart; | ||
| if (xmlPos < n.xmlStart) return n.textStart; | ||
| } | ||
| return nodes.length ? nodes[nodes.length - 1].textEnd : 0; | ||
| } | ||
| const headings: DocxHeading[] = []; | ||
| const paraPattern = /<w:p\b[^>]*>([\s\S]*?)<\/w:p>/g; | ||
| let pm; | ||
| while ((pm = paraPattern.exec(xml)) !== null) { | ||
| const inner = pm[1]; | ||
| const styleMatch = inner.match(/<w:pStyle[^>]*w:val="([^"]+)"/); | ||
| if (!styleMatch) continue; | ||
| const style = styleMatch[1]; | ||
| if (!/heading/i.test(style)) continue; | ||
| // Concatenate text runs; include w:delText so a heading inside a tracked | ||
| // deletion is still surfaced (verifying anchors against an original draft) | ||
| const textInRange = /<w:t[^>]*>([^<]*)<\/w:t>|<w:delText[^>]*>([^<]*)<\/w:delText>/g; | ||
| let txt = ''; | ||
| let tm; | ||
| while ((tm = textInRange.exec(inner)) !== null) { | ||
| txt += decodeXmlEntities(tm[1] || tm[2] || ''); | ||
| } | ||
| const trimmed = txt.trim(); | ||
| if (!trimmed) continue; | ||
| const levelMatch = style.match(/(\d+)/); | ||
| const level = levelMatch ? parseInt(levelMatch[1], 10) : 0; | ||
| headings.push({ | ||
| style, | ||
| level, | ||
| text: trimmed, | ||
| docPosition: xmlToTextPos(pm.index), | ||
| }); | ||
| } | ||
| return headings; | ||
| return buildDocTextModel(docXml).headings.map((h) => ({ | ||
| style: h.style, | ||
| level: h.level, | ||
| text: h.text, | ||
| docPosition: h.position, | ||
| })); | ||
| } | ||
@@ -479,0 +198,0 @@ |
+85
-202
@@ -9,8 +9,12 @@ /** | ||
| import AdmZip from 'adm-zip'; | ||
| import { parseString } from 'xml2js'; | ||
| import { promisify } from 'util'; | ||
| import type { WordComment, CommentAnchor, WordMetadata, TrackChangesResult } from './types.js'; | ||
| import { | ||
| openDocx, | ||
| readPartText, | ||
| buildCommentAnchorModel, | ||
| extractComments, | ||
| walkBody, | ||
| type FlowItem, | ||
| } from './ooxml.js'; | ||
| const parseXml = promisify(parseString); | ||
| // ============================================================================= | ||
@@ -45,48 +49,6 @@ // Constants | ||
| const zip = new AdmZip(docxPath); | ||
| const commentsEntry = zip.getEntry('word/comments.xml'); | ||
| if (!commentsEntry) { | ||
| return []; // No comments in document | ||
| } | ||
| const commentsXml = zip.readAsText(commentsEntry); | ||
| const parsed = await parseXml(commentsXml) as any; | ||
| if (!parsed?.['w:comments'] || !parsed['w:comments']['w:comment']) { | ||
| return []; | ||
| } | ||
| const comments: WordComment[] = []; | ||
| const rawComments = parsed['w:comments']['w:comment']; | ||
| for (const comment of rawComments) { | ||
| const id = comment.$?.['w:id']; | ||
| const author = comment.$?.['w:author'] || 'Unknown'; | ||
| const date = comment.$?.['w:date']; | ||
| // Extract text from all paragraphs in comment | ||
| let text = ''; | ||
| const paragraphs = comment['w:p'] || []; | ||
| for (const para of paragraphs) { | ||
| const runs = para['w:r'] || []; | ||
| for (const run of runs) { | ||
| const texts = run['w:t'] || []; | ||
| for (const t of texts) { | ||
| text += typeof t === 'string' ? t : (t._ || ''); | ||
| } | ||
| } | ||
| } | ||
| if (id && text.trim()) { | ||
| comments.push({ | ||
| id, | ||
| author, | ||
| date, | ||
| text: text.trim(), | ||
| }); | ||
| } | ||
| } | ||
| return comments; | ||
| const zip = openDocx(docxPath); | ||
| return extractComments(zip) | ||
| .filter((c) => c.id && c.text) | ||
| .map((c) => ({ id: c.id, author: c.author, date: c.date, text: c.text })); | ||
| } | ||
@@ -107,59 +69,14 @@ | ||
| const zip = new AdmZip(docxPath); | ||
| const documentEntry = zip.getEntry('word/document.xml'); | ||
| if (!documentEntry) { | ||
| const zip = openDocx(docxPath); | ||
| if (!zip.getEntry('word/document.xml')) { | ||
| throw new Error('Invalid docx: no document.xml'); | ||
| } | ||
| const documentXml = zip.readAsText(documentEntry); | ||
| const { fullDocText, comments } = buildCommentAnchorModel(zip); | ||
| const anchors = new Map<string, CommentAnchor>(); | ||
| // Find commentRangeStart and commentRangeEnd pairs | ||
| // The text between them is what the comment is anchored to | ||
| const startPattern = /<w:commentRangeStart w:id="(\d+)"\/>/g; | ||
| const endPattern = /<w:commentRangeEnd w:id="(\d+)"\/>/g; | ||
| let match: RegExpExecArray | null; | ||
| const starts = new Map<string, number>(); | ||
| const ends = new Map<string, number>(); | ||
| while ((match = startPattern.exec(documentXml)) !== null) { | ||
| if (match[1]) { | ||
| starts.set(match[1], match.index); | ||
| } | ||
| } | ||
| while ((match = endPattern.exec(documentXml)) !== null) { | ||
| if (match[1]) { | ||
| ends.set(match[1], match.index); | ||
| } | ||
| } | ||
| // For each comment, extract the text between start and end | ||
| for (const [id, startPos] of starts) { | ||
| const endPos = ends.get(id); | ||
| if (!endPos) continue; | ||
| const segment = documentXml.slice(startPos, endPos); | ||
| // Extract all text content from the segment | ||
| const textPattern = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let text = ''; | ||
| let textMatch: RegExpExecArray | null; | ||
| while ((textMatch = textPattern.exec(segment)) !== null) { | ||
| text += textMatch[1] ?? ''; | ||
| } | ||
| // Get surrounding context (text before the anchor) | ||
| const contextStart = Math.max(0, startPos - CONTEXT_BEFORE_SIZE); | ||
| const contextSegment = documentXml.slice(contextStart, startPos); | ||
| let context = ''; | ||
| while ((textMatch = textPattern.exec(contextSegment)) !== null) { | ||
| context += textMatch[1] ?? ''; | ||
| } | ||
| anchors.set(id, { | ||
| text: text.trim(), | ||
| context: context.slice(-ANCHOR_CONTEXT_SIZE), | ||
| for (const range of comments) { | ||
| anchors.set(range.id, { | ||
| text: range.anchor, | ||
| context: fullDocText.slice(Math.max(0, range.start - CONTEXT_BEFORE_SIZE), range.start).slice(-ANCHOR_CONTEXT_SIZE), | ||
| }); | ||
@@ -449,115 +366,81 @@ } | ||
| const zip = new AdmZip(docxPath); | ||
| const docEntry = zip.getEntry('word/document.xml'); | ||
| if (!docEntry) { | ||
| const zip = openDocx(docxPath); | ||
| const docXml = readPartText(zip, 'word/document.xml'); | ||
| if (docXml === null) { | ||
| throw new Error('Invalid docx: no document.xml'); | ||
| } | ||
| let xml = docEntry.getData().toString('utf8'); | ||
| let insertions = 0; | ||
| let deletions = 0; | ||
| const paragraphs: string[] = []; | ||
| // Use unique markers (null bytes) that won't appear in normal text | ||
| const INS_S = '\x00IS\x00'; | ||
| const INS_E = '\x00IE\x00'; | ||
| const DEL_S = '\x00DS\x00'; | ||
| const DEL_E = '\x00DE\x00'; | ||
| // One ordered walk drives everything: paragraph and heading boundaries, | ||
| // run text (entities already decoded, tabs/breaks rendered), and the | ||
| // track-change spans that become CriticMarkup. Field codes (w:instrText) | ||
| // never reach the text because the walker only reads w:t / w:delText. | ||
| let paraOut = ''; | ||
| let headingLevel = 0; | ||
| let mode: 'normal' | 'ins' | 'del' = 'normal'; | ||
| let buffer = ''; | ||
| // Step 1: Replace <w:ins> with marker-wrapped text injected as <w:t> | ||
| // Whitespace-only insertions are kept as plain text (not markers) to preserve spacing. | ||
| xml = xml.replace(/<w:ins\b[^>]*>([\s\S]*?)<\/w:ins>/g, (_match, content: string) => { | ||
| const texts: string[] = []; | ||
| const tPat = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let m: RegExpExecArray | null; | ||
| while ((m = tPat.exec(content)) !== null) { | ||
| texts.push(m[1] || ''); | ||
| const flushSpan = (open: string, close: string, isIns: boolean) => { | ||
| if (buffer.trim()) { | ||
| if (isIns) insertions++; | ||
| else deletions++; | ||
| paraOut += `${open}${buffer}${close}`; | ||
| } else if (buffer.length > 0) { | ||
| // Whitespace-only edits are kept as plain text to preserve spacing. | ||
| paraOut += buffer; | ||
| } | ||
| const text = texts.join(''); | ||
| if (text.trim()) { | ||
| insertions++; | ||
| return `<w:r><w:t>${INS_S}${text}${INS_E}</w:t></w:r>`; | ||
| } | ||
| // Whitespace-only: preserve as plain text for spacing | ||
| if (text.length > 0) { | ||
| return `<w:r><w:t>${text}</w:t></w:r>`; | ||
| } | ||
| return ''; | ||
| }); | ||
| buffer = ''; | ||
| }; | ||
| // Step 2: Replace <w:del> similarly (uses w:delText inside) | ||
| // Whitespace-only deletions are kept as plain text to preserve spacing. | ||
| xml = xml.replace(/<w:del\b[^>]*>([\s\S]*?)<\/w:del>/g, (_match, content: string) => { | ||
| const texts: string[] = []; | ||
| const tPat = /<w:delText[^>]*>([^<]*)<\/w:delText>|<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let m: RegExpExecArray | null; | ||
| while ((m = tPat.exec(content)) !== null) { | ||
| texts.push(m[1] || m[2] || ''); | ||
| } | ||
| const text = texts.join(''); | ||
| const endParagraph = () => { | ||
| let text = mergeAdjacentMarkers(paraOut); | ||
| text = text.replace(/ {2,}/g, ' '); | ||
| if (text.trim()) { | ||
| deletions++; | ||
| return `<w:r><w:t>${DEL_S}${text}${DEL_E}</w:t></w:r>`; | ||
| paragraphs.push( | ||
| headingLevel >= 1 && headingLevel <= 6 ? '#'.repeat(headingLevel) + ' ' + text.trim() : text, | ||
| ); | ||
| } | ||
| // Whitespace-only: preserve as plain text for spacing | ||
| if (text.length > 0) { | ||
| return `<w:r><w:t>${text}</w:t></w:r>`; | ||
| } | ||
| return ''; | ||
| }); | ||
| paraOut = ''; | ||
| headingLevel = 0; | ||
| mode = 'normal'; | ||
| buffer = ''; | ||
| }; | ||
| // Step 3: Extract text paragraph by paragraph | ||
| const paragraphs: string[] = []; | ||
| const paraPattern = /<w:p\b[^>]*>([\s\S]*?)<\/w:p>/g; | ||
| let pm: RegExpExecArray | null; | ||
| while ((pm = paraPattern.exec(xml)) !== null) { | ||
| const paraXml = pm[1]; | ||
| // Detect heading level from paragraph style | ||
| let headingLevel = 0; | ||
| const styleMatch = paraXml.match(/<w:pStyle\s+w:val="Heading(\d)"/i); | ||
| if (styleMatch && styleMatch[1]) { | ||
| headingLevel = parseInt(styleMatch[1], 10); | ||
| for (const item of walkBody(docXml) as FlowItem[]) { | ||
| switch (item.kind) { | ||
| case 'paraStart': | ||
| paraOut = ''; | ||
| headingLevel = item.level; | ||
| mode = 'normal'; | ||
| buffer = ''; | ||
| break; | ||
| case 'paraEnd': | ||
| endParagraph(); | ||
| break; | ||
| case 'text': | ||
| if (mode === 'normal') paraOut += item.text; | ||
| else buffer += item.text; | ||
| break; | ||
| case 'insStart': | ||
| mode = 'ins'; | ||
| buffer = ''; | ||
| break; | ||
| case 'insEnd': | ||
| flushSpan('{++', '++}', true); | ||
| mode = 'normal'; | ||
| break; | ||
| case 'delStart': | ||
| mode = 'del'; | ||
| buffer = ''; | ||
| break; | ||
| case 'delEnd': | ||
| flushSpan('{--', '--}', false); | ||
| mode = 'normal'; | ||
| break; | ||
| default: | ||
| break; | ||
| } | ||
| // Extract all <w:t> text in order | ||
| const texts: string[] = []; | ||
| const tPat = /<w:t[^>]*>([^<]*)<\/w:t>/g; | ||
| let tm: RegExpExecArray | null; | ||
| while ((tm = tPat.exec(paraXml)) !== null) { | ||
| texts.push(tm[1] || ''); | ||
| } | ||
| let paraText = texts.join(''); | ||
| // Decode XML entities | ||
| paraText = paraText | ||
| .replace(/&/g, '&') | ||
| .replace(/</g, '<') | ||
| .replace(/>/g, '>') | ||
| .replace(/"/g, '"') | ||
| .replace(/'/g, "'"); | ||
| // Convert markers to CriticMarkup | ||
| paraText = paraText | ||
| .split(INS_S).join('{++') | ||
| .split(INS_E).join('++}') | ||
| .split(DEL_S).join('{--') | ||
| .split(DEL_E).join('--}'); | ||
| // Merge adjacent del+ins (or ins+del) into substitutions. | ||
| // Uses a scanner instead of regex to avoid backtracking across marker boundaries. | ||
| paraText = mergeAdjacentMarkers(paraText); | ||
| // Collapse runs of multiple spaces into single space | ||
| paraText = paraText.replace(/ {2,}/g, ' '); | ||
| if (paraText.trim()) { | ||
| if (headingLevel > 0 && headingLevel <= 6) { | ||
| paragraphs.push('#'.repeat(headingLevel) + ' ' + paraText.trim()); | ||
| } else { | ||
| paragraphs.push(paraText); | ||
| } | ||
| } | ||
| } | ||
@@ -564,0 +447,0 @@ |
+53
-104
@@ -16,2 +16,3 @@ /** | ||
| import { escapeXml } from './utils.js'; | ||
| import { indexTextRuns, type TextRunSlot } from './ooxml.js'; | ||
@@ -471,3 +472,21 @@ const MARKER_START_PREFIX = '⟦CMS:'; | ||
| // Process only parent comments (non-replies) for document ranges | ||
| // Locate the enclosing run of each marker structurally, so placement never | ||
| // scans backwards for the nearest `<w:r`. Markers that pandoc duplicated | ||
| // into attributes (e.g. <wp:docPr descr="...">) are not inside a <w:t>, so | ||
| // they never appear in the index and cannot mislead the placement. | ||
| // See: https://github.com/gcol33/docrev/issues/4 | ||
| // | ||
| // The index is rebuilt each iteration against the current document: two | ||
| // markers can share one run, so splicing one run invalidates offsets into | ||
| // it for the next marker. | ||
| const findMarkerSlot = (slots: TextRunSlot[], marker: string): { slot: TextRunSlot; rel: number } | null => { | ||
| for (const slot of slots) { | ||
| const rel = slot.content.indexOf(marker); | ||
| if (rel >= 0) return { slot, rel }; | ||
| } | ||
| return null; | ||
| }; | ||
| // Process only parent comments (non-replies) for document ranges, from the | ||
| // last document position backwards. | ||
| const parentComments = commentsWithIds.filter(c => !c.isReply); | ||
@@ -483,82 +502,14 @@ | ||
| // Pandoc duplicates inline image alt-text into <wp:docPr descr="..."> | ||
| // metadata attributes AND into the visible caption paragraph. A naive | ||
| // indexOf hits the metadata-attribute occurrence first, where there is | ||
| // no <w:t> element so dissectRun fails. Skip occurrences whose position | ||
| // is inside an XML tag (last unbalanced '<' before position). | ||
| // See: https://github.com/gcol33/docrev/issues/4 | ||
| function findInTextContent(haystack: string, needle: string, fromIdx = 0): number { | ||
| let i = fromIdx; | ||
| while (true) { | ||
| const p = haystack.indexOf(needle, i); | ||
| if (p < 0) return -1; | ||
| const lastLt = haystack.lastIndexOf('<', p); | ||
| const lastGt = haystack.lastIndexOf('>', p); | ||
| if (lastLt > lastGt) { | ||
| i = p + 1; | ||
| continue; | ||
| } | ||
| return p; | ||
| } | ||
| } | ||
| const slots = indexTextRuns(documentXml); | ||
| const startHit = findMarkerSlot(slots, startMarker); | ||
| const endHit = startHit ? findMarkerSlot(slots, endMarker) : null; | ||
| if (!startHit || !endHit) continue; | ||
| const startPos = findInTextContent(documentXml, startMarker); | ||
| const endPos = startPos === -1 | ||
| ? -1 | ||
| : findInTextContent(documentXml, endMarker, startPos + startMarker.length); | ||
| const startSlot = startHit.slot; | ||
| const endSlot = endHit.slot; | ||
| const startRunOpen = startSlot.runOpenStart; | ||
| const startRunClose = startSlot.runCloseEnd; | ||
| const endRunOpen = endSlot.runOpenStart; | ||
| const endRunClose = endSlot.runCloseEnd; | ||
| if (startPos === -1 || endPos === -1) continue; | ||
| // Find the runs containing each marker. Pandoc may split a single | ||
| // markdown anchor across multiple <w:r> blocks when it applies styling | ||
| // mid-anchor (smart-quote substitution, *italic*, `code`, **bold**). | ||
| // The same-run path (current happy path) collapses into the multi-run | ||
| // path when start and end runs coincide. | ||
| const startRunOpen = Math.max( | ||
| documentXml.lastIndexOf('<w:r>', startPos), | ||
| documentXml.lastIndexOf('<w:r ', startPos), | ||
| ); | ||
| const startRunCloseIdx = documentXml.indexOf('</w:r>', startPos); | ||
| const endRunOpen = Math.max( | ||
| documentXml.lastIndexOf('<w:r>', endPos), | ||
| documentXml.lastIndexOf('<w:r ', endPos), | ||
| ); | ||
| const endRunCloseIdx = documentXml.indexOf('</w:r>', endPos); | ||
| if ( | ||
| startRunOpen === -1 || startRunCloseIdx === -1 || | ||
| endRunOpen === -1 || endRunCloseIdx === -1 | ||
| ) continue; | ||
| const startRunClose = startRunCloseIdx + '</w:r>'.length; | ||
| const endRunClose = endRunCloseIdx + '</w:r>'.length; | ||
| const startRunFull = documentXml.slice(startRunOpen, startRunClose); | ||
| const endRunFull = documentXml.slice(endRunOpen, endRunClose); | ||
| // Extract <w:rPr> and <w:t> element shape from each run. Both pieces | ||
| // are needed verbatim so a textBefore split keeps its original styling | ||
| // and so the post-anchor textAfter render keeps the end run's styling. | ||
| function dissectRun(runXml: string, marker: string): { | ||
| rPr: string; | ||
| tElement: string; | ||
| textBefore: string; | ||
| textAfter: string; | ||
| } | null { | ||
| const rPrMatch = runXml.match(/<w:rPr>[\s\S]*?<\/w:rPr>/); | ||
| const tMatch = runXml.match(/<w:t[^>]*>([\s\S]*?)<\/w:t>/); | ||
| if (!tMatch) return null; | ||
| const tOpenMatch = tMatch[0].match(/<w:t[^>]*>/); | ||
| if (!tOpenMatch) return null; | ||
| const tContent = tMatch[1] ?? ''; | ||
| const markerInT = tContent.indexOf(marker); | ||
| if (markerInT === -1) return null; | ||
| return { | ||
| rPr: rPrMatch ? rPrMatch[0] : '', | ||
| tElement: tOpenMatch[0], | ||
| textBefore: tContent.slice(0, markerInT), | ||
| textAfter: tContent.slice(markerInT + marker.length), | ||
| }; | ||
| } | ||
| let replacement = ''; | ||
@@ -585,12 +536,11 @@ const replies = commentsWithIds.filter(c => c.isReply && c.parentIdx === comment?.commentIdx); | ||
| if (startRunOpen === endRunOpen) { | ||
| // Same-run path: both markers live inside one <w:t>. Original logic. | ||
| const startInfo = dissectRun(startRunFull, startMarker); | ||
| if (!startInfo) continue; | ||
| const fullText = startInfo.textBefore + startMarker + startInfo.textAfter; | ||
| const endInTextRel = startInfo.textAfter.indexOf(endMarker); | ||
| // Same-run path: both markers live inside one <w:t>. | ||
| const rPr = startSlot.rPr; | ||
| const tElement = startSlot.tOpenTag; | ||
| const afterStart = startSlot.content.slice(startHit.rel + startMarker.length); | ||
| const endInTextRel = afterStart.indexOf(endMarker); | ||
| if (endInTextRel === -1) continue; | ||
| const anchorTextSame = startInfo.textAfter.slice(0, endInTextRel); | ||
| let textAfter = startInfo.textAfter.slice(endInTextRel + endMarker.length); | ||
| let anchorText = anchorTextSame; | ||
| let textBefore = startInfo.textBefore; | ||
| let textBefore = startSlot.content.slice(0, startHit.rel); | ||
| let anchorText = afterStart.slice(0, endInTextRel); | ||
| let textAfter = afterStart.slice(endInTextRel + endMarker.length); | ||
@@ -609,15 +559,13 @@ // Empty anchor: borrow the next word so the comment has something | ||
| } | ||
| // Suppress unused warning for pre-empty-anchor fullText var | ||
| void fullText; | ||
| if (textBefore) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${textBefore}</w:t></w:r>`; | ||
| replacement += `<w:r>${rPr}${tElement}${textBefore}</w:t></w:r>`; | ||
| } | ||
| emitRangeStarts(); | ||
| if (anchorText) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${anchorText}</w:t></w:r>`; | ||
| replacement += `<w:r>${rPr}${tElement}${anchorText}</w:t></w:r>`; | ||
| } | ||
| emitRangeEnds(); | ||
| if (textAfter) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${textAfter}</w:t></w:r>`; | ||
| replacement += `<w:r>${rPr}${tElement}${textAfter}</w:t></w:r>`; | ||
| } | ||
@@ -633,22 +581,23 @@ documentXml = documentXml.slice(0, startRunOpen) + replacement + documentXml.slice(startRunClose); | ||
| // split the end run at the end marker. | ||
| const startInfo = dissectRun(startRunFull, startMarker); | ||
| const endInfo = dissectRun(endRunFull, endMarker); | ||
| if (!startInfo || !endInfo) continue; | ||
| const startTextBefore = startSlot.content.slice(0, startHit.rel); | ||
| const startTextAfter = startSlot.content.slice(startHit.rel + startMarker.length); | ||
| const endTextBefore = endSlot.content.slice(0, endHit.rel); | ||
| const endTextAfter = endSlot.content.slice(endHit.rel + endMarker.length); | ||
| const middle = documentXml.slice(startRunClose, endRunOpen); | ||
| if (startInfo.textBefore) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${startInfo.textBefore}</w:t></w:r>`; | ||
| if (startTextBefore) { | ||
| replacement += `<w:r>${startSlot.rPr}${startSlot.tOpenTag}${startTextBefore}</w:t></w:r>`; | ||
| } | ||
| emitRangeStarts(); | ||
| if (startInfo.textAfter) { | ||
| replacement += `<w:r>${startInfo.rPr}${startInfo.tElement}${startInfo.textAfter}</w:t></w:r>`; | ||
| if (startTextAfter) { | ||
| replacement += `<w:r>${startSlot.rPr}${startSlot.tOpenTag}${startTextAfter}</w:t></w:r>`; | ||
| } | ||
| replacement += middle; | ||
| if (endInfo.textBefore) { | ||
| replacement += `<w:r>${endInfo.rPr}${endInfo.tElement}${endInfo.textBefore}</w:t></w:r>`; | ||
| if (endTextBefore) { | ||
| replacement += `<w:r>${endSlot.rPr}${endSlot.tOpenTag}${endTextBefore}</w:t></w:r>`; | ||
| } | ||
| emitRangeEnds(); | ||
| if (endInfo.textAfter) { | ||
| replacement += `<w:r>${endInfo.rPr}${endInfo.tElement}${endInfo.textAfter}</w:t></w:r>`; | ||
| if (endTextAfter) { | ||
| replacement += `<w:r>${endSlot.rPr}${endSlot.tOpenTag}${endTextAfter}</w:t></w:r>`; | ||
| } | ||
@@ -655,0 +604,0 @@ |
+1
-1
| { | ||
| "name": "docrev", | ||
| "version": "0.10.2", | ||
| "version": "0.11.0", | ||
| "description": "Academic paper revision workflow: Word ↔ Markdown round-trips, DOI validation, reviewer comments", | ||
@@ -5,0 +5,0 @@ "type": "module", |
-180
| # docrev — Open Issues | ||
| Three issues identified during real-world use on the ADAPT proposal build. Working through one by one. | ||
| Status legend: `[ ]` planned · `[~]` in progress · `[x]` shipped | ||
| --- | ||
| ## Issue 1 — Allow custom pandoc filters / args through `rev build` `[x]` | ||
| ### Problem | ||
| Source markdown with custom raw-LaTeX commands needs a pandoc filter to convert them for docx (e.g. `\tofill{X}` → bold `[X]`). `rev build docx` has no escape hatch: | ||
| - `rev build --help` exposes no `--filter` / `--lua-filter` / `--pandoc-arg`. | ||
| - `rev.yaml` exposes `docx.reference` and `docx.keepComments` but no generic pandoc passthrough. | ||
| Working around it requires letting `rev build` produce `paper.md` as a side effect, then calling pandoc manually — which defeats the point of `rev build`. | ||
| ### Design (agreed) | ||
| **rev.yaml**: top-level `pandoc-args` (applied to every format) plus per-format `<format>.pandoc-args` (concatenated *after* the top-level list so format-specific can override): | ||
| ```yaml | ||
| pandoc-args: | ||
| - --lua-filter=tofill_filter.lua | ||
| docx: | ||
| pandoc-args: | ||
| - --lua-filter=docx_only.lua | ||
| pdf: | ||
| pandoc-args: | ||
| - --variable=papersize:a4 | ||
| ``` | ||
| **CLI**: repeatable `--pandoc-arg <arg>` on `rev build`, appended *after* config args so CLI wins: | ||
| ```bash | ||
| rev build docx --pandoc-arg=--lua-filter=tofill.lua --pandoc-arg=--shift-heading-level-by=1 | ||
| ``` | ||
| **Verbose mode**: `rev build --verbose` already exists but doesn't echo the pandoc invocation. Print the full `pandoc <args>` command (one line per format) so users can copy-paste to replicate manually. | ||
| ### Touch points | ||
| - `lib/build.ts` — `BuildConfig` + `DEFAULT_CONFIG` (add `pandocArgs: string[]`; add `pandocArgs` to each format config), `buildPandocArgs()` (append top-level then format-specific), `runPandoc()` (echo command under verbose), `loadConfig()` (read hyphenated `pandoc-args` key and map to camelCase `pandocArgs`). | ||
| - `lib/commands/build.ts` — add `--pandoc-arg <arg>` (repeatable via custom collector), forward through `BuildOptions`, ensure CLI args are appended last. | ||
| - `lib/schema.ts` — declare `pandoc-args` (array of strings) at top level and inside each format object. | ||
| - `skill/SKILL.md` + `skill/REFERENCE.md` — document new field and flag with a `--lua-filter=` example. | ||
| - `test/build.test.js` — cover (a) top-level only, (b) format-specific only, (c) both concatenated in order, (d) CLI overrides config. | ||
| ### Open questions | ||
| None. Hyphenated YAML key + camelCase TS field is consistent with how the rest of the schema is read (we're already free-form on the JS side, just need a small key transform in `loadConfig`). | ||
| --- | ||
| ## Issue 2 — Output filename is auto-truncated mid-word and not configurable `[x]` | ||
| ### Problem | ||
| Default output landed at `output/adapt-alien-dark-diversity-across-plant-communitie.docx` — title slugified and hard-truncated at 50 chars (`communitie` missing the trailing `s`). No `-o` flag, no `output:` field in `rev.yaml`. | ||
| Root cause: `lib/build.ts:1055-1056` (`runPandoc`) and `lib/commands/build.ts:591-592` (`--show-changes` path): | ||
| ```ts | ||
| const baseName = config.title | ||
| ? config.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50) | ||
| : 'paper'; | ||
| ``` | ||
| `.slice(0, 50)` is a blind cut. | ||
| ### Design (agreed) | ||
| **rev.yaml**: per-format `output:` map. Extensions optional — added if missing. | ||
| ```yaml | ||
| output: | ||
| docx: ADAPT_proposal_draft.docx | ||
| pdf: ADAPT_proposal_draft.pdf | ||
| ``` | ||
| **CLI**: `-o, --output <path>` on `rev build`. When multiple formats are built, applies as basename to all (extension swapped per format); for single-format builds, used verbatim. | ||
| **Truncation fix**: when no `output:` is configured, slug at last `-` boundary at-or-before 50 chars instead of mid-word. Also bump the cap to 80 — 50 is conservative. | ||
| **Doc fix**: surface the default `output/` directory in `rev build --help` and SKILL.md "Project Structure" tree (already mentioned in passing — make it explicit). | ||
| ### Touch points | ||
| - `lib/build.ts` — `BuildConfig` (`output?: Record<string, string>`), `DEFAULT_CONFIG`, `runPandoc()` (resolve filename: `config.output[format]` → CLI `-o` → slug). Helper: `resolveOutputName(config, format, cliOverride)`. | ||
| - `lib/commands/build.ts` — add `-o, --output <path>` flag, wire into `BuildOptions`; same fix applied to the `--show-changes` branch's `baseName` construction. | ||
| - `lib/schema.ts` — declare `output` as object mapping format → string. | ||
| - `skill/SKILL.md` — "Project Structure" tree explicitly notes `output/`; new `output:` example under config. | ||
| - `test/build.test.js` — cover (a) `output:` per-format honored, (b) `-o` CLI override, (c) word-boundary truncation when title >50 chars. | ||
| ### Resolved | ||
| - `-o` relative paths resolve under `outputDir`; absolute paths bypass it. Same rule applies to values in `output:`. | ||
| - Cap raised from 50 → 80 chars; fallback truncates at the last `-` boundary at-or-before the cap so words stay whole (the ADAPT title now slugs cleanly without losing the trailing "s" on "communities"). | ||
| - `--show-changes` and `--dual` derived filenames (`-changes.docx`, `_comments.docx`, `_comments.pdf`) follow the chosen base name. | ||
| - Fixed an unrelated misleading example in SKILL.md that showed `output: { docx: { reference-doc: ... } }` — the real config key is `docx.reference` (top-level), not nested under `output:`. | ||
| --- | ||
| ## Issue 3 — Raw LaTeX figure blocks silently disappear in docx builds `[x]` | ||
| ### Problem | ||
| Source markdown with `\begin{figure}[H]\includegraphics{...}\end{figure}` blocks renders correctly in the PDF target but produces a docx where all figures are silently missing. Pandoc strips the raw LaTeX because docx has no LaTeX rendering pipeline. No warning is emitted. | ||
| This catches you only on careful inspection — a less careful user would ship a docx with no figures and not notice until a reviewer asks. | ||
| ### Design (agreed) | ||
| Three layers, combined: | ||
| **1. Warn during build (always on).** In `applyFormatTransforms()` for docx, scan for raw LaTeX figure environments (`\begin{figure}` … `\end{figure}` containing `\includegraphics`). Emit: | ||
| ``` | ||
| Warning: 3 raw LaTeX figure block(s) won't render in docx. | ||
| intro.md:42 \begin{figure}[H] ... \includegraphics{figures/map.pdf} ... | ||
| methods.md:118 | ||
| results.md:201 | ||
| Hint: use {#fig:label width=80%} for format-portable figures, or | ||
| pass --pandoc-arg=--lua-filter=<your.lua> to translate them yourself. | ||
| ``` | ||
| Counted by file/line so the user can jump to fix. | ||
| **2. Auto-translate the common shape (opt-out via `docx.translateRawFigures: false`).** Convert | ||
| ```latex | ||
| \begin{figure}[H] | ||
| \centering | ||
| \includegraphics[width=0.8\textwidth]{figures/map.pdf} | ||
| \caption{Map of study sites.} | ||
| \label{fig:map} | ||
| \end{figure} | ||
| ``` | ||
| → | ||
| ```markdown | ||
| {#fig:map width=80%} | ||
| ``` | ||
| Cover the 80% case. If the block has anything more exotic (`\subfloat`, `\rotatebox`, multi-`\includegraphics`), skip auto-translate, warn loudly, and leave the block as-is. | ||
| Width conversion: `0.8\textwidth` → `80%`; bare `8cm` → `8cm`; missing → omit. | ||
| **3. Document.** SKILL.md "Cross-References" section currently mentions `@fig:label` and `{#fig:label}` but doesn't show how to *insert* a figure. Add: | ||
| ```markdown | ||
| {#fig:foo width=80%} | ||
| ``` | ||
| Note this is the format-portable form. Also mention that raw `\begin{figure}` blocks are PDF-only. | ||
| ### Touch points | ||
| - `lib/build.ts` — new helper `detectRawLatexFigures(content): {file?, line, block}[]` and `translateRawLatexFigures(content): {translated, untranslatedCount}`. Wire into `applyFormatTransforms()` for docx (after `convertDynamicRefsToDisplay`). | ||
| - `lib/build.ts` — propagate warnings up via the existing `warnings: string[]` returned by `build()`. `rev build` already prints from there. | ||
| - `lib/commands/build.ts` — surface warnings in normal output (not just verbose). | ||
| - `lib/schema.ts` — declare `docx.translateRawFigures: boolean` (default true). | ||
| - `skill/SKILL.md` — figure-insertion example under "Cross-References". | ||
| - `test/build.test.js` — cover (a) detection counts blocks correctly, (b) auto-translate of `\includegraphics{path}`, (c) auto-translate of `\includegraphics[width=0.8\textwidth]{path}` → `width=80%`, (d) exotic block → not translated, warned, left alone, (e) opt-out via `translateRawFigures: false`. | ||
| ### Open questions | ||
| - Should auto-translate also handle bare `\includegraphics{...}` outside a `figure` env? Lean no — keep scope to figure environments. If a user writes raw `\includegraphics` without wrapping, that's a deliberate choice we shouldn't second-guess. | ||
| - Width unit handling: `0.8\textwidth` → `80%` is unambiguous. `\linewidth` → `100%`? Yes. Other relative units → leave raw and warn. | ||
| --- | ||
| ## Working order | ||
| 1. **Issue 1** first — unblocks immediate workflow needs and provides the manual escape hatch for issue 3 even before auto-translate ships. | ||
| 2. **Issue 2** next — small, low-risk, quality-of-life win. | ||
| 3. **Issue 3** last — biggest behavior change; benefits from the verbose pandoc echo (Issue 1) for debugging the lua-filter fallback path. |
| /* ── Base ──────────────────────────────────────────────── */ | ||
| html, body { | ||
| height: 100%; | ||
| } | ||
| body { | ||
| background-color: #F5F6F8; | ||
| color: #3E3F3A; | ||
| display: flex; | ||
| flex-direction: column; | ||
| min-height: 100vh; | ||
| padding-top: 4rem; | ||
| font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; | ||
| } | ||
| .container { flex: 1; } | ||
| footer { margin-top: auto; } | ||
| /* ── Navbar (pkgdown-style subtle tint, not bg-primary) ── */ | ||
| .navbar { | ||
| background: color-mix(in oklab, color-mix(in oklab, var(--bs-body-bg) 95%, var(--bs-primary)) 95%, var(--bs-body-color)); | ||
| border-bottom: 1px solid #DFD7CA; | ||
| line-height: initial; | ||
| } | ||
| .navbar .nav-link.active { | ||
| font-weight: 600; | ||
| color: var(--bs-primary) !important; | ||
| } | ||
| /* ── Links ─────────────────────────────────────────────── */ | ||
| a { color: #325D88; } | ||
| a:hover { color: #1E3D5C; } | ||
| /* ── Headings ──────────────────────────────────────────── */ | ||
| h1 { font-size: 2rem; font-weight: 600; margin-bottom: 1rem; } | ||
| h2 { | ||
| font-size: 1.4rem; font-weight: 600; | ||
| margin-top: 2rem; margin-bottom: .65rem; | ||
| padding-bottom: .3rem; | ||
| border-bottom: 1px solid #DFD7CA; | ||
| } | ||
| h3 { font-size: 1.1rem; font-weight: 600; margin-top: 1.5rem; } | ||
| h4 { font-size: 1rem; font-weight: 600; margin-top: 1.2rem; } | ||
| /* ── Code ──────────────────────────────────────────────── */ | ||
| pre, div.sourceCode { | ||
| background-color: #EEEEED; | ||
| border: 1px solid #DFD7CA; | ||
| border-radius: .375rem; | ||
| padding: .9rem 1.1rem; | ||
| font-size: .85rem; | ||
| overflow-x: auto; | ||
| margin: 1em 0; | ||
| } | ||
| code { | ||
| background-color: #EEEEED; | ||
| color: #3E3F3A; | ||
| border-radius: .25rem; | ||
| padding: .1em .35em; | ||
| font-size: .875em; | ||
| } | ||
| pre code, div.sourceCode code { | ||
| background: none; | ||
| padding: 0; | ||
| border-radius: 0; | ||
| font-size: inherit; | ||
| color: inherit; | ||
| } | ||
| div.sourceCode { padding: 0; } | ||
| div.sourceCode pre { border: none; margin: 0; } | ||
| /* ── Tables ────────────────────────────────────────────── */ | ||
| table { | ||
| width: 100%; | ||
| border-collapse: collapse; | ||
| margin: 1em 0; | ||
| font-size: .9rem; | ||
| } | ||
| thead th { | ||
| background-color: #DFD7CA; | ||
| color: #3E3F3A; | ||
| font-weight: 600; | ||
| padding: .5rem .75rem; | ||
| border-bottom: 2px solid #c8c0b4; | ||
| text-align: left; | ||
| } | ||
| td, th { padding: .4rem .75rem; border-bottom: 1px solid #e8e2d8; } | ||
| tbody tr:hover { background-color: rgba(223,215,202,.2); } | ||
| /* ── TOC sidebar ───────────────────────────────────────── */ | ||
| aside#toc, aside .toc, aside nav.toc { font-size: .875rem; } | ||
| aside h2.h6 { | ||
| text-transform: uppercase; | ||
| font-size: .68rem; | ||
| letter-spacing: .07em; | ||
| color: #6c757d; | ||
| font-weight: 600; | ||
| margin-bottom: .5rem; | ||
| border: none; | ||
| padding: 0; | ||
| } | ||
| aside .toc, aside #TOC { | ||
| position: sticky; | ||
| top: 5rem; | ||
| max-height: calc(100vh - 6rem); | ||
| overflow-y: auto; | ||
| } | ||
| aside ul { | ||
| list-style: none; | ||
| padding-left: .9rem; | ||
| margin: 0; | ||
| } | ||
| aside > nav > .toc > ul, | ||
| aside .toc > ul { padding-left: 0; } | ||
| aside li { margin: .1rem 0; } | ||
| aside a { | ||
| color: #6c757d; | ||
| text-decoration: none; | ||
| display: block; | ||
| line-height: 1.55; | ||
| } | ||
| aside a:hover { color: #325D88; } | ||
| /* ── Home page cards ───────────────────────────────────── */ | ||
| .doc-card { | ||
| border: 1px solid #DFD7CA; | ||
| border-radius: .375rem; | ||
| padding: 1.1rem 1.25rem; | ||
| height: 100%; | ||
| background: #fff; | ||
| transition: border-color .15s, box-shadow .15s; | ||
| } | ||
| .doc-card:hover { | ||
| border-color: #325D88; | ||
| box-shadow: 0 2px 8px rgba(50,93,136,.1); | ||
| } | ||
| .doc-card h5 { font-size: 1rem; font-weight: 600; margin-bottom: .4rem; } | ||
| .doc-card p { font-size: .875rem; color: #6c757d; margin-bottom: .6rem; } | ||
| .doc-card a.stretched-link::after { z-index: 1; } | ||
| /* ── Badges row ────────────────────────────────────────── */ | ||
| .badge-row { margin-bottom: 1rem; line-height: 2; } | ||
| .badge-row img { margin-right: .25rem; } | ||
| /* ── ── ── DARK MODE ── ── ── ──────────────────────────── */ | ||
| [data-bs-theme="dark"] body { background-color: #343739; color: #DFD7CA; } | ||
| [data-bs-theme="dark"] .navbar { | ||
| background: color-mix(in oklab, color-mix(in oklab, #343739 92%, var(--bs-primary)) 95%, #DFD7CA); | ||
| border-bottom-color: #495057; | ||
| } | ||
| [data-bs-theme="dark"] a { color: #7ba8d0; } | ||
| [data-bs-theme="dark"] a:hover { color: #a5c4e8; } | ||
| [data-bs-theme="dark"] .navbar .nav-link.active { color: #7ba8d0 !important; } | ||
| [data-bs-theme="dark"] h1, | ||
| [data-bs-theme="dark"] h2, | ||
| [data-bs-theme="dark"] h3, | ||
| [data-bs-theme="dark"] h4 { color: #DFD7CA; } | ||
| [data-bs-theme="dark"] h2 { border-color: #495057; } | ||
| [data-bs-theme="dark"] pre, | ||
| [data-bs-theme="dark"] div.sourceCode { | ||
| background-color: #2C2F31; | ||
| border-color: #495057; | ||
| color: #DFD7CA; | ||
| } | ||
| [data-bs-theme="dark"] code { | ||
| background-color: #2C2F31; | ||
| color: #DFD7CA; | ||
| } | ||
| [data-bs-theme="dark"] div.sourceCode span[class] { color: #DFD7CA !important; } | ||
| [data-bs-theme="dark"] thead th { | ||
| background-color: #3d4043; | ||
| color: #DFD7CA; | ||
| border-color: #495057; | ||
| } | ||
| [data-bs-theme="dark"] td, | ||
| [data-bs-theme="dark"] th { border-color: #3d4043; } | ||
| [data-bs-theme="dark"] tbody tr:hover { background-color: rgba(73,80,87,.3); } | ||
| [data-bs-theme="dark"] aside a { color: #8e9499; } | ||
| [data-bs-theme="dark"] aside a:hover { color: #7ba8d0; } | ||
| [data-bs-theme="dark"] .doc-card { | ||
| background: #2C2F31; | ||
| border-color: #495057; | ||
| } | ||
| [data-bs-theme="dark"] .doc-card:hover { border-color: #7ba8d0; } | ||
| [data-bs-theme="dark"] .doc-card p { color: #8e9499; } |
| <!DOCTYPE html> | ||
| <html lang="en" data-bs-theme="light"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
| <title>Commands — docrev</title> | ||
| <meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users."> | ||
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css"> | ||
| <style> | ||
| html { -webkit-text-size-adjust: 100%; } | ||
| pre > code.sourceCode { white-space: pre; position: relative; } | ||
| pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } | ||
| pre > code.sourceCode > span:empty { height: 1.2em; } | ||
| .sourceCode { overflow: visible; } | ||
| code.sourceCode > span { color: inherit; text-decoration: inherit; } | ||
| div.sourceCode { margin: 1em 0; } | ||
| pre.sourceCode { margin: 0; } | ||
| @media screen { | ||
| div.sourceCode { overflow: auto; } | ||
| } | ||
| @media print { | ||
| pre > code.sourceCode { white-space: pre-wrap; } | ||
| pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } | ||
| } | ||
| pre.numberSource code | ||
| { counter-reset: source-line 0; } | ||
| pre.numberSource code > span | ||
| { position: relative; left: -4em; counter-increment: source-line; } | ||
| pre.numberSource code > span > a:first-child::before | ||
| { content: counter(source-line); | ||
| position: relative; left: -1em; text-align: right; vertical-align: baseline; | ||
| border: none; display: inline-block; | ||
| -webkit-touch-callout: none; -webkit-user-select: none; | ||
| -khtml-user-select: none; -moz-user-select: none; | ||
| -ms-user-select: none; user-select: none; | ||
| padding: 0 4px; width: 4em; | ||
| color: #aaaaaa; | ||
| } | ||
| pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } | ||
| div.sourceCode | ||
| { } | ||
| @media screen { | ||
| pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } | ||
| } | ||
| code span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
| code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
| code span.at { color: #7d9029; } /* Attribute */ | ||
| code span.bn { color: #40a070; } /* BaseN */ | ||
| code span.bu { color: #008000; } /* BuiltIn */ | ||
| code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
| code span.ch { color: #4070a0; } /* Char */ | ||
| code span.cn { color: #880000; } /* Constant */ | ||
| code span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
| code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
| code span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
| code span.dt { color: #902000; } /* DataType */ | ||
| code span.dv { color: #40a070; } /* DecVal */ | ||
| code span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
| code span.ex { } /* Extension */ | ||
| code span.fl { color: #40a070; } /* Float */ | ||
| code span.fu { color: #06287e; } /* Function */ | ||
| code span.im { color: #008000; font-weight: bold; } /* Import */ | ||
| code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
| code span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
| code span.op { color: #666666; } /* Operator */ | ||
| code span.ot { color: #007020; } /* Other */ | ||
| code span.pp { color: #bc7a00; } /* Preprocessor */ | ||
| code span.sc { color: #4070a0; } /* SpecialChar */ | ||
| code span.ss { color: #bb6688; } /* SpecialString */ | ||
| code span.st { color: #4070a0; } /* String */ | ||
| code span.va { color: #19177c; } /* Variable */ | ||
| code span.vs { color: #4070a0; } /* VerbatimString */ | ||
| code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
| </style> | ||
| <link rel="stylesheet" href="assets/extra.css"> | ||
| </head> | ||
| <body> | ||
| <nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation"> | ||
| <div class="container"> | ||
| <a class="navbar-brand me-2" href="index.html">docrev</a> | ||
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation"> | ||
| <span class="navbar-toggler-icon"></span> | ||
| </button> | ||
| <div class="collapse navbar-collapse" id="navbar-main"> | ||
| <ul class="navbar-nav me-auto"> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="index.html">Home</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="workflow.html">Get Started</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link active" aria-current="page" href="commands.html">Commands</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="configuration.html">Configuration</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="troubleshooting.html">Troubleshooting</a> | ||
| </li> | ||
| </ul> | ||
| <ul class="navbar-nav"> | ||
| <li class="nav-item"> | ||
| <button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode"> | ||
| <svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/> | ||
| </svg> | ||
| <svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none"> | ||
| <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/> | ||
| </svg> | ||
| </button> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </nav> | ||
| <div class="container template-article"> | ||
| <div class="row"> | ||
| <main id="main" class="col-md-9"> | ||
| <h1 id="command-reference">Command Reference</h1> | ||
| <p>Complete list of <code>rev</code> commands.</p> | ||
| <h2 id="build-create">Build & Create</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev build [formats...]</code></td> | ||
| <td>Build PDF/DOCX/TEX from sections</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build pdf</code></td> | ||
| <td>Build PDF only</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build docx</code></td> | ||
| <td>Build DOCX only</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build tex</code></td> | ||
| <td>Build LaTeX only</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build all</code></td> | ||
| <td>Build PDF + DOCX + TEX</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build --toc</code></td> | ||
| <td>Include table of contents</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build --dual</code></td> | ||
| <td>Output clean + comments DOCX (with threaded comments)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build --show-changes</code></td> | ||
| <td>Export DOCX with visible track changes</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev new <name></code></td> | ||
| <td>Create new project (prompts for sections)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev new <name> -s intro,methods,results</code></td> | ||
| <td>Create with specified sections</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev new --list</code></td> | ||
| <td>List available templates</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev install</code></td> | ||
| <td>Check/install dependencies (pandoc-crossref)</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="import-export">Import & Export</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev import <docx></code></td> | ||
| <td>Bootstrap project from Word (creates sections + rev.yaml)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev import <docx> <md></code></td> | ||
| <td>Import changes by diffing Word against your MD</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev sync [docx] [sections...]</code></td> | ||
| <td>Sync feedback from Word to section files</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev sync</code></td> | ||
| <td>Auto-detect most recent .docx</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev sync reviewed.docx methods</code></td> | ||
| <td>Sync only methods section</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev sync annotated.pdf</code></td> | ||
| <td>Extract comments from PDF into markdown</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev extract <docx></code></td> | ||
| <td>Extract plain text from Word</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev archive</code></td> | ||
| <td>Move reviewer .docx files to archive folder</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev archive --by Smith</code></td> | ||
| <td>Specify reviewer name</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev archive --dry-run</code></td> | ||
| <td>Preview without moving</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <p><strong>Word Import Features:</strong> - Extracts text | ||
| preserving structure - Extracts comments with author and anchor | ||
| text - Converts OMML equations to LaTeX - Extracts embedded images | ||
| to <code>media/</code> directory</p> | ||
| <h2 id="pdf-comments">PDF Comments</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev pdf-comments <pdf></code></td> | ||
| <td>Extract and display comments from annotated PDF</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev pdf-comments <pdf> --with-text</code></td> | ||
| <td>Also extract the highlighted text content</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev pdf-comments <pdf> --append <file.md></code></td> | ||
| <td>Append extracted comments to markdown file</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev pdf-comments <pdf> --json</code></td> | ||
| <td>Output comments as JSON</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev pdf-comments <pdf> --by-page</code></td> | ||
| <td>Group comments by page (default)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev pdf-comments <pdf> --by-author</code></td> | ||
| <td>Group comments by author</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build pdf --dual</code></td> | ||
| <td>Build clean PDF + annotated PDF with margin notes</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <p><strong>Supported PDF Annotations:</strong> - Sticky notes | ||
| (Text annotations) - Text boxes (FreeText) - Highlights with | ||
| comments (text extraction supported) - Underlines with comments | ||
| (text extraction supported) - Strikethrough/deletion suggestions | ||
| (text extraction supported) - Squiggly underlines (text extraction | ||
| supported)</p> | ||
| <p><strong>Text Extraction:</strong> Use <code>--with-text</code> | ||
| to extract the actual text that was highlighted, underlined, or | ||
| struck through. This is slower but shows exactly what the reviewer | ||
| marked.</p> | ||
| <p><strong>PDF Dual Export:</strong> When building with | ||
| <code>--dual</code>, produces: - <code>paper.pdf</code> — clean | ||
| version for submission - <code>paper_comments.pdf</code> — | ||
| CriticMarkup comments rendered as LaTeX margin notes</p> | ||
| <h2 id="review-edit">Review & Edit</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev review <file></code></td> | ||
| <td>Interactive accept/reject TUI for track changes</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev status</code></td> | ||
| <td>Show project overview (words, comments, changes)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev status <file></code></td> | ||
| <td>Show annotation counts for specific file</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev comments <file></code></td> | ||
| <td>List all comments with context</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev comments <file> --export comments.csv</code></td> | ||
| <td>Export comments to CSV</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev resolve <file> -n 1</code></td> | ||
| <td>Mark comment #1 as resolved</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev strip <file></code></td> | ||
| <td>Output clean Markdown (annotations applied)</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="comment-navigation">Comment Navigation</h2> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev next</code></td> | ||
| <td>Show next pending comment</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev next -n 3</code></td> | ||
| <td>Show 3rd pending comment</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev prev</code></td> | ||
| <td>Show last pending comment</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev prev -n 2</code></td> | ||
| <td>Show 2nd from last pending</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev first</code></td> | ||
| <td>Show first comment (all, not just pending)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev first methods</code></td> | ||
| <td>First comment in methods section</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev last</code></td> | ||
| <td>Show last comment</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev todo</code></td> | ||
| <td>List all pending comments as checklist</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev todo --by-author</code></td> | ||
| <td>Group pending comments by author</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="track-changes">Track Changes</h2> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev accept <file></code></td> | ||
| <td>List track changes</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev accept <file> -n 1</code></td> | ||
| <td>Accept change #1</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev accept <file> -a</code></td> | ||
| <td>Accept all changes</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev reject <file> -n 1</code></td> | ||
| <td>Reject change #1</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev reject <file> -a</code></td> | ||
| <td>Reject all changes</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="cross-references">Cross-References</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev refs [file]</code></td> | ||
| <td>Show figure/table registry and reference status</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev migrate <file></code></td> | ||
| <td>Convert hardcoded refs (Fig. 1) to dynamic (<span | ||
| class="citation" data-cites="fig:label">@fig:label</span>)</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <p><strong>Supported patterns:</strong> - <code>Figure 1</code> → | ||
| <code>@fig:label</code> - <code>Fig. 2a</code> → | ||
| <code>@fig:label</code> - <code>Figs. 1-3</code> → | ||
| <code>@fig:one; @fig:two; @fig:three</code> - | ||
| <code>Figures 1, 2, and 3</code> → multiple refs - | ||
| <code>Fig. 1a-c</code> → expands letter suffixes</p> | ||
| <h2 id="comments-replies">Comments & Replies</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev config user "Name"</code></td> | ||
| <td>Set your name for replies</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev config sections "a,b,c"</code></td> | ||
| <td>Set default sections for new projects</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev reply <file></code></td> | ||
| <td>Interactive reply to reviewer comments</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev reply <file> -n 1 -m "text"</code></td> | ||
| <td>Reply to specific comment (non-interactive)</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <p><strong>Comment Threading:</strong> Adjacent comments from | ||
| different authors become threaded replies in Word:</p> | ||
| <div class="sourceCode" id="cb1"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>{>>Guy Colling: Question?<<} {>>Gilles Colling: Answer.<<}</span></code></pre></div> | ||
| <h2 id="bibliography-dois">Bibliography & DOIs</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev doi check [file.bib]</code></td> | ||
| <td>Validate DOIs in bibliography (Crossref + DataCite)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev doi lookup [file.bib]</code></td> | ||
| <td>Search for missing DOIs by title/author/year</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev doi fetch <doi></code></td> | ||
| <td>Fetch BibTeX entry from DOI</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev doi add <doi></code></td> | ||
| <td>Fetch and add DOI entry to bibliography</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <p><strong>Options:</strong> - | ||
| <code>--confidence low|medium|high</code> - Filter lookup results | ||
| - <code>--strict</code> - Fail if articles are missing DOIs - Skip | ||
| entries: add <code>nodoi = {true}</code> or <code>% no-doi</code> | ||
| comment</p> | ||
| <h2 id="validation-analysis">Validation & Analysis</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev citations [file.bib]</code></td> | ||
| <td>Validate citations against bibliography</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev figures [file]</code></td> | ||
| <td>List figures/tables with reference counts</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev equations list</code></td> | ||
| <td>List all equations in section files</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev equations from-word <docx></code></td> | ||
| <td>Extract equations from Word to LaTeX</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev response [files]</code></td> | ||
| <td>Generate response letter from comments</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev anonymize <file></code></td> | ||
| <td>Prepare document for blind review</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev validate --journal <name></code></td> | ||
| <td>Check manuscript against journal requirements</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev validate --list</code></td> | ||
| <td>List 21 available journal profiles</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="multi-reviewer-git">Multi-Reviewer & Git</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev merge <md> <docx...></code></td> | ||
| <td>Merge feedback from multiple Word documents</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev diff [ref]</code></td> | ||
| <td>Compare sections against git history</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev history [file]</code></td> | ||
| <td>Show revision history for sections</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="convenience-commands">Convenience Commands</h2> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev word-count</code></td> | ||
| <td>Show word counts per section</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev word-count --limit 5000</code></td> | ||
| <td>Warn if over limit</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev word-count -j <journal></code></td> | ||
| <td>Use journal word limit</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev stats</code></td> | ||
| <td>Project dashboard (words, figures, citations)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev search <query></code></td> | ||
| <td>Search across all section files</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev search -i <query></code></td> | ||
| <td>Case-insensitive search</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev backup</code></td> | ||
| <td>Create timestamped backup zip</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev backup --name v1</code></td> | ||
| <td>Custom backup name</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev export</code></td> | ||
| <td>Export project as distributable zip</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev preview <format></code></td> | ||
| <td>Build and open document</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev watch [format]</code></td> | ||
| <td>Auto-rebuild on file changes</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev lint</code></td> | ||
| <td>Check for broken refs, missing citations</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev clean</code></td> | ||
| <td>Remove generated files</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev clean --all</code></td> | ||
| <td>Also remove backups and exports</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev check</code></td> | ||
| <td>Pre-submission check (lint + grammar + citations)</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev open</code></td> | ||
| <td>Open project folder</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev open paper.pdf</code></td> | ||
| <td>Open specific file</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="grammar-spelling">Grammar & Spelling</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev grammar</code></td> | ||
| <td>Check grammar/style issues</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev grammar --rules</code></td> | ||
| <td>List available grammar rules</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev grammar --learn <word></code></td> | ||
| <td>Add word to custom dictionary</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev grammar --list</code></td> | ||
| <td>Show custom dictionary</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev spelling</code></td> | ||
| <td>Check spelling in all sections</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev spelling --british</code></td> | ||
| <td>Use British English dictionary</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev spelling --learn <word></code></td> | ||
| <td>Add word to global dictionary</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev spelling --learn-project <word></code></td> | ||
| <td>Add word to project dictionary</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="direct-docx-editing">Direct DOCX Editing</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 59%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev annotate <docx> -m "Comment" -s "text"</code></td> | ||
| <td>Add comment to Word doc</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev apply <md> <docx></code></td> | ||
| <td>Apply annotations as track changes</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev comment <docx></code></td> | ||
| <td>Interactive comment mode</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="shell-completions">Shell Completions</h2> | ||
| <div class="sourceCode" id="cb2"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Bash - add to ~/.bashrc</span></span> | ||
| <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="bu">eval</span> <span class="st">"</span><span class="va">$(</span><span class="fu">rev</span> completions bash<span class="va">)</span><span class="st">"</span></span> | ||
| <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a><span class="co"># Zsh - add to ~/.zshrc</span></span> | ||
| <span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a><span class="bu">eval</span> <span class="st">"</span><span class="va">$(</span><span class="fu">rev</span> completions zsh<span class="va">)</span><span class="st">"</span></span> | ||
| <span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="co"># PowerShell - add to $PROFILE</span></span> | ||
| <span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a><span class="ex">Invoke-Expression</span> <span class="er">(</span><span class="fu">rev</span> completions powershell <span class="kw">|</span> <span class="ex">Out-String</span><span class="kw">)</span></span></code></pre></div> | ||
| <h2 id="collaboration-git">Collaboration & Git</h2> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev contributors</code></td> | ||
| <td>Show author contributions across all sections</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev contributors <file></code></td> | ||
| <td>Show who wrote what in a specific file</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev contributors <file> --blame</code></td> | ||
| <td>Line-by-line blame output</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev history</code></td> | ||
| <td>Show revision history</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev diff</code></td> | ||
| <td>Compare sections against git history</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="orcid-integration">ORCID Integration</h2> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev orcid <id></code></td> | ||
| <td>Fetch author info from ORCID</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev orcid <id> --yaml</code></td> | ||
| <td>Output as YAML for rev.yaml authors</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev orcid <id> --badge</code></td> | ||
| <td>Generate markdown badge</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <h2 id="self-update">Self-Update</h2> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev upgrade</code></td> | ||
| <td>Update docrev to latest version</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev upgrade --check</code></td> | ||
| <td>Check for updates without installing</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| </main> | ||
| <aside class="col-md-3 d-none d-md-block"> | ||
| <nav id="toc" data-toggle="toc" aria-label="On this page"> | ||
| <h2 class="h6">On this page</h2> | ||
| <div class="toc"><ul> | ||
| <li><a href="#command-reference" id="toc-command-reference">Command | ||
| Reference</a> | ||
| <ul> | ||
| <li><a href="#build-create" id="toc-build-create">Build & | ||
| Create</a></li> | ||
| <li><a href="#import-export" id="toc-import-export">Import & | ||
| Export</a></li> | ||
| <li><a href="#pdf-comments" id="toc-pdf-comments">PDF Comments</a></li> | ||
| <li><a href="#review-edit" id="toc-review-edit">Review & | ||
| Edit</a></li> | ||
| <li><a href="#comment-navigation" id="toc-comment-navigation">Comment | ||
| Navigation</a></li> | ||
| <li><a href="#track-changes" id="toc-track-changes">Track | ||
| Changes</a></li> | ||
| <li><a href="#cross-references" | ||
| id="toc-cross-references">Cross-References</a></li> | ||
| <li><a href="#comments-replies" id="toc-comments-replies">Comments & | ||
| Replies</a></li> | ||
| <li><a href="#bibliography-dois" id="toc-bibliography-dois">Bibliography | ||
| & DOIs</a></li> | ||
| <li><a href="#validation-analysis" | ||
| id="toc-validation-analysis">Validation & Analysis</a></li> | ||
| <li><a href="#multi-reviewer-git" | ||
| id="toc-multi-reviewer-git">Multi-Reviewer & Git</a></li> | ||
| <li><a href="#convenience-commands" | ||
| id="toc-convenience-commands">Convenience Commands</a></li> | ||
| <li><a href="#grammar-spelling" id="toc-grammar-spelling">Grammar & | ||
| Spelling</a></li> | ||
| <li><a href="#direct-docx-editing" id="toc-direct-docx-editing">Direct | ||
| DOCX Editing</a></li> | ||
| <li><a href="#shell-completions" id="toc-shell-completions">Shell | ||
| Completions</a></li> | ||
| <li><a href="#collaboration-git" | ||
| id="toc-collaboration-git">Collaboration & Git</a></li> | ||
| <li><a href="#orcid-integration" id="toc-orcid-integration">ORCID | ||
| Integration</a></li> | ||
| <li><a href="#self-update" id="toc-self-update">Self-Update</a></li> | ||
| </ul></li> | ||
| </ul></div> | ||
| </nav> | ||
| </aside> | ||
| </div> | ||
| </div> | ||
| <footer class="border-top py-3 mt-auto"> | ||
| <div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem"> | ||
| <span>docrev 0.9.15</span> | ||
| <span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span> | ||
| </div> | ||
| </footer> | ||
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> | ||
| <script> | ||
| (function () { | ||
| var html = document.documentElement; | ||
| var sun = document.getElementById('icon-sun'); | ||
| var moon = document.getElementById('icon-moon'); | ||
| function apply(t) { | ||
| html.setAttribute('data-bs-theme', t); | ||
| sun.style.display = t === 'dark' ? 'none' : ''; | ||
| moon.style.display = t === 'dark' ? '' : 'none'; | ||
| } | ||
| apply(localStorage.getItem('docrev-theme') || 'light'); | ||
| document.getElementById('theme-toggle').addEventListener('click', function () { | ||
| var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'; | ||
| localStorage.setItem('docrev-theme', next); | ||
| apply(next); | ||
| }); | ||
| })(); | ||
| </script> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-bs-theme="light"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
| <title>Configuration — docrev</title> | ||
| <meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users."> | ||
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css"> | ||
| <style> | ||
| html { -webkit-text-size-adjust: 100%; } | ||
| pre > code.sourceCode { white-space: pre; position: relative; } | ||
| pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } | ||
| pre > code.sourceCode > span:empty { height: 1.2em; } | ||
| .sourceCode { overflow: visible; } | ||
| code.sourceCode > span { color: inherit; text-decoration: inherit; } | ||
| div.sourceCode { margin: 1em 0; } | ||
| pre.sourceCode { margin: 0; } | ||
| @media screen { | ||
| div.sourceCode { overflow: auto; } | ||
| } | ||
| @media print { | ||
| pre > code.sourceCode { white-space: pre-wrap; } | ||
| pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } | ||
| } | ||
| pre.numberSource code | ||
| { counter-reset: source-line 0; } | ||
| pre.numberSource code > span | ||
| { position: relative; left: -4em; counter-increment: source-line; } | ||
| pre.numberSource code > span > a:first-child::before | ||
| { content: counter(source-line); | ||
| position: relative; left: -1em; text-align: right; vertical-align: baseline; | ||
| border: none; display: inline-block; | ||
| -webkit-touch-callout: none; -webkit-user-select: none; | ||
| -khtml-user-select: none; -moz-user-select: none; | ||
| -ms-user-select: none; user-select: none; | ||
| padding: 0 4px; width: 4em; | ||
| color: #aaaaaa; | ||
| } | ||
| pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } | ||
| div.sourceCode | ||
| { } | ||
| @media screen { | ||
| pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } | ||
| } | ||
| code span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
| code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
| code span.at { color: #7d9029; } /* Attribute */ | ||
| code span.bn { color: #40a070; } /* BaseN */ | ||
| code span.bu { color: #008000; } /* BuiltIn */ | ||
| code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
| code span.ch { color: #4070a0; } /* Char */ | ||
| code span.cn { color: #880000; } /* Constant */ | ||
| code span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
| code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
| code span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
| code span.dt { color: #902000; } /* DataType */ | ||
| code span.dv { color: #40a070; } /* DecVal */ | ||
| code span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
| code span.ex { } /* Extension */ | ||
| code span.fl { color: #40a070; } /* Float */ | ||
| code span.fu { color: #06287e; } /* Function */ | ||
| code span.im { color: #008000; font-weight: bold; } /* Import */ | ||
| code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
| code span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
| code span.op { color: #666666; } /* Operator */ | ||
| code span.ot { color: #007020; } /* Other */ | ||
| code span.pp { color: #bc7a00; } /* Preprocessor */ | ||
| code span.sc { color: #4070a0; } /* SpecialChar */ | ||
| code span.ss { color: #bb6688; } /* SpecialString */ | ||
| code span.st { color: #4070a0; } /* String */ | ||
| code span.va { color: #19177c; } /* Variable */ | ||
| code span.vs { color: #4070a0; } /* VerbatimString */ | ||
| code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
| </style> | ||
| <link rel="stylesheet" href="assets/extra.css"> | ||
| </head> | ||
| <body> | ||
| <nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation"> | ||
| <div class="container"> | ||
| <a class="navbar-brand me-2" href="index.html">docrev</a> | ||
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation"> | ||
| <span class="navbar-toggler-icon"></span> | ||
| </button> | ||
| <div class="collapse navbar-collapse" id="navbar-main"> | ||
| <ul class="navbar-nav me-auto"> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="index.html">Home</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="workflow.html">Get Started</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="commands.html">Commands</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link active" aria-current="page" href="configuration.html">Configuration</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="troubleshooting.html">Troubleshooting</a> | ||
| </li> | ||
| </ul> | ||
| <ul class="navbar-nav"> | ||
| <li class="nav-item"> | ||
| <button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode"> | ||
| <svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/> | ||
| </svg> | ||
| <svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none"> | ||
| <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/> | ||
| </svg> | ||
| </button> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </nav> | ||
| <div class="container template-article"> | ||
| <div class="row"> | ||
| <main id="main" class="col-md-9"> | ||
| <h1 id="configuration">Configuration</h1> | ||
| <h2 id="rev.yaml">rev.yaml</h2> | ||
| <p>The project configuration file.</p> | ||
| <div class="sourceCode" id="cb1"><pre | ||
| class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">"Your Paper Title"</span></span> | ||
| <span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="fu">version</span><span class="kw">:</span><span class="at"> </span><span class="st">"1.0"</span></span> | ||
| <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="fu">authors</span><span class="kw">:</span></span> | ||
| <span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> First Author</span></span> | ||
| <span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">affiliation</span><span class="kw">:</span><span class="at"> Institution</span></span> | ||
| <span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">email</span><span class="kw">:</span><span class="at"> author@example.com</span></span> | ||
| <span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> Second Author</span></span> | ||
| <span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">affiliation</span><span class="kw">:</span><span class="at"> Another Institution</span></span> | ||
| <span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="fu">sections</span><span class="kw">:</span></span> | ||
| <span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> introduction.md</span></span> | ||
| <span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> methods.md</span></span> | ||
| <span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> results.md</span></span> | ||
| <span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> discussion.md</span></span> | ||
| <span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="fu">bibliography</span><span class="kw">:</span><span class="at"> references.bib</span></span> | ||
| <span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a><span class="fu">csl</span><span class="kw">:</span><span class="at"> nature.csl</span><span class="co"> # Citation style (optional)</span></span> | ||
| <span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="co"># Cross-reference settings (pandoc-crossref)</span></span> | ||
| <span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="fu">crossref</span><span class="kw">:</span></span> | ||
| <span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">figureTitle</span><span class="kw">:</span><span class="at"> Figure</span></span> | ||
| <span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">tableTitle</span><span class="kw">:</span><span class="at"> Table</span></span> | ||
| <span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">figPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Fig.</span><span class="kw">,</span><span class="at"> Figs.</span><span class="kw">]</span></span> | ||
| <span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">tblPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Table</span><span class="kw">,</span><span class="at"> Tables</span><span class="kw">]</span></span> | ||
| <span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">eqnPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Eq.</span><span class="kw">,</span><span class="at"> Eqs.</span><span class="kw">]</span></span> | ||
| <span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">secPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Section</span><span class="kw">,</span><span class="at"> Sections</span><span class="kw">]</span></span> | ||
| <span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a><span class="co"># PDF output settings</span></span> | ||
| <span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a><span class="fu">pdf</span><span class="kw">:</span></span> | ||
| <span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">documentclass</span><span class="kw">:</span><span class="at"> article</span></span> | ||
| <span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">fontsize</span><span class="kw">:</span><span class="at"> 12pt</span></span> | ||
| <span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">geometry</span><span class="kw">:</span><span class="at"> margin=1in</span></span> | ||
| <span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">linestretch</span><span class="kw">:</span><span class="at"> </span><span class="fl">1.5</span></span> | ||
| <span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">toc</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span> | ||
| <span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">numbersections</span><span class="kw">:</span><span class="at"> </span><span class="ch">true</span></span> | ||
| <span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a><span class="co"># Word output settings</span></span> | ||
| <span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a><span class="fu">docx</span><span class="kw">:</span></span> | ||
| <span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">reference</span><span class="kw">:</span><span class="at"> template.docx</span><span class="co"> # Optional reference doc for styling</span></span> | ||
| <span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">keepComments</span><span class="kw">:</span><span class="at"> </span><span class="ch">true</span><span class="co"> # Preserve CriticMarkup comments</span></span> | ||
| <span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">toc</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span></code></pre></div> | ||
| <h2 id="template-variables">Template Variables</h2> | ||
| <p>Use in section files (processed during build):</p> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Variable</th> | ||
| <th>Description</th> | ||
| <th>Example Output</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>{{date}}</code></td> | ||
| <td>Current date</td> | ||
| <td>2025-12-30</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{date:MMMM D, YYYY}}</code></td> | ||
| <td>Custom format</td> | ||
| <td>December 30, 2025</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{year}}</code></td> | ||
| <td>Current year</td> | ||
| <td>2025</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{version}}</code></td> | ||
| <td>From rev.yaml</td> | ||
| <td>1.0</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{title}}</code></td> | ||
| <td>Document title</td> | ||
| <td>Your Paper Title</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{author}}</code></td> | ||
| <td>First author</td> | ||
| <td>First Author</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{authors}}</code></td> | ||
| <td>All authors</td> | ||
| <td>First Author, Second Author</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>{{word_count}}</code></td> | ||
| <td>Total words</td> | ||
| <td>5,432</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| <p><strong>Example usage:</strong></p> | ||
| <div class="sourceCode" id="cb2"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># Methods</span></span> | ||
| <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>Last updated: {{date:MMMM D, YYYY}}</span> | ||
| <span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>Word count: {{word_count}}</span></code></pre></div> | ||
| <h2 id="user-configuration">User Configuration</h2> | ||
| <p>Set your name for comment replies:</p> | ||
| <div class="sourceCode" id="cb3"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config user <span class="st">"Your Name"</span></span></code></pre></div> | ||
| <p>Set default sections for new projects:</p> | ||
| <div class="sourceCode" id="cb4"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config sections <span class="st">"intro,methods,results,discussion"</span></span></code></pre></div> | ||
| <p>This creates <code>~/.revrc</code>:</p> | ||
| <div class="sourceCode" id="cb5"><pre | ||
| class="sourceCode json"><code class="sourceCode json"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span> | ||
| <span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">"userName"</span><span class="fu">:</span> <span class="st">"Your Name"</span><span class="fu">,</span></span> | ||
| <span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">"defaultSections"</span><span class="fu">:</span> <span class="ot">[</span><span class="st">"intro"</span><span class="ot">,</span> <span class="st">"methods"</span><span class="ot">,</span> <span class="st">"results"</span><span class="ot">,</span> <span class="st">"discussion"</span><span class="ot">]</span></span> | ||
| <span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">}</span></span></code></pre></div> | ||
| <p>When <code>defaultSections</code> is set, <code>rev new</code> | ||
| uses these sections automatically. When not set, | ||
| <code>rev new</code> prompts for sections interactively.</p> | ||
| <h2 id="dictionaries">Dictionaries</h2> | ||
| <p><strong>Global dictionary</strong> | ||
| (<code>~/.rev-dictionary</code>):</p> | ||
| <div class="sourceCode" id="cb6"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--learn</span> myword <span class="co"># Add word</span></span> | ||
| <span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--forget</span> myword <span class="co"># Remove word</span></span> | ||
| <span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--list</span> <span class="co"># Show dictionary</span></span></code></pre></div> | ||
| <p><strong>Project dictionary</strong> | ||
| (<code>.rev-dictionary</code> in project root):</p> | ||
| <div class="sourceCode" id="cb7"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--learn-project</span> myterm</span></code></pre></div> | ||
| <p><strong>Grammar dictionary</strong> (same locations):</p> | ||
| <div class="sourceCode" id="cb8"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> grammar <span class="at">--learn</span> acronym</span> | ||
| <span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> grammar <span class="at">--forget</span> acronym</span></code></pre></div> | ||
| <h2 id="journal-profiles">Journal Profiles</h2> | ||
| <p>21 built-in journal profiles for validation. Six also provide | ||
| <strong>build formatting defaults</strong> (CSL citation style, | ||
| PDF settings):</p> | ||
| <div class="sourceCode" id="cb9"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">--list</span> <span class="co"># List all profiles ([formatting] = build support)</span></span> | ||
| <span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">-j</span> nature <span class="co"># Check against Nature requirements</span></span> | ||
| <span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> word-count <span class="at">-j</span> ecology-letters <span class="co"># Use journal word limit</span></span></code></pre></div> | ||
| <p>Profiles include: nature, science, pnas, elife, cell, plos-one, | ||
| ecology-letters, global-change-biology, etc.</p> | ||
| <h3 id="setting-a-journal">Setting a Journal</h3> | ||
| <p>In <code>rev.yaml</code>:</p> | ||
| <div class="sourceCode" id="cb10"><pre | ||
| class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">journal</span><span class="kw">:</span><span class="at"> nature</span></span></code></pre></div> | ||
| <p>Or via CLI flag (overrides rev.yaml):</p> | ||
| <div class="sourceCode" id="cb11"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf docx <span class="at">-j</span> nature</span></code></pre></div> | ||
| <h3 id="config-cascade">Config Cascade</h3> | ||
| <p>When a journal with formatting is set, settings are applied in | ||
| three layers:</p> | ||
| <ol type="1"> | ||
| <li><strong>Defaults</strong> — docrev built-in defaults (12pt, | ||
| margin=1in, linestretch=1.5, etc.)</li> | ||
| <li><strong>Journal formatting</strong> — from the journal profile | ||
| (e.g., Nature uses 11pt, 2.5cm margins, double spacing)</li> | ||
| <li><strong>Your rev.yaml</strong> — explicit settings always | ||
| win</li> | ||
| </ol> | ||
| <p>This means you can set <code>journal: nature</code> and still | ||
| override individual settings:</p> | ||
| <div class="sourceCode" id="cb12"><pre | ||
| class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">journal</span><span class="kw">:</span><span class="at"> nature</span></span> | ||
| <span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">pdf</span><span class="kw">:</span></span> | ||
| <span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">linestretch</span><span class="kw">:</span><span class="at"> </span><span class="fl">1.5</span><span class="co"> # override Nature's double spacing</span></span></code></pre></div> | ||
| <h3 id="csl-citation-styles">CSL Citation Styles</h3> | ||
| <p>Journal profiles specify a CSL style name. docrev resolves CSL | ||
| files in this order:</p> | ||
| <ol type="1"> | ||
| <li>File path in project directory (e.g., | ||
| <code>nature.csl</code>)</li> | ||
| <li>Cached file in <code>~/.rev/csl/</code></li> | ||
| <li>Bare name passed to pandoc –citeproc (works for some built-in | ||
| styles)</li> | ||
| </ol> | ||
| <p>Download and cache a style:</p> | ||
| <div class="sourceCode" id="cb13"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--fetch-csl</span> nature <span class="co"># downloads to ~/.rev/csl/nature.csl</span></span> | ||
| <span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--fetch-csl</span> apa <span class="co"># works with short names</span></span> | ||
| <span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--list-csl</span> <span class="co"># list cached files</span></span></code></pre></div> | ||
| <p>Known short names: apa, chicago, vancouver, ieee, nature, | ||
| science, cell, pnas, plos, elife, ecology-letters, ama, acs, | ||
| harvard, mla, elsevier, springer, biomed-central.</p> | ||
| <h3 id="custom-profiles-with-formatting">Custom Profiles with | ||
| Formatting</h3> | ||
| <p>Custom profiles (YAML files in <code>~/.rev/profiles/</code> or | ||
| <code>.rev/profiles/</code>) can include a <code>formatting</code> | ||
| section:</p> | ||
| <div class="sourceCode" id="cb14"><pre | ||
| class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">id</span><span class="kw">:</span><span class="at"> my-journal</span></span> | ||
| <span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="fu">name</span><span class="kw">:</span><span class="at"> </span><span class="st">"My Journal"</span></span> | ||
| <span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="fu">url</span><span class="kw">:</span><span class="at"> </span><span class="st">"https://journal.example.com/guidelines"</span></span> | ||
| <span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a><span class="co"># Validation requirements</span></span> | ||
| <span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a><span class="fu">wordLimit</span><span class="kw">:</span></span> | ||
| <span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">main</span><span class="kw">:</span><span class="at"> </span><span class="dv">6000</span></span> | ||
| <span id="cb14-8"><a href="#cb14-8" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">abstract</span><span class="kw">:</span><span class="at"> </span><span class="dv">250</span></span> | ||
| <span id="cb14-9"><a href="#cb14-9" aria-hidden="true" tabindex="-1"></a><span class="fu">references</span><span class="kw">:</span></span> | ||
| <span id="cb14-10"><a href="#cb14-10" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">max</span><span class="kw">:</span><span class="at"> </span><span class="dv">50</span></span> | ||
| <span id="cb14-11"><a href="#cb14-11" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">doiRequired</span><span class="kw">:</span><span class="at"> </span><span class="ch">true</span></span> | ||
| <span id="cb14-12"><a href="#cb14-12" aria-hidden="true" tabindex="-1"></a><span class="fu">sections</span><span class="kw">:</span></span> | ||
| <span id="cb14-13"><a href="#cb14-13" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">required</span><span class="kw">:</span></span> | ||
| <span id="cb14-14"><a href="#cb14-14" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Abstract</span></span> | ||
| <span id="cb14-15"><a href="#cb14-15" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Introduction</span></span> | ||
| <span id="cb14-16"><a href="#cb14-16" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Methods</span></span> | ||
| <span id="cb14-17"><a href="#cb14-17" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Results</span></span> | ||
| <span id="cb14-18"><a href="#cb14-18" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Discussion</span></span> | ||
| <span id="cb14-19"><a href="#cb14-19" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb14-20"><a href="#cb14-20" aria-hidden="true" tabindex="-1"></a><span class="co"># Build formatting defaults</span></span> | ||
| <span id="cb14-21"><a href="#cb14-21" aria-hidden="true" tabindex="-1"></a><span class="fu">formatting</span><span class="kw">:</span></span> | ||
| <span id="cb14-22"><a href="#cb14-22" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">csl</span><span class="kw">:</span><span class="at"> </span><span class="st">"vancouver"</span></span> | ||
| <span id="cb14-23"><a href="#cb14-23" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">pdf</span><span class="kw">:</span></span> | ||
| <span id="cb14-24"><a href="#cb14-24" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">fontsize</span><span class="kw">:</span><span class="at"> 11pt</span></span> | ||
| <span id="cb14-25"><a href="#cb14-25" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">geometry</span><span class="kw">:</span><span class="at"> margin=2cm</span></span> | ||
| <span id="cb14-26"><a href="#cb14-26" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">linestretch</span><span class="kw">:</span><span class="at"> </span><span class="dv">2</span></span> | ||
| <span id="cb14-27"><a href="#cb14-27" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">numbersections</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span> | ||
| <span id="cb14-28"><a href="#cb14-28" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">docx</span><span class="kw">:</span></span> | ||
| <span id="cb14-29"><a href="#cb14-29" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">reference</span><span class="kw">:</span><span class="at"> </span><span class="ch">null</span></span> | ||
| <span id="cb14-30"><a href="#cb14-30" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">crossref</span><span class="kw">:</span></span> | ||
| <span id="cb14-31"><a href="#cb14-31" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">figPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Fig.</span><span class="kw">,</span><span class="at"> Figs.</span><span class="kw">]</span></span> | ||
| <span id="cb14-32"><a href="#cb14-32" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">tblPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Table</span><span class="kw">,</span><span class="at"> Tables</span><span class="kw">]</span></span></code></pre></div> | ||
| <p>Create a new profile template (includes formatting | ||
| section):</p> | ||
| <div class="sourceCode" id="cb15"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--new</span> <span class="st">"My Journal"</span></span></code></pre></div> | ||
| <h3 id="cli-reference">CLI Reference</h3> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Command</th> | ||
| <th>Description</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td><code>rev validate --list</code></td> | ||
| <td>List all profiles with formatting tags</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev validate -j nature</code></td> | ||
| <td>Validate against journal requirements</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev build -j nature</code></td> | ||
| <td>Build with journal formatting defaults</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev profiles --new "Name"</code></td> | ||
| <td>Create custom profile template</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev profiles --fetch-csl name</code></td> | ||
| <td>Download CSL style to cache</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev profiles --list-csl</code></td> | ||
| <td>List cached CSL styles</td> | ||
| </tr> | ||
| <tr> | ||
| <td><code>rev profiles --dirs</code></td> | ||
| <td>Show profile directory locations</td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| </main> | ||
| <aside class="col-md-3 d-none d-md-block"> | ||
| <nav id="toc" data-toggle="toc" aria-label="On this page"> | ||
| <h2 class="h6">On this page</h2> | ||
| <div class="toc"><ul> | ||
| <li><a href="#configuration" id="toc-configuration">Configuration</a> | ||
| <ul> | ||
| <li><a href="#rev.yaml" id="toc-rev.yaml">rev.yaml</a></li> | ||
| <li><a href="#template-variables" id="toc-template-variables">Template | ||
| Variables</a></li> | ||
| <li><a href="#user-configuration" id="toc-user-configuration">User | ||
| Configuration</a></li> | ||
| <li><a href="#dictionaries" id="toc-dictionaries">Dictionaries</a></li> | ||
| <li><a href="#journal-profiles" id="toc-journal-profiles">Journal | ||
| Profiles</a> | ||
| <ul> | ||
| <li><a href="#setting-a-journal" id="toc-setting-a-journal">Setting a | ||
| Journal</a></li> | ||
| <li><a href="#config-cascade" id="toc-config-cascade">Config | ||
| Cascade</a></li> | ||
| <li><a href="#csl-citation-styles" id="toc-csl-citation-styles">CSL | ||
| Citation Styles</a></li> | ||
| <li><a href="#custom-profiles-with-formatting" | ||
| id="toc-custom-profiles-with-formatting">Custom Profiles with | ||
| Formatting</a></li> | ||
| <li><a href="#cli-reference" id="toc-cli-reference">CLI | ||
| Reference</a></li> | ||
| </ul></li> | ||
| </ul></li> | ||
| </ul></div> | ||
| </nav> | ||
| </aside> | ||
| </div> | ||
| </div> | ||
| <footer class="border-top py-3 mt-auto"> | ||
| <div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem"> | ||
| <span>docrev 0.9.15</span> | ||
| <span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span> | ||
| </div> | ||
| </footer> | ||
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> | ||
| <script> | ||
| (function () { | ||
| var html = document.documentElement; | ||
| var sun = document.getElementById('icon-sun'); | ||
| var moon = document.getElementById('icon-moon'); | ||
| function apply(t) { | ||
| html.setAttribute('data-bs-theme', t); | ||
| sun.style.display = t === 'dark' ? 'none' : ''; | ||
| moon.style.display = t === 'dark' ? '' : 'none'; | ||
| } | ||
| apply(localStorage.getItem('docrev-theme') || 'light'); | ||
| document.getElementById('theme-toggle').addEventListener('click', function () { | ||
| var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'; | ||
| localStorage.setItem('docrev-theme', next); | ||
| apply(next); | ||
| }); | ||
| })(); | ||
| </script> | ||
| </body> | ||
| </html> |
-288
| <!DOCTYPE html> | ||
| <html lang="en" data-bs-theme="light"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
| <title>Home — docrev</title> | ||
| <meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users."> | ||
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css"> | ||
| <style> | ||
| html { -webkit-text-size-adjust: 100%; } | ||
| pre > code.sourceCode { white-space: pre; position: relative; } | ||
| pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } | ||
| pre > code.sourceCode > span:empty { height: 1.2em; } | ||
| .sourceCode { overflow: visible; } | ||
| code.sourceCode > span { color: inherit; text-decoration: inherit; } | ||
| div.sourceCode { margin: 1em 0; } | ||
| pre.sourceCode { margin: 0; } | ||
| @media screen { | ||
| div.sourceCode { overflow: auto; } | ||
| } | ||
| @media print { | ||
| pre > code.sourceCode { white-space: pre-wrap; } | ||
| pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } | ||
| } | ||
| pre.numberSource code | ||
| { counter-reset: source-line 0; } | ||
| pre.numberSource code > span | ||
| { position: relative; left: -4em; counter-increment: source-line; } | ||
| pre.numberSource code > span > a:first-child::before | ||
| { content: counter(source-line); | ||
| position: relative; left: -1em; text-align: right; vertical-align: baseline; | ||
| border: none; display: inline-block; | ||
| -webkit-touch-callout: none; -webkit-user-select: none; | ||
| -khtml-user-select: none; -moz-user-select: none; | ||
| -ms-user-select: none; user-select: none; | ||
| padding: 0 4px; width: 4em; | ||
| color: #aaaaaa; | ||
| } | ||
| pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } | ||
| div.sourceCode | ||
| { } | ||
| @media screen { | ||
| pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } | ||
| } | ||
| code span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
| code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
| code span.at { color: #7d9029; } /* Attribute */ | ||
| code span.bn { color: #40a070; } /* BaseN */ | ||
| code span.bu { color: #008000; } /* BuiltIn */ | ||
| code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
| code span.ch { color: #4070a0; } /* Char */ | ||
| code span.cn { color: #880000; } /* Constant */ | ||
| code span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
| code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
| code span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
| code span.dt { color: #902000; } /* DataType */ | ||
| code span.dv { color: #40a070; } /* DecVal */ | ||
| code span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
| code span.ex { } /* Extension */ | ||
| code span.fl { color: #40a070; } /* Float */ | ||
| code span.fu { color: #06287e; } /* Function */ | ||
| code span.im { color: #008000; font-weight: bold; } /* Import */ | ||
| code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
| code span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
| code span.op { color: #666666; } /* Operator */ | ||
| code span.ot { color: #007020; } /* Other */ | ||
| code span.pp { color: #bc7a00; } /* Preprocessor */ | ||
| code span.sc { color: #4070a0; } /* SpecialChar */ | ||
| code span.ss { color: #bb6688; } /* SpecialString */ | ||
| code span.st { color: #4070a0; } /* String */ | ||
| code span.va { color: #19177c; } /* Variable */ | ||
| code span.vs { color: #4070a0; } /* VerbatimString */ | ||
| code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
| </style> | ||
| <link rel="stylesheet" href="assets/extra.css"> | ||
| </head> | ||
| <body> | ||
| <nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation"> | ||
| <div class="container"> | ||
| <a class="navbar-brand me-2" href="index.html">docrev</a> | ||
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation"> | ||
| <span class="navbar-toggler-icon"></span> | ||
| </button> | ||
| <div class="collapse navbar-collapse" id="navbar-main"> | ||
| <ul class="navbar-nav me-auto"> | ||
| <li class="nav-item"> | ||
| <a class="nav-link active" aria-current="page" href="index.html">Home</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="workflow.html">Get Started</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="commands.html">Commands</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="configuration.html">Configuration</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="troubleshooting.html">Troubleshooting</a> | ||
| </li> | ||
| </ul> | ||
| <ul class="navbar-nav"> | ||
| <li class="nav-item"> | ||
| <button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode"> | ||
| <svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/> | ||
| </svg> | ||
| <svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none"> | ||
| <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/> | ||
| </svg> | ||
| </button> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </nav> | ||
| <div class="container template-home"> | ||
| <div class="row"> | ||
| <main id="main" class="col-12"> | ||
| <h1 id="docrev">docrev</h1> | ||
| <div class="badge-row"> | ||
| <p><a href="https://www.npmjs.com/package/docrev"><img | ||
| src="https://img.shields.io/npm/v/docrev" alt="npm" /></a> <a | ||
| href="https://www.npmjs.com/package/docrev"><img | ||
| src="https://img.shields.io/npm/dm/docrev" | ||
| alt="npm downloads" /></a> <a href="https://nodejs.org"><img | ||
| src="https://img.shields.io/node/v/docrev" alt="node" /></a> <a | ||
| href="https://opensource.org/licenses/MIT"><img | ||
| src="https://img.shields.io/badge/License-MIT-blue.svg" | ||
| alt="License: MIT" /></a> <a | ||
| href="https://github.com/gcol33/docrev/actions/workflows/ci.yml"><img | ||
| src="https://github.com/gcol33/docrev/actions/workflows/ci.yml/badge.svg" | ||
| alt="CI" /></a></p> | ||
| </div> | ||
| <p>A CLI for writing documents in Markdown while collaborating | ||
| with Word users.</p> | ||
| <p>Write in <code>.md</code> files under version control; build | ||
| Word or PDF when you need to share. When reviewers return their | ||
| annotated copy, <code>rev sync</code> pulls the feedback into your | ||
| markdown sections, where you reply to comments, accept or reject | ||
| changes, and rebuild. Equations, figures, citations, and | ||
| cross-references survive both directions.</p> | ||
| <h2 id="the-problem">The Problem</h2> | ||
| <p>After a few rounds of feedback, the project directory looks | ||
| like this:</p> | ||
| <pre><code>manuscript_v1.docx | ||
| manuscript_v2_john_comments.docx | ||
| manuscript_v2_jane_comments.docx | ||
| manuscript_v3_merged_final.docx | ||
| manuscript_v3_merged_final_REAL.docx | ||
| manuscript_v3_merged_final_REAL_submitted.docx</code></pre> | ||
| <p>By the third filename, there’s no canonical version. Jane’s | ||
| comments are in one file, John’s track changes in another, your | ||
| reconciliation attempt in a third; whether you merged the right | ||
| sources depends on what you remember from last Tuesday.</p> | ||
| <p>docrev keeps the markdown as the canonical version, under git. | ||
| The DOCX is rebuilt each time you share; reviewer comments and | ||
| track changes come back into your section files when you sync, | ||
| where you reply to or accept them in the terminal.</p> | ||
| <h2 id="install">Install</h2> | ||
| <div class="sourceCode" id="cb2"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">npm</span> install <span class="at">-g</span> docrev</span></code></pre></div> | ||
| <p>Requires <a href="https://nodejs.org">Node.js</a> 18+. Building | ||
| DOCX or PDF needs <a href="https://pandoc.org">Pandoc</a>. For | ||
| complex PDFs (math, cross-references, journal styles), LaTeX is | ||
| also needed — see the <a | ||
| href="troubleshooting.html">Troubleshooting</a> page.</p> | ||
| <h2 id="quick-start">Quick Start</h2> | ||
| <p>Write in Markdown with citations and cross-references:</p> | ||
| <div class="sourceCode" id="cb3"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>Climate change poses significant challenges <span class="co">[</span><span class="ot">@IPCC2021</span><span class="co">]</span>. As shown in</span> | ||
| <span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>@fig:temperature, global temperatures have risen steadily.</span> | ||
| <span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a><span class="al"></span>{#fig:temperature}</span></code></pre></div> | ||
| <p>Build and share:</p> | ||
| <div class="sourceCode" id="cb4"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="co"># → output/paper.docx</span></span> | ||
| <span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="co"># → output/paper.pdf</span></span></code></pre></div> | ||
| <p>When collaborators return the Word doc with track changes:</p> | ||
| <div class="sourceCode" id="cb5"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync reviewed.docx <span class="co"># their comments → your markdown</span></span> | ||
| <span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> todo <span class="co"># list all pending comments</span></span> | ||
| <span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reply methods.md <span class="at">-n</span> 1 <span class="at">-m</span> <span class="st">"Clarified in revised text."</span></span> | ||
| <span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="at">--dual</span> <span class="co"># clean + annotated versions</span></span></code></pre></div> | ||
| <h2 id="documentation">Documentation</h2> | ||
| <div class="row g-3 mt-1"> | ||
| <div class="col-sm-6"> | ||
| <div class="doc-card position-relative"> | ||
| <h5> | ||
| Get Started | ||
| </h5> | ||
| <p> | ||
| The full revision cycle: import, build, sync, reply, resolve, | ||
| rebuild, archive. | ||
| </p> | ||
| <p><a href="workflow.html" class="stretched-link text-decoration-none">Revision | ||
| Workflow →</a></p> | ||
| </div> | ||
| </div> | ||
| <div class="col-sm-6"> | ||
| <div class="doc-card position-relative"> | ||
| <h5> | ||
| Commands | ||
| </h5> | ||
| <p> | ||
| Complete reference for all <code>rev</code> commands, grouped by | ||
| task. | ||
| </p> | ||
| <p><a href="commands.html" class="stretched-link text-decoration-none">Command | ||
| Reference →</a></p> | ||
| </div> | ||
| </div> | ||
| <div class="col-sm-6"> | ||
| <div class="doc-card position-relative"> | ||
| <h5> | ||
| Configuration | ||
| </h5> | ||
| <p> | ||
| <code>rev.yaml</code> options, journal profiles, custom templates, | ||
| CSL styles. | ||
| </p> | ||
| <p><a href="configuration.html" class="stretched-link text-decoration-none">Configuration | ||
| →</a></p> | ||
| </div> | ||
| </div> | ||
| <div class="col-sm-6"> | ||
| <div class="doc-card position-relative"> | ||
| <h5> | ||
| Troubleshooting | ||
| </h5> | ||
| <p> | ||
| Common issues with installation, builds, imports, and | ||
| cross-references. | ||
| </p> | ||
| <p><a href="troubleshooting.html" class="stretched-link text-decoration-none">Troubleshooting | ||
| →</a></p> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </main> | ||
| </div> | ||
| </div> | ||
| <footer class="border-top py-3 mt-auto"> | ||
| <div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem"> | ||
| <span>docrev 0.9.15</span> | ||
| <span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span> | ||
| </div> | ||
| </footer> | ||
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> | ||
| <script> | ||
| (function () { | ||
| var html = document.documentElement; | ||
| var sun = document.getElementById('icon-sun'); | ||
| var moon = document.getElementById('icon-moon'); | ||
| function apply(t) { | ||
| html.setAttribute('data-bs-theme', t); | ||
| sun.style.display = t === 'dark' ? 'none' : ''; | ||
| moon.style.display = t === 'dark' ? '' : 'none'; | ||
| } | ||
| apply(localStorage.getItem('docrev-theme') || 'light'); | ||
| document.getElementById('theme-toggle').addEventListener('click', function () { | ||
| var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'; | ||
| localStorage.setItem('docrev-theme', next); | ||
| apply(next); | ||
| }); | ||
| })(); | ||
| </script> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-bs-theme="light"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
| <title>Troubleshooting — docrev</title> | ||
| <meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users."> | ||
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css"> | ||
| <style> | ||
| html { -webkit-text-size-adjust: 100%; } | ||
| pre > code.sourceCode { white-space: pre; position: relative; } | ||
| pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } | ||
| pre > code.sourceCode > span:empty { height: 1.2em; } | ||
| .sourceCode { overflow: visible; } | ||
| code.sourceCode > span { color: inherit; text-decoration: inherit; } | ||
| div.sourceCode { margin: 1em 0; } | ||
| pre.sourceCode { margin: 0; } | ||
| @media screen { | ||
| div.sourceCode { overflow: auto; } | ||
| } | ||
| @media print { | ||
| pre > code.sourceCode { white-space: pre-wrap; } | ||
| pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } | ||
| } | ||
| pre.numberSource code | ||
| { counter-reset: source-line 0; } | ||
| pre.numberSource code > span | ||
| { position: relative; left: -4em; counter-increment: source-line; } | ||
| pre.numberSource code > span > a:first-child::before | ||
| { content: counter(source-line); | ||
| position: relative; left: -1em; text-align: right; vertical-align: baseline; | ||
| border: none; display: inline-block; | ||
| -webkit-touch-callout: none; -webkit-user-select: none; | ||
| -khtml-user-select: none; -moz-user-select: none; | ||
| -ms-user-select: none; user-select: none; | ||
| padding: 0 4px; width: 4em; | ||
| color: #aaaaaa; | ||
| } | ||
| pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } | ||
| div.sourceCode | ||
| { } | ||
| @media screen { | ||
| pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } | ||
| } | ||
| code span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
| code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
| code span.at { color: #7d9029; } /* Attribute */ | ||
| code span.bn { color: #40a070; } /* BaseN */ | ||
| code span.bu { color: #008000; } /* BuiltIn */ | ||
| code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
| code span.ch { color: #4070a0; } /* Char */ | ||
| code span.cn { color: #880000; } /* Constant */ | ||
| code span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
| code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
| code span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
| code span.dt { color: #902000; } /* DataType */ | ||
| code span.dv { color: #40a070; } /* DecVal */ | ||
| code span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
| code span.ex { } /* Extension */ | ||
| code span.fl { color: #40a070; } /* Float */ | ||
| code span.fu { color: #06287e; } /* Function */ | ||
| code span.im { color: #008000; font-weight: bold; } /* Import */ | ||
| code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
| code span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
| code span.op { color: #666666; } /* Operator */ | ||
| code span.ot { color: #007020; } /* Other */ | ||
| code span.pp { color: #bc7a00; } /* Preprocessor */ | ||
| code span.sc { color: #4070a0; } /* SpecialChar */ | ||
| code span.ss { color: #bb6688; } /* SpecialString */ | ||
| code span.st { color: #4070a0; } /* String */ | ||
| code span.va { color: #19177c; } /* Variable */ | ||
| code span.vs { color: #4070a0; } /* VerbatimString */ | ||
| code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
| </style> | ||
| <link rel="stylesheet" href="assets/extra.css"> | ||
| </head> | ||
| <body> | ||
| <nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation"> | ||
| <div class="container"> | ||
| <a class="navbar-brand me-2" href="index.html">docrev</a> | ||
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation"> | ||
| <span class="navbar-toggler-icon"></span> | ||
| </button> | ||
| <div class="collapse navbar-collapse" id="navbar-main"> | ||
| <ul class="navbar-nav me-auto"> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="index.html">Home</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="workflow.html">Get Started</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="commands.html">Commands</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="configuration.html">Configuration</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link active" aria-current="page" href="troubleshooting.html">Troubleshooting</a> | ||
| </li> | ||
| </ul> | ||
| <ul class="navbar-nav"> | ||
| <li class="nav-item"> | ||
| <button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode"> | ||
| <svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/> | ||
| </svg> | ||
| <svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none"> | ||
| <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/> | ||
| </svg> | ||
| </button> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </nav> | ||
| <div class="container template-article"> | ||
| <div class="row"> | ||
| <main id="main" class="col-md-9"> | ||
| <h1 id="troubleshooting">Troubleshooting</h1> | ||
| <p>Common issues and solutions for docrev.</p> | ||
| <h2 id="installation-issues">Installation Issues</h2> | ||
| <h3 id="pandoc-command-not-found">“pandoc: command not found”</h3> | ||
| <p>Pandoc is required for building documents.</p> | ||
| <p><strong>macOS:</strong></p> | ||
| <div class="sourceCode" id="cb1"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">brew</span> install pandoc</span></code></pre></div> | ||
| <p><strong>Windows:</strong></p> | ||
| <div class="sourceCode" id="cb2"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">winget</span> install JohnMacFarlane.Pandoc</span> | ||
| <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="co"># or download from https://pandoc.org/installing.html</span></span></code></pre></div> | ||
| <p><strong>Linux (Debian/Ubuntu):</strong></p> | ||
| <div class="sourceCode" id="cb3"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt install pandoc</span></code></pre></div> | ||
| <p>Verify installation:</p> | ||
| <div class="sourceCode" id="cb4"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pandoc</span> <span class="at">--version</span></span></code></pre></div> | ||
| <h3 id="pandoc-crossref-command-not-found">“pandoc-crossref: | ||
| command not found”</h3> | ||
| <p>pandoc-crossref is optional but required for figure/table | ||
| cross-references.</p> | ||
| <p><strong>macOS:</strong></p> | ||
| <div class="sourceCode" id="cb5"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">brew</span> install pandoc-crossref</span></code></pre></div> | ||
| <p><strong>Windows:</strong> Download from | ||
| https://github.com/lierdakil/pandoc-crossref/releases</p> | ||
| <p><strong>Linux:</strong></p> | ||
| <div class="sourceCode" id="cb6"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Check your package manager or download from GitHub releases</span></span></code></pre></div> | ||
| <h3 id="latex-not-found-pdf-generation-fails">LaTeX not found (PDF | ||
| generation fails)</h3> | ||
| <p>PDF output requires a LaTeX distribution.</p> | ||
| <p><strong>macOS:</strong></p> | ||
| <div class="sourceCode" id="cb7"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="ex">brew</span> install <span class="at">--cask</span> mactex-no-gui</span> | ||
| <span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="co"># or smaller: brew install --cask basictex</span></span></code></pre></div> | ||
| <p><strong>Windows:</strong> Install MiKTeX from | ||
| https://miktex.org/download</p> | ||
| <p><strong>Linux:</strong></p> | ||
| <div class="sourceCode" id="cb8"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt install texlive-latex-base texlive-fonts-recommended</span></code></pre></div> | ||
| <h2 id="build-errors">Build Errors</h2> | ||
| <h3 id="no-section-files-found">“No section files found”</h3> | ||
| <p><strong>Cause:</strong> No <code>.md</code> files in the | ||
| directory, or sections not specified in <code>rev.yaml</code>.</p> | ||
| <p><strong>Solutions:</strong> 1. Create section files: | ||
| <code>rev new</code> 2. Specify sections in <code>rev.yaml</code>: | ||
| <code>yaml sections: - introduction.md - methods.md</code> | ||
| 3. Check you’re in the correct directory</p> | ||
| <h3 id="failed-to-parse-rev.yaml">“Failed to parse rev.yaml”</h3> | ||
| <p><strong>Cause:</strong> Invalid YAML syntax.</p> | ||
| <p><strong>Common fixes:</strong> - Check indentation (use spaces, | ||
| not tabs) - Quote strings with special characters - Validate with: | ||
| <code>rev check</code></p> | ||
| <p><strong>Example of correct YAML:</strong></p> | ||
| <div class="sourceCode" id="cb9"><pre | ||
| class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">"My Paper: A Study"</span><span class="co"> # Quotes needed for colon</span></span> | ||
| <span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">authors</span><span class="kw">:</span></span> | ||
| <span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> John Doe</span><span class="co"> # 2-space indent</span></span> | ||
| <span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">affiliation</span><span class="kw">:</span><span class="at"> University</span></span></code></pre></div> | ||
| <h3 id="build-produces-empty-pdf">Build produces empty PDF</h3> | ||
| <p><strong>Causes:</strong> 1. Section files are empty 2. Pandoc | ||
| filter errors (check terminal output) 3. LaTeX errors</p> | ||
| <p><strong>Debug:</strong></p> | ||
| <div class="sourceCode" id="cb10"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build <span class="at">--verbose</span></span> | ||
| <span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build tex <span class="co"># Check the .tex file for errors</span></span></code></pre></div> | ||
| <h2 id="import-issues">Import Issues</h2> | ||
| <h3 id="comments-not-imported-from-word">Comments not imported | ||
| from Word</h3> | ||
| <p><strong>Causes:</strong> 1. Document uses older .doc format | ||
| (only .docx supported) 2. Comments are in review mode but not | ||
| finalized</p> | ||
| <p><strong>Solutions:</strong> 1. Save as .docx in Word 2. | ||
| Accept/reject track changes before importing if you want clean | ||
| text</p> | ||
| <h3 id="track-changes-garbled-or-missing">Track changes garbled or | ||
| missing</h3> | ||
| <p><strong>Cause:</strong> Complex nested changes or unsupported | ||
| Word features.</p> | ||
| <p><strong>Solution:</strong></p> | ||
| <div class="sourceCode" id="cb11"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> import document.docx <span class="at">--no-track-changes</span></span> | ||
| <span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="co"># Then manually review the Word file</span></span></code></pre></div> | ||
| <h3 id="cannot-read-file-errors">“Cannot read file” errors</h3> | ||
| <p><strong>Causes:</strong> 1. File is open in Word (Windows locks | ||
| open files) 2. File path contains special characters 3. Corrupted | ||
| .docx file</p> | ||
| <p><strong>Solutions:</strong> 1. Close the file in Word 2. Rename | ||
| file to remove special characters 3. Try opening in Word and | ||
| re-saving</p> | ||
| <h2 id="comment-issues">Comment Issues</h2> | ||
| <h3 id="comments-not-appearing-in-word-export">Comments not | ||
| appearing in Word export</h3> | ||
| <p><strong>Cause:</strong> Comments marked as resolved are hidden | ||
| by default.</p> | ||
| <p><strong>Solutions:</strong></p> | ||
| <div class="sourceCode" id="cb12"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> comments file.md <span class="at">--resolved</span> <span class="co"># Check resolved comments</span></span> | ||
| <span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> resolve file.md <span class="at">-a</span> <span class="at">-u</span> <span class="co"># Unresolve all comments</span></span></code></pre></div> | ||
| <h3 id="reply-threading-not-working">Reply threading not | ||
| working</h3> | ||
| <p>Comments must be adjacent (no text between them) to thread in | ||
| Word.</p> | ||
| <p><strong>Works:</strong></p> | ||
| <div class="sourceCode" id="cb13"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a>text{>>Author1: comment<<}{>>Author2: reply<<}</span></code></pre></div> | ||
| <p><strong>Won’t thread:</strong></p> | ||
| <div class="sourceCode" id="cb14"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>text{>>Author1: comment<<} more text {>>Author2: reply<<}</span></code></pre></div> | ||
| <h3 id="author-name-not-set">Author name not set</h3> | ||
| <div class="sourceCode" id="cb15"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config user <span class="st">"Your Name"</span></span> | ||
| <span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="co"># Or per-command:</span></span> | ||
| <span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reply file.md <span class="at">--author</span> <span class="st">"Your Name"</span></span></code></pre></div> | ||
| <h2 id="cross-reference-issues">Cross-Reference Issues</h2> | ||
| <h3 id="figurestables-not-numbered">Figures/tables not | ||
| numbered</h3> | ||
| <p><strong>Causes:</strong> 1. pandoc-crossref not installed 2. | ||
| Labels not in correct format</p> | ||
| <p><strong>Correct format:</strong></p> | ||
| <div class="sourceCode" id="cb16"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="al"></span>{#fig:label}</span> | ||
| <span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Col1 <span class="pp">|</span> Col2 <span class="pp">|</span></span> | ||
| <span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|------|------|</span></span> | ||
| <span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> a <span class="pp">|</span> b <span class="pp">|</span></span> | ||
| <span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a>: Caption {#tbl:label}</span></code></pre></div> | ||
| <h3 id="references-show-instead-of-numbers">References show “??” | ||
| instead of numbers</h3> | ||
| <p><strong>Causes:</strong> 1. Label doesn’t exist 2. Typo in | ||
| reference 3. pandoc-crossref not running</p> | ||
| <p><strong>Debug:</strong></p> | ||
| <div class="sourceCode" id="cb17"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> refs <span class="co"># List all labels</span></span> | ||
| <span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> refs <span class="at">--check</span> <span class="co"># Find broken references</span></span></code></pre></div> | ||
| <h2 id="pdf-issues">PDF Issues</h2> | ||
| <h3 id="fonts-missing-or-wrong">Fonts missing or wrong</h3> | ||
| <p><strong>LaTeX errors about fonts:</strong></p> | ||
| <div class="sourceCode" id="cb18"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Install more fonts</span></span> | ||
| <span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt install texlive-fonts-extra <span class="co"># Linux</span></span> | ||
| <span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a><span class="co"># Or use standard fonts in rev.yaml:</span></span> | ||
| <span id="cb18-4"><a href="#cb18-4" aria-hidden="true" tabindex="-1"></a><span class="ex">pdf:</span></span> | ||
| <span id="cb18-5"><a href="#cb18-5" aria-hidden="true" tabindex="-1"></a> <span class="ex">mainfont:</span> <span class="st">"Times New Roman"</span></span></code></pre></div> | ||
| <h3 id="images-not-appearing">Images not appearing</h3> | ||
| <p><strong>Causes:</strong> 1. Image path incorrect (relative to | ||
| project root) 2. Image format not supported by LaTeX</p> | ||
| <p><strong>Solutions:</strong> 1. Use relative paths: | ||
| <code></code> 2. Convert to PNG/PDF: LaTeX | ||
| prefers PDF for vector graphics</p> | ||
| <h3 id="pdf-too-large">PDF too large</h3> | ||
| <div class="sourceCode" id="cb19"><pre | ||
| class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="co"># In rev.yaml</span></span> | ||
| <span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a><span class="fu">pdf</span><span class="kw">:</span></span> | ||
| <span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">geometry</span><span class="kw">:</span><span class="at"> </span><span class="st">"margin=0.75in"</span><span class="co"> # Smaller margins</span></span> | ||
| <span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">fontsize</span><span class="kw">:</span><span class="at"> </span><span class="st">"11pt"</span><span class="co"> # Smaller font</span></span></code></pre></div> | ||
| <h2 id="performance-issues">Performance Issues</h2> | ||
| <h3 id="doi-lookup-slow">DOI lookup slow</h3> | ||
| <p>DOI validation queries external APIs. For large | ||
| bibliographies:</p> | ||
| <div class="sourceCode" id="cb20"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> doi check <span class="at">--no-lookup</span> <span class="co"># Skip online validation</span></span></code></pre></div> | ||
| <h3 id="build-taking-too-long">Build taking too long</h3> | ||
| <div class="sourceCode" id="cb21"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Build only what you need</span></span> | ||
| <span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="co"># Skip PDF</span></span> | ||
| <span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build <span class="at">--no-toc</span> <span class="co"># Skip table of contents</span></span></code></pre></div> | ||
| <h2 id="encoding-issues">Encoding Issues</h2> | ||
| <h3 id="special-characters-corrupted">Special characters | ||
| corrupted</h3> | ||
| <p><strong>Cause:</strong> File encoding mismatch.</p> | ||
| <p><strong>Solutions:</strong> 1. Ensure files are UTF-8 encoded | ||
| 2. In Word, save with “UTF-8” encoding option 3. Check your | ||
| editor’s encoding settings</p> | ||
| <h3 id="bibtex-entries-with-accents-fail">BibTeX entries with | ||
| accents fail</h3> | ||
| <p>Use LaTeX-style escapes or UTF-8:</p> | ||
| <div class="sourceCode" id="cb22"><pre | ||
| class="sourceCode bibtex"><code class="sourceCode bibtex"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="co">author = {M{\"u}ller, Hans}</span></span> | ||
| <span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a><span class="co"># or with UTF-8:</span></span> | ||
| <span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a><span class="co">author = {Müller, Hans}</span></span></code></pre></div> | ||
| <h2 id="getting-help">Getting Help</h2> | ||
| <h3 id="debug-mode">Debug mode</h3> | ||
| <div class="sourceCode" id="cb23"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build <span class="at">--verbose</span> <span class="dv">2</span><span class="op">>&</span><span class="dv">1</span> <span class="kw">|</span> <span class="fu">tee</span> build.log</span></code></pre></div> | ||
| <h3 id="check-system-status">Check system status</h3> | ||
| <div class="sourceCode" id="cb24"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> doctor</span></code></pre></div> | ||
| <h3 id="report-issues">Report issues</h3> | ||
| <p>https://github.com/gcol33/docrev/issues</p> | ||
| <p>Include: - <code>rev --version</code> output - | ||
| <code>rev doctor</code> output - Minimal reproducible example</p> | ||
| </main> | ||
| <aside class="col-md-3 d-none d-md-block"> | ||
| <nav id="toc" data-toggle="toc" aria-label="On this page"> | ||
| <h2 class="h6">On this page</h2> | ||
| <div class="toc"><ul> | ||
| <li><a href="#troubleshooting" | ||
| id="toc-troubleshooting">Troubleshooting</a> | ||
| <ul> | ||
| <li><a href="#installation-issues" | ||
| id="toc-installation-issues">Installation Issues</a> | ||
| <ul> | ||
| <li><a href="#pandoc-command-not-found" | ||
| id="toc-pandoc-command-not-found">“pandoc: command not found”</a></li> | ||
| <li><a href="#pandoc-crossref-command-not-found" | ||
| id="toc-pandoc-crossref-command-not-found">“pandoc-crossref: command not | ||
| found”</a></li> | ||
| <li><a href="#latex-not-found-pdf-generation-fails" | ||
| id="toc-latex-not-found-pdf-generation-fails">LaTeX not found (PDF | ||
| generation fails)</a></li> | ||
| </ul></li> | ||
| <li><a href="#build-errors" id="toc-build-errors">Build Errors</a> | ||
| <ul> | ||
| <li><a href="#no-section-files-found" | ||
| id="toc-no-section-files-found">“No section files found”</a></li> | ||
| <li><a href="#failed-to-parse-rev.yaml" | ||
| id="toc-failed-to-parse-rev.yaml">“Failed to parse rev.yaml”</a></li> | ||
| <li><a href="#build-produces-empty-pdf" | ||
| id="toc-build-produces-empty-pdf">Build produces empty PDF</a></li> | ||
| </ul></li> | ||
| <li><a href="#import-issues" id="toc-import-issues">Import Issues</a> | ||
| <ul> | ||
| <li><a href="#comments-not-imported-from-word" | ||
| id="toc-comments-not-imported-from-word">Comments not imported from | ||
| Word</a></li> | ||
| <li><a href="#track-changes-garbled-or-missing" | ||
| id="toc-track-changes-garbled-or-missing">Track changes garbled or | ||
| missing</a></li> | ||
| <li><a href="#cannot-read-file-errors" | ||
| id="toc-cannot-read-file-errors">“Cannot read file” errors</a></li> | ||
| </ul></li> | ||
| <li><a href="#comment-issues" id="toc-comment-issues">Comment Issues</a> | ||
| <ul> | ||
| <li><a href="#comments-not-appearing-in-word-export" | ||
| id="toc-comments-not-appearing-in-word-export">Comments not appearing in | ||
| Word export</a></li> | ||
| <li><a href="#reply-threading-not-working" | ||
| id="toc-reply-threading-not-working">Reply threading not | ||
| working</a></li> | ||
| <li><a href="#author-name-not-set" id="toc-author-name-not-set">Author | ||
| name not set</a></li> | ||
| </ul></li> | ||
| <li><a href="#cross-reference-issues" | ||
| id="toc-cross-reference-issues">Cross-Reference Issues</a> | ||
| <ul> | ||
| <li><a href="#figurestables-not-numbered" | ||
| id="toc-figurestables-not-numbered">Figures/tables not numbered</a></li> | ||
| <li><a href="#references-show-instead-of-numbers" | ||
| id="toc-references-show-instead-of-numbers">References show “??” instead | ||
| of numbers</a></li> | ||
| </ul></li> | ||
| <li><a href="#pdf-issues" id="toc-pdf-issues">PDF Issues</a> | ||
| <ul> | ||
| <li><a href="#fonts-missing-or-wrong" | ||
| id="toc-fonts-missing-or-wrong">Fonts missing or wrong</a></li> | ||
| <li><a href="#images-not-appearing" id="toc-images-not-appearing">Images | ||
| not appearing</a></li> | ||
| <li><a href="#pdf-too-large" id="toc-pdf-too-large">PDF too | ||
| large</a></li> | ||
| </ul></li> | ||
| <li><a href="#performance-issues" | ||
| id="toc-performance-issues">Performance Issues</a> | ||
| <ul> | ||
| <li><a href="#doi-lookup-slow" id="toc-doi-lookup-slow">DOI lookup | ||
| slow</a></li> | ||
| <li><a href="#build-taking-too-long" | ||
| id="toc-build-taking-too-long">Build taking too long</a></li> | ||
| </ul></li> | ||
| <li><a href="#encoding-issues" id="toc-encoding-issues">Encoding | ||
| Issues</a> | ||
| <ul> | ||
| <li><a href="#special-characters-corrupted" | ||
| id="toc-special-characters-corrupted">Special characters | ||
| corrupted</a></li> | ||
| <li><a href="#bibtex-entries-with-accents-fail" | ||
| id="toc-bibtex-entries-with-accents-fail">BibTeX entries with accents | ||
| fail</a></li> | ||
| </ul></li> | ||
| <li><a href="#getting-help" id="toc-getting-help">Getting Help</a> | ||
| <ul> | ||
| <li><a href="#debug-mode" id="toc-debug-mode">Debug mode</a></li> | ||
| <li><a href="#check-system-status" id="toc-check-system-status">Check | ||
| system status</a></li> | ||
| <li><a href="#report-issues" id="toc-report-issues">Report | ||
| issues</a></li> | ||
| </ul></li> | ||
| </ul></li> | ||
| </ul></div> | ||
| </nav> | ||
| </aside> | ||
| </div> | ||
| </div> | ||
| <footer class="border-top py-3 mt-auto"> | ||
| <div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem"> | ||
| <span>docrev 0.9.15</span> | ||
| <span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span> | ||
| </div> | ||
| </footer> | ||
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> | ||
| <script> | ||
| (function () { | ||
| var html = document.documentElement; | ||
| var sun = document.getElementById('icon-sun'); | ||
| var moon = document.getElementById('icon-moon'); | ||
| function apply(t) { | ||
| html.setAttribute('data-bs-theme', t); | ||
| sun.style.display = t === 'dark' ? 'none' : ''; | ||
| moon.style.display = t === 'dark' ? '' : 'none'; | ||
| } | ||
| apply(localStorage.getItem('docrev-theme') || 'light'); | ||
| document.getElementById('theme-toggle').addEventListener('click', function () { | ||
| var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'; | ||
| localStorage.setItem('docrev-theme', next); | ||
| apply(next); | ||
| }); | ||
| })(); | ||
| </script> | ||
| </body> | ||
| </html> |
| <!DOCTYPE html> | ||
| <html lang="en" data-bs-theme="light"> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
| <title>Get Started — docrev</title> | ||
| <meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users."> | ||
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css"> | ||
| <style> | ||
| html { -webkit-text-size-adjust: 100%; } | ||
| pre > code.sourceCode { white-space: pre; position: relative; } | ||
| pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } | ||
| pre > code.sourceCode > span:empty { height: 1.2em; } | ||
| .sourceCode { overflow: visible; } | ||
| code.sourceCode > span { color: inherit; text-decoration: inherit; } | ||
| div.sourceCode { margin: 1em 0; } | ||
| pre.sourceCode { margin: 0; } | ||
| @media screen { | ||
| div.sourceCode { overflow: auto; } | ||
| } | ||
| @media print { | ||
| pre > code.sourceCode { white-space: pre-wrap; } | ||
| pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } | ||
| } | ||
| pre.numberSource code | ||
| { counter-reset: source-line 0; } | ||
| pre.numberSource code > span | ||
| { position: relative; left: -4em; counter-increment: source-line; } | ||
| pre.numberSource code > span > a:first-child::before | ||
| { content: counter(source-line); | ||
| position: relative; left: -1em; text-align: right; vertical-align: baseline; | ||
| border: none; display: inline-block; | ||
| -webkit-touch-callout: none; -webkit-user-select: none; | ||
| -khtml-user-select: none; -moz-user-select: none; | ||
| -ms-user-select: none; user-select: none; | ||
| padding: 0 4px; width: 4em; | ||
| color: #aaaaaa; | ||
| } | ||
| pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } | ||
| div.sourceCode | ||
| { } | ||
| @media screen { | ||
| pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } | ||
| } | ||
| code span.al { color: #ff0000; font-weight: bold; } /* Alert */ | ||
| code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ | ||
| code span.at { color: #7d9029; } /* Attribute */ | ||
| code span.bn { color: #40a070; } /* BaseN */ | ||
| code span.bu { color: #008000; } /* BuiltIn */ | ||
| code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ | ||
| code span.ch { color: #4070a0; } /* Char */ | ||
| code span.cn { color: #880000; } /* Constant */ | ||
| code span.co { color: #60a0b0; font-style: italic; } /* Comment */ | ||
| code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ | ||
| code span.do { color: #ba2121; font-style: italic; } /* Documentation */ | ||
| code span.dt { color: #902000; } /* DataType */ | ||
| code span.dv { color: #40a070; } /* DecVal */ | ||
| code span.er { color: #ff0000; font-weight: bold; } /* Error */ | ||
| code span.ex { } /* Extension */ | ||
| code span.fl { color: #40a070; } /* Float */ | ||
| code span.fu { color: #06287e; } /* Function */ | ||
| code span.im { color: #008000; font-weight: bold; } /* Import */ | ||
| code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ | ||
| code span.kw { color: #007020; font-weight: bold; } /* Keyword */ | ||
| code span.op { color: #666666; } /* Operator */ | ||
| code span.ot { color: #007020; } /* Other */ | ||
| code span.pp { color: #bc7a00; } /* Preprocessor */ | ||
| code span.sc { color: #4070a0; } /* SpecialChar */ | ||
| code span.ss { color: #bb6688; } /* SpecialString */ | ||
| code span.st { color: #4070a0; } /* String */ | ||
| code span.va { color: #19177c; } /* Variable */ | ||
| code span.vs { color: #4070a0; } /* VerbatimString */ | ||
| code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ | ||
| </style> | ||
| <link rel="stylesheet" href="assets/extra.css"> | ||
| </head> | ||
| <body> | ||
| <nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation"> | ||
| <div class="container"> | ||
| <a class="navbar-brand me-2" href="index.html">docrev</a> | ||
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation"> | ||
| <span class="navbar-toggler-icon"></span> | ||
| </button> | ||
| <div class="collapse navbar-collapse" id="navbar-main"> | ||
| <ul class="navbar-nav me-auto"> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="index.html">Home</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link active" aria-current="page" href="workflow.html">Get Started</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="commands.html">Commands</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="configuration.html">Configuration</a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="troubleshooting.html">Troubleshooting</a> | ||
| </li> | ||
| </ul> | ||
| <ul class="navbar-nav"> | ||
| <li class="nav-item"> | ||
| <button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode"> | ||
| <svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/> | ||
| </svg> | ||
| <svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none"> | ||
| <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/> | ||
| </svg> | ||
| </button> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| <li class="nav-item"> | ||
| <a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm"> | ||
| <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16"> | ||
| <path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/> | ||
| </svg> | ||
| </a> | ||
| </li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
| </nav> | ||
| <div class="container template-article"> | ||
| <div class="row"> | ||
| <main id="main" class="col-md-9"> | ||
| <h1 id="revision-workflow">Revision Workflow</h1> | ||
| <p>The canonical version lives in your markdown files. Word is the | ||
| exchange format — you build it when you need to share, and sync it | ||
| when feedback comes back.</p> | ||
| <p>A revision cycle in brief:</p> | ||
| <ol type="1"> | ||
| <li>Build a Word document and send it to reviewers.</li> | ||
| <li>They return it with track changes and comments.</li> | ||
| <li><code>rev sync</code> pulls the feedback into your markdown | ||
| sections.</li> | ||
| <li>Navigate comments with <code>rev next</code> and | ||
| <code>rev todo</code>, reply with <code>rev reply</code>, accept | ||
| or reject changes with <code>rev accept</code>.</li> | ||
| <li>Rebuild with <code>rev build docx --dual</code> — a clean | ||
| document and an annotated one with your replies threaded into the | ||
| original Word comments.</li> | ||
| <li>Archive the reviewer’s file. Repeat.</li> | ||
| </ol> | ||
| <hr /> | ||
| <h2 id="starting-a-project">Starting a Project</h2> | ||
| <p>From an existing Word document:</p> | ||
| <div class="sourceCode" id="cb1"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> import manuscript.docx</span></code></pre></div> | ||
| <p>docrev splits the document at top-level headings and creates | ||
| one <code>.md</code> file per section. Images land in | ||
| <code>figures/</code>, equations convert from OMML to LaTeX, and | ||
| any existing comments or track changes are preserved as | ||
| CriticMarkup annotations.</p> | ||
| <p>From scratch:</p> | ||
| <div class="sourceCode" id="cb2"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> new my-paper <span class="at">-s</span> intro,methods,results,discussion</span> | ||
| <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> my-paper</span></code></pre></div> | ||
| <p>The <code>-s</code> flag sets section names and skips the | ||
| interactive prompt. Set your preferred sections once and future | ||
| <code>rev new</code> calls use them automatically:</p> | ||
| <div class="sourceCode" id="cb3"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config sections <span class="st">"intro,methods,results,discussion"</span></span></code></pre></div> | ||
| <p>Either way, the project has this shape:</p> | ||
| <pre><code>my-paper/ | ||
| ├── rev.yaml ← config: title, authors, section order, journal profile | ||
| ├── intro.md ← section files — edit these | ||
| ├── methods.md | ||
| ├── results.md | ||
| ├── discussion.md | ||
| ├── references.bib ← BibTeX bibliography | ||
| ├── figures/ ← images referenced from sections | ||
| ├── paper.md ← auto-combined on each build, not hand-edited | ||
| └── output/ | ||
| ├── my-paper.docx | ||
| └── my-paper.pdf</code></pre> | ||
| <p><code>paper.md</code> is regenerated from the section files in | ||
| the order set by <code>rev.yaml</code>; output files go to | ||
| <code>output/</code> by default. Set <code>outputDir: null</code> | ||
| in <code>rev.yaml</code> if you prefer them alongside | ||
| <code>paper.md</code>.</p> | ||
| <hr /> | ||
| <h2 id="writing-in-markdown">Writing in Markdown</h2> | ||
| <p>Citations use pandoc-citeproc syntax — <code>[@key]</code> for | ||
| one source, <code>[@key1; @key2]</code> for multiple:</p> | ||
| <div class="sourceCode" id="cb5"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>Global temperatures have risen by 1.1°C since pre-industrial levels <span class="co">[</span><span class="ot">@IPCC2021</span><span class="co">]</span>.</span></code></pre></div> | ||
| <p>Figures get a label so they can be referenced by number:</p> | ||
| <div class="sourceCode" id="cb6"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="al"></span>{#fig:temperature}</span> | ||
| <span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a>As shown in @fig:temperature, the trend has accelerated since 1970.</span></code></pre></div> | ||
| <p>Equations use standard LaTeX — inline with <code>$...$</code>, | ||
| display with <code>$$...$$</code>:</p> | ||
| <div class="sourceCode" id="cb7"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>The forcing relationship follows $\Delta T = \lambda \cdot \Delta F$, where</span> | ||
| <span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a>$\lambda$ is the climate sensitivity parameter.</span> | ||
| <span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a>$$</span> | ||
| <span id="cb7-5"><a href="#cb7-5" aria-hidden="true" tabindex="-1"></a>\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i</span> | ||
| <span id="cb7-6"><a href="#cb7-6" aria-hidden="true" tabindex="-1"></a>$$ {#eq:mean}</span> | ||
| <span id="cb7-7"><a href="#cb7-7" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb7-8"><a href="#cb7-8" aria-hidden="true" tabindex="-1"></a>Reference with @eq:mean → "Equation 1"</span></code></pre></div> | ||
| <p>Simple tables take pipe syntax:</p> | ||
| <div class="sourceCode" id="cb8"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Site <span class="pp">|</span> Lat <span class="pp">|</span> Long <span class="pp">|</span> n <span class="pp">|</span></span> | ||
| <span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|------|------|--------|----|</span></span> | ||
| <span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> A <span class="pp">|</span> 45.2 <span class="pp">|</span> -120.5 <span class="pp">|</span> 48 <span class="pp">|</span></span> | ||
| <span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> B <span class="pp">|</span> 52.1 <span class="pp">|</span> -105.3 <span class="pp">|</span> 61 <span class="pp">|</span></span> | ||
| <span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a>: Study sites {#tbl:sites}</span></code></pre></div> | ||
| <p>For merged cells or multi-line cell content, use grid table | ||
| syntax:</p> | ||
| <div class="sourceCode" id="cb9"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>+----------+----------+----------+</span> | ||
| <span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Results <span class="pp">|</span></span> | ||
| <span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a>+========<span class="al">==+==========+==</span>========+</span> | ||
| <span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Site <span class="pp">|</span> 2023 <span class="pp">|</span> 2024 <span class="pp">|</span></span> | ||
| <span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a>+----------+----------+----------+</span> | ||
| <span id="cb9-6"><a href="#cb9-6" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> A <span class="pp">|</span> 100 <span class="pp">|</span> 150 <span class="pp">|</span></span> | ||
| <span id="cb9-7"><a href="#cb9-7" aria-hidden="true" tabindex="-1"></a>+----------+----------+----------+</span> | ||
| <span id="cb9-8"><a href="#cb9-8" aria-hidden="true" tabindex="-1"></a></span> | ||
| <span id="cb9-9"><a href="#cb9-9" aria-hidden="true" tabindex="-1"></a>: Annual measurements {#tbl:results}</span></code></pre></div> | ||
| <p>Cross-references resolve automatically at build time — | ||
| <code>@fig:label</code>, <code>@tbl:label</code>, | ||
| <code>@eq:label</code>, <code>@sec:label</code> become “Figure 1”, | ||
| “Table 2”, “Equation 3”, “Section 4”. Use <code>rev migrate</code> | ||
| to convert hardcoded references (Fig. 1, Table 2) to dynamic ones | ||
| if you’re importing an existing document.</p> | ||
| <hr /> | ||
| <h2 id="building-and-sharing">Building and Sharing</h2> | ||
| <div class="sourceCode" id="cb10"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="co"># → output/my-paper.docx</span></span> | ||
| <span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="co"># → output/my-paper.pdf</span></span> | ||
| <span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx pdf <span class="co"># both at once</span></span></code></pre></div> | ||
| <p>Set a journal profile to get the right citation style and PDF | ||
| formatting automatically:</p> | ||
| <div class="sourceCode" id="cb11"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="at">-j</span> nature</span></code></pre></div> | ||
| <p>Six profiles include formatting defaults — <code>nature</code>, | ||
| <code>science</code>, <code>cell</code>, <code>pnas</code>, | ||
| <code>plos-one</code>, <code>elife</code>. All 21 support | ||
| validation. To see the full list:</p> | ||
| <div class="sourceCode" id="cb12"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">--list</span></span></code></pre></div> | ||
| <p>For a live preview while you write:</p> | ||
| <div class="sourceCode" id="cb13"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> watch docx <span class="co"># rebuilds on every save</span></span></code></pre></div> | ||
| <hr /> | ||
| <h2 id="syncing-reviewer-feedback">Syncing Reviewer Feedback</h2> | ||
| <p>When a reviewer returns a Word document with track changes and | ||
| comments:</p> | ||
| <div class="sourceCode" id="cb14"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync reviewed.docx</span></code></pre></div> | ||
| <p>Track changes become CriticMarkup annotations inline in your | ||
| section files:</p> | ||
| <div class="sourceCode" id="cb15"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a>The sample size was {--100--}{++150++} participants.</span> | ||
| <span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a>Data was collected {~~monthly~>weekly~~}.</span></code></pre></div> | ||
| <p>Comments land with the reviewer’s name:</p> | ||
| <div class="sourceCode" id="cb16"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a>{>>Reviewer 2: The confidence intervals here seem too narrow. Please clarify.<<}</span></code></pre></div> | ||
| <p>If your markdown has changed since you sent the document out — | ||
| new edits, reordered sections — run | ||
| <code>rev verify-anchors</code> first to see which comments will | ||
| land cleanly against the updated prose, then use | ||
| <code>--comments-only</code> to import only comments (not track | ||
| changes, which would overwrite your newer edits):</p> | ||
| <div class="sourceCode" id="cb17"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> verify-anchors reviewed.docx</span> | ||
| <span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync reviewed.docx <span class="at">--comments-only</span></span></code></pre></div> | ||
| <p>For reviewers who annotate PDFs rather than Word files:</p> | ||
| <div class="sourceCode" id="cb18"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync annotated.pdf</span></code></pre></div> | ||
| <p>Supported annotation types: sticky notes, text boxes, | ||
| highlights, underlines, strikethrough, squiggly underlines. Use | ||
| <code>rev pdf-comments annotated.pdf --with-text</code> to extract | ||
| the text that was highlighted or struck through.</p> | ||
| <hr /> | ||
| <h2 id="track-changes">Track Changes</h2> | ||
| <p>List what’s pending:</p> | ||
| <div class="sourceCode" id="cb19"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> accept methods.md</span></code></pre></div> | ||
| <p>Accept or reject individually, or all at once:</p> | ||
| <div class="sourceCode" id="cb20"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> accept methods.md <span class="at">-n</span> 1 <span class="co"># accept change #1</span></span> | ||
| <span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reject methods.md <span class="at">-n</span> 2 <span class="co"># reject change #2</span></span> | ||
| <span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> accept methods.md <span class="at">-a</span> <span class="co"># accept all</span></span></code></pre></div> | ||
| <p>For an interactive review with keyboard shortcuts | ||
| (a/r/s/q):</p> | ||
| <div class="sourceCode" id="cb21"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> review methods.md</span></code></pre></div> | ||
| <hr /> | ||
| <h2 id="comments">Comments</h2> | ||
| <p>Navigate pending comments:</p> | ||
| <div class="sourceCode" id="cb22"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> todo <span class="co"># list all pending as a checklist</span></span> | ||
| <span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> next <span class="co"># show the next one</span></span> | ||
| <span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> next <span class="at">-n</span> 3 <span class="co"># skip to the 3rd</span></span> | ||
| <span id="cb22-4"><a href="#cb22-4" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> comments methods.md <span class="co"># all comments in one section, with context</span></span> | ||
| <span id="cb22-5"><a href="#cb22-5" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> comments methods.md <span class="at">--author</span> <span class="st">"Reviewer 2"</span></span></code></pre></div> | ||
| <p>Reply with your name set once in config:</p> | ||
| <div class="sourceCode" id="cb23"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config user <span class="st">"Your Name"</span></span> | ||
| <span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reply methods.md <span class="at">-n</span> 1 <span class="at">-m</span> <span class="st">"Added clarification in the revised text."</span></span></code></pre></div> | ||
| <p>The reply appears adjacent to the original:</p> | ||
| <div class="sourceCode" id="cb24"><pre | ||
| class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a>{>>Reviewer 2: The confidence intervals seem too narrow.<<} {>>Your Name: Clarified; the intervals are bootstrap CIs at 95%.<<}</span></code></pre></div> | ||
| <p>Adjacent comments from different authors thread in Word | ||
| automatically. Comments must be adjacent — no text between them — | ||
| for threading to work.</p> | ||
| <p>Mark addressed:</p> | ||
| <div class="sourceCode" id="cb25"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> resolve methods.md <span class="at">-n</span> 1</span></code></pre></div> | ||
| <hr /> | ||
| <h2 id="multiple-reviewers">Multiple Reviewers</h2> | ||
| <p>When several reviewers return separate files, | ||
| <code>rev merge</code> reconciles them against a shared | ||
| baseline:</p> | ||
| <div class="sourceCode" id="cb26"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> merge reviewer_A.docx reviewer_B.docx</span></code></pre></div> | ||
| <p>docrev compares each file against <code>.rev/base.docx</code> | ||
| (saved automatically on every build) to isolate each reviewer’s | ||
| changes. Conflicts on the same passage are flagged for interactive | ||
| resolution.</p> | ||
| <hr /> | ||
| <h2 id="rebuilding-and-responding">Rebuilding and Responding</h2> | ||
| <p>Once you’ve handled the feedback, rebuild:</p> | ||
| <div class="sourceCode" id="cb27"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="at">--dual</span></span></code></pre></div> | ||
| <p>This produces two files — <code>my-paper.docx</code> (clean, | ||
| for submission or the next round) and | ||
| <code>my-paper_comments.docx</code> (with your replies threaded | ||
| under the original Word comments). The same flag works for PDF, | ||
| rendering comments as LaTeX margin notes:</p> | ||
| <div class="sourceCode" id="cb28"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="at">--dual</span></span></code></pre></div> | ||
| <p>Generate a point-by-point response letter from the resolved | ||
| comments:</p> | ||
| <div class="sourceCode" id="cb29"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> response <span class="op">></span> response-letter.md</span></code></pre></div> | ||
| <hr /> | ||
| <h2 id="archiving-and-repeating">Archiving and Repeating</h2> | ||
| <p>Move reviewer files out of the project folder:</p> | ||
| <div class="sourceCode" id="cb30"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> archive <span class="co"># → archive/20241215_143022_reviewed.docx</span></span> | ||
| <span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> archive <span class="at">--by</span> Smith <span class="co"># → archive/20241215_143022_Smith_my-paper.docx</span></span> | ||
| <span id="cb30-3"><a href="#cb30-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> archive <span class="at">--dry-run</span> <span class="co"># preview without moving</span></span></code></pre></div> | ||
| <p>Take a snapshot before a major revision round:</p> | ||
| <div class="sourceCode" id="cb31"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> backup <span class="at">--name</span> <span class="st">"before-round-2"</span></span></code></pre></div> | ||
| <p>The cycle continues: receive feedback, sync, handle changes and | ||
| comments, rebuild, archive.</p> | ||
| <hr /> | ||
| <h2 id="pre-submission-checks">Pre-Submission Checks</h2> | ||
| <div class="sourceCode" id="cb32"><pre | ||
| class="sourceCode bash"><code class="sourceCode bash"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> check <span class="co"># full check: lint, citations, grammar</span></span> | ||
| <span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> doi check references.bib <span class="co"># validate all DOIs</span></span> | ||
| <span id="cb32-3"><a href="#cb32-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">-j</span> nature <span class="co"># journal-specific requirements</span></span> | ||
| <span id="cb32-4"><a href="#cb32-4" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> word-count <span class="at">-j</span> nature <span class="co"># check against word limit</span></span></code></pre></div> | ||
| <p>For journals with strict requirements, running | ||
| <code>rev validate --list</code> shows which profiles are | ||
| available and which include formatting support | ||
| (<code>[formatting]</code> tag).</p> | ||
| <hr /> | ||
| <h2 id="quick-reference">Quick Reference</h2> | ||
| <table> | ||
| <colgroup> | ||
| <col style="width: 40%" /> | ||
| <col style="width: 60%" /> | ||
| </colgroup> | ||
| <thead> | ||
| <tr> | ||
| <th>Task</th> | ||
| <th>Command</th> | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| <tr> | ||
| <td>Start from Word</td> | ||
| <td><code>rev import manuscript.docx</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Start fresh</td> | ||
| <td><code>rev new my-paper</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Build DOCX</td> | ||
| <td><code>rev build docx</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Build clean + annotated</td> | ||
| <td><code>rev build docx --dual</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Build PDF</td> | ||
| <td><code>rev build pdf</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Sync feedback</td> | ||
| <td><code>rev sync reviewed.docx</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Sync comments only (prose changed)</td> | ||
| <td><code>rev sync reviewed.docx --comments-only</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Check anchor drift</td> | ||
| <td><code>rev verify-anchors reviewed.docx</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Project status</td> | ||
| <td><code>rev status</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>List pending</td> | ||
| <td><code>rev todo</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Next comment</td> | ||
| <td><code>rev next</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Accept all changes</td> | ||
| <td><code>rev accept file.md -a</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Reply to comment</td> | ||
| <td><code>rev reply file.md -n 1 -m "..."</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Archive reviewer files</td> | ||
| <td><code>rev archive</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Response letter</td> | ||
| <td><code>rev response</code></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Pre-submit check</td> | ||
| <td><code>rev check</code></td> | ||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| </main> | ||
| <aside class="col-md-3 d-none d-md-block"> | ||
| <nav id="toc" data-toggle="toc" aria-label="On this page"> | ||
| <h2 class="h6">On this page</h2> | ||
| <div class="toc"><ul> | ||
| <li><a href="#revision-workflow" id="toc-revision-workflow">Revision | ||
| Workflow</a> | ||
| <ul> | ||
| <li><a href="#starting-a-project" id="toc-starting-a-project">Starting a | ||
| Project</a></li> | ||
| <li><a href="#writing-in-markdown" id="toc-writing-in-markdown">Writing | ||
| in Markdown</a></li> | ||
| <li><a href="#building-and-sharing" | ||
| id="toc-building-and-sharing">Building and Sharing</a></li> | ||
| <li><a href="#syncing-reviewer-feedback" | ||
| id="toc-syncing-reviewer-feedback">Syncing Reviewer Feedback</a></li> | ||
| <li><a href="#track-changes" id="toc-track-changes">Track | ||
| Changes</a></li> | ||
| <li><a href="#comments" id="toc-comments">Comments</a></li> | ||
| <li><a href="#multiple-reviewers" id="toc-multiple-reviewers">Multiple | ||
| Reviewers</a></li> | ||
| <li><a href="#rebuilding-and-responding" | ||
| id="toc-rebuilding-and-responding">Rebuilding and Responding</a></li> | ||
| <li><a href="#archiving-and-repeating" | ||
| id="toc-archiving-and-repeating">Archiving and Repeating</a></li> | ||
| <li><a href="#pre-submission-checks" | ||
| id="toc-pre-submission-checks">Pre-Submission Checks</a></li> | ||
| <li><a href="#quick-reference" id="toc-quick-reference">Quick | ||
| Reference</a></li> | ||
| </ul></li> | ||
| </ul></div> | ||
| </nav> | ||
| </aside> | ||
| </div> | ||
| </div> | ||
| <footer class="border-top py-3 mt-auto"> | ||
| <div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem"> | ||
| <span>docrev 0.9.15</span> | ||
| <span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span> | ||
| </div> | ||
| </footer> | ||
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> | ||
| <script> | ||
| (function () { | ||
| var html = document.documentElement; | ||
| var sun = document.getElementById('icon-sun'); | ||
| var moon = document.getElementById('icon-moon'); | ||
| function apply(t) { | ||
| html.setAttribute('data-bs-theme', t); | ||
| sun.style.display = t === 'dark' ? 'none' : ''; | ||
| moon.style.display = t === 'dark' ? '' : 'none'; | ||
| } | ||
| apply(localStorage.getItem('docrev-theme') || 'light'); | ||
| document.getElementById('theme-toggle').addEventListener('click', function () { | ||
| var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark'; | ||
| localStorage.setItem('docrev-theme', next); | ||
| apply(next); | ||
| }); | ||
| })(); | ||
| </script> | ||
| </body> | ||
| </html> |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
56401
0.3%3467426
-4.14%400
-0.5%