docxmlater 10.0.2 → 10.0.4
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.
- package/README.md +3 -2
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.d.ts +0 -27
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +13 -13
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +23 -19
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +197 -63
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +59 -24
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.d.ts.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +6 -6
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +86 -55
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.d.ts.map +1 -1
- package/dist/core/Relationship.js +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.js +1 -1
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +8 -2
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -2
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +31 -28
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +6 -6
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +5 -5
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +2 -2
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +21 -5
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +2 -2
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +8 -0
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +153 -118
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts +1 -0
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +44 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +1 -3
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +127 -118
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +21 -0
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +20 -8
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +2 -2
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +29 -35
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +2 -2
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +63 -67
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +6 -6
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +65 -47
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +1 -1
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +1 -1
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +11 -11
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +4 -4
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +26 -26
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +87 -95
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +3 -3
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +4 -4
- package/dist/types/list-types.d.ts.map +1 -1
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +7 -7
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +23 -2
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts +1 -0
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +46 -0
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts +0 -28
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +5 -7
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +1 -1
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.d.ts +0 -1
- package/dist/utils/deepClone.d.ts.map +1 -1
- package/dist/utils/deepClone.js +0 -7
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +2 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +3 -3
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -19
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +0 -2
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +10 -0
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +4 -5
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/errors.js.map +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +34 -4
- package/src/__tests__/helper-methods.test.ts +512 -0
- package/src/constants/legacyCompatFlags.ts +138 -0
- package/src/constants/limits.ts +50 -0
- package/src/core/CLAUDE.md +109 -0
- package/src/core/Document.ts +15569 -0
- package/src/core/DocumentContent.ts +467 -0
- package/src/core/DocumentGenerator.ts +1104 -0
- package/src/core/DocumentIdManager.ts +158 -0
- package/src/core/DocumentParser.ts +10140 -0
- package/src/core/DocumentValidator.ts +372 -0
- package/src/core/Relationship.ts +367 -0
- package/src/core/RelationshipManager.ts +428 -0
- package/src/elements/AlternateContent.ts +42 -0
- package/src/elements/Bookmark.ts +210 -0
- package/src/elements/BookmarkManager.ts +250 -0
- package/src/elements/CLAUDE.md +126 -0
- package/src/elements/Comment.ts +359 -0
- package/src/elements/CommentManager.ts +502 -0
- package/src/elements/CommonTypes.ts +549 -0
- package/src/elements/CustomXml.ts +36 -0
- package/src/elements/Endnote.ts +217 -0
- package/src/elements/EndnoteManager.ts +249 -0
- package/src/elements/Field.ts +1233 -0
- package/src/elements/FieldHelpers.ts +333 -0
- package/src/elements/FontManager.ts +339 -0
- package/src/elements/Footer.ts +269 -0
- package/src/elements/Footnote.ts +217 -0
- package/src/elements/FootnoteManager.ts +249 -0
- package/src/elements/Header.ts +269 -0
- package/src/elements/HeaderFooterManager.ts +219 -0
- package/src/elements/Hyperlink.ts +1146 -0
- package/src/elements/Image.ts +1756 -0
- package/src/elements/ImageManager.ts +432 -0
- package/src/elements/ImageRun.ts +59 -0
- package/src/elements/MathElement.ts +65 -0
- package/src/elements/Paragraph.ts +4287 -0
- package/src/elements/PreservedElement.ts +53 -0
- package/src/elements/PropertyChangeTypes.ts +442 -0
- package/src/elements/RangeMarker.ts +400 -0
- package/src/elements/Revision.ts +1217 -0
- package/src/elements/RevisionContent.ts +73 -0
- package/src/elements/RevisionManager.ts +1070 -0
- package/src/elements/Run.ts +3068 -0
- package/src/elements/Section.ts +1421 -0
- package/src/elements/Shape.ts +873 -0
- package/src/elements/StructuredDocumentTag.ts +978 -0
- package/src/elements/Table.ts +2524 -0
- package/src/elements/TableCell.ts +1586 -0
- package/src/elements/TableGridChange.ts +151 -0
- package/src/elements/TableOfContents.ts +691 -0
- package/src/elements/TableOfContentsElement.ts +89 -0
- package/src/elements/TableRow.ts +906 -0
- package/src/elements/TextBox.ts +768 -0
- package/src/formatting/AbstractNumbering.ts +548 -0
- package/src/formatting/CLAUDE.md +74 -0
- package/src/formatting/NumberingInstance.ts +212 -0
- package/src/formatting/NumberingLevel.ts +1006 -0
- package/src/formatting/NumberingManager.ts +827 -0
- package/src/formatting/Style.ts +1833 -0
- package/src/formatting/StylesManager.ts +1005 -0
- package/src/helpers/CleanupHelper.ts +524 -0
- package/src/images/ImageOptimizer.ts +274 -0
- package/src/index.ts +554 -0
- package/src/managers/CLAUDE.md +47 -0
- package/src/managers/DrawingManager.ts +319 -0
- package/src/tracking/DocumentTrackingContext.ts +643 -0
- package/src/tracking/TrackingContext.ts +173 -0
- package/src/types/compatibility-types.ts +49 -0
- package/src/types/formatting.ts +210 -0
- package/src/types/list-types.ts +152 -0
- package/src/types/settings-types.ts +59 -0
- package/src/types/styleConfig.ts +189 -0
- package/src/utils/CLAUDE.md +153 -0
- package/src/utils/ChangelogGenerator.ts +1581 -0
- package/src/utils/CompatibilityUpgrader.ts +237 -0
- package/src/utils/InMemoryRevisionAcceptor.ts +696 -0
- package/src/utils/MoveOperationHelper.ts +238 -0
- package/src/utils/RevisionAwareProcessor.ts +526 -0
- package/src/utils/RevisionWalker.ts +457 -0
- package/src/utils/SelectiveRevisionAcceptor.ts +683 -0
- package/src/utils/ShadingResolver.ts +107 -0
- package/src/utils/acceptRevisions.ts +714 -0
- package/src/utils/cnfStyleDecoder.ts +217 -0
- package/src/utils/corruptionDetection.ts +345 -0
- package/src/utils/dateFormatting.ts +20 -0
- package/src/utils/deepClone.ts +78 -0
- package/src/utils/diagnostics.ts +129 -0
- package/src/utils/errorHandling.ts +80 -0
- package/src/utils/formatting.ts +213 -0
- package/src/utils/list-detection.ts +274 -0
- package/src/utils/logger.ts +404 -0
- package/src/utils/parsingHelpers.ts +190 -0
- package/src/utils/stripTrackedChanges.ts +353 -0
- package/src/utils/textDiff.ts +100 -0
- package/src/utils/units.ts +421 -0
- package/src/utils/validation.ts +542 -0
- package/src/utils/xmlSanitization.ts +182 -0
- package/src/validation/RevisionAutoFixer.ts +542 -0
- package/src/validation/RevisionValidator.ts +460 -0
- package/src/validation/ValidationRules.ts +338 -0
- package/src/validation/index.ts +30 -0
- package/src/xml/CLAUDE.md +65 -0
- package/src/xml/XMLBuilder.ts +871 -0
- package/src/xml/XMLParser.ts +919 -0
- package/src/zip/CLAUDE.md +55 -0
- package/src/zip/ZipHandler.ts +637 -0
- package/src/zip/ZipReader.ts +299 -0
- package/src/zip/ZipWriter.ts +390 -0
- package/src/zip/errors.ts +69 -0
- package/src/zip/types.ts +116 -0
- package/dist/core/ListNormalizer.d.ts +0 -23
- package/dist/core/ListNormalizer.d.ts.map +0 -1
- package/dist/core/ListNormalizer.js +0 -624
- package/dist/core/ListNormalizer.js.map +0 -1
- package/dist/images/index.d.ts +0 -2
- package/dist/images/index.d.ts.map +0 -1
- package/dist/images/index.js +0 -8
- package/dist/images/index.js.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
- package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.js +0 -360
- package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
- package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
- package/dist/ms-doc/fib/FIB.d.ts +0 -18
- package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
- package/dist/ms-doc/fib/FIB.js +0 -342
- package/dist/ms-doc/fib/FIB.js.map +0 -1
- package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
- package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
- package/dist/ms-doc/fields/FieldParser.js +0 -266
- package/dist/ms-doc/fields/FieldParser.js.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
- package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.js +0 -233
- package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
- package/dist/ms-doc/index.d.ts +0 -20
- package/dist/ms-doc/index.d.ts.map +0 -1
- package/dist/ms-doc/index.js +0 -59
- package/dist/ms-doc/index.js.map +0 -1
- package/dist/ms-doc/properties/SPRM.d.ts +0 -210
- package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
- package/dist/ms-doc/properties/SPRM.js +0 -633
- package/dist/ms-doc/properties/SPRM.js.map +0 -1
- package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
- package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
- package/dist/ms-doc/sections/SectionParser.js +0 -214
- package/dist/ms-doc/sections/SectionParser.js.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
- package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.js +0 -268
- package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
- package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
- package/dist/ms-doc/tables/TableParser.d.ts +0 -29
- package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
- package/dist/ms-doc/tables/TableParser.js +0 -176
- package/dist/ms-doc/tables/TableParser.js.map +0 -1
- package/dist/ms-doc/text/PieceTable.d.ts +0 -21
- package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
- package/dist/ms-doc/text/PieceTable.js +0 -171
- package/dist/ms-doc/text/PieceTable.js.map +0 -1
- package/dist/ms-doc/types/Constants.d.ts +0 -99
- package/dist/ms-doc/types/Constants.d.ts.map +0 -1
- package/dist/ms-doc/types/Constants.js +0 -102
- package/dist/ms-doc/types/Constants.js.map +0 -1
- package/dist/ms-doc/types/DocTypes.d.ts +0 -368
- package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
- package/dist/ms-doc/types/DocTypes.js +0 -3
- package/dist/ms-doc/types/DocTypes.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -3
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -6
- package/dist/tracking/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevisionValidator.js","sourceRoot":"","sources":["../../src/validation/RevisionValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RevisionValidator.js","sourceRoot":"","sources":["../../src/validation/RevisionValidator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RevisionValidator - Validates document revisions for ECMA-376 compliance\r\n *\r\n * Checks tracked changes against OOXML specifications to prevent\r\n * document corruption and ensure compatibility with Microsoft Word.\r\n *\r\n * @module RevisionValidator\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport type { Revision } from '../elements/Revision';\r\nimport {\r\n REVISION_RULES,\r\n ValidationIssue,\r\n ValidationOptions,\r\n ValidationResult,\r\n createIssueFromRule,\r\n} from './ValidationRules';\r\n\r\n/**\r\n * Validates document revisions for ECMA-376 compliance.\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = RevisionValidator.validate(doc);\r\n * if (!result.valid) {\r\n * console.error(`Found ${result.errors.length} errors`);\r\n * for (const error of result.errors) {\r\n * console.error(` ${error.code}: ${error.message}`);\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport class RevisionValidator {\r\n /**\r\n * Validates all revisions in a document.\r\n *\r\n * @param doc - Document to validate\r\n * @param options - Validation options\r\n * @returns Validation result with all issues found\r\n */\r\n static validate(doc: Document, options?: ValidationOptions): ValidationResult {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return this.createEmptyResult();\r\n }\r\n\r\n const revisions = revisionManager.getAllRevisions();\r\n const allIssues: ValidationIssue[] = [];\r\n\r\n // Skip certain rules if lenient mode\r\n const skipRules = new Set(options?.skipRules || []);\r\n if (options?.level === 'lenient') {\r\n // In lenient mode, skip info rules\r\n skipRules.add('REV201');\r\n skipRules.add('REV202');\r\n }\r\n\r\n // Run all validations\r\n if (!skipRules.has('REV001')) {\r\n allIssues.push(...this.validateRevisionIds(revisions));\r\n }\r\n if (!skipRules.has('REV003') && !skipRules.has('REV004')) {\r\n allIssues.push(...this.validateMovePairs(revisions));\r\n }\r\n if (!skipRules.has('REV002')) {\r\n allIssues.push(...this.validateAuthors(revisions));\r\n }\r\n if (!skipRules.has('REV101') && !skipRules.has('REV102')) {\r\n allIssues.push(...this.validateDates(revisions));\r\n }\r\n if (!skipRules.has('REV103')) {\r\n allIssues.push(...this.validateContent(revisions));\r\n }\r\n if (!skipRules.has('REV104') && options?.level === 'strict') {\r\n allIssues.push(...this.validateSequentialIds(revisions));\r\n }\r\n if (!skipRules.has('REV201')) {\r\n allIssues.push(...this.validateRevisionCount(revisions));\r\n }\r\n if (!skipRules.has('REV202')) {\r\n allIssues.push(...this.validateRevisionDates(revisions));\r\n }\r\n\r\n // Apply max issues limit\r\n const limitedIssues = options?.maxIssues\r\n ? allIssues.slice(0, options.maxIssues)\r\n : allIssues;\r\n\r\n // Separate by severity\r\n let errors = limitedIssues.filter(i => i.severity === 'error');\r\n let warnings = limitedIssues.filter(i => i.severity === 'warning');\r\n const infos = limitedIssues.filter(i => i.severity === 'info');\r\n const autoFixable = limitedIssues.filter(i => i.autoFixable);\r\n\r\n // Handle warningsAsErrors option\r\n if (options?.warningsAsErrors) {\r\n errors = [...errors, ...warnings];\r\n warnings = [];\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n infos,\r\n autoFixable,\r\n summary: {\r\n totalIssues: limitedIssues.length,\r\n errorCount: errors.length,\r\n warningCount: warnings.length,\r\n infoCount: infos.length,\r\n autoFixableCount: autoFixable.length,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Creates an empty validation result (for documents with no revisions).\r\n */\r\n private static createEmptyResult(): ValidationResult {\r\n return {\r\n valid: true,\r\n errors: [],\r\n warnings: [],\r\n infos: [],\r\n autoFixable: [],\r\n summary: {\r\n totalIssues: 0,\r\n errorCount: 0,\r\n warningCount: 0,\r\n infoCount: 0,\r\n autoFixableCount: 0,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Validates revision ID uniqueness.\r\n *\r\n * Per ECMA-376, revision IDs must be unique within a document.\r\n * Duplicate IDs can cause Word to reject the document.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for duplicate IDs\r\n */\r\n static validateRevisionIds(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n const seenIds = new Map<number, number[]>(); // id -> indices\r\n\r\n revisions.forEach((rev, index) => {\r\n const id = rev.getId();\r\n if (!seenIds.has(id)) {\r\n seenIds.set(id, []);\r\n }\r\n seenIds.get(id)!.push(index);\r\n });\r\n\r\n for (const [id, indices] of seenIds) {\r\n if (indices.length > 1) {\r\n const rule = REVISION_RULES.DUPLICATE_ID;\r\n if (rule) {\r\n issues.push(createIssueFromRule(\r\n rule,\r\n { revisionId: id },\r\n `Duplicate revision ID ${id} found at ${indices.length} locations (indices: ${indices.join(', ')})`\r\n ));\r\n }\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates move operation pairs.\r\n *\r\n * Each moveFrom must have a matching moveTo with the same moveId,\r\n * and vice versa. Orphaned move markers can cause document corruption.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for orphaned move operations\r\n */\r\n static validateMovePairs(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n const moveFromIds = new Map<string, Revision>();\r\n const moveToIds = new Map<string, Revision>();\r\n\r\n for (const rev of revisions) {\r\n const moveId = rev.getMoveId();\r\n if (!moveId) continue;\r\n\r\n if (rev.getType() === 'moveFrom') {\r\n moveFromIds.set(moveId, rev);\r\n } else if (rev.getType() === 'moveTo') {\r\n moveToIds.set(moveId, rev);\r\n }\r\n }\r\n\r\n // Check for orphaned moveFrom\r\n for (const [moveId, rev] of moveFromIds) {\r\n if (!moveToIds.has(moveId)) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.ORPHANED_MOVE_FROM,\r\n { revisionId: rev.getId() },\r\n `moveFrom with moveId=\"${moveId}\" has no matching moveTo`\r\n ));\r\n }\r\n }\r\n\r\n // Check for orphaned moveTo\r\n for (const [moveId, rev] of moveToIds) {\r\n if (!moveFromIds.has(moveId)) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.ORPHANED_MOVE_TO,\r\n { revisionId: rev.getId() },\r\n `moveTo with moveId=\"${moveId}\" has no matching moveFrom`\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates author presence.\r\n *\r\n * Per ECMA-376, the author attribute is required for revisions.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for missing authors\r\n */\r\n static validateAuthors(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n for (const rev of revisions) {\r\n const author = rev.getAuthor();\r\n if (!author || author.trim() === '') {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.MISSING_AUTHOR,\r\n { revisionId: rev.getId() }\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates date presence and format.\r\n *\r\n * Per ECMA-376, revision dates should be in ISO 8601 format.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for date problems\r\n */\r\n static validateDates(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n for (const rev of revisions) {\r\n const date = rev.getDate();\r\n\r\n if (!date) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.MISSING_DATE,\r\n { revisionId: rev.getId() }\r\n ));\r\n } else if (isNaN(date.getTime())) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.INVALID_DATE_FORMAT,\r\n { revisionId: rev.getId() },\r\n `Revision ${rev.getId()} has an invalid date`\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates revision content.\r\n *\r\n * Revisions (except property changes) should have content.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for empty revisions\r\n */\r\n static validateContent(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n const propertyChangeTypes = [\r\n 'runPropertiesChange',\r\n 'paragraphPropertiesChange',\r\n 'tablePropertiesChange',\r\n 'tableExceptionPropertiesChange',\r\n 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange',\r\n 'sectionPropertiesChange',\r\n 'numberingChange',\r\n ];\r\n\r\n for (const rev of revisions) {\r\n const type = rev.getType();\r\n\r\n // Property changes don't need text content\r\n if (propertyChangeTypes.includes(type)) {\r\n continue;\r\n }\r\n\r\n const runs = rev.getRuns();\r\n const hasContent = runs.length > 0 && runs.some(r => r.getText().length > 0);\r\n\r\n if (!hasContent) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.EMPTY_REVISION,\r\n { revisionId: rev.getId() },\r\n `Revision ${rev.getId()} (type: ${type}) has no content`\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates that revision IDs are sequential.\r\n *\r\n * While not strictly required, sequential IDs are best practice.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for non-sequential IDs\r\n */\r\n static validateSequentialIds(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n if (revisions.length === 0) return issues;\r\n\r\n // Use Set for O(n) lookup instead of sorting\r\n const idSet = new Set(revisions.map(r => r.getId()));\r\n const ids = Array.from(idSet);\r\n\r\n if (ids.length === 0) return issues;\r\n\r\n const minId = Math.min(...ids);\r\n const maxId = Math.max(...ids);\r\n\r\n // Find actual missing IDs in the range\r\n const missingIds: number[] = [];\r\n for (let i = minId; i <= maxId; i++) {\r\n if (!idSet.has(i)) {\r\n missingIds.push(i);\r\n }\r\n }\r\n\r\n if (missingIds.length > 0) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.NON_SEQUENTIAL_IDS,\r\n undefined,\r\n `Revision IDs are not sequential. Missing IDs: ${missingIds.slice(0, 10).join(', ')}${missingIds.length > 10 ? ` (and ${missingIds.length - 10} more)` : ''}`\r\n ));\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates revision count (info-level).\r\n *\r\n * Large numbers of revisions can slow down Word.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for large revision counts\r\n */\r\n static validateRevisionCount(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n if (revisions.length > 1000) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.LARGE_REVISION_COUNT,\r\n undefined,\r\n `Document has ${revisions.length} revisions (>1000). Consider accepting or rejecting some.`\r\n ));\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates revision dates for staleness (info-level).\r\n *\r\n * Very old revisions may indicate stale tracked changes.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for old revisions\r\n */\r\n static validateRevisionDates(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n const oneYearAgo = new Date();\r\n oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\r\n\r\n let oldCount = 0;\r\n for (const rev of revisions) {\r\n const date = rev.getDate();\r\n if (date && date < oneYearAgo) {\r\n oldCount++;\r\n }\r\n }\r\n\r\n if (oldCount > 0) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.OLD_REVISION_DATE,\r\n undefined,\r\n `${oldCount} revision(s) are older than 1 year. Consider reviewing and accepting.`\r\n ));\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Quick check if a document has any validation errors.\r\n *\r\n * @param doc - Document to check\r\n * @returns True if the document has no errors\r\n */\r\n static isValid(doc: Document): boolean {\r\n const result = this.validate(doc, { level: 'normal' });\r\n return result.valid;\r\n }\r\n\r\n /**\r\n * Get a summary string of validation results.\r\n *\r\n * @param result - Validation result\r\n * @returns Human-readable summary string\r\n */\r\n static formatSummary(result: ValidationResult): string {\r\n const lines: string[] = [];\r\n\r\n lines.push(`Validation ${result.valid ? 'PASSED' : 'FAILED'}`);\r\n lines.push(`Total issues: ${result.summary.totalIssues}`);\r\n\r\n if (result.summary.errorCount > 0) {\r\n lines.push(` Errors: ${result.summary.errorCount}`);\r\n }\r\n if (result.summary.warningCount > 0) {\r\n lines.push(` Warnings: ${result.summary.warningCount}`);\r\n }\r\n if (result.summary.infoCount > 0) {\r\n lines.push(` Info: ${result.summary.infoCount}`);\r\n }\r\n\r\n if (result.summary.autoFixableCount > 0) {\r\n lines.push(` Auto-fixable: ${result.summary.autoFixableCount}`);\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationRules.js","sourceRoot":"","sources":["../../src/validation/ValidationRules.ts"],"names":[],"mappings":";;;AAuSA,kDAaC;AAQD,sCAEC;AAQD,gDAEC;AAOD,kDAEC;AAtOY,QAAA,cAAc,GAAG;IAK5B,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,OAA6B;QACvC,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,4CAA4C;KAC3D;IAED,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,OAA6B;QACvC,OAAO,EAAE,4CAA4C;QACrD,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,sDAAsD;KACrE;IAED,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,OAA6B;QACvC,OAAO,EAAE,0CAA0C;QACnD,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,kCAAkC;KACjD;IAED,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,OAA6B;QACvC,OAAO,EAAE,0CAA0C;QACnD,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,gCAAgC;KAC/C;IAMD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAA+B;QACzC,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,kDAAkD;KACjE;IAED,mBAAmB,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAA+B;QACzC,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,iCAAiC;KAChD;IAED,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAA+B;QACzC,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,uBAAuB;KACtC;IAED,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,SAA+B;QACzC,OAAO,EAAE,qDAAqD;QAC9D,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,yCAAyC;KACxD;IAMD,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,MAA4B;QACtC,OAAO,EAAE,kDAAkD;QAC3D,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,gDAAgD;KAC/D;IAED,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,MAA4B;QACtC,OAAO,EAAE,qCAAqC;QAC9C,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,gDAAgD;KAC/D;CACF,CAAC;AAgGF,SAAgB,mBAAmB,CACjC,IAAoB,EACpB,QAAsC,EACtC,aAAsB;IAEtB,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC,OAAO;QACtC,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC;AACJ,CAAC;AAQD,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACxE,CAAC;AAQD,SAAgB,kBAAkB,CAAC,QAA4B;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAClF,CAAC;AAOD,SAAgB,mBAAmB;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"ValidationRules.js","sourceRoot":"","sources":["../../src/validation/ValidationRules.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ValidationRules - Defines validation rules for ECMA-376 revision compliance\r\n *\r\n * These rules ensure tracked changes in documents are compliant with the\r\n * OOXML specification and will not cause corruption when opened in Word.\r\n *\r\n * **Auto-Fix Execution Order:**\r\n *\r\n * When auto-fixing multiple issues, the order matters. Fixing some issues\r\n * may affect the presence or nature of other issues. The recommended\r\n * execution order is:\r\n *\r\n * 1. **REV001 (Duplicate IDs)** - Fix first, as other fixes may reference IDs\r\n * 2. **REV002 (Missing Author)** - Can be fixed independently\r\n * 3. **REV003/REV004 (Orphaned Moves)** - Fix after ID issues are resolved\r\n * - Removing orphaned moves changes revision count\r\n * - Must be fixed as a pair (check both moveFrom and moveTo)\r\n * 4. **REV103 (Empty Revisions)** - Fix after move fixes (moves might create empties)\r\n * 5. **REV104 (Non-Sequential IDs)** - Fix LAST, after all additions/removals\r\n * 6. **REV101/REV102 (Date Issues)** - Can be fixed at any time\r\n *\r\n * **Dependency Graph:**\r\n * ```\r\n * REV001 ──┐\r\n * ├──► REV003/REV004 ──► REV103 ──► REV104\r\n * REV002 ──┘\r\n *\r\n * REV101, REV102 (independent - fix anytime)\r\n * REV201, REV202 (info only - not auto-fixable)\r\n * ```\r\n *\r\n * **Example Auto-Fix Sequence:**\r\n * ```typescript\r\n * // Correct order\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV001')); // First: duplicate IDs\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV002')); // Second: missing authors\r\n * autoFixer.fix(issues.filter(i => ['REV003', 'REV004'].includes(i.code))); // Third: orphaned moves\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV103')); // Fourth: empty revisions\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV104')); // Last: sequential IDs\r\n * ```\r\n *\r\n * @module ValidationRules\r\n */\r\n\r\n/**\r\n * Severity level for validation issues.\r\n */\r\nexport type ValidationSeverity = 'error' | 'warning' | 'info';\r\n\r\n/**\r\n * Represents a single validation issue found in a document.\r\n */\r\nexport interface ValidationIssue {\r\n /** Rule code (e.g., 'REV001') */\r\n code: string;\r\n /** Severity level */\r\n severity: ValidationSeverity;\r\n /** Human-readable message describing the issue */\r\n message: string;\r\n /** Location of the issue within the document */\r\n location?: {\r\n paragraphIndex?: number;\r\n runIndex?: number;\r\n revisionId?: number;\r\n element?: string;\r\n };\r\n /** Whether this issue can be automatically fixed */\r\n autoFixable: boolean;\r\n /** Suggested fix description */\r\n suggestedFix?: string;\r\n}\r\n\r\n/**\r\n * Rule definition for validation.\r\n */\r\nexport interface ValidationRule {\r\n /** Unique rule code */\r\n code: string;\r\n /** Severity level */\r\n severity: ValidationSeverity;\r\n /** Default message template */\r\n message: string;\r\n /** Whether this rule can be auto-fixed */\r\n autoFixable: boolean;\r\n /** Default suggested fix */\r\n suggestedFix?: string;\r\n}\r\n\r\n/**\r\n * Revision validation rules per ECMA-376.\r\n *\r\n * Error-level rules (will cause Word to reject document):\r\n * - REV001: Duplicate revision ID\r\n * - REV002: Missing required author attribute\r\n * - REV003: Orphaned moveFrom (no matching moveTo)\r\n * - REV004: Orphaned moveTo (no matching moveFrom)\r\n *\r\n * Warning-level rules (document opens but may have issues):\r\n * - REV101: Missing date attribute\r\n * - REV102: Invalid date format (not ISO 8601)\r\n * - REV103: Empty revision content\r\n * - REV104: Non-sequential revision IDs\r\n *\r\n * Info-level rules (best practices):\r\n * - REV201: Large number of revisions (>1000)\r\n * - REV202: Very old revision date\r\n */\r\nexport const REVISION_RULES = {\r\n // ============================================================\r\n // Error-level rules (cause Word to reject document)\r\n // ============================================================\r\n\r\n DUPLICATE_ID: {\r\n code: 'REV001',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'Duplicate revision ID found',\r\n autoFixable: true,\r\n suggestedFix: 'Reassign unique IDs to duplicate revisions',\r\n },\r\n\r\n MISSING_AUTHOR: {\r\n code: 'REV002',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'Revision missing required author attribute',\r\n autoFixable: true,\r\n suggestedFix: 'Set default author for revisions with missing author',\r\n },\r\n\r\n ORPHANED_MOVE_FROM: {\r\n code: 'REV003',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'moveFrom element without matching moveTo',\r\n autoFixable: true,\r\n suggestedFix: 'Remove orphaned moveFrom element',\r\n },\r\n\r\n ORPHANED_MOVE_TO: {\r\n code: 'REV004',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'moveTo element without matching moveFrom',\r\n autoFixable: true,\r\n suggestedFix: 'Remove orphaned moveTo element',\r\n },\r\n\r\n // ============================================================\r\n // Warning-level rules (document opens but may have issues)\r\n // ============================================================\r\n\r\n MISSING_DATE: {\r\n code: 'REV101',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Revision missing date attribute',\r\n autoFixable: true,\r\n suggestedFix: 'Set current date for revisions with missing date',\r\n },\r\n\r\n INVALID_DATE_FORMAT: {\r\n code: 'REV102',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Date not in ISO 8601 format',\r\n autoFixable: true,\r\n suggestedFix: 'Convert date to ISO 8601 format',\r\n },\r\n\r\n EMPTY_REVISION: {\r\n code: 'REV103',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Revision has no content',\r\n autoFixable: true,\r\n suggestedFix: 'Remove empty revision',\r\n },\r\n\r\n NON_SEQUENTIAL_IDS: {\r\n code: 'REV104',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Revision IDs are not sequential (Word may renumber)',\r\n autoFixable: true,\r\n suggestedFix: 'Reassign sequential IDs starting from 0',\r\n },\r\n\r\n // ============================================================\r\n // Info-level rules (best practices)\r\n // ============================================================\r\n\r\n LARGE_REVISION_COUNT: {\r\n code: 'REV201',\r\n severity: 'info' as ValidationSeverity,\r\n message: 'Document has a large number of revisions (>1000)',\r\n autoFixable: false,\r\n suggestedFix: 'Consider accepting or rejecting some revisions',\r\n },\r\n\r\n OLD_REVISION_DATE: {\r\n code: 'REV202',\r\n severity: 'info' as ValidationSeverity,\r\n message: 'Revision date is very old (>1 year)',\r\n autoFixable: false,\r\n suggestedFix: 'Consider reviewing and accepting old revisions',\r\n },\r\n};\r\n\r\n/**\r\n * Options for validation behavior.\r\n */\r\nexport interface ValidationOptions {\r\n /** Validation strictness level */\r\n level?: 'strict' | 'normal' | 'lenient';\r\n /** Skip specific rules by code */\r\n skipRules?: string[];\r\n /** Treat warnings as errors */\r\n warningsAsErrors?: boolean;\r\n /** Maximum number of issues to report (default: unlimited) */\r\n maxIssues?: number;\r\n}\r\n\r\n/**\r\n * Options for auto-fix behavior.\r\n */\r\nexport interface AutoFixOptions {\r\n /** Only fix specific rules */\r\n onlyRules?: string[];\r\n /** Skip specific rules */\r\n skipRules?: string[];\r\n /** Default author for missing authors */\r\n defaultAuthor?: string;\r\n /** Dry run mode - report only, don't modify */\r\n dryRun?: boolean;\r\n /** Log each fix action */\r\n verbose?: boolean;\r\n}\r\n\r\n/**\r\n * Result of validation.\r\n */\r\nexport interface ValidationResult {\r\n /** Whether the document passed validation */\r\n valid: boolean;\r\n /** Error-level issues */\r\n errors: ValidationIssue[];\r\n /** Warning-level issues */\r\n warnings: ValidationIssue[];\r\n /** Info-level issues */\r\n infos: ValidationIssue[];\r\n /** Issues that can be automatically fixed */\r\n autoFixable: ValidationIssue[];\r\n /** Summary of validation */\r\n summary: {\r\n totalIssues: number;\r\n errorCount: number;\r\n warningCount: number;\r\n infoCount: number;\r\n autoFixableCount: number;\r\n };\r\n}\r\n\r\n/**\r\n * Represents a single fix action performed during auto-fix.\r\n */\r\nexport interface FixAction {\r\n /** The issue that was fixed */\r\n issue: ValidationIssue;\r\n /** Description of the action taken */\r\n action: string;\r\n /** Value before the fix */\r\n before: unknown;\r\n /** Value after the fix */\r\n after: unknown;\r\n /** Whether the fix was successful */\r\n success: boolean;\r\n}\r\n\r\n/**\r\n * Result of auto-fix operation.\r\n */\r\nexport interface AutoFixResult {\r\n /** Whether all issues were fixed */\r\n allFixed: boolean;\r\n /** Number of issues that were fixed */\r\n issuesFixed: number;\r\n /** Number of issues that remain unfixed */\r\n issuesRemaining: number;\r\n /** Individual fix actions taken */\r\n actions: FixAction[];\r\n /** Any errors that occurred during fixing */\r\n errors: string[];\r\n}\r\n\r\n/**\r\n * Helper function to create a validation issue from a rule.\r\n *\r\n * @param rule - Rule definition\r\n * @param location - Optional location information\r\n * @param customMessage - Optional custom message to override default\r\n * @returns ValidationIssue\r\n */\r\nexport function createIssueFromRule(\r\n rule: ValidationRule,\r\n location?: ValidationIssue['location'],\r\n customMessage?: string\r\n): ValidationIssue {\r\n return {\r\n code: rule.code,\r\n severity: rule.severity,\r\n message: customMessage || rule.message,\r\n location,\r\n autoFixable: rule.autoFixable,\r\n suggestedFix: rule.suggestedFix,\r\n };\r\n}\r\n\r\n/**\r\n * Get a rule by its code.\r\n *\r\n * @param code - Rule code (e.g., 'REV001')\r\n * @returns ValidationRule or undefined\r\n */\r\nexport function getRuleByCode(code: string): ValidationRule | undefined {\r\n return Object.values(REVISION_RULES).find(rule => rule.code === code);\r\n}\r\n\r\n/**\r\n * Get all rules of a specific severity.\r\n *\r\n * @param severity - Severity level to filter by\r\n * @returns Array of rules\r\n */\r\nexport function getRulesBySeverity(severity: ValidationSeverity): ValidationRule[] {\r\n return Object.values(REVISION_RULES).filter(rule => rule.severity === severity);\r\n}\r\n\r\n/**\r\n * Get all auto-fixable rules.\r\n *\r\n * @returns Array of rules that can be auto-fixed\r\n */\r\nexport function getAutoFixableRules(): ValidationRule[] {\r\n return Object.values(REVISION_RULES).filter(rule => rule.autoFixable);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":";;;AASA,qDAc2B;AAbzB,iHAAA,cAAc,OAAA;AASd,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AAIrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAG1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":";;;AASA,qDAc2B;AAbzB,iHAAA,cAAc,OAAA;AASd,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AAIrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAG1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA","sourcesContent":["/**\r\n * Validation Module\r\n *\r\n * Provides validation and auto-fix capabilities for ECMA-376 revision compliance.\r\n *\r\n * @module validation\r\n */\r\n\r\n// Rule definitions and types\r\nexport {\r\n REVISION_RULES,\r\n ValidationSeverity,\r\n ValidationIssue,\r\n ValidationRule,\r\n ValidationOptions,\r\n AutoFixOptions,\r\n ValidationResult,\r\n FixAction,\r\n AutoFixResult,\r\n createIssueFromRule,\r\n getRuleByCode,\r\n getRulesBySeverity,\r\n getAutoFixableRules,\r\n} from './ValidationRules';\r\n\r\n// Validator class\r\nexport { RevisionValidator } from './RevisionValidator';\r\n\r\n// Auto-fixer class\r\nexport { RevisionAutoFixer } from './RevisionAutoFixer';\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLBuilder.d.ts","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"XMLBuilder.d.ts","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/xml/XMLBuilder.js
CHANGED
|
@@ -294,6 +294,16 @@ class XMLBuilder {
|
|
|
294
294
|
allNamespaces["mc:Ignorable"] = ignorable.join(" ");
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
|
+
else {
|
|
298
|
+
const defaults = XMLBuilder.createNamespaces();
|
|
299
|
+
const prefixes = allNamespaces["mc:Ignorable"].split(/\s+/);
|
|
300
|
+
for (const prefix of prefixes) {
|
|
301
|
+
const nsKey = `xmlns:${prefix}`;
|
|
302
|
+
if (!allNamespaces[nsKey] && defaults[nsKey]) {
|
|
303
|
+
allNamespaces[nsKey] = defaults[nsKey];
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
297
307
|
const documentChildren = [];
|
|
298
308
|
if (preBodyContent) {
|
|
299
309
|
documentChildren.push(...preBodyContent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLBuilder.js","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"XMLBuilder.js","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * XMLBuilder - Utility for building XML content\r\n * Provides a simple fluent API for generating WordprocessingML XML\r\n */\r\n\r\nimport { removeInvalidXmlChars } from \"../utils/xmlSanitization\";\r\nimport type { ShadingConfig } from \"../elements/CommonTypes\";\r\nimport { buildShadingAttributes } from \"../elements/CommonTypes\";\r\n\r\n/** Represents a parsed XML object from XMLParser.parseToObject() */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- parsed XML has dynamic keys and recursive structure\r\ntype ParsedXmlObject = Record<string, any>;\r\n\r\n/**\r\n * Represents an XML element with attributes and children\r\n */\r\nexport interface XMLElement {\r\n name: string;\r\n attributes?: Record<string, string | number | boolean | undefined>;\r\n children?: (XMLElement | string)[];\r\n selfClosing?: boolean;\r\n /** Raw XML content to include without escaping (used for VML passthrough) */\r\n rawXml?: string;\r\n}\r\n\r\n/**\r\n * XML Builder for creating WordprocessingML XML\r\n */\r\nexport class XMLBuilder {\r\n private elements: (XMLElement | string)[] = [];\r\n\r\n /**\r\n * Elements that must NEVER be self-closing in Word XML per ECMA-376.\r\n * Self-closing these elements causes Word to not parse correctly or lose content.\r\n */\r\n private static readonly CANNOT_SELF_CLOSE = [\r\n \"w:t\",\r\n \"w:r\",\r\n \"w:p\",\r\n \"w:tbl\",\r\n \"w:tr\",\r\n \"w:tc\",\r\n \"w:body\",\r\n \"w:document\",\r\n \"w:hyperlink\",\r\n \"w:sdt\",\r\n \"w:sdtContent\",\r\n \"w:sdtPr\",\r\n \"w:pPr\",\r\n \"w:rPr\",\r\n \"w:sectPr\",\r\n \"w:del\", // Deletion revisions - container element, must have closing tag\r\n \"w:ins\", // Insertion revisions - container element, must have closing tag\r\n \"w:moveFrom\", // Move source markers - container element\r\n \"w:moveTo\", // Move destination markers - container element\r\n // Note: w:bookmarkStart and w:bookmarkEnd MUST be self-closing per ECMA-376\r\n ];\r\n\r\n /**\r\n * Adds an element to the builder\r\n * @param name - Element name (with namespace prefix if needed)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements or text\r\n * @returns This builder for chaining\r\n */\r\n element(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLBuilder {\r\n this.elements.push({\r\n name,\r\n attributes,\r\n children,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a self-closing element\r\n * @param name - Element name\r\n * @param attributes - Element attributes\r\n * @returns This builder for chaining\r\n * @throws {Error} If attempting to create self-closing w:t element (not allowed per ECMA-376)\r\n */\r\n selfClosingElement(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLBuilder {\r\n // Validation: Text elements (<w:t>) cannot be self-closing per ECMA-376\r\n // Self-closing <w:t/> elements cause Word to fail opening the document\r\n if (name === 'w:t' || name === 't') {\r\n throw new Error(\r\n 'Text elements (<w:t>) cannot be self-closing per ECMA-376. ' +\r\n 'Use element() with empty text content instead: XMLBuilder.w(\"t\", attrs, [\"\"])'\r\n );\r\n }\r\n\r\n this.elements.push({\r\n name,\r\n attributes,\r\n selfClosing: true,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds text content\r\n * @param text - Text to add\r\n * @returns This builder for chaining\r\n */\r\n text(text: string): XMLBuilder {\r\n this.elements.push(text);\r\n return this;\r\n }\r\n\r\n /**\r\n * Builds the XML string\r\n * @param includeDeclaration - Whether to include XML declaration\r\n * @returns Generated XML string\r\n */\r\n build(includeDeclaration = false): string {\r\n let xml = \"\";\r\n\r\n if (includeDeclaration) {\r\n xml += '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\r\n }\r\n\r\n xml += this.elementsToString(this.elements);\r\n return xml;\r\n }\r\n\r\n /**\r\n * Converts elements to XML string\r\n */\r\n private elementsToString(elements: (XMLElement | string)[]): string {\r\n let xml = \"\";\r\n\r\n for (const element of elements) {\r\n if (typeof element === \"string\") {\r\n xml += this.escapeXml(element);\r\n } else {\r\n xml += this.elementToString(element);\r\n }\r\n }\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Converts a single element to XML string\r\n */\r\n private elementToString(element: XMLElement): string {\r\n // Special case: raw XML passthrough (no wrapper element)\r\n // Used for VML and other legacy content that must be preserved exactly\r\n if (element.name === \"__rawXml\" && element.rawXml) {\r\n return element.rawXml;\r\n }\r\n\r\n let xml = `<${element.name}`;\r\n\r\n // Add attributes\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n if (value !== undefined && value !== null && value !== false) {\r\n // Handle boolean attributes\r\n const attrValue = value === true ? key : String(value);\r\n // Use escapeXmlAttribute for attribute values (Issue #8)\r\n xml += ` ${key}=\"${XMLBuilder.escapeXmlAttribute(attrValue)}\"`;\r\n }\r\n }\r\n }\r\n\r\n // Self-closing element validation\r\n if (element.selfClosing) {\r\n if (XMLBuilder.CANNOT_SELF_CLOSE.includes(element.name)) {\r\n // Instead of throwing, force open/close tags for safety\r\n xml += \"></\" + element.name + \">\";\r\n return xml;\r\n }\r\n xml += \"/>\";\r\n return xml;\r\n }\r\n\r\n xml += \">\";\r\n\r\n // Add raw XML content if present (for VML passthrough)\r\n if (element.rawXml) {\r\n xml += element.rawXml;\r\n }\r\n\r\n // Add children\r\n if (element.children && element.children.length > 0) {\r\n xml += this.elementsToString(element.children);\r\n }\r\n\r\n xml += `</${element.name}>`;\r\n return xml;\r\n }\r\n\r\n /**\r\n * Escapes special XML characters for text content\r\n * (Issue #8 fix: Use escapeXmlText for element text, escapeXmlAttribute called directly for attrs)\r\n */\r\n private escapeXml(text: string): string {\r\n // This method is now only used for text content in elementsToString()\r\n // Attributes call escapeXmlAttribute() directly in elementToString()\r\n // Text content should NOT escape quotes (only & < >)\r\n return XMLBuilder.escapeXmlText(text);\r\n }\r\n\r\n /**\r\n * Escapes XML text content (element text nodes)\r\n * Removes invalid XML 1.0 control characters and escapes: & < >\r\n *\r\n * Per XML 1.0 spec, control chars 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid.\r\n * Tab (0x09), newline (0x0A), and CR (0x0D) are preserved.\r\n *\r\n * @param text Text to escape\r\n * @returns Escaped text safe for XML content\r\n */\r\n static escapeXmlText(text: string): string {\r\n return removeInvalidXmlChars(text)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\");\r\n }\r\n\r\n /**\r\n * Escapes XML attribute values\r\n * Removes invalid XML 1.0 control characters and escapes: & < > \" '\r\n *\r\n * Per XML 1.0 spec, control chars 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid.\r\n * Tab (0x09), newline (0x0A), and CR (0x0D) are preserved.\r\n *\r\n * @param value Attribute value to escape\r\n * @returns Escaped value safe for XML attributes\r\n */\r\n static escapeXmlAttribute(value: string): string {\r\n return removeInvalidXmlChars(value)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\");\r\n }\r\n\r\n /**\r\n * Unescapes XML entities back to original characters\r\n * @param text Text with XML entities\r\n * @returns Unescaped text\r\n */\r\n static unescapeXml(text: string): string {\r\n return text\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/"/g, '\"')\r\n .replace(/'/g, \"'\")\r\n .replace(/&/g, \"&\"); // Must be last to avoid double-unescaping\r\n }\r\n\r\n /**\r\n * Sanitizes and escapes XML content for safe inclusion in XML documents\r\n * Removes control characters, null bytes, and escapes special XML characters\r\n * Use this for user-provided content that may contain unsafe characters\r\n *\r\n * Per XML 1.0 spec, control chars 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid.\r\n * Tab (0x09), newline (0x0A), and CR (0x0D) are preserved.\r\n *\r\n * @param text Text to sanitize and escape\r\n * @returns Sanitized text safe for XML content\r\n *\r\n * **Issue #11 fix:** Prevents malformed XML from CDATA markers, control chars, etc.\r\n */\r\n static sanitizeXmlContent(text: string): string {\r\n return (\r\n removeInvalidXmlChars(text)\r\n // Escape CDATA end marker to prevent CDATA injection\r\n .replace(/\\]\\]>/g, \"]]>\")\r\n // Standard XML escaping (& must be first to avoid double-escaping)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n );\r\n }\r\n\r\n /**\r\n * Creates a WordprocessingML namespace attribute object\r\n */\r\n static createNamespaces(): Record<string, string> {\r\n return {\r\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\r\n \"xmlns:r\":\r\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\r\n \"xmlns:wp\":\r\n \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\r\n \"xmlns:a\": \"http://schemas.openxmlformats.org/drawingml/2006/main\",\r\n \"xmlns:pic\": \"http://schemas.openxmlformats.org/drawingml/2006/picture\",\r\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\r\n \"xmlns:wpc\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\r\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\r\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\r\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\r\n \"xmlns:wp14\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\r\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\r\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\r\n \"xmlns:wpg\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\r\n \"xmlns:wpi\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\r\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\r\n \"xmlns:wps\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\r\n \"xmlns:asvg\":\r\n \"http://schemas.microsoft.com/office/drawing/2016/SVG/main\",\r\n };\r\n }\r\n\r\n /**\r\n * Converts a single XMLElement to its XML string representation\r\n * Useful for merging elements into existing XML\r\n *\r\n * @param element - The XMLElement to convert\r\n * @returns XML string representation of the element\r\n */\r\n static elementToString(element: XMLElement): string {\r\n const builder = new XMLBuilder();\r\n // Use the private elementToString via the elements array + build\r\n (builder as any).elements.push(element);\r\n return builder.build();\r\n }\r\n\r\n /**\r\n * Helper method to create a WordprocessingML element\r\n * @param name - Element name (without 'w:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static w(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `w:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing WordprocessingML element\r\n * @param name - Element name (without 'w:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static wSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `w:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a w14 element (Word 2010+ features)\r\n * @param name - Element name (without 'w14:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static w14(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `w14:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing w14 element\r\n * @param name - Element name (without 'w14:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static w14Self(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `w14:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a DrawingML element (a: namespace)\r\n * @param name - Element name (without 'a:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static a(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `a:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing DrawingML element\r\n * @param name - Element name (without 'a:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static aSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `a:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a Picture element (pic: namespace)\r\n * @param name - Element name (without 'pic:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static pic(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `pic:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing Picture element\r\n * @param name - Element name (without 'pic:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static picSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `pic:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a Wordprocessing Drawing element (wp: namespace)\r\n * @param name - Element name (without 'wp:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static wp(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `wp:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing Wordprocessing Drawing element\r\n * @param name - Element name (without 'wp:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static wpSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `wp:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper to create cx/cy extent attributes (for a:ext, wp:extent, etc.)\r\n * @param name - Element name (e.g., 'ext')\r\n * @param cx - Width in EMUs\r\n * @param cy - Height in EMUs\r\n * @returns Self-closing XMLElement\r\n */\r\n static cxCy(\r\n name: string,\r\n cx: number,\r\n cy: number\r\n ): XMLElement {\r\n return {\r\n name,\r\n attributes: { cx, cy },\r\n selfClosing: true\r\n };\r\n }\r\n\r\n /**\r\n * Creates an SDT (Structured Document Tag) wrapper for content\r\n * @param content - Content to wrap (paragraphs, tables, etc.)\r\n * @param options - SDT options\r\n * @returns XMLElement representing the SDT wrapper\r\n */\r\n static createSDT(\r\n content: XMLElement[],\r\n options?: {\r\n id?: number;\r\n docPartGallery?: string;\r\n docPartUnique?: boolean;\r\n }\r\n ): XMLElement {\r\n const sdtId = options?.id ?? Math.floor(Math.random() * 2000000000) - 1000000000;\r\n\r\n // Build SDT properties\r\n const sdtPrChildren: XMLElement[] = [\r\n XMLBuilder.wSelf('id', { 'w:val': sdtId })\r\n ];\r\n\r\n // Add docPartObj if docPartGallery is specified\r\n if (options?.docPartGallery) {\r\n sdtPrChildren.push(\r\n XMLBuilder.w('docPartObj', undefined, [\r\n XMLBuilder.wSelf('docPartGallery', { 'w:val': options.docPartGallery }),\r\n XMLBuilder.wSelf('docPartUnique', {\r\n 'w:val': options?.docPartUnique !== false ? '1' : '0'\r\n })\r\n ])\r\n );\r\n }\r\n\r\n // Create complete SDT structure\r\n return XMLBuilder.w('sdt', undefined, [\r\n XMLBuilder.w('sdtPr', undefined, sdtPrChildren),\r\n XMLBuilder.w('sdtContent', undefined, content)\r\n ]);\r\n }\r\n\r\n /**\r\n * Creates a complete WordprocessingML document structure\r\n * @param bodyContent - Content for the document body\r\n * @returns XML string for word/document.xml\r\n */\r\n static createDocument(\r\n bodyContent: XMLElement[],\r\n namespaces: Record<string, string> = {},\r\n preBodyContent?: XMLElement[]\r\n ): string {\r\n const builder = new XMLBuilder();\r\n\r\n // Preserve document's original namespace order, then fill in framework defaults\r\n const allNamespaces: Record<string, string> = {};\r\n for (const [key, value] of Object.entries(namespaces)) {\r\n allNamespaces[key] = value;\r\n }\r\n for (const [key, value] of Object.entries(XMLBuilder.createNamespaces())) {\r\n if (!(key in allNamespaces)) {\r\n allNamespaces[key] = value;\r\n }\r\n }\r\n\r\n // Ensure mc:Ignorable is present when extended namespaces are declared.\r\n // Per ECMA-376, mc:Ignorable tells Word which namespace prefixes can be\r\n // safely ignored if the processor doesn't support them. Without it,\r\n // attributes like w14:paraId in raw XML passthrough zones cause corruption.\r\n if (!allNamespaces[\"mc:Ignorable\"]) {\r\n const ignorable: string[] = [];\r\n if (allNamespaces[\"xmlns:w14\"]) ignorable.push(\"w14\");\r\n if (allNamespaces[\"xmlns:w15\"]) ignorable.push(\"w15\");\r\n if (allNamespaces[\"xmlns:wp14\"]) ignorable.push(\"wp14\");\r\n if (allNamespaces[\"xmlns:w16se\"]) ignorable.push(\"w16se\");\r\n if (allNamespaces[\"xmlns:w16cid\"]) ignorable.push(\"w16cid\");\r\n if (allNamespaces[\"xmlns:w16\"]) ignorable.push(\"w16\");\r\n if (allNamespaces[\"xmlns:w16cex\"]) ignorable.push(\"w16cex\");\r\n if (allNamespaces[\"xmlns:w16sdtdh\"]) ignorable.push(\"w16sdtdh\");\r\n if (allNamespaces[\"xmlns:w16sdtfl\"]) ignorable.push(\"w16sdtfl\");\r\n if (allNamespaces[\"xmlns:w16du\"]) ignorable.push(\"w16du\");\r\n if (allNamespaces[\"xmlns:asvg\"]) ignorable.push(\"asvg\");\r\n if (ignorable.length > 0) {\r\n allNamespaces[\"mc:Ignorable\"] = ignorable.join(\" \");\r\n }\r\n } else {\r\n // mc:Ignorable was loaded from the original document — ensure every\r\n // prefix referenced in mc:Ignorable has a matching xmlns declaration.\r\n // Without this, the validator rejects prefixes that appear in\r\n // mc:Ignorable but lack namespace declarations in the root element.\r\n const defaults = XMLBuilder.createNamespaces();\r\n const prefixes = allNamespaces[\"mc:Ignorable\"].split(/\\s+/);\r\n for (const prefix of prefixes) {\r\n const nsKey = `xmlns:${prefix}`;\r\n if (!allNamespaces[nsKey] && defaults[nsKey]) {\r\n allNamespaces[nsKey] = defaults[nsKey];\r\n }\r\n }\r\n }\r\n\r\n const documentChildren: XMLElement[] = [];\r\n if (preBodyContent) {\r\n documentChildren.push(...preBodyContent);\r\n }\r\n documentChildren.push(XMLBuilder.w(\"body\", undefined, bodyContent));\r\n builder.element(\"w:document\", allNamespaces, documentChildren);\r\n\r\n return builder.build(true);\r\n }\r\n\r\n /**\r\n * Builds an XML string from a JavaScript object.\r\n * This is the reverse of XMLParser.parseToObject\r\n */\r\n static buildObject(obj: ParsedXmlObject, rootName: string): string {\r\n const builder = new XMLBuilder();\r\n const element = XMLBuilder.objectToElement(obj, rootName);\r\n if (element) {\r\n if (typeof element === \"string\") {\r\n builder.text(element);\r\n } else {\r\n builder.elements.push(element);\r\n }\r\n }\r\n return builder.build();\r\n }\r\n\r\n /**\r\n * Converts a JavaScript object to an XMLElement.\r\n * @private\r\n */\r\n private static objectToElement(\r\n obj: ParsedXmlObject | string | number | boolean | null | undefined,\r\n name: string\r\n ): XMLElement | string | null {\r\n if (obj === null || obj === undefined) {\r\n return null;\r\n }\r\n\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return String(obj);\r\n }\r\n\r\n const attributes: Record<string, string | number | boolean> = {};\r\n const children: (XMLElement | string)[] = [];\r\n\r\n if (obj[\"#text\"] && Object.keys(obj).length === 1) {\r\n return String(obj[\"#text\"]);\r\n }\r\n\r\n for (const key in obj) {\r\n if (key.startsWith(\"@_\")) {\r\n const attrName = key.substring(2);\r\n // Validate attribute name is not empty after prefix removal\r\n if (attrName.length > 0) {\r\n attributes[attrName] = obj[key];\r\n }\r\n } else if (key === \"#text\") {\r\n children.push(String(obj[key]));\r\n } else {\r\n const childObj = obj[key];\r\n if (Array.isArray(childObj)) {\r\n childObj.forEach((item) => {\r\n const childElement = XMLBuilder.objectToElement(item, key);\r\n if (childElement) {\r\n children.push(childElement);\r\n }\r\n });\r\n } else {\r\n const childElement = XMLBuilder.objectToElement(childObj, key);\r\n if (childElement) {\r\n children.push(childElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const element: XMLElement = {\r\n name,\r\n attributes,\r\n children: children.length > 0 ? children : undefined,\r\n };\r\n\r\n if (!element.children || element.children.length === 0) {\r\n if (!XMLBuilder.CANNOT_SELF_CLOSE.includes(name)) {\r\n element.selfClosing = true;\r\n }\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Helper method to build attributes object, filtering out undefined/null values\r\n * This simplifies the common pattern of conditionally adding attributes\r\n *\r\n * @param mapping - Map of attribute names to values\r\n * @returns Filtered attributes object with only defined values\r\n *\r\n * @example\r\n * ```typescript\r\n * const attrs = XMLBuilder.buildAttributes({\r\n * 'w:before': spacing?.before,\r\n * 'w:after': spacing?.after,\r\n * 'w:line': spacing?.line\r\n * });\r\n * // Returns only attributes with defined values\r\n * ```\r\n */\r\n static buildAttributes(mapping: Record<string, any>): Record<string, string | number> {\r\n const attrs: Record<string, string | number> = {};\r\n for (const [key, value] of Object.entries(mapping)) {\r\n if (value !== undefined && value !== null) {\r\n attrs[key] = value;\r\n }\r\n }\r\n return attrs;\r\n }\r\n\r\n /**\r\n * Creates a border element for WordprocessingML\r\n * Used for table borders, cell borders, and paragraph borders\r\n *\r\n * @param side - Border side (e.g., 'top', 'left', 'bottom', 'right', 'insideH', 'insideV')\r\n * @param border - Border definition\r\n * @returns XML element for border\r\n *\r\n * @example\r\n * ```typescript\r\n * const border = XMLBuilder.createBorder('top', {\r\n * style: 'single',\r\n * size: 4,\r\n * color: 'FF0000',\r\n * space: 0\r\n * });\r\n * ```\r\n */\r\n static createBorder(\r\n side: string,\r\n border: {\r\n style?: string;\r\n size?: number;\r\n color?: string;\r\n space?: number;\r\n }\r\n ): XMLElement {\r\n const attrs = XMLBuilder.buildAttributes({\r\n 'w:val': border.style || 'single',\r\n 'w:sz': border.size,\r\n 'w:color': border.color,\r\n 'w:space': border.space\r\n });\r\n\r\n return XMLBuilder.wSelf(side, attrs);\r\n }\r\n\r\n /**\r\n * Creates a shading element for WordprocessingML\r\n * Used for paragraph shading, table shading, and cell shading\r\n *\r\n * @param shading - Shading definition (ShadingConfig with theme support)\r\n * @returns XML element for shading, or null if no shading properties\r\n *\r\n * @example\r\n * ```typescript\r\n * const shading = XMLBuilder.createShading({\r\n * fill: 'FFFF00',\r\n * pattern: 'clear',\r\n * color: '000000'\r\n * });\r\n * ```\r\n */\r\n static createShading(shading: ShadingConfig): XMLElement | null {\r\n const attrs = buildShadingAttributes(shading);\r\n // Default w:val to \"clear\" if not specified but other attrs exist\r\n if (!attrs['w:val'] && Object.keys(attrs).length > 0) {\r\n attrs['w:val'] = 'clear';\r\n }\r\n if (Object.keys(attrs).length > 0) {\r\n return XMLBuilder.wSelf('shd', attrs);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Creates a margins element (tcMar, pgMar, etc.)\r\n * Used for cell margins, page margins, etc.\r\n *\r\n * @param type - Margin type element name (e.g., 'tcMar', 'pgMar')\r\n * @param margins - Margin values in twips\r\n * @returns XML element for margins, or null if no margins defined\r\n *\r\n * @example\r\n * ```typescript\r\n * const margins = XMLBuilder.createMargins('tcMar', {\r\n * top: 100,\r\n * bottom: 100,\r\n * left: 100,\r\n * right: 100\r\n * });\r\n * ```\r\n */\r\n static createMargins(\r\n type: string,\r\n margins: {\r\n top?: number;\r\n bottom?: number;\r\n left?: number;\r\n right?: number;\r\n start?: number;\r\n end?: number;\r\n }\r\n ): XMLElement | null {\r\n const children: XMLElement[] = [];\r\n\r\n if (margins.top !== undefined) {\r\n children.push(XMLBuilder.wSelf('top', { 'w:w': margins.top, 'w:type': 'dxa' }));\r\n }\r\n if (margins.bottom !== undefined) {\r\n children.push(XMLBuilder.wSelf('bottom', { 'w:w': margins.bottom, 'w:type': 'dxa' }));\r\n }\r\n if (margins.left !== undefined) {\r\n children.push(XMLBuilder.wSelf('left', { 'w:w': margins.left, 'w:type': 'dxa' }));\r\n }\r\n if (margins.right !== undefined) {\r\n children.push(XMLBuilder.wSelf('right', { 'w:w': margins.right, 'w:type': 'dxa' }));\r\n }\r\n if (margins.start !== undefined) {\r\n children.push(XMLBuilder.wSelf('start', { 'w:w': margins.start, 'w:type': 'dxa' }));\r\n }\r\n if (margins.end !== undefined) {\r\n children.push(XMLBuilder.wSelf('end', { 'w:w': margins.end, 'w:type': 'dxa' }));\r\n }\r\n\r\n if (children.length > 0) {\r\n return XMLBuilder.w(type, undefined, children);\r\n }\r\n return null;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLParser.d.ts","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAK7C,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,EAAE,GACjB,IAAI,GACJ,SAAS,CAAC;AAKd,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAcD,qBAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAyB1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAyG9D,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS;IAsBrB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAoB/D,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAwBhE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkCvC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,IAAI;IAqB1E,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IA4BrB,MAAM,CAAC,qBAAqB,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAsDrB,MAAM,CAAC,aAAa,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe;IAoClB,OAAO,CAAC,MAAM,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"XMLParser.d.ts","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAK7C,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,EAAE,GACjB,IAAI,GACJ,SAAS,CAAC;AAKd,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAcD,qBAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAyB1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAyG9D,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS;IAsBrB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAoB/D,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAwBhE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkCvC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,IAAI;IAqB1E,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IA4BrB,MAAM,CAAC,qBAAqB,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAsDrB,MAAM,CAAC,aAAa,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe;IAoClB,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAmMnC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6FvC,OAAO,CAAC,MAAM,CAAC,cAAc;IA2E7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiD/B,OAAO,CAAC,MAAM,CAAC,UAAU;CAqC1B"}
|
package/dist/xml/XMLParser.js
CHANGED
|
@@ -226,9 +226,8 @@ class XMLParser {
|
|
|
226
226
|
}
|
|
227
227
|
return { value: {}, endPos: xml.length };
|
|
228
228
|
}
|
|
229
|
-
const nameMatch = xml
|
|
230
|
-
.substring(openTagStart + 1)
|
|
231
|
-
.match(/^([a-zA-Z0-9:_-]+)/);
|
|
229
|
+
const nameMatch = /^([a-zA-Z0-9:_-]+)/.exec(xml
|
|
230
|
+
.substring(openTagStart + 1));
|
|
232
231
|
if (!nameMatch) {
|
|
233
232
|
return { value: {}, endPos: openTagStart + 1 };
|
|
234
233
|
}
|
|
@@ -302,7 +301,7 @@ class XMLParser {
|
|
|
302
301
|
elementValue = text;
|
|
303
302
|
}
|
|
304
303
|
else {
|
|
305
|
-
elementValue[options.textNodeName] = text;
|
|
304
|
+
(elementValue)[options.textNodeName] = text;
|
|
306
305
|
}
|
|
307
306
|
}
|
|
308
307
|
}
|
|
@@ -461,7 +460,7 @@ class XMLParser {
|
|
|
461
460
|
}
|
|
462
461
|
}
|
|
463
462
|
if (orderedChildren.length > 0) {
|
|
464
|
-
result
|
|
463
|
+
result._orderedChildren = orderedChildren;
|
|
465
464
|
}
|
|
466
465
|
return result;
|
|
467
466
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * XMLParser - Simple position-based XML parser\r\n * Avoids regex backtracking issues that can cause ReDoS attacks\r\n * Completes the DocXML framework (XMLBuilder + XMLParser)\r\n */\r\n\r\nimport { getGlobalLogger, createScopedLogger, ILogger } from \"../utils/logger\";\r\nimport { XMLBuilder } from \"./XMLBuilder\";\r\n\r\n// Create scoped logger for XMLParser operations\r\nfunction getLogger(): ILogger {\r\n return createScopedLogger(getGlobalLogger(), 'XMLParser');\r\n}\r\n\r\n/**\r\n * Default maximum nesting depth for XML parsing.\r\n * Prevents stack overflow on deeply nested documents.\r\n */\r\nexport const DEFAULT_MAX_NESTING_DEPTH = 256;\r\n\r\n/**\r\n * Options for XML-to-object parsing\r\n */\r\nexport interface ParseToObjectOptions {\r\n /** Ignore attributes (default: false) */\r\n ignoreAttributes?: boolean;\r\n\r\n /** Attribute name prefix (default: '@_') */\r\n attributeNamePrefix?: string;\r\n\r\n /** Text node property name (default: '#text') */\r\n textNodeName?: string;\r\n\r\n /** Remove namespace prefixes from element names (default: false) */\r\n ignoreNamespace?: boolean;\r\n\r\n /** Parse numeric attribute values (default: true) */\r\n parseAttributeValue?: boolean;\r\n\r\n /** Trim whitespace from text values (default: true) */\r\n trimValues?: boolean;\r\n\r\n /** Always return arrays for elements (default: false) */\r\n alwaysArray?: boolean;\r\n\r\n /** Maximum nesting depth (default: 256). Prevents stack overflow on deeply nested documents. */\r\n maxNestingDepth?: number;\r\n}\r\n\r\n/**\r\n * Parsed XML object structure\r\n * Can be a string, object, array, or nested structure\r\n */\r\nexport type ParsedXMLValue =\r\n | string\r\n | number\r\n | boolean\r\n | ParsedXMLObject\r\n | ParsedXMLObject[]\r\n | null\r\n | undefined;\r\n\r\n/**\r\n * Parsed XML object with dynamic keys\r\n */\r\nexport interface ParsedXMLObject {\r\n [key: string]: ParsedXMLValue;\r\n}\r\n\r\n/**\r\n * Internal structure for tracking parsed elements during parsing\r\n */\r\ninterface ParsedElement {\r\n name: string;\r\n value: ParsedXMLValue;\r\n}\r\n\r\n/**\r\n * Simple XML parser using position-based parsing instead of regex\r\n * Prevents catastrophic backtracking (ReDoS attacks) by avoiding nested regex patterns\r\n */\r\nexport class XMLParser {\r\n /**\r\n * Extracts the body content from a Word document XML\r\n * @param docXml - The complete document.xml content\r\n * @returns The body content, or empty string if not found\r\n */\r\n static extractBody(docXml: string): string {\r\n const startTag = \"<w:body\";\r\n const endTag = \"</w:body>\";\r\n\r\n const startIdx = docXml.indexOf(startTag);\r\n if (startIdx === -1) return \"\";\r\n\r\n // Find the closing > of opening tag\r\n const openEnd = docXml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) return \"\";\r\n\r\n // Find matching closing tag\r\n const endIdx = docXml.indexOf(endTag, openEnd);\r\n if (endIdx === -1) return \"\";\r\n\r\n return docXml.substring(openEnd + 1, endIdx);\r\n }\r\n\r\n /**\r\n * Extracts all elements of a given type using position-based parsing\r\n * Handles nested tags correctly by tracking depth\r\n * @param xml - XML content to parse\r\n * @param tagName - Tag name to extract (e.g., 'w:p', 'w:r')\r\n * @returns Array of XML strings for each element\r\n */\r\n static extractElements(xml: string, tagName: string): string[] {\r\n const elements: string[] = [];\r\n const openTag = `<${tagName}`;\r\n const closeTag = `</${tagName}>`;\r\n const selfClosingEnd = \"/>\";\r\n\r\n let pos = 0;\r\n while (pos < xml.length) {\r\n const startIdx = xml.indexOf(openTag, pos);\r\n if (startIdx === -1) break;\r\n\r\n // Verify this is the exact tag (not a prefix match like <w:p matching <w:pPr>)\r\n // The character after the tag name must be either '>', '/', whitespace, or '=' (for attributes)\r\n const charAfterTag = xml[startIdx + openTag.length];\r\n if (\r\n charAfterTag &&\r\n charAfterTag !== \">\" &&\r\n charAfterTag !== \"/\" &&\r\n charAfterTag !== \" \" &&\r\n charAfterTag !== \"\\t\" &&\r\n charAfterTag !== \"\\n\" &&\r\n charAfterTag !== \"\\r\" &&\r\n charAfterTag !== \"=\"\r\n ) {\r\n // This is a prefix match (e.g., <w:pPr> when looking for <w:p>), skip it (Issue #5)\r\n pos = startIdx + openTag.length;\r\n continue;\r\n }\r\n\r\n // Find the end of opening tag\r\n const openEnd = xml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) break;\r\n\r\n // Check if self-closing\r\n if (xml.substring(openEnd - 1, openEnd + 1) === selfClosingEnd) {\r\n elements.push(xml.substring(startIdx, openEnd + 1));\r\n pos = openEnd + 1;\r\n continue;\r\n }\r\n\r\n // Find matching closing tag (handle nesting)\r\n let depth = 1;\r\n let searchPos = openEnd + 1;\r\n\r\n while (depth > 0 && searchPos < xml.length) {\r\n // Find next potential opening tag\r\n let nextOpen = -1;\r\n let openSearchPos = searchPos;\r\n while (true) {\r\n const candidateOpen = xml.indexOf(openTag, openSearchPos);\r\n if (candidateOpen === -1) {\r\n break;\r\n }\r\n // Verify it's an exact match (not a prefix)\r\n const charAfter = xml[candidateOpen + openTag.length];\r\n if (\r\n charAfter &&\r\n charAfter !== \">\" &&\r\n charAfter !== \"/\" &&\r\n charAfter !== \" \" &&\r\n charAfter !== \"\\t\" &&\r\n charAfter !== \"\\n\" &&\r\n charAfter !== \"\\r\"\r\n ) {\r\n // Prefix match, keep searching\r\n openSearchPos = candidateOpen + openTag.length;\r\n continue;\r\n }\r\n nextOpen = candidateOpen;\r\n break;\r\n }\r\n\r\n const nextClose = xml.indexOf(closeTag, searchPos);\r\n\r\n if (nextClose === -1) break;\r\n\r\n if (nextOpen !== -1 && nextOpen < nextClose) {\r\n depth++;\r\n searchPos = nextOpen + openTag.length;\r\n } else {\r\n depth--;\r\n if (depth === 0) {\r\n elements.push(xml.substring(startIdx, nextClose + closeTag.length));\r\n pos = nextClose + closeTag.length;\r\n } else {\r\n searchPos = nextClose + closeTag.length;\r\n }\r\n }\r\n }\r\n\r\n if (depth > 0) {\r\n // Unclosed tag - skip it\r\n pos = startIdx + openTag.length;\r\n }\r\n }\r\n\r\n return elements;\r\n }\r\n\r\n /**\r\n * Extracts attribute value from an XML string\r\n * @param xml - XML content\r\n * @param attributeName - Attribute name (e.g., 'w:val')\r\n * @returns Attribute value or undefined\r\n */\r\n static extractAttribute(\r\n xml: string,\r\n attributeName: string\r\n ): string | undefined {\r\n // Use simple indexOf for bounded string search (safe)\r\n const attrPattern = `${attributeName}=\"`;\r\n const startIdx = xml.indexOf(attrPattern);\r\n if (startIdx === -1) return undefined;\r\n\r\n const valueStart = startIdx + attrPattern.length;\r\n const valueEnd = xml.indexOf('\"', valueStart);\r\n if (valueEnd === -1) return undefined;\r\n\r\n const rawValue = xml.substring(valueStart, valueEnd);\r\n // Unescape XML entities to get the actual value\r\n // This prevents double-escaping when the value is later re-serialized\r\n return XMLBuilder.unescapeXml(rawValue);\r\n }\r\n\r\n /**\r\n * Checks if an XML string contains a self-closing tag\r\n * @param xml - XML content\r\n * @param tagName - Tag name to check\r\n * @returns True if the tag exists as self-closing\r\n */\r\n static hasSelfClosingTag(xml: string, tagName: string): boolean {\r\n return xml.includes(`<${tagName}/>`) || xml.includes(`<${tagName} `);\r\n }\r\n\r\n /**\r\n * Checks if a boolean property tag is enabled (w:val=\"1\" or w:val=\"true\")\r\n * Per ECMA-376, boolean properties can be:\r\n * - Present with w:val=\"1\" or w:val=\"true\" (enabled)\r\n * - Present with w:val=\"0\" or w:val=\"false\" (explicitly disabled)\r\n * - Absent (disabled by default)\r\n *\r\n * @param xml - XML content to search\r\n * @param tagName - Tag name (e.g., 'w:keepNext')\r\n * @returns True if tag exists with w:val=\"1\" or w:val=\"true\", false otherwise\r\n *\r\n * @example\r\n * hasBooleanProperty('<w:pPr><w:keepNext w:val=\"1\"/></w:pPr>', 'w:keepNext'); // true\r\n * hasBooleanProperty('<w:pPr><w:keepNext w:val=\"0\"/></w:pPr>', 'w:keepNext'); // false\r\n * hasBooleanProperty('<w:pPr><w:spacing/></w:pPr>', 'w:keepNext'); // false\r\n */\r\n static hasBooleanProperty(xml: string, tagName: string): boolean {\r\n // Check for tag with w:val=\"1\" or w:val=\"true\"\r\n if (\r\n xml.includes(`<${tagName} w:val=\"1\"`) ||\r\n xml.includes(`<${tagName} w:val=\"true\"`)\r\n ) {\r\n return true;\r\n }\r\n\r\n // Check for self-closing tag without w:val attribute (means true per ECMA-376)\r\n // Example: <w:b/> means bold=true\r\n if (xml.includes(`<${tagName}/>`)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Extracts text content from within tags\r\n * Finds all <w:t>...</w:t> tags and extracts their text\r\n * @param xml - XML content\r\n * @returns Combined text content\r\n */\r\n static extractText(xml: string): string {\r\n const texts: string[] = [];\r\n const openTag = \"<w:t\";\r\n const closeTag = \"</w:t>\";\r\n\r\n let pos = 0;\r\n while (pos < xml.length) {\r\n const startIdx = xml.indexOf(openTag, pos);\r\n if (startIdx === -1) break;\r\n\r\n // Find the end of opening tag\r\n const openEnd = xml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) break;\r\n\r\n // Find closing tag\r\n const closeIdx = xml.indexOf(closeTag, openEnd);\r\n if (closeIdx === -1) break;\r\n\r\n // Extract text between tags\r\n const text = xml.substring(openEnd + 1, closeIdx);\r\n texts.push(text);\r\n\r\n pos = closeIdx + closeTag.length;\r\n }\r\n\r\n return texts.join(\"\");\r\n }\r\n\r\n /**\r\n * Validates input size to prevent excessive memory usage\r\n * @param xml - XML content\r\n * @param maxSize - Maximum size in bytes (default: 10MB)\r\n * @throws Error if XML exceeds max size\r\n */\r\n static validateSize(xml: string, maxSize: number = 10 * 1024 * 1024): void {\r\n if (xml.length > maxSize) {\r\n throw new Error(\r\n `XML content too large for parsing (${(\r\n xml.length /\r\n 1024 /\r\n 1024\r\n ).toFixed(1)}MB). ` +\r\n `Maximum allowed: ${(maxSize / 1024 / 1024).toFixed(0)}MB`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Extracts content between two specific tags\r\n * More efficient than regex for large documents\r\n * @param xml - XML content\r\n * @param startTag - Opening tag (e.g., '<w:pPr')\r\n * @param endTag - Closing tag (e.g., '</w:pPr>')\r\n * @returns Content between tags, or undefined if not found\r\n */\r\n static extractBetweenTags(\r\n xml: string,\r\n startTag: string,\r\n endTag: string\r\n ): string | undefined {\r\n const startIdx = xml.indexOf(startTag);\r\n if (startIdx === -1) return undefined;\r\n\r\n // Find the end of the opening tag\r\n const openEnd = xml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) return undefined;\r\n\r\n // Find the closing tag\r\n const endIdx = xml.indexOf(endTag, openEnd);\r\n if (endIdx === -1) return undefined;\r\n\r\n return xml.substring(openEnd + 1, endIdx);\r\n }\r\n\r\n /**\r\n * Extracts a complete self-closing tag with its attributes\r\n * Handles cases where multiple similar tags exist (e.g., <w:sz.../> and <w:szCs.../>)\r\n *\r\n * @param xml - XML string to search\r\n * @param tagName - Tag name to find (e.g., \"w:color\", \"w:sz\")\r\n * @returns The complete tag content (attributes portion) or undefined if not found\r\n *\r\n * @example\r\n * const xml = '<w:sz w:val=\"36\"/><w:color w:val=\"FF0000\"/>';\r\n * const colorTag = XMLParser.extractSelfClosingTag(xml, 'w:color');\r\n * // Returns: ' w:val=\"FF0000\"'\r\n */\r\n static extractSelfClosingTag(\r\n xml: string,\r\n tagName: string\r\n ): string | undefined {\r\n const startPattern = `<${tagName}`;\r\n let searchPos = 0;\r\n\r\n // Search for the exact tag (not tags that start with this pattern)\r\n while (true) {\r\n const startIdx = xml.indexOf(startPattern, searchPos);\r\n if (startIdx === -1) return undefined;\r\n\r\n // Check what character follows the tag name\r\n const charAfterTag = xml[startIdx + startPattern.length];\r\n\r\n // Valid separators after tag name: space, '/', or '>'\r\n if (charAfterTag === ' ' || charAfterTag === '/' || charAfterTag === '>') {\r\n // Found the exact tag, now find its end\r\n const endIdx = xml.indexOf('/>', startIdx);\r\n if (endIdx === -1) {\r\n // Try finding a closing tag instead (non-self-closing)\r\n const closeTagStart = xml.indexOf('>', startIdx);\r\n if (closeTagStart === -1) return undefined;\r\n\r\n // Return attributes portion\r\n return xml.substring(startIdx + startPattern.length, closeTagStart);\r\n }\r\n\r\n // Return attributes portion (between tag name and />)\r\n return xml.substring(startIdx + startPattern.length, endIdx);\r\n }\r\n\r\n // Not the exact tag (e.g., found \"w:sz\" when looking for \"w:s\")\r\n // Continue searching\r\n searchPos = startIdx + 1;\r\n }\r\n }\r\n\r\n /**\r\n * Parse XML string to JavaScript object\r\n * Compatible with fast-xml-parser output format\r\n *\r\n * @param xml - XML string to parse\r\n * @param options - Parsing options\r\n * @returns Parsed JavaScript object\r\n *\r\n * @example\r\n * const xml = '<Relationships><Relationship Id=\"rId1\" Target=\"https://example.com\"/></Relationships>';\r\n * const obj = XMLParser.parseToObject(xml);\r\n * // Returns: { Relationships: { Relationship: { '@_Id': 'rId1', '@_Target': 'https://example.com' } } }\r\n *\r\n * @example\r\n * // Multiple elements become arrays\r\n * const xml = '<Items><Item id=\"1\"/><Item id=\"2\"/></Items>';\r\n * const obj = XMLParser.parseToObject(xml);\r\n * // Returns: { Items: { Item: [{ '@_id': '1' }, { '@_id': '2' }] } }\r\n */\r\n static parseToObject(\r\n xml: string,\r\n options?: ParseToObjectOptions\r\n ): ParsedXMLObject {\r\n const logger = getLogger();\r\n logger.debug('Parsing XML to object', { xmlSize: xml.length });\r\n\r\n // Default options\r\n const opts: Required<ParseToObjectOptions> = {\r\n ignoreAttributes: options?.ignoreAttributes ?? false,\r\n attributeNamePrefix: options?.attributeNamePrefix ?? \"@_\",\r\n textNodeName: options?.textNodeName ?? \"#text\",\r\n ignoreNamespace: options?.ignoreNamespace ?? false,\r\n parseAttributeValue: options?.parseAttributeValue ?? true,\r\n trimValues: options?.trimValues ?? true,\r\n alwaysArray: options?.alwaysArray ?? false,\r\n maxNestingDepth: options?.maxNestingDepth ?? DEFAULT_MAX_NESTING_DEPTH,\r\n };\r\n\r\n // Validate input size\r\n XMLParser.validateSize(xml);\r\n\r\n // Remove XML declaration and trim\r\n xml = xml.replace(/<\\?xml[^>]*\\?>\\s*/g, \"\").trim();\r\n\r\n if (!xml) {\r\n return {};\r\n }\r\n\r\n // Parse root element (start at depth 0)\r\n const result = XMLParser.parseElementToObject(xml, 0, opts, 0);\r\n logger.debug('XML parsed to object');\r\n return result.value as ParsedXMLObject;\r\n }\r\n\r\n /**\r\n * Parses a single XML element into an object\r\n * @private\r\n */\r\n private static parseElementToObject(\r\n xml: string,\r\n startPos: number,\r\n options: Required<ParseToObjectOptions>,\r\n depth: number\r\n ): { value: ParsedXMLValue; endPos: number } {\r\n // Check nesting depth to prevent stack overflow\r\n if (depth > options.maxNestingDepth) {\r\n throw new Error(\r\n `XML nesting depth exceeds maximum of ${options.maxNestingDepth}. ` +\r\n `This may indicate malformed XML or an attack attempt. ` +\r\n `Use the maxNestingDepth option to increase the limit if needed.`\r\n );\r\n }\r\n\r\n // Find opening tag\r\n const openTagStart = xml.indexOf(\"<\", startPos);\r\n if (openTagStart === -1) {\r\n return { value: {}, endPos: xml.length };\r\n }\r\n\r\n // Skip comments\r\n if (xml.substring(openTagStart, openTagStart + 4) === \"<!--\") {\r\n const commentEnd = xml.indexOf(\"-->\", openTagStart + 4);\r\n if (commentEnd !== -1) {\r\n return XMLParser.parseElementToObject(xml, commentEnd + 3, options, depth);\r\n }\r\n return { value: {}, endPos: xml.length };\r\n }\r\n\r\n // Extract element name\r\n const nameMatch = /^([a-zA-Z0-9:_-]+)/.exec(xml\r\n .substring(openTagStart + 1));\r\n if (!nameMatch) {\r\n return { value: {}, endPos: openTagStart + 1 };\r\n }\r\n\r\n const originalElementName: string = nameMatch[1] || \"\";\r\n let elementName: string = originalElementName;\r\n const tagHeaderEnd = xml.indexOf(\">\", openTagStart);\r\n if (tagHeaderEnd === -1) {\r\n return { value: {}, endPos: xml.length };\r\n }\r\n\r\n // Remove namespace if requested (but keep original for offset calculations)\r\n if (options.ignoreNamespace && elementName.includes(\":\")) {\r\n elementName = elementName.split(\":\")[1] || elementName;\r\n }\r\n\r\n // Extract attributes using ORIGINAL element name length for correct offset\r\n const tagHeader = xml.substring(\r\n openTagStart + 1 + originalElementName.length,\r\n tagHeaderEnd\r\n );\r\n const attributes = XMLParser.extractAttributesFromTag(tagHeader, options);\r\n\r\n // Check if self-closing\r\n const isSelfClosing =\r\n tagHeader.trim().endsWith(\"/\") || xml[tagHeaderEnd - 1] === \"/\";\r\n\r\n if (isSelfClosing) {\r\n // Self-closing tag - return object with attributes only\r\n const elementValue: ParsedXMLObject = { ...attributes };\r\n return {\r\n value: { [elementName]: elementValue },\r\n endPos: tagHeaderEnd + 1,\r\n };\r\n }\r\n\r\n // Find closing tag (use original name with namespace for correct matching)\r\n const closingTag = `</${originalElementName}>`;\r\n const contentStart = tagHeaderEnd + 1;\r\n const closingTagPos = XMLParser.findClosingTag(\r\n xml,\r\n originalElementName,\r\n contentStart\r\n );\r\n\r\n if (closingTagPos === -1) {\r\n // No closing tag found - treat as self-closing\r\n return {\r\n value: { [elementName]: { ...attributes } },\r\n endPos: tagHeaderEnd + 1,\r\n };\r\n }\r\n\r\n // Extract content between tags\r\n const content = xml.substring(contentStart, closingTagPos);\r\n\r\n // Parse content (children or text)\r\n const children: ParsedElement[] = [];\r\n let textContent = \"\";\r\n let pos = 0;\r\n\r\n while (pos < content.length) {\r\n const nextTag = content.indexOf(\"<\", pos);\r\n\r\n if (nextTag === -1) {\r\n // No more tags - rest is text\r\n const text = content.substring(pos);\r\n // When trimValues is false, preserve whitespace-only text\r\n // When trimValues is true, only include text that has non-whitespace content\r\n if (text.length > 0 && (!options.trimValues || text.trim())) {\r\n // Unescape XML entities in text content (e.g., < -> <)\r\n textContent += XMLBuilder.unescapeXml(text);\r\n }\r\n break;\r\n }\r\n\r\n // Collect text before next tag\r\n if (nextTag > pos) {\r\n const text = content.substring(pos, nextTag);\r\n // When trimValues is false, preserve whitespace-only text\r\n // When trimValues is true, only include text that has non-whitespace content\r\n if (text.length > 0 && (!options.trimValues || text.trim())) {\r\n // Unescape XML entities in text content (e.g., < -> <)\r\n textContent += XMLBuilder.unescapeXml(text);\r\n }\r\n }\r\n\r\n // Parse child element (increment depth for children)\r\n const childResult = XMLParser.parseElementToObject(\r\n content,\r\n nextTag,\r\n options,\r\n depth + 1\r\n );\r\n const childObj = childResult.value as ParsedXMLObject;\r\n\r\n // Extract child name and value\r\n const childKeys = Object.keys(childObj);\r\n if (childKeys.length > 0) {\r\n const childName = childKeys[0];\r\n if (childName) {\r\n const childValue = childObj[childName];\r\n children.push({ name: childName, value: childValue });\r\n }\r\n }\r\n\r\n pos = childResult.endPos;\r\n }\r\n\r\n // Build element value\r\n let elementValue: ParsedXMLValue = {};\r\n\r\n // Add attributes\r\n if (!options.ignoreAttributes && Object.keys(attributes).length > 0) {\r\n elementValue = { ...attributes };\r\n }\r\n\r\n // Add text content\r\n // When trimValues is false, include whitespace-only text\r\n // When trimValues is true, only include text with non-whitespace content\r\n if (textContent.length > 0 && (!options.trimValues || textContent.trim())) {\r\n const text = options.trimValues ? textContent.trim() : textContent;\r\n if (typeof elementValue === \"object\" && !Array.isArray(elementValue)) {\r\n if (Object.keys(elementValue).length === 0) {\r\n // Only text, no attributes - return as direct value if simple\r\n elementValue = text;\r\n } else {\r\n // Text with attributes\r\n (elementValue)[options.textNodeName] = text;\r\n }\r\n }\r\n }\r\n\r\n // Add children\r\n if (children.length > 0) {\r\n const coalescedChildren = XMLParser.coalesceChildren(children, options);\r\n if (typeof elementValue === \"object\" && !Array.isArray(elementValue)) {\r\n elementValue = { ...elementValue, ...coalescedChildren };\r\n } else {\r\n elementValue = coalescedChildren;\r\n }\r\n }\r\n\r\n // If element has no content, attributes, or children - return empty object\r\n if (\r\n typeof elementValue === \"object\" &&\r\n !Array.isArray(elementValue) &&\r\n Object.keys(elementValue).length === 0\r\n ) {\r\n elementValue = {};\r\n }\r\n\r\n return {\r\n value: { [elementName]: elementValue },\r\n endPos: closingTagPos + closingTag.length,\r\n };\r\n }\r\n\r\n /**\r\n * Extracts attributes from a tag header\r\n * @private\r\n */\r\n private static extractAttributesFromTag(\r\n tagHeader: string,\r\n options: Required<ParseToObjectOptions>\r\n ): Record<string, string | number | boolean> {\r\n const attributes: Record<string, string | number | boolean> = {};\r\n\r\n if (options.ignoreAttributes) {\r\n return attributes;\r\n }\r\n\r\n // Simple attribute extraction using position-based parsing\r\n let pos = 0;\r\n while (pos < tagHeader.length) {\r\n // Skip whitespace\r\n while (pos < tagHeader.length) {\r\n const char = tagHeader[pos];\r\n if (char && /\\s/.test(char)) {\r\n pos++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (pos >= tagHeader.length || tagHeader[pos] === \"/\") {\r\n break;\r\n }\r\n\r\n // Extract attribute name\r\n const nameStart = pos;\r\n while (pos < tagHeader.length) {\r\n const char = tagHeader[pos];\r\n if (char && /[a-zA-Z0-9:_-]/.test(char)) {\r\n pos++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (pos === nameStart) {\r\n break;\r\n }\r\n\r\n let attrName = tagHeader.substring(nameStart, pos);\r\n\r\n // Skip whitespace and '='\r\n while (pos < tagHeader.length) {\r\n const char = tagHeader[pos];\r\n if (char && /[\\s=]/.test(char)) {\r\n pos++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Extract attribute value\r\n let attrValue = \"\";\r\n if (\r\n pos < tagHeader.length &&\r\n (tagHeader[pos] === '\"' || tagHeader[pos] === \"'\")\r\n ) {\r\n const quote = tagHeader[pos];\r\n pos++; // Skip opening quote\r\n const valueStart = pos;\r\n\r\n while (pos < tagHeader.length && tagHeader[pos] !== quote) {\r\n pos++;\r\n }\r\n\r\n attrValue = tagHeader.substring(valueStart, pos);\r\n pos++; // Skip closing quote\r\n }\r\n\r\n // Remove namespace from attribute name if requested\r\n if (options.ignoreNamespace && attrName.includes(\":\")) {\r\n attrName = attrName.split(\":\")[1] || attrName;\r\n }\r\n\r\n // Add prefix to attribute name\r\n const prefixedName = options.attributeNamePrefix + attrName;\r\n\r\n // Parse attribute value\r\n attributes[prefixedName] = options.parseAttributeValue\r\n ? XMLParser.parseValue(attrValue)\r\n : attrValue;\r\n }\r\n\r\n return attributes;\r\n }\r\n\r\n /**\r\n * Finds the closing tag for an element, handling nesting\r\n * @private\r\n */\r\n private static findClosingTag(\r\n xml: string,\r\n elementName: string,\r\n startPos: number\r\n ): number {\r\n const openTag = `<${elementName}`;\r\n const closeTag = `</${elementName}>`;\r\n let depth = 1;\r\n let pos = startPos;\r\n\r\n while (depth > 0 && pos < xml.length) {\r\n const nextClose = xml.indexOf(closeTag, pos);\r\n\r\n if (nextClose === -1) {\r\n return -1; // No closing tag found\r\n }\r\n\r\n // Find the next REAL opening tag (not a prefix match like <w:pPrChange for <w:pPr)\r\n // Must search for all potential matches and verify each one\r\n let realOpenPos = -1;\r\n let searchPos = pos;\r\n while (searchPos < nextClose) {\r\n const candidateOpen = xml.indexOf(openTag, searchPos);\r\n if (candidateOpen === -1 || candidateOpen >= nextClose) {\r\n break; // No more candidates before the closing tag\r\n }\r\n\r\n const charAfter = xml[candidateOpen + openTag.length];\r\n if (\r\n charAfter === \">\" ||\r\n charAfter === \" \" ||\r\n charAfter === \"/\" ||\r\n charAfter === \"\\t\" ||\r\n charAfter === \"\\n\" ||\r\n charAfter === \"\\r\"\r\n ) {\r\n // This looks like a real opening tag - but check if it's self-closing\r\n // Self-closing tags like <w:rPr/> should NOT increase depth\r\n const tagEnd = xml.indexOf(\">\", candidateOpen);\r\n if (tagEnd !== -1 && xml[tagEnd - 1] === \"/\") {\r\n // Self-closing tag - skip it (don't affect depth)\r\n searchPos = tagEnd + 1;\r\n continue;\r\n }\r\n // This is a real opening tag (not self-closing)\r\n realOpenPos = candidateOpen;\r\n break;\r\n }\r\n\r\n // False positive (e.g., <w:pPrChange when looking for <w:pPr)\r\n // Keep searching from after this position\r\n searchPos = candidateOpen + openTag.length;\r\n }\r\n\r\n if (realOpenPos !== -1) {\r\n // Found a real opening tag before the closing tag - increase depth\r\n depth++;\r\n pos = realOpenPos + openTag.length;\r\n } else {\r\n // No real opening tag before this closing tag - decrease depth\r\n depth--;\r\n if (depth === 0) {\r\n return nextClose;\r\n }\r\n pos = nextClose + closeTag.length;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Coalesces children with duplicate names into arrays\r\n * @private\r\n */\r\n private static coalesceChildren(\r\n children: ParsedElement[],\r\n options: Required<ParseToObjectOptions>\r\n ): ParsedXMLObject {\r\n const result: ParsedXMLObject = {};\r\n const nameCounts: Record<string, number> = {};\r\n const nameIndices: Record<string, number> = {};\r\n\r\n // Track element order for correct run content parsing (tabs, breaks, text)\r\n // This is critical for preserving the order of mixed content like: text -> tab -> text\r\n const orderedChildren: { type: string; index: number }[] = [];\r\n\r\n // Count occurrences of each child name\r\n for (const child of children) {\r\n nameCounts[child.name] = (nameCounts[child.name] || 0) + 1;\r\n }\r\n\r\n // Build result object while tracking order\r\n for (const child of children) {\r\n const shouldBeArray =\r\n options.alwaysArray || (nameCounts[child.name] || 0) > 1;\r\n\r\n // Track element order with its index in the array\r\n const currentIndex = nameIndices[child.name] || 0;\r\n orderedChildren.push({ type: child.name, index: currentIndex });\r\n nameIndices[child.name] = currentIndex + 1;\r\n\r\n if (shouldBeArray) {\r\n if (!result[child.name]) {\r\n result[child.name] = [];\r\n }\r\n (result[child.name] as ParsedXMLValue[]).push(child.value);\r\n } else {\r\n result[child.name] = child.value;\r\n }\r\n }\r\n\r\n // Add _orderedChildren to track element order (used by DocumentParser for runs)\r\n if (orderedChildren.length > 0) {\r\n result._orderedChildren = orderedChildren;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Parses a string value to number or boolean if applicable\r\n * @private\r\n */\r\n private static parseValue(value: string): string | number | boolean {\r\n if (value === \"true\") return true;\r\n if (value === \"false\") return false;\r\n\r\n // Preserve 6-character hex color codes (OpenXML standard for colors)\r\n // This includes \"000000\" (black) which should stay as a string\r\n if (/^[0-9A-Fa-f]{6}$/.test(value)) {\r\n return value.toUpperCase(); // Normalize to uppercase per Microsoft convention\r\n }\r\n\r\n // Preserve long digit-only strings (e.g., cnfStyle binary strings like \"100000000000\")\r\n // These should not be converted to numbers to avoid losing leading zeros\r\n if (/^\\d{7,}$/.test(value)) {\r\n return value; // Keep as string for values with 7+ digits\r\n }\r\n\r\n // Try parsing as number\r\n // 3-character values like \"240\" will be parsed as numbers\r\n // 6-character hex values are already handled above\r\n if (/^-?\\d+$/.test(value)) {\r\n const num = parseInt(value, 10);\r\n if (!isNaN(num)) return num;\r\n }\r\n\r\n if (/^-?\\d+\\.\\d+$/.test(value)) {\r\n const num = parseFloat(value);\r\n if (!isNaN(num)) return num;\r\n }\r\n\r\n // Preserve 3-character hex codes (like \"F0A\") that have letters\r\n // Pure numeric 3-char values (like \"240\") are already parsed as numbers above\r\n if (/^[0-9A-Fa-f]{3}$/.test(value) && /[A-Fa-f]/.test(value)) {\r\n return value.toUpperCase();\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n"]}
|