docxmlater 5.3.3 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,6 +39,7 @@ export declare class DocumentParser {
39
39
  private validateLoadedContent;
40
40
  private parseParagraphWithOrder;
41
41
  private parseOrderedParagraphChildren;
42
+ private parseRevisionFromXml;
42
43
  private parseParagraphFromObject;
43
44
  private parseParagraphPropertiesFromObject;
44
45
  private assembleComplexFields;
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,7 @@ const Field_1 = require("../elements/Field");
38
38
  const Hyperlink_1 = require("../elements/Hyperlink");
39
39
  const ImageRun_1 = require("../elements/ImageRun");
40
40
  const Paragraph_1 = require("../elements/Paragraph");
41
+ const Revision_1 = require("../elements/Revision");
41
42
  const Run_1 = require("../elements/Run");
42
43
  const Section_1 = require("../elements/Section");
43
44
  const StructuredDocumentTag_1 = require("../elements/StructuredDocumentTag");
@@ -131,7 +132,7 @@ class DocumentParser {
131
132
  const parsed = XMLParser_1.XMLParser.parseToObject(elementXml, {
132
133
  trimValues: false,
133
134
  });
134
- const table = await this.parseTableFromObject(parsed["w:tbl"], relationshipManager, zipHandler, imageManager);
135
+ const table = await this.parseTableFromObject(parsed["w:tbl"], relationshipManager, zipHandler, imageManager, elementXml);
135
136
  if (table)
136
137
  bodyElements.push(table);
137
138
  pos = next.pos + elementXml.length;
@@ -298,10 +299,16 @@ class DocumentParser {
298
299
  return;
299
300
  }
300
301
  const paraContent = paraXml.substring(contentStart, contentEnd);
302
+ console.log(`[Revision Debug] Paragraph content (first 500 chars): ${paraContent.substring(0, 500)}`);
303
+ console.log(`[Revision Debug] Full paragraph content length: ${paraContent.length}`);
301
304
  const children = [];
302
305
  let runIndex = 0;
303
306
  let hyperlinkIndex = 0;
304
307
  let fieldIndex = 0;
308
+ let insIndex = 0;
309
+ let delIndex = 0;
310
+ let moveFromIndex = 0;
311
+ let moveToIndex = 0;
305
312
  let searchPos = 0;
306
313
  while (searchPos < paraContent.length) {
307
314
  const tagStart = paraContent.indexOf("<", searchPos);
@@ -332,10 +339,48 @@ class DocumentParser {
332
339
  });
333
340
  searchPos = tagEnd + 1;
334
341
  }
342
+ else if (tagName === "w:ins") {
343
+ children.push({
344
+ type: "w:ins",
345
+ pos: tagStart,
346
+ index: insIndex++,
347
+ });
348
+ searchPos = tagEnd + 1;
349
+ }
350
+ else if (tagName === "w:del") {
351
+ children.push({
352
+ type: "w:del",
353
+ pos: tagStart,
354
+ index: delIndex++,
355
+ });
356
+ searchPos = tagEnd + 1;
357
+ }
358
+ else if (tagName === "w:moveFrom") {
359
+ children.push({
360
+ type: "w:moveFrom",
361
+ pos: tagStart,
362
+ index: moveFromIndex++,
363
+ });
364
+ searchPos = tagEnd + 1;
365
+ }
366
+ else if (tagName === "w:moveTo") {
367
+ children.push({
368
+ type: "w:moveTo",
369
+ pos: tagStart,
370
+ index: moveToIndex++,
371
+ });
372
+ searchPos = tagEnd + 1;
373
+ }
335
374
  else {
336
375
  searchPos = tagEnd + 1;
337
376
  }
338
377
  }
378
+ const insXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:ins");
379
+ const delXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:del");
380
+ const moveFromXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:moveFrom");
381
+ const moveToXmls = XMLParser_1.XMLParser.extractElements(paraContent, "w:moveTo");
382
+ console.log(`[Extraction] ins: ${insXmls.length}, del: ${delXmls.length}, moveFrom: ${moveFromXmls.length}, moveTo: ${moveToXmls.length}`);
383
+ console.log(`[Scanning] total children: ${children.length}, ins markers: ${insIndex}, del markers: ${delIndex}, moveFrom markers: ${moveFromIndex}, moveTo markers: ${moveToIndex}`);
339
384
  for (const child of children) {
340
385
  if (child.type === "w:r") {
341
386
  const runs = pElement["w:r"];
@@ -386,6 +431,107 @@ class DocumentParser {
386
431
  }
387
432
  }
388
433
  }
434
+ else if (child.type === "w:ins") {
435
+ if (child.index < insXmls.length) {
436
+ const revisionXml = insXmls[child.index];
437
+ if (revisionXml) {
438
+ const revision = this.parseRevisionFromXml(revisionXml, "w:ins");
439
+ if (revision) {
440
+ paragraph.addRevision(revision);
441
+ }
442
+ }
443
+ }
444
+ }
445
+ else if (child.type === "w:del") {
446
+ if (child.index < delXmls.length) {
447
+ const revisionXml = delXmls[child.index];
448
+ if (revisionXml) {
449
+ const revision = this.parseRevisionFromXml(revisionXml, "w:del");
450
+ if (revision) {
451
+ paragraph.addRevision(revision);
452
+ }
453
+ }
454
+ }
455
+ }
456
+ else if (child.type === "w:moveFrom") {
457
+ if (child.index < moveFromXmls.length) {
458
+ const revisionXml = moveFromXmls[child.index];
459
+ if (revisionXml) {
460
+ const revision = this.parseRevisionFromXml(revisionXml, "w:moveFrom");
461
+ if (revision) {
462
+ paragraph.addRevision(revision);
463
+ }
464
+ }
465
+ }
466
+ }
467
+ else if (child.type === "w:moveTo") {
468
+ if (child.index < moveToXmls.length) {
469
+ const revisionXml = moveToXmls[child.index];
470
+ if (revisionXml) {
471
+ const revision = this.parseRevisionFromXml(revisionXml, "w:moveTo");
472
+ if (revision) {
473
+ paragraph.addRevision(revision);
474
+ }
475
+ }
476
+ }
477
+ }
478
+ }
479
+ }
480
+ parseRevisionFromXml(revisionXml, tagName) {
481
+ try {
482
+ let revisionType;
483
+ switch (tagName) {
484
+ case "w:ins":
485
+ revisionType = "insert";
486
+ break;
487
+ case "w:del":
488
+ revisionType = "delete";
489
+ break;
490
+ case "w:moveFrom":
491
+ revisionType = "moveFrom";
492
+ break;
493
+ case "w:moveTo":
494
+ revisionType = "moveTo";
495
+ break;
496
+ default:
497
+ return null;
498
+ }
499
+ const idAttr = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:id");
500
+ const author = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:author");
501
+ const dateAttr = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:date");
502
+ const moveId = XMLParser_1.XMLParser.extractAttribute(revisionXml, "w:moveId");
503
+ if (!idAttr || !author) {
504
+ return null;
505
+ }
506
+ const id = parseInt(idAttr, 10);
507
+ const date = dateAttr ? new Date(dateAttr) : new Date();
508
+ const runXmls = XMLParser_1.XMLParser.extractElements(revisionXml, "w:r");
509
+ const runs = [];
510
+ for (const runXml of runXmls) {
511
+ const runObj = XMLParser_1.XMLParser.parseToObject(runXml, { trimValues: false });
512
+ const run = this.parseRunFromObject(runObj["w:r"]);
513
+ if (run) {
514
+ runs.push(run);
515
+ }
516
+ }
517
+ if (runs.length === 0) {
518
+ return null;
519
+ }
520
+ const revision = new Revision_1.Revision({
521
+ id,
522
+ author,
523
+ date,
524
+ type: revisionType,
525
+ content: runs,
526
+ moveId,
527
+ });
528
+ return revision;
529
+ }
530
+ catch (error) {
531
+ logger_1.defaultLogger.warn("[DocumentParser] Failed to parse revision:", error instanceof Error
532
+ ? { message: error.message, stack: error.stack }
533
+ : { error: String(error) });
534
+ return null;
389
535
  }
390
536
  }
391
537
  async parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager) {
@@ -1667,7 +1813,7 @@ class DocumentParser {
1667
1813
  }
1668
1814
  return Object.keys(effects).length > 0 ? effects : undefined;
1669
1815
  }
1670
- async parseTableFromObject(tableObj, relationshipManager, zipHandler, imageManager) {
1816
+ async parseTableFromObject(tableObj, relationshipManager, zipHandler, imageManager, rawTableXml) {
1671
1817
  try {
1672
1818
  const table = new Table_1.Table();
1673
1819
  if (tableObj["w:tblPr"]) {
@@ -1686,8 +1832,14 @@ class DocumentParser {
1686
1832
  }
1687
1833
  const rows = tableObj["w:tr"];
1688
1834
  const rowChildren = Array.isArray(rows) ? rows : rows ? [rows] : [];
1689
- for (const rowObj of rowChildren) {
1690
- const row = await this.parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager);
1835
+ let rowXmls = [];
1836
+ if (rawTableXml) {
1837
+ rowXmls = XMLParser_1.XMLParser.extractElements(rawTableXml, "w:tr");
1838
+ }
1839
+ for (let i = 0; i < rowChildren.length; i++) {
1840
+ const rowObj = rowChildren[i];
1841
+ const rawRowXml = i < rowXmls.length ? rowXmls[i] : undefined;
1842
+ const row = await this.parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager, rawRowXml);
1691
1843
  if (row) {
1692
1844
  table.addRow(row);
1693
1845
  }
@@ -1771,7 +1923,7 @@ class DocumentParser {
1771
1923
  }
1772
1924
  }
1773
1925
  }
1774
- async parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager) {
1926
+ async parseTableRowFromObject(rowObj, relationshipManager, zipHandler, imageManager, rawRowXml) {
1775
1927
  try {
1776
1928
  const row = new TableRow_1.TableRow();
1777
1929
  const trPr = rowObj["w:trPr"];
@@ -1787,8 +1939,14 @@ class DocumentParser {
1787
1939
  }
1788
1940
  const cells = rowObj["w:tc"];
1789
1941
  const cellChildren = Array.isArray(cells) ? cells : cells ? [cells] : [];
1790
- for (const cellObj of cellChildren) {
1791
- const cell = await this.parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager);
1942
+ let cellXmls = [];
1943
+ if (rawRowXml) {
1944
+ cellXmls = XMLParser_1.XMLParser.extractElements(rawRowXml, "w:tc");
1945
+ }
1946
+ for (let i = 0; i < cellChildren.length; i++) {
1947
+ const cellObj = cellChildren[i];
1948
+ const rawCellXml = i < cellXmls.length ? cellXmls[i] : undefined;
1949
+ const cell = await this.parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager, rawCellXml);
1792
1950
  if (cell) {
1793
1951
  row.addCell(cell);
1794
1952
  }
@@ -1912,7 +2070,7 @@ class DocumentParser {
1912
2070
  }
1913
2071
  return Object.keys(borders).length > 0 ? borders : undefined;
1914
2072
  }
1915
- async parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager) {
2073
+ async parseTableCellFromObject(cellObj, relationshipManager, zipHandler, imageManager, rawCellXml) {
1916
2074
  try {
1917
2075
  const cell = new TableCell_1.TableCell();
1918
2076
  const tcPr = cellObj["w:tcPr"];
@@ -2030,8 +2188,20 @@ class DocumentParser {
2030
2188
  : paragraphs
2031
2189
  ? [paragraphs]
2032
2190
  : [];
2033
- for (const paraObj of paraChildren) {
2034
- const paragraph = await this.parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager);
2191
+ let paraXmls = [];
2192
+ if (rawCellXml) {
2193
+ paraXmls = XMLParser_1.XMLParser.extractElements(rawCellXml, "w:p");
2194
+ }
2195
+ for (let i = 0; i < paraChildren.length; i++) {
2196
+ const paraObj = paraChildren[i];
2197
+ const rawParaXml = i < paraXmls.length ? paraXmls[i] : undefined;
2198
+ let paragraph;
2199
+ if (rawParaXml) {
2200
+ paragraph = await this.parseParagraphWithOrder(rawParaXml, relationshipManager, zipHandler, imageManager);
2201
+ }
2202
+ else {
2203
+ paragraph = await this.parseParagraphFromObject(paraObj, relationshipManager, zipHandler, imageManager);
2204
+ }
2035
2205
  if (paragraph) {
2036
2206
  cell.addParagraph(paragraph);
2037
2207
  }