@otomate/docx 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ export { readDocx } from "./reader.js";
2
+ export type { DocxReadOptions } from "./reader.js";
3
+ export { writeDocx } from "./writer.js";
4
+ export type { DocxWriteOptions } from "./writer.js";
5
+ export { extractDocx, packDocx } from "./zip.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { readDocx } from "./reader.js";
2
+ export { writeDocx } from "./writer.js";
3
+ export { extractDocx, packDocx } from "./zip.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Root } from "@otomate/core";
2
+ export interface DocxReadOptions {
3
+ }
4
+ /** Parse a .docx buffer into a UDM tree. */
5
+ export declare function readDocx(buffer: ArrayBuffer | Uint8Array, _options?: DocxReadOptions): Promise<Root>;
6
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,IAAI,EAEL,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,eAAe;CAAG;AA2BnC,4CAA4C;AAC5C,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,WAAW,GAAG,UAAU,EAChC,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
package/dist/reader.js ADDED
@@ -0,0 +1,410 @@
1
+ // ---------------------------------------------------------------------------
2
+ // docx Reader — .docx buffer → UDM tree
3
+ // ---------------------------------------------------------------------------
4
+ import { extractDocx } from "./zip.js";
5
+ import { parseXml, parseXmlOrdered } from "./xml.js";
6
+ const HEADING_STYLES = {
7
+ Heading1: 1, Heading2: 2, Heading3: 3, Heading4: 4, Heading5: 5, Heading6: 6,
8
+ heading1: 1, heading2: 2, heading3: 3, heading4: 4, heading5: 5, heading6: 6,
9
+ "Heading 1": 1, "Heading 2": 2, "Heading 3": 3, "Heading 4": 4, "Heading 5": 5, "Heading 6": 6,
10
+ };
11
+ const CODE_STYLES = new Set(["Code", "code", "SourceCode", "HTMLCode"]);
12
+ const QUOTE_STYLES = new Set(["Quote", "quote", "BlockQuote", "IntenseQuote"]);
13
+ /** Module-level rId→URL map, set per readDocx call */
14
+ let currentRIdMap = new Map();
15
+ /** Parse document.xml.rels to build rId → URL map for hyperlinks */
16
+ function parseRelationships(relsXml) {
17
+ const map = new Map();
18
+ if (!relsXml)
19
+ return map;
20
+ // Simple regex extraction — the rels XML is small and predictable
21
+ const regex = /Id="([^"]+)"[^>]*Type="[^"]*\/hyperlink"[^>]*Target="([^"]+)"/g;
22
+ let match;
23
+ while ((match = regex.exec(relsXml)) !== null) {
24
+ map.set(match[1], match[2]);
25
+ }
26
+ return map;
27
+ }
28
+ /** Parse a .docx buffer into a UDM tree. */
29
+ export async function readDocx(buffer, _options) {
30
+ const parts = await extractDocx(buffer);
31
+ // Check for occam UDM snapshot — lossless round-trip
32
+ const udmJson = parts.rawParts.get("word/occam-udm.json");
33
+ if (udmJson) {
34
+ try {
35
+ const snapshot = JSON.parse(udmJson);
36
+ // Restore CSS rules if present
37
+ const cssJson = parts.rawParts.get("word/occam-css.json");
38
+ if (cssJson) {
39
+ const cssData = JSON.parse(cssJson);
40
+ snapshot.data = { ...snapshot.data, css: cssData };
41
+ }
42
+ // Attach docx raw parts for further round-trips
43
+ snapshot.data = {
44
+ ...snapshot.data,
45
+ docx: {
46
+ rawParts: Object.fromEntries(parts.rawParts),
47
+ styles: parts.styles,
48
+ numbering: parts.numbering,
49
+ relationships: parts.relationships,
50
+ contentTypes: parts.contentTypes,
51
+ },
52
+ };
53
+ return snapshot;
54
+ }
55
+ catch {
56
+ // Fall through to OOXML parsing if JSON is corrupt
57
+ }
58
+ }
59
+ // Parse relationships to resolve hyperlink rIds → URLs
60
+ currentRIdMap = parseRelationships(parts.relationships);
61
+ // Parse document with ordered parser to preserve element order
62
+ const docOrdered = parseXmlOrdered(parts.document);
63
+ const children = convertBodyOrdered(docOrdered);
64
+ const root = { type: "root", children };
65
+ root.data = {
66
+ docx: {
67
+ rawParts: Object.fromEntries(parts.rawParts),
68
+ styles: parts.styles,
69
+ numbering: parts.numbering,
70
+ relationships: parts.relationships,
71
+ contentTypes: parts.contentTypes,
72
+ },
73
+ };
74
+ if (parts.media.size > 0) {
75
+ root.data.docx.media = Object.fromEntries([...parts.media].map(([k, v]) => [k, Array.from(v)]));
76
+ }
77
+ return root;
78
+ }
79
+ // ---------------------------------------------------------------------------
80
+ // Ordered body conversion — preserves document element order
81
+ // ---------------------------------------------------------------------------
82
+ /**
83
+ * Walk the preserveOrder parsed tree to find w:body children in order.
84
+ * preserveOrder format: array of objects like { "w:document": [...children], ":@": { attrs } }
85
+ */
86
+ function convertBodyOrdered(doc) {
87
+ // Find w:document
88
+ const docNode = doc.find((n) => n["w:document"]);
89
+ if (!docNode)
90
+ return [];
91
+ // Find w:body inside w:document
92
+ const docChildren = docNode["w:document"] ?? [];
93
+ const bodyNode = docChildren.find((n) => n["w:body"]);
94
+ if (!bodyNode)
95
+ return [];
96
+ const bodyChildren = bodyNode["w:body"] ?? [];
97
+ return convertOrderedChildren(bodyChildren);
98
+ }
99
+ function convertOrderedChildren(children) {
100
+ const result = [];
101
+ let listStack = [];
102
+ function flushLists() {
103
+ if (listStack.length > 0) {
104
+ result.push(listStack[0].list);
105
+ listStack = [];
106
+ }
107
+ }
108
+ for (const child of children) {
109
+ if (child["w:p"] !== undefined) {
110
+ // Paragraph
111
+ const pChildren = child["w:p"] ?? [];
112
+ const pAttrs = child[":@"] ?? {};
113
+ const converted = convertOrderedParagraph(pChildren, pAttrs, listStack, flushLists, result);
114
+ if (converted) {
115
+ flushLists();
116
+ result.push(converted);
117
+ }
118
+ }
119
+ else if (child["w:tbl"] !== undefined) {
120
+ // Table
121
+ flushLists();
122
+ result.push(convertOrderedTable(child["w:tbl"] ?? []));
123
+ }
124
+ else if (child["w:sectPr"] !== undefined) {
125
+ // Section properties — skip (document metadata)
126
+ }
127
+ }
128
+ flushLists();
129
+ return result;
130
+ }
131
+ // ---------------------------------------------------------------------------
132
+ // Paragraph conversion (ordered format)
133
+ // ---------------------------------------------------------------------------
134
+ function convertOrderedParagraph(pChildren, _pAttrs, listStack, flushLists, result) {
135
+ // Extract pPr
136
+ const pPrNode = pChildren.find((c) => c["w:pPr"] !== undefined);
137
+ const pPrChildren = pPrNode?.["w:pPr"] ?? [];
138
+ // Check for numbering (list)
139
+ const numPrNode = pPrChildren.find((c) => c["w:numPr"] !== undefined);
140
+ if (numPrNode) {
141
+ const numPrChildren = numPrNode["w:numPr"] ?? [];
142
+ const numId = getOrderedAttr(numPrChildren, "w:numId", "w:val") ?? "0";
143
+ const ilvl = Number(getOrderedAttr(numPrChildren, "w:ilvl", "w:val") ?? 0);
144
+ const inlines = convertOrderedRuns(pChildren);
145
+ const para = { type: "paragraph", children: inlines };
146
+ const item = { type: "listItem", children: [para] };
147
+ if (listStack.length === 0 || listStack[0].numId !== numId) {
148
+ flushLists();
149
+ const list = { type: "list", ordered: false, children: [item] };
150
+ listStack.push({ numId, ilvl, list, item });
151
+ }
152
+ else {
153
+ const current = listStack[listStack.length - 1];
154
+ if (ilvl > current.ilvl) {
155
+ const nestedList = { type: "list", ordered: false, children: [item] };
156
+ current.item.children.push(nestedList);
157
+ listStack.push({ numId, ilvl, list: nestedList, item });
158
+ }
159
+ else if (ilvl < current.ilvl) {
160
+ while (listStack.length > 1 && listStack[listStack.length - 1].ilvl > ilvl)
161
+ listStack.pop();
162
+ listStack[listStack.length - 1].list.children.push(item);
163
+ listStack[listStack.length - 1].item = item;
164
+ }
165
+ else {
166
+ current.list.children.push(item);
167
+ current.item = item;
168
+ }
169
+ }
170
+ return null; // handled by list stack
171
+ }
172
+ // Check style
173
+ const styleId = getOrderedAttr(pPrChildren, "w:pStyle", "w:val");
174
+ // Code block?
175
+ if (styleId && CODE_STYLES.has(styleId)) {
176
+ const text = getOrderedRunsText(pChildren);
177
+ return { type: "codeBlock", value: text };
178
+ }
179
+ // Blockquote?
180
+ if (styleId && QUOTE_STYLES.has(styleId)) {
181
+ const inlines = convertOrderedRuns(pChildren);
182
+ if (inlines.length === 0)
183
+ return null;
184
+ return {
185
+ type: "blockquote",
186
+ children: [{ type: "paragraph", children: inlines }],
187
+ };
188
+ }
189
+ // Check for indentation-based blockquote (our writer uses w:ind left=720)
190
+ const indNode = pPrChildren.find((c) => c["w:ind"] !== undefined);
191
+ const indLeft = indNode?.[":@"]?.["@_w:left"];
192
+ if (indLeft && Number(indLeft) >= 720 && !styleId) {
193
+ const inlines = convertOrderedRuns(pChildren);
194
+ if (inlines.length === 0)
195
+ return null;
196
+ return {
197
+ type: "blockquote",
198
+ children: [{ type: "paragraph", children: inlines }],
199
+ };
200
+ }
201
+ // Heading?
202
+ const headingDepth = styleId ? HEADING_STYLES[styleId] : undefined;
203
+ if (headingDepth) {
204
+ const inlines = convertOrderedRuns(pChildren);
205
+ return { type: "heading", depth: headingDepth, children: inlines };
206
+ }
207
+ // Regular paragraph
208
+ const inlines = convertOrderedRuns(pChildren);
209
+ if (inlines.length === 0)
210
+ return null;
211
+ const para = { type: "paragraph", children: inlines };
212
+ // Non-heading, non-special style → class
213
+ if (styleId && !HEADING_STYLES[styleId] && !CODE_STYLES.has(styleId) && !QUOTE_STYLES.has(styleId)) {
214
+ para.classes = [styleId];
215
+ }
216
+ // Store paragraph properties in data.docx
217
+ const docxData = {};
218
+ const jcNode = pPrChildren.find((c) => c["w:jc"] !== undefined);
219
+ if (jcNode)
220
+ docxData.align = jcNode[":@"]?.["@_w:val"];
221
+ if (Object.keys(docxData).length > 0)
222
+ para.data = { docx: docxData };
223
+ return para;
224
+ }
225
+ // ---------------------------------------------------------------------------
226
+ // Run conversion (ordered format)
227
+ // ---------------------------------------------------------------------------
228
+ function convertOrderedRuns(pChildren) {
229
+ const result = [];
230
+ for (const child of pChildren) {
231
+ if (child["w:r"] !== undefined) {
232
+ const rChildren = child["w:r"] ?? [];
233
+ const text = getOrderedText(rChildren);
234
+ if (!text)
235
+ continue;
236
+ const marks = extractOrderedRunMarks(rChildren);
237
+ const textNode = { type: "text", value: text };
238
+ if (marks.length > 0)
239
+ textNode.marks = marks;
240
+ // Run-level data
241
+ const rPrNode = rChildren.find((c) => c["w:rPr"] !== undefined);
242
+ if (rPrNode) {
243
+ const docxData = extractOrderedRunData(rPrNode["w:rPr"] ?? []);
244
+ if (Object.keys(docxData).length > 0)
245
+ textNode.data = { docx: docxData };
246
+ }
247
+ result.push(textNode);
248
+ }
249
+ else if (child["w:hyperlink"] !== undefined) {
250
+ const hlChildren = child["w:hyperlink"] ?? [];
251
+ const hlAttrs = child[":@"] ?? {};
252
+ const rId = hlAttrs["@_r:id"] ?? hlAttrs["@_w:id"] ?? "";
253
+ // Resolve rId to actual URL
254
+ const url = currentRIdMap.get(rId) ?? `#${rId}`;
255
+ for (const hlChild of hlChildren) {
256
+ if (hlChild["w:r"] !== undefined) {
257
+ const rChildren = hlChild["w:r"] ?? [];
258
+ const text = getOrderedText(rChildren);
259
+ if (!text)
260
+ continue;
261
+ const marks = extractOrderedRunMarks(rChildren);
262
+ marks.push({ type: "link", attrs: { url } });
263
+ result.push({ type: "text", value: text, marks });
264
+ }
265
+ }
266
+ }
267
+ }
268
+ return result;
269
+ }
270
+ function getOrderedText(rChildren) {
271
+ let text = "";
272
+ for (const child of rChildren) {
273
+ if (child["w:t"] !== undefined) {
274
+ const tChildren = child["w:t"];
275
+ if (Array.isArray(tChildren)) {
276
+ for (const t of tChildren) {
277
+ if (typeof t === "object" && t["#text"] !== undefined)
278
+ text += t["#text"];
279
+ else if (typeof t === "string")
280
+ text += t;
281
+ }
282
+ }
283
+ else if (typeof tChildren === "string") {
284
+ text += tChildren;
285
+ }
286
+ else if (tChildren?.["#text"] !== undefined) {
287
+ text += tChildren["#text"];
288
+ }
289
+ }
290
+ }
291
+ return text || null;
292
+ }
293
+ function getOrderedRunsText(pChildren) {
294
+ let text = "";
295
+ for (const child of pChildren) {
296
+ if (child["w:r"] !== undefined) {
297
+ const t = getOrderedText(child["w:r"] ?? []);
298
+ if (t)
299
+ text += t;
300
+ }
301
+ }
302
+ return text;
303
+ }
304
+ function extractOrderedRunMarks(rChildren) {
305
+ const rPrNode = rChildren.find((c) => c["w:rPr"] !== undefined);
306
+ if (!rPrNode)
307
+ return [];
308
+ const rPrChildren = rPrNode["w:rPr"] ?? [];
309
+ const marks = [];
310
+ for (const prop of rPrChildren) {
311
+ if (prop["w:b"] !== undefined)
312
+ marks.push({ type: "strong" });
313
+ if (prop["w:i"] !== undefined)
314
+ marks.push({ type: "emphasis" });
315
+ if (prop["w:u"] !== undefined) {
316
+ const style = prop[":@"]?.["@_w:val"] ?? "single";
317
+ marks.push({ type: "underline", attrs: { style } });
318
+ }
319
+ if (prop["w:strike"] !== undefined)
320
+ marks.push({ type: "strikethrough" });
321
+ if (prop["w:dstrike"] !== undefined)
322
+ marks.push({ type: "strikethrough", attrs: { double: true } });
323
+ if (prop["w:vertAlign"] !== undefined) {
324
+ const val = prop[":@"]?.["@_w:val"];
325
+ if (val === "superscript")
326
+ marks.push({ type: "superscript" });
327
+ if (val === "subscript")
328
+ marks.push({ type: "subscript" });
329
+ }
330
+ if (prop["w:highlight"] !== undefined) {
331
+ const color = prop[":@"]?.["@_w:val"];
332
+ marks.push({ type: "highlight", attrs: { color } });
333
+ }
334
+ }
335
+ return marks;
336
+ }
337
+ function extractOrderedRunData(rPrChildren) {
338
+ const data = {};
339
+ for (const prop of rPrChildren) {
340
+ if (prop["w:rFonts"] !== undefined) {
341
+ data.font = { ascii: prop[":@"]?.["@_w:ascii"], hAnsi: prop[":@"]?.["@_w:hAnsi"] };
342
+ }
343
+ if (prop["w:sz"] !== undefined)
344
+ data.fontSize = Number(prop[":@"]?.["@_w:val"]);
345
+ if (prop["w:color"] !== undefined)
346
+ data.color = prop[":@"]?.["@_w:val"];
347
+ if (prop["w:rStyle"] !== undefined)
348
+ data.rStyle = prop[":@"]?.["@_w:val"];
349
+ }
350
+ return data;
351
+ }
352
+ // ---------------------------------------------------------------------------
353
+ // Table conversion (ordered format)
354
+ // ---------------------------------------------------------------------------
355
+ function convertOrderedTable(tblChildren) {
356
+ const rows = [];
357
+ for (const child of tblChildren) {
358
+ if (child["w:tr"] !== undefined) {
359
+ const trChildren = child["w:tr"] ?? [];
360
+ const cells = [];
361
+ let isHeader = false;
362
+ for (const trChild of trChildren) {
363
+ if (trChild["w:trPr"] !== undefined) {
364
+ const trPrChildren = trChild["w:trPr"] ?? [];
365
+ if (trPrChildren.some((c) => c["w:tblHeader"] !== undefined))
366
+ isHeader = true;
367
+ }
368
+ if (trChild["w:tc"] !== undefined) {
369
+ const tcChildren = trChild["w:tc"] ?? [];
370
+ const cellBlocks = [];
371
+ let colspan;
372
+ for (const tcChild of tcChildren) {
373
+ if (tcChild["w:tcPr"] !== undefined) {
374
+ const tcPrChildren = tcChild["w:tcPr"] ?? [];
375
+ for (const tcProp of tcPrChildren) {
376
+ if (tcProp["w:gridSpan"] !== undefined) {
377
+ const gs = Number(tcProp[":@"]?.["@_w:val"]);
378
+ if (gs > 1)
379
+ colspan = gs;
380
+ }
381
+ }
382
+ }
383
+ if (tcChild["w:p"] !== undefined) {
384
+ const inlines = convertOrderedRuns(tcChild["w:p"] ?? []);
385
+ if (inlines.length > 0) {
386
+ cellBlocks.push({ type: "paragraph", children: inlines });
387
+ }
388
+ }
389
+ }
390
+ const cell = { type: "tableCell", children: cellBlocks };
391
+ if (colspan)
392
+ cell.colspan = colspan;
393
+ cells.push(cell);
394
+ }
395
+ }
396
+ rows.push({ type: "tableRow", isHeader: isHeader || undefined, children: cells });
397
+ }
398
+ }
399
+ return { type: "table", children: rows };
400
+ }
401
+ // ---------------------------------------------------------------------------
402
+ // Helpers for ordered format
403
+ // ---------------------------------------------------------------------------
404
+ function getOrderedAttr(children, tagName, attrName) {
405
+ const node = children.find((c) => c[tagName] !== undefined);
406
+ if (!node)
407
+ return undefined;
408
+ return node[":@"]?.[`@_${attrName}`];
409
+ }
410
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const RELS = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"word/document.xml\"/>\n</Relationships>";
2
+ export declare const DOC_RELS = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n <Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/>\n <Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\" Target=\"numbering.xml\"/>\n</Relationships>";
3
+ export declare const DEFAULT_STYLES = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<w:styles xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">\n <w:docDefaults>\n <w:rPrDefault><w:rPr>\n <w:rFonts w:ascii=\"Calibri\" w:hAnsi=\"Calibri\"/>\n <w:sz w:val=\"22\"/>\n </w:rPr></w:rPrDefault>\n </w:docDefaults>\n <w:style w:type=\"paragraph\" w:default=\"1\" w:styleId=\"Normal\">\n <w:name w:val=\"Normal\"/>\n </w:style>\n <w:style w:type=\"paragraph\" w:styleId=\"Heading1\">\n <w:name w:val=\"heading 1\"/><w:basedOn w:val=\"Normal\"/>\n <w:pPr><w:outlineLvl w:val=\"0\"/></w:pPr>\n <w:rPr><w:b/><w:sz w:val=\"32\"/></w:rPr>\n </w:style>\n <w:style w:type=\"paragraph\" w:styleId=\"Heading2\">\n <w:name w:val=\"heading 2\"/><w:basedOn w:val=\"Normal\"/>\n <w:pPr><w:outlineLvl w:val=\"1\"/></w:pPr>\n <w:rPr><w:b/><w:sz w:val=\"28\"/></w:rPr>\n </w:style>\n <w:style w:type=\"paragraph\" w:styleId=\"Heading3\">\n <w:name w:val=\"heading 3\"/><w:basedOn w:val=\"Normal\"/>\n <w:pPr><w:outlineLvl w:val=\"2\"/></w:pPr>\n <w:rPr><w:b/><w:sz w:val=\"24\"/></w:rPr>\n </w:style>\n</w:styles>";
4
+ export declare const DEFAULT_NUMBERING = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<w:numbering xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">\n <w:abstractNum w:abstractNumId=\"0\">\n <w:lvl w:ilvl=\"0\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\u2022\"/><w:lvlJc w:val=\"left\"/>\n </w:lvl>\n <w:lvl w:ilvl=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/>\n <w:lvlText w:val=\"\u25E6\"/><w:lvlJc w:val=\"left\"/>\n </w:lvl>\n </w:abstractNum>\n <w:abstractNum w:abstractNumId=\"1\">\n <w:lvl w:ilvl=\"0\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/>\n <w:lvlText w:val=\"%1.\"/><w:lvlJc w:val=\"left\"/>\n </w:lvl>\n <w:lvl w:ilvl=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerLetter\"/>\n <w:lvlText w:val=\"%2)\"/><w:lvlJc w:val=\"left\"/>\n </w:lvl>\n </w:abstractNum>\n <w:num w:numId=\"1\"><w:abstractNumId w:val=\"0\"/></w:num>\n <w:num w:numId=\"2\"><w:abstractNumId w:val=\"1\"/></w:num>\n</w:numbering>";
5
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,oUAGA,CAAC;AAElB,eAAO,MAAM,QAAQ,ocAIJ,CAAC;AAElB,eAAO,MAAM,cAAc,ioCA0Bf,CAAC;AAEb,eAAO,MAAM,iBAAiB,kgCAoBf,CAAC"}
@@ -0,0 +1,61 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Minimal valid OOXML boilerplate templates
3
+ // ---------------------------------------------------------------------------
4
+ export const RELS = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
5
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
6
+ <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
7
+ </Relationships>`;
8
+ export const DOC_RELS = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
9
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
10
+ <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
11
+ <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml"/>
12
+ </Relationships>`;
13
+ export const DEFAULT_STYLES = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
14
+ <w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
15
+ <w:docDefaults>
16
+ <w:rPrDefault><w:rPr>
17
+ <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri"/>
18
+ <w:sz w:val="22"/>
19
+ </w:rPr></w:rPrDefault>
20
+ </w:docDefaults>
21
+ <w:style w:type="paragraph" w:default="1" w:styleId="Normal">
22
+ <w:name w:val="Normal"/>
23
+ </w:style>
24
+ <w:style w:type="paragraph" w:styleId="Heading1">
25
+ <w:name w:val="heading 1"/><w:basedOn w:val="Normal"/>
26
+ <w:pPr><w:outlineLvl w:val="0"/></w:pPr>
27
+ <w:rPr><w:b/><w:sz w:val="32"/></w:rPr>
28
+ </w:style>
29
+ <w:style w:type="paragraph" w:styleId="Heading2">
30
+ <w:name w:val="heading 2"/><w:basedOn w:val="Normal"/>
31
+ <w:pPr><w:outlineLvl w:val="1"/></w:pPr>
32
+ <w:rPr><w:b/><w:sz w:val="28"/></w:rPr>
33
+ </w:style>
34
+ <w:style w:type="paragraph" w:styleId="Heading3">
35
+ <w:name w:val="heading 3"/><w:basedOn w:val="Normal"/>
36
+ <w:pPr><w:outlineLvl w:val="2"/></w:pPr>
37
+ <w:rPr><w:b/><w:sz w:val="24"/></w:rPr>
38
+ </w:style>
39
+ </w:styles>`;
40
+ export const DEFAULT_NUMBERING = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
41
+ <w:numbering xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
42
+ <w:abstractNum w:abstractNumId="0">
43
+ <w:lvl w:ilvl="0"><w:start w:val="1"/><w:numFmt w:val="bullet"/>
44
+ <w:lvlText w:val="\u2022"/><w:lvlJc w:val="left"/>
45
+ </w:lvl>
46
+ <w:lvl w:ilvl="1"><w:start w:val="1"/><w:numFmt w:val="bullet"/>
47
+ <w:lvlText w:val="\u25E6"/><w:lvlJc w:val="left"/>
48
+ </w:lvl>
49
+ </w:abstractNum>
50
+ <w:abstractNum w:abstractNumId="1">
51
+ <w:lvl w:ilvl="0"><w:start w:val="1"/><w:numFmt w:val="decimal"/>
52
+ <w:lvlText w:val="%1."/><w:lvlJc w:val="left"/>
53
+ </w:lvl>
54
+ <w:lvl w:ilvl="1"><w:start w:val="1"/><w:numFmt w:val="lowerLetter"/>
55
+ <w:lvlText w:val="%2)"/><w:lvlJc w:val="left"/>
56
+ </w:lvl>
57
+ </w:abstractNum>
58
+ <w:num w:numId="1"><w:abstractNumId w:val="0"/></w:num>
59
+ <w:num w:numId="2"><w:abstractNumId w:val="1"/></w:num>
60
+ </w:numbering>`;
61
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E,MAAM,CAAC,MAAM,IAAI,GAAG;;;iBAGH,CAAC;AAElB,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;iBAIP,CAAC;AAElB,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;YA0BlB,CAAC;AAEb,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;eAoBlB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Root } from "@otomate/core";
2
+ export interface DocxWriteOptions {
3
+ /** CSS class rules: { className: { property: value } } */
4
+ cssClasses?: Record<string, Record<string, string>>;
5
+ }
6
+ /** Serialize a UDM tree to a .docx buffer. */
7
+ export declare function writeDocx(tree: Root, options?: DocxWriteOptions): Promise<Uint8Array>;
8
+ //# sourceMappingURL=writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,IAAI,EAEL,MAAM,eAAe,CAAC;AAMvB,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAMD,8CAA8C;AAC9C,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,UAAU,CAAC,CA+ErB"}