docxmlater 10.4.1 → 11.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 -3
- package/dist/constants/legacyCompatFlags.d.ts +1 -1
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/core/Document.d.ts +74 -67
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +605 -414
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts +11 -10
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js +19 -19
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentEvents.d.ts +39 -0
- package/dist/core/DocumentEvents.d.ts.map +1 -0
- package/dist/core/DocumentEvents.js +51 -0
- package/dist/core/DocumentEvents.js.map +1 -0
- package/dist/core/DocumentGenerator.d.ts +11 -11
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +72 -52
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +15 -15
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +2056 -1073
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts +3 -3
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js +31 -31
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/ElementRegistry.d.ts +22 -0
- package/dist/core/ElementRegistry.d.ts.map +1 -0
- package/dist/core/ElementRegistry.js +27 -0
- package/dist/core/ElementRegistry.js.map +1 -0
- package/dist/core/Relationship.js +4 -4
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.d.ts +1 -1
- package/dist/core/RelationshipManager.d.ts.map +1 -1
- package/dist/core/RelationshipManager.js +32 -32
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.d.ts +1 -1
- package/dist/elements/AlternateContent.d.ts.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts +6 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js +19 -3
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js +7 -7
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.d.ts +2 -2
- package/dist/elements/Comment.d.ts.map +1 -1
- package/dist/elements/Comment.js +4 -4
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts +2 -2
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +9 -9
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts +9 -4
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -0
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.d.ts +1 -1
- package/dist/elements/CustomXml.d.ts.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts +2 -2
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js +9 -9
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js +11 -11
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts +9 -5
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +21 -9
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +10 -10
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/Footer.d.ts +3 -3
- package/dist/elements/Footer.d.ts.map +1 -1
- package/dist/elements/Footer.js +5 -5
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts +2 -2
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js +9 -9
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js +11 -11
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.d.ts +3 -3
- package/dist/elements/Header.d.ts.map +1 -1
- package/dist/elements/Header.js +5 -5
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.d.ts +2 -2
- package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts +5 -5
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +29 -29
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +1 -1
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +67 -67
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +4 -4
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.d.ts +3 -3
- package/dist/elements/ImageRun.d.ts.map +1 -1
- package/dist/elements/ImageRun.js +2 -2
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.d.ts +1 -1
- package/dist/elements/MathElement.d.ts.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +34 -19
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +286 -231
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.d.ts +1 -1
- package/dist/elements/PreservedElement.d.ts.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.d.ts +2 -2
- package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.d.ts +14 -1
- package/dist/elements/RangeMarker.d.ts.map +1 -1
- package/dist/elements/RangeMarker.js +46 -8
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/RegisteredBodyElement.d.ts +15 -0
- package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
- package/dist/elements/RegisteredBodyElement.js +44 -0
- package/dist/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/elements/Revision.d.ts +8 -8
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +12 -12
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.d.ts +3 -3
- package/dist/elements/RevisionContent.d.ts.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts +2 -2
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js +2 -2
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts +16 -10
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +199 -173
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts +4 -2
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +152 -145
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts +3 -3
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +12 -12
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts +3 -3
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +39 -39
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +16 -10
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +118 -89
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +11 -11
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +108 -78
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.d.ts +1 -1
- package/dist/elements/TableGridChange.d.ts.map +1 -1
- package/dist/elements/TableGridChange.js +3 -3
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +1 -1
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js +2 -2
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.d.ts +2 -2
- package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
- package/dist/elements/TableOfContentsElement.js +5 -5
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts +18 -7
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +127 -74
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts +4 -4
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +6 -6
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/esm/constants/legacyCompatFlags.js +97 -0
- package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
- package/dist/esm/constants/limits.js +36 -0
- package/dist/esm/constants/limits.js.map +1 -0
- package/dist/esm/core/Document.js +8498 -0
- package/dist/esm/core/Document.js.map +1 -0
- package/dist/esm/core/DocumentContent.js +190 -0
- package/dist/esm/core/DocumentContent.js.map +1 -0
- package/dist/esm/core/DocumentEvents.js +47 -0
- package/dist/esm/core/DocumentEvents.js.map +1 -0
- package/dist/esm/core/DocumentGenerator.js +764 -0
- package/dist/esm/core/DocumentGenerator.js.map +1 -0
- package/dist/esm/core/DocumentIdManager.js +67 -0
- package/dist/esm/core/DocumentIdManager.js.map +1 -0
- package/dist/esm/core/DocumentParser.js +8760 -0
- package/dist/esm/core/DocumentParser.js.map +1 -0
- package/dist/esm/core/DocumentValidator.js +222 -0
- package/dist/esm/core/DocumentValidator.js.map +1 -0
- package/dist/esm/core/ElementRegistry.js +24 -0
- package/dist/esm/core/ElementRegistry.js.map +1 -0
- package/dist/esm/core/Relationship.js +177 -0
- package/dist/esm/core/Relationship.js.map +1 -0
- package/dist/esm/core/RelationshipManager.js +202 -0
- package/dist/esm/core/RelationshipManager.js.map +1 -0
- package/dist/esm/elements/AlternateContent.js +19 -0
- package/dist/esm/elements/AlternateContent.js.map +1 -0
- package/dist/esm/elements/Bookmark.js +115 -0
- package/dist/esm/elements/Bookmark.js.map +1 -0
- package/dist/esm/elements/BookmarkManager.js +99 -0
- package/dist/esm/elements/BookmarkManager.js.map +1 -0
- package/dist/esm/elements/Comment.js +181 -0
- package/dist/esm/elements/Comment.js.map +1 -0
- package/dist/esm/elements/CommentManager.js +233 -0
- package/dist/esm/elements/CommentManager.js.map +1 -0
- package/dist/esm/elements/CommonTypes.js +106 -0
- package/dist/esm/elements/CommonTypes.js.map +1 -0
- package/dist/esm/elements/CustomXml.js +19 -0
- package/dist/esm/elements/CustomXml.js.map +1 -0
- package/dist/esm/elements/Endnote.js +107 -0
- package/dist/esm/elements/Endnote.js.map +1 -0
- package/dist/esm/elements/EndnoteManager.js +119 -0
- package/dist/esm/elements/EndnoteManager.js.map +1 -0
- package/dist/esm/elements/Field.js +856 -0
- package/dist/esm/elements/Field.js.map +1 -0
- package/dist/esm/elements/FieldHelpers.js +134 -0
- package/dist/esm/elements/FieldHelpers.js.map +1 -0
- package/dist/esm/elements/FontManager.js +158 -0
- package/dist/esm/elements/FontManager.js.map +1 -0
- package/dist/esm/elements/Footer.js +141 -0
- package/dist/esm/elements/Footer.js.map +1 -0
- package/dist/esm/elements/Footnote.js +107 -0
- package/dist/esm/elements/Footnote.js.map +1 -0
- package/dist/esm/elements/FootnoteManager.js +119 -0
- package/dist/esm/elements/FootnoteManager.js.map +1 -0
- package/dist/esm/elements/Header.js +141 -0
- package/dist/esm/elements/Header.js.map +1 -0
- package/dist/esm/elements/HeaderFooterManager.js +87 -0
- package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
- package/dist/esm/elements/Hyperlink.js +586 -0
- package/dist/esm/elements/Hyperlink.js.map +1 -0
- package/dist/esm/elements/Image.js +1288 -0
- package/dist/esm/elements/Image.js.map +1 -0
- package/dist/esm/elements/ImageManager.js +223 -0
- package/dist/esm/elements/ImageManager.js.map +1 -0
- package/dist/esm/elements/ImageRun.js +29 -0
- package/dist/esm/elements/ImageRun.js.map +1 -0
- package/dist/esm/elements/MathElement.js +37 -0
- package/dist/esm/elements/MathElement.js.map +1 -0
- package/dist/esm/elements/Paragraph.js +2308 -0
- package/dist/esm/elements/Paragraph.js.map +1 -0
- package/dist/esm/elements/PreservedElement.js +29 -0
- package/dist/esm/elements/PreservedElement.js.map +1 -0
- package/dist/esm/elements/PropertyChangeTypes.js +53 -0
- package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
- package/dist/esm/elements/RangeMarker.js +219 -0
- package/dist/esm/elements/RangeMarker.js.map +1 -0
- package/dist/esm/elements/RegisteredBodyElement.js +40 -0
- package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
- package/dist/esm/elements/Revision.js +498 -0
- package/dist/esm/elements/Revision.js.map +1 -0
- package/dist/esm/elements/RevisionContent.js +18 -0
- package/dist/esm/elements/RevisionContent.js.map +1 -0
- package/dist/esm/elements/RevisionManager.js +486 -0
- package/dist/esm/elements/RevisionManager.js.map +1 -0
- package/dist/esm/elements/Run.js +1465 -0
- package/dist/esm/elements/Run.js.map +1 -0
- package/dist/esm/elements/Section.js +978 -0
- package/dist/esm/elements/Section.js.map +1 -0
- package/dist/esm/elements/Shape.js +493 -0
- package/dist/esm/elements/Shape.js.map +1 -0
- package/dist/esm/elements/StructuredDocumentTag.js +471 -0
- package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
- package/dist/esm/elements/Table.js +1456 -0
- package/dist/esm/elements/Table.js.map +1 -0
- package/dist/esm/elements/TableCell.js +835 -0
- package/dist/esm/elements/TableCell.js.map +1 -0
- package/dist/esm/elements/TableGridChange.js +52 -0
- package/dist/esm/elements/TableGridChange.js.map +1 -0
- package/dist/esm/elements/TableOfContents.js +389 -0
- package/dist/esm/elements/TableOfContents.js.map +1 -0
- package/dist/esm/elements/TableOfContentsElement.js +29 -0
- package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
- package/dist/esm/elements/TableRow.js +555 -0
- package/dist/esm/elements/TableRow.js.map +1 -0
- package/dist/esm/elements/TextBox.js +459 -0
- package/dist/esm/elements/TextBox.js.map +1 -0
- package/dist/esm/formatting/AbstractNumbering.js +325 -0
- package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
- package/dist/esm/formatting/NumberingInstance.js +150 -0
- package/dist/esm/formatting/NumberingInstance.js.map +1 -0
- package/dist/esm/formatting/NumberingLevel.js +608 -0
- package/dist/esm/formatting/NumberingLevel.js.map +1 -0
- package/dist/esm/formatting/NumberingManager.js +423 -0
- package/dist/esm/formatting/NumberingManager.js.map +1 -0
- package/dist/esm/formatting/Style.js +1151 -0
- package/dist/esm/formatting/Style.js.map +1 -0
- package/dist/esm/formatting/StylesManager.js +557 -0
- package/dist/esm/formatting/StylesManager.js.map +1 -0
- package/dist/esm/helpers/CleanupHelper.js +350 -0
- package/dist/esm/helpers/CleanupHelper.js.map +1 -0
- package/dist/esm/images/ImageOptimizer.js +161 -0
- package/dist/esm/images/ImageOptimizer.js.map +1 -0
- package/dist/esm/index.js +75 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.js +16 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/managers/DrawingManager.js +163 -0
- package/dist/esm/managers/DrawingManager.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/processors/ChangelogGenerator.js +970 -0
- package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
- package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
- package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
- package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/MoveOperationHelper.js +57 -0
- package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
- package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
- package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/esm/processors/RevisionWalker.js +278 -0
- package/dist/esm/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
- package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/esm/processors/ShadingResolver.js +66 -0
- package/dist/esm/processors/ShadingResolver.js.map +1 -0
- package/dist/esm/processors/acceptRevisions.js +416 -0
- package/dist/esm/processors/acceptRevisions.js.map +1 -0
- package/dist/esm/processors/cnfStyleDecoder.js +89 -0
- package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/esm/processors/stripTrackedChanges.js +201 -0
- package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
- package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
- package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
- package/dist/esm/tracking/TrackingContext.js +2 -0
- package/dist/esm/tracking/TrackingContext.js.map +1 -0
- package/dist/esm/types/compatibility-types.js +8 -0
- package/dist/esm/types/compatibility-types.js.map +1 -0
- package/dist/esm/types/document-types.js +2 -0
- package/dist/esm/types/document-types.js.map +1 -0
- package/dist/esm/types/formatting.js +2 -0
- package/dist/esm/types/formatting.js.map +1 -0
- package/dist/esm/types/list-types.js +2 -0
- package/dist/esm/types/list-types.js.map +1 -0
- package/dist/esm/types/settings-types.js +2 -0
- package/dist/esm/types/settings-types.js.map +1 -0
- package/dist/esm/types/styleConfig.js +2 -0
- package/dist/esm/types/styleConfig.js.map +1 -0
- package/dist/esm/utils/KeyedRegistry.js +32 -0
- package/dist/esm/utils/KeyedRegistry.js.map +1 -0
- package/dist/esm/utils/corruptionDetection.js +155 -0
- package/dist/esm/utils/corruptionDetection.js.map +1 -0
- package/dist/esm/utils/dateFormatting.js +4 -0
- package/dist/esm/utils/dateFormatting.js.map +1 -0
- package/dist/esm/utils/deepClone.js +40 -0
- package/dist/esm/utils/deepClone.js.map +1 -0
- package/dist/esm/utils/deepEqual.js +47 -0
- package/dist/esm/utils/deepEqual.js.map +1 -0
- package/dist/esm/utils/diagnostics.js +69 -0
- package/dist/esm/utils/diagnostics.js.map +1 -0
- package/dist/esm/utils/errorHandling.js +36 -0
- package/dist/esm/utils/errorHandling.js.map +1 -0
- package/dist/esm/utils/formatting.js +93 -0
- package/dist/esm/utils/formatting.js.map +1 -0
- package/dist/esm/utils/list-detection.js +148 -0
- package/dist/esm/utils/list-detection.js.map +1 -0
- package/dist/esm/utils/logger.js +205 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/parsingHelpers.js +56 -0
- package/dist/esm/utils/parsingHelpers.js.map +1 -0
- package/dist/esm/utils/textDiff.js +42 -0
- package/dist/esm/utils/textDiff.js.map +1 -0
- package/dist/esm/utils/units.js +152 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.js +285 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/esm/utils/xmlSanitization.js +54 -0
- package/dist/esm/utils/xmlSanitization.js.map +1 -0
- package/dist/esm/validation/RevisionAutoFixer.js +340 -0
- package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
- package/dist/esm/validation/RevisionValidator.js +240 -0
- package/dist/esm/validation/RevisionValidator.js.map +1 -0
- package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
- package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/esm/validation/ValidationRules.js +92 -0
- package/dist/esm/validation/ValidationRules.js.map +1 -0
- package/dist/esm/validation/index.js +4 -0
- package/dist/esm/validation/index.js.map +1 -0
- package/dist/esm/xml/XMLBuilder.js +434 -0
- package/dist/esm/xml/XMLBuilder.js.map +1 -0
- package/dist/esm/xml/XMLParser.js +486 -0
- package/dist/esm/xml/XMLParser.js.map +1 -0
- package/dist/esm/zip/ZipHandler.js +298 -0
- package/dist/esm/zip/ZipHandler.js.map +1 -0
- package/dist/esm/zip/ZipReader.js +147 -0
- package/dist/esm/zip/ZipReader.js.map +1 -0
- package/dist/esm/zip/ZipWriter.js +199 -0
- package/dist/esm/zip/ZipWriter.js.map +1 -0
- package/dist/esm/zip/errors.js +43 -0
- package/dist/esm/zip/errors.js.map +1 -0
- package/dist/esm/zip/types.js +31 -0
- package/dist/esm/zip/types.js.map +1 -0
- package/dist/formatting/AbstractNumbering.d.ts +2 -2
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +33 -33
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts +2 -2
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +7 -7
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts +11 -2
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +111 -25
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +4 -4
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js +28 -28
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts +14 -7
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +309 -112
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +2 -2
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js +52 -52
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.d.ts +1 -1
- package/dist/helpers/CleanupHelper.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +15 -15
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/index.d.ts +81 -90
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +286 -317
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +16 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +42 -0
- package/dist/internal.js.map +1 -0
- package/dist/managers/DrawingManager.d.ts +3 -3
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js +12 -12
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
- package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
- package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
- package/dist/processors/ChangelogGenerator.js.map +1 -0
- package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
- package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
- package/dist/processors/CompatibilityUpgrader.js.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
- package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
- package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
- package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
- package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
- package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
- package/dist/processors/MoveOperationHelper.js.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
- package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
- package/dist/processors/RevisionAwareProcessor.js.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
- package/dist/processors/RevisionWalker.d.ts.map +1 -0
- package/dist/{utils → processors}/RevisionWalker.js +28 -0
- package/dist/processors/RevisionWalker.js.map +1 -0
- package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
- package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
- package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
- package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
- package/dist/processors/ShadingResolver.d.ts +6 -0
- package/dist/processors/ShadingResolver.d.ts.map +1 -0
- package/dist/{utils → processors}/ShadingResolver.js +2 -2
- package/dist/processors/ShadingResolver.js.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
- package/dist/processors/acceptRevisions.d.ts.map +1 -0
- package/dist/{utils → processors}/acceptRevisions.js +24 -4
- package/dist/processors/acceptRevisions.js.map +1 -0
- package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
- package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
- package/dist/processors/cnfStyleDecoder.js.map +1 -0
- package/dist/processors/stripTrackedChanges.d.ts +3 -0
- package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
- package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
- package/dist/processors/stripTrackedChanges.js.map +1 -0
- package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
- package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js +38 -43
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.d.ts +8 -8
- package/dist/tracking/TrackingContext.d.ts.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/document-types.d.ts +28 -0
- package/dist/types/document-types.d.ts.map +1 -0
- package/dist/types/document-types.js +3 -0
- package/dist/types/document-types.js.map +1 -0
- package/dist/types/formatting.d.ts +4 -4
- package/dist/types/formatting.d.ts.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/settings-types.d.ts +6 -0
- package/dist/types/settings-types.d.ts.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/utils/KeyedRegistry.d.ts +13 -0
- package/dist/utils/KeyedRegistry.d.ts.map +1 -0
- package/dist/utils/KeyedRegistry.js +36 -0
- package/dist/utils/KeyedRegistry.js.map +1 -0
- package/dist/utils/corruptionDetection.d.ts +1 -1
- package/dist/utils/corruptionDetection.d.ts.map +1 -1
- package/dist/utils/corruptionDetection.js +4 -4
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/deepEqual.d.ts +2 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +50 -0
- package/dist/utils/deepEqual.js.map +1 -0
- 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.map +1 -1
- package/dist/utils/parsingHelpers.d.ts +1 -1
- package/dist/utils/parsingHelpers.d.ts.map +1 -1
- package/dist/utils/parsingHelpers.js +2 -2
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/validation.js +7 -7
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js +2 -2
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.d.ts +4 -4
- package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
- package/dist/validation/RevisionAutoFixer.js +11 -11
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.d.ts +5 -4
- package/dist/validation/RevisionValidator.d.ts.map +1 -1
- package/dist/validation/RevisionValidator.js +29 -30
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
- package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
- package/dist/validation/ValidationRuleRegistry.js +43 -0
- package/dist/validation/ValidationRuleRegistry.js.map +1 -0
- package/dist/validation/index.d.ts +3 -3
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +10 -10
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts +6 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +11 -6
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.js +6 -6
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.d.ts +1 -1
- package/dist/zip/ZipHandler.d.ts.map +1 -1
- package/dist/zip/ZipHandler.js +8 -8
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.d.ts +1 -1
- package/dist/zip/ZipReader.d.ts.map +1 -1
- package/dist/zip/ZipReader.js +14 -14
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.d.ts +1 -1
- package/dist/zip/ZipWriter.d.ts.map +1 -1
- package/dist/zip/ZipWriter.js +10 -10
- package/dist/zip/ZipWriter.js.map +1 -1
- package/package.json +20 -4
- package/src/constants/legacyCompatFlags.ts +1 -1
- package/src/core/Document.ts +461 -167
- package/src/core/DocumentContent.ts +14 -11
- package/src/core/DocumentEvents.ts +90 -0
- package/src/core/DocumentGenerator.ts +49 -22
- package/src/core/DocumentParser.ts +2180 -617
- package/src/core/DocumentValidator.ts +7 -7
- package/src/core/ElementRegistry.ts +69 -0
- package/src/core/Relationship.ts +1 -1
- package/src/core/RelationshipManager.ts +4 -4
- package/src/elements/AlternateContent.ts +1 -1
- package/src/elements/Bookmark.ts +52 -4
- package/src/elements/BookmarkManager.ts +2 -2
- package/src/elements/Comment.ts +3 -3
- package/src/elements/CommentManager.ts +4 -4
- package/src/elements/CommonTypes.ts +45 -7
- package/src/elements/CustomXml.ts +1 -1
- package/src/elements/Endnote.ts +2 -2
- package/src/elements/EndnoteManager.ts +3 -3
- package/src/elements/Field.ts +44 -10
- package/src/elements/FieldHelpers.ts +2 -2
- package/src/elements/Footer.ts +4 -4
- package/src/elements/Footnote.ts +2 -2
- package/src/elements/FootnoteManager.ts +3 -3
- package/src/elements/Header.ts +4 -4
- package/src/elements/HeaderFooterManager.ts +2 -2
- package/src/elements/Hyperlink.ts +16 -12
- package/src/elements/Image.ts +3 -3
- package/src/elements/ImageManager.ts +2 -2
- package/src/elements/ImageRun.ts +3 -3
- package/src/elements/MathElement.ts +1 -1
- package/src/elements/Paragraph.ts +221 -88
- package/src/elements/PreservedElement.ts +1 -1
- package/src/elements/PropertyChangeTypes.ts +2 -2
- package/src/elements/RangeMarker.ts +153 -12
- package/src/elements/RegisteredBodyElement.ts +52 -0
- package/src/elements/Revision.ts +14 -14
- package/src/elements/RevisionContent.ts +3 -3
- package/src/elements/RevisionManager.ts +3 -3
- package/src/elements/Run.ts +221 -94
- package/src/elements/Section.ts +136 -69
- package/src/elements/Shape.ts +4 -4
- package/src/elements/StructuredDocumentTag.ts +3 -3
- package/src/elements/Table.ts +91 -27
- package/src/elements/TableCell.ts +62 -34
- package/src/elements/TableGridChange.ts +1 -1
- package/src/elements/TableOfContents.ts +1 -1
- package/src/elements/TableOfContentsElement.ts +2 -2
- package/src/elements/TableRow.ts +192 -48
- package/src/elements/TextBox.ts +5 -5
- package/src/formatting/AbstractNumbering.ts +3 -3
- package/src/formatting/NumberingInstance.ts +2 -2
- package/src/formatting/NumberingLevel.ts +201 -10
- package/src/formatting/NumberingManager.ts +5 -5
- package/src/formatting/Style.ts +382 -86
- package/src/formatting/StylesManager.ts +4 -4
- package/src/helpers/CleanupHelper.ts +6 -6
- package/src/index.ts +118 -127
- package/src/internal.ts +79 -0
- package/src/managers/DrawingManager.ts +3 -3
- package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
- package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
- package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
- package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
- package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
- package/src/{utils → processors}/RevisionWalker.ts +42 -1
- package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
- package/src/{utils → processors}/ShadingResolver.ts +5 -5
- package/src/{utils → processors}/acceptRevisions.ts +77 -9
- package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
- package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
- package/src/tracking/DocumentTrackingContext.ts +12 -14
- package/src/tracking/TrackingContext.ts +8 -8
- package/src/types/document-types.ts +53 -0
- package/src/types/formatting.ts +4 -4
- package/src/types/settings-types.ts +32 -0
- package/src/utils/KeyedRegistry.ts +41 -0
- package/src/utils/corruptionDetection.ts +2 -2
- package/src/utils/deepEqual.ts +58 -0
- package/src/utils/list-detection.ts +2 -2
- package/src/utils/parsingHelpers.ts +11 -3
- package/src/utils/validation.ts +3 -3
- package/src/utils/xmlSanitization.ts +1 -1
- package/src/validation/RevisionAutoFixer.ts +5 -5
- package/src/validation/RevisionValidator.ts +39 -28
- package/src/validation/ValidationRuleRegistry.ts +86 -0
- package/src/validation/index.ts +3 -3
- package/src/xml/XMLBuilder.ts +13 -3
- package/src/xml/XMLParser.ts +2 -2
- package/src/zip/ZipHandler.ts +4 -4
- package/src/zip/ZipReader.ts +3 -3
- package/src/zip/ZipWriter.ts +3 -3
- package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
- package/dist/utils/ChangelogGenerator.js.map +0 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
- package/dist/utils/CompatibilityUpgrader.js.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
- package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
- package/dist/utils/MoveOperationHelper.js.map +0 -1
- package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
- package/dist/utils/RevisionAwareProcessor.js.map +0 -1
- package/dist/utils/RevisionWalker.d.ts.map +0 -1
- package/dist/utils/RevisionWalker.js.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
- package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
- package/dist/utils/ShadingResolver.d.ts +0 -6
- package/dist/utils/ShadingResolver.d.ts.map +0 -1
- package/dist/utils/ShadingResolver.js.map +0 -1
- package/dist/utils/acceptRevisions.d.ts.map +0 -1
- package/dist/utils/acceptRevisions.js.map +0 -1
- package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
- package/dist/utils/cnfStyleDecoder.js.map +0 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -3
- package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
- package/dist/utils/stripTrackedChanges.js.map +0 -1
- package/src/__tests__/helper-methods.test.ts +0 -512
- package/src/constants/CLAUDE.md +0 -28
- package/src/core/CLAUDE.md +0 -113
- package/src/elements/CLAUDE.md +0 -142
- package/src/formatting/CLAUDE.md +0 -78
- package/src/managers/CLAUDE.md +0 -47
- package/src/tracking/CLAUDE.md +0 -30
- package/src/types/CLAUDE.md +0 -39
- package/src/utils/CLAUDE.md +0 -168
- package/src/validation/CLAUDE.md +0 -40
- package/src/xml/CLAUDE.md +0 -65
- package/src/zip/CLAUDE.md +0 -55
- /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
- /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
|
@@ -7,16 +7,17 @@
|
|
|
7
7
|
* @module DocumentTrackingContext
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { Revision, RevisionType } from '../elements/Revision';
|
|
11
|
-
import { RevisionManager } from '../elements/RevisionManager';
|
|
12
|
-
import { Run, type RunFormatting } from '../elements/Run';
|
|
13
|
-
import { Paragraph } from '../elements/Paragraph';
|
|
14
|
-
import { Table } from '../elements/Table';
|
|
15
|
-
import { TableRow } from '../elements/TableRow';
|
|
16
|
-
import { TableCell } from '../elements/TableCell';
|
|
17
|
-
import { Section } from '../elements/Section';
|
|
18
|
-
import type { TrackingContext, PendingChange, TrackableElement } from './TrackingContext';
|
|
19
|
-
import { formatDateForXml } from '../utils/dateFormatting';
|
|
10
|
+
import { Revision, RevisionType } from '../elements/Revision.js';
|
|
11
|
+
import { RevisionManager } from '../elements/RevisionManager.js';
|
|
12
|
+
import { Run, type RunFormatting } from '../elements/Run.js';
|
|
13
|
+
import { Paragraph } from '../elements/Paragraph.js';
|
|
14
|
+
import { Table } from '../elements/Table.js';
|
|
15
|
+
import { TableRow } from '../elements/TableRow.js';
|
|
16
|
+
import { TableCell } from '../elements/TableCell.js';
|
|
17
|
+
import { Section } from '../elements/Section.js';
|
|
18
|
+
import type { TrackingContext, PendingChange, TrackableElement } from './TrackingContext.js';
|
|
19
|
+
import { formatDateForXml } from '../utils/dateFormatting.js';
|
|
20
|
+
import { deepEqual } from '../utils/deepEqual.js';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* Enable options for tracking context
|
|
@@ -684,10 +685,7 @@ export class DocumentTrackingContext implements TrackingContext {
|
|
|
684
685
|
* Deep equality check for tracking values (handles objects, primitives, null/undefined)
|
|
685
686
|
*/
|
|
686
687
|
private valuesEqual(a: unknown, b: unknown): boolean {
|
|
687
|
-
|
|
688
|
-
if (a == null || b == null) return false;
|
|
689
|
-
if (typeof a !== 'object' || typeof b !== 'object') return false;
|
|
690
|
-
return JSON.stringify(a) === JSON.stringify(b);
|
|
688
|
+
return deepEqual(a, b);
|
|
691
689
|
}
|
|
692
690
|
|
|
693
691
|
/**
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
* @module TrackingContext
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import type { Revision, RevisionType } from '../elements/Revision';
|
|
11
|
-
import type { RevisionManager } from '../elements/RevisionManager';
|
|
12
|
-
import type { Run } from '../elements/Run';
|
|
13
|
-
import type { Paragraph } from '../elements/Paragraph';
|
|
14
|
-
import type { Table } from '../elements/Table';
|
|
15
|
-
import type { TableRow } from '../elements/TableRow';
|
|
16
|
-
import type { TableCell } from '../elements/TableCell';
|
|
17
|
-
import type { Section } from '../elements/Section';
|
|
10
|
+
import type { Revision, RevisionType } from '../elements/Revision.js';
|
|
11
|
+
import type { RevisionManager } from '../elements/RevisionManager.js';
|
|
12
|
+
import type { Run } from '../elements/Run.js';
|
|
13
|
+
import type { Paragraph } from '../elements/Paragraph.js';
|
|
14
|
+
import type { Table } from '../elements/Table.js';
|
|
15
|
+
import type { TableRow } from '../elements/TableRow.js';
|
|
16
|
+
import type { TableCell } from '../elements/TableCell.js';
|
|
17
|
+
import type { Section } from '../elements/Section.js';
|
|
18
18
|
|
|
19
19
|
/** Union of element types that can be tracked */
|
|
20
20
|
export type TrackableElement =
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document-shaped types extracted out of `src/core/Document.ts` so that
|
|
3
|
+
* `DocumentParser`, `DocumentGenerator`, and `DocumentValidator` can
|
|
4
|
+
* import them without re-introducing a circular dependency back to the
|
|
5
|
+
* Document class.
|
|
6
|
+
*
|
|
7
|
+
* `Document.ts` re-exports these for backward compatibility — existing
|
|
8
|
+
* `import { DocumentProperties } from 'docxmlater'` continues to work.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Document properties (core and extended). */
|
|
12
|
+
export interface DocumentProperties {
|
|
13
|
+
// Core Properties (docProps/core.xml)
|
|
14
|
+
title?: string;
|
|
15
|
+
subject?: string;
|
|
16
|
+
creator?: string;
|
|
17
|
+
keywords?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
lastModifiedBy?: string;
|
|
20
|
+
revision?: number;
|
|
21
|
+
created?: Date;
|
|
22
|
+
modified?: Date;
|
|
23
|
+
language?: string;
|
|
24
|
+
category?: string;
|
|
25
|
+
contentStatus?: string;
|
|
26
|
+
|
|
27
|
+
// Extended Properties (docProps/app.xml)
|
|
28
|
+
application?: string;
|
|
29
|
+
appVersion?: string;
|
|
30
|
+
company?: string;
|
|
31
|
+
manager?: string;
|
|
32
|
+
version?: string;
|
|
33
|
+
|
|
34
|
+
// Custom Properties (docProps/custom.xml)
|
|
35
|
+
customProperties?: Record<string, string | number | boolean | Date>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Document part representation. Any part inside the DOCX package
|
|
40
|
+
* (XML, binary).
|
|
41
|
+
*/
|
|
42
|
+
export interface DocumentPart {
|
|
43
|
+
/** Part name/path within the package */
|
|
44
|
+
name: string;
|
|
45
|
+
/** Part content (string for XML/text, Buffer for binary) */
|
|
46
|
+
content: string | Buffer;
|
|
47
|
+
/** MIME content type */
|
|
48
|
+
contentType?: string;
|
|
49
|
+
/** Whether the part is binary */
|
|
50
|
+
isBinary?: boolean;
|
|
51
|
+
/** Part size in bytes */
|
|
52
|
+
size?: number;
|
|
53
|
+
}
|
package/src/types/formatting.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
// Forward references to avoid circular dependencies
|
|
6
|
-
import type { Paragraph } from '../elements/Paragraph';
|
|
7
|
-
import type { Run } from '../elements/Run';
|
|
6
|
+
import type { Paragraph } from '../elements/Paragraph.js';
|
|
7
|
+
import type { Run } from '../elements/Run.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Border style options
|
|
@@ -45,13 +45,13 @@ export interface ParagraphBorder {
|
|
|
45
45
|
* Shading patterns — re-exported from CommonTypes for backward compatibility.
|
|
46
46
|
* @see CommonTypes.ShadingPattern for the canonical definition
|
|
47
47
|
*/
|
|
48
|
-
export type { ShadingPattern } from '../elements/CommonTypes';
|
|
48
|
+
export type { ShadingPattern } from '../elements/CommonTypes.js';
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
51
|
* Paragraph shading configuration — re-exported from CommonTypes for backward compatibility.
|
|
52
52
|
* @see CommonTypes.ShadingConfig for the canonical definition (includes theme attributes)
|
|
53
53
|
*/
|
|
54
|
-
export type { ShadingConfig as ParagraphShading } from '../elements/CommonTypes';
|
|
54
|
+
export type { ShadingConfig as ParagraphShading } from '../elements/CommonTypes.js';
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* Tab stop alignment
|
|
@@ -11,6 +11,14 @@
|
|
|
11
11
|
export interface DocumentProtection {
|
|
12
12
|
edit: 'readOnly' | 'comments' | 'trackedChanges' | 'forms';
|
|
13
13
|
enforcement: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* `w:formatting` per CT_DocProtect §17.15.1.29 — when true, formatting
|
|
16
|
+
* changes are still allowed even when edit protection is enforced.
|
|
17
|
+
* Directly relevant to the tracked-changes workflow: combined with
|
|
18
|
+
* `edit: 'trackedChanges'`, this forces all content edits to be tracked
|
|
19
|
+
* while still permitting formatting adjustments.
|
|
20
|
+
*/
|
|
21
|
+
formatting?: boolean;
|
|
14
22
|
cryptProviderType?: string;
|
|
15
23
|
cryptAlgorithmClass?: string;
|
|
16
24
|
cryptAlgorithmType?: string;
|
|
@@ -18,6 +26,19 @@ export interface DocumentProtection {
|
|
|
18
26
|
cryptSpinCount?: number;
|
|
19
27
|
hash?: string;
|
|
20
28
|
salt?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Modern crypto attributes per ISO/IEC 29500-4 §13 (Word 2013+):
|
|
31
|
+
* - `algorithmName` names the strong hash algorithm (e.g. "SHA-512"),
|
|
32
|
+
* replacing the legacy `cryptAlgorithmSid` lookup-table reference.
|
|
33
|
+
* - `hashValue` is the base64-encoded password hash.
|
|
34
|
+
* - `saltValue` is the base64-encoded salt.
|
|
35
|
+
*
|
|
36
|
+
* These are emitted alongside / instead of the legacy `hash` / `salt`
|
|
37
|
+
* / `cryptAlgorithmSid` attributes. Previously dropped on round-trip.
|
|
38
|
+
*/
|
|
39
|
+
algorithmName?: string;
|
|
40
|
+
hashValue?: string;
|
|
41
|
+
saltValue?: string;
|
|
21
42
|
}
|
|
22
43
|
|
|
23
44
|
/**
|
|
@@ -27,6 +48,17 @@ export interface RevisionViewSettings {
|
|
|
27
48
|
showInsertionsAndDeletions: boolean;
|
|
28
49
|
showFormatting: boolean;
|
|
29
50
|
showInkAnnotations: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* `w:markup` per CT_TrackChangesView §17.15.1.77 — when false, all
|
|
53
|
+
* revision markup is hidden in the reviewer pane (no balloons, no
|
|
54
|
+
* strikethrough/inserted styling). Defaults to true when absent.
|
|
55
|
+
*/
|
|
56
|
+
showMarkup?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* `w:comments` per CT_TrackChangesView §17.15.1.77 — when false,
|
|
59
|
+
* comment balloons are hidden. Defaults to true when absent.
|
|
60
|
+
*/
|
|
61
|
+
showComments?: boolean;
|
|
30
62
|
}
|
|
31
63
|
|
|
32
64
|
/**
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map-backed keyed registry shared by ElementRegistry and ValidationRuleRegistry.
|
|
3
|
+
* Throws on duplicate `register()` so callers cannot silently overwrite a
|
|
4
|
+
* pre-existing entry.
|
|
5
|
+
*/
|
|
6
|
+
export class KeyedRegistry<V> {
|
|
7
|
+
private readonly entries = new Map<string, V>();
|
|
8
|
+
|
|
9
|
+
constructor(private readonly label: string) {}
|
|
10
|
+
|
|
11
|
+
register(key: string, value: V): void {
|
|
12
|
+
if (this.entries.has(key)) {
|
|
13
|
+
throw new Error(`${this.label}: "${key}" is already registered`);
|
|
14
|
+
}
|
|
15
|
+
this.entries.set(key, value);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
unregister(key: string): boolean {
|
|
19
|
+
return this.entries.delete(key);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
has(key: string): boolean {
|
|
23
|
+
return this.entries.has(key);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get(key: string): V | undefined {
|
|
27
|
+
return this.entries.get(key);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
keys(): string[] {
|
|
31
|
+
return [...this.entries.keys()];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
values(): V[] {
|
|
35
|
+
return [...this.entries.values()];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
clear(): void {
|
|
39
|
+
this.entries.clear();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* results in escaped XML tags being displayed as literal text in Word.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { Paragraph } from '../elements/Paragraph';
|
|
10
|
-
import { Run } from '../elements/Run';
|
|
9
|
+
import { Paragraph } from '../elements/Paragraph.js';
|
|
10
|
+
import { Run } from '../elements/Run.js';
|
|
11
11
|
|
|
12
12
|
/** Minimal interface for document corruption scanning (avoids circular import) */
|
|
13
13
|
interface DocumentLike {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural equality check for OOXML formatting objects.
|
|
3
|
+
*
|
|
4
|
+
* Replaces `JSON.stringify(a) === JSON.stringify(b)` in hot equality paths
|
|
5
|
+
* (paragraph property merging, tracking-context consolidation). Avoids
|
|
6
|
+
* allocating two large strings per comparison and short-circuits on the
|
|
7
|
+
* first inequality.
|
|
8
|
+
*
|
|
9
|
+
* Handles the value shapes seen in formatting objects: primitives, plain
|
|
10
|
+
* objects, arrays, Date, null/undefined. Symbols and class instances are
|
|
11
|
+
* not part of the formatting model and are compared by reference.
|
|
12
|
+
*/
|
|
13
|
+
export function deepEqual(a: unknown, b: unknown): boolean {
|
|
14
|
+
if (a === b) return true;
|
|
15
|
+
// NaN === NaN is false in JS; treat structurally as equal so a parse
|
|
16
|
+
// failure that produced two NaNs in equivalent slots doesn't dirty the
|
|
17
|
+
// tracking-context consolidation pass.
|
|
18
|
+
if (typeof a === 'number' && typeof b === 'number' && Number.isNaN(a) && Number.isNaN(b)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
if (a == null || b == null) return a === b;
|
|
22
|
+
|
|
23
|
+
const typeA = typeof a;
|
|
24
|
+
const typeB = typeof b;
|
|
25
|
+
if (typeA !== typeB) return false;
|
|
26
|
+
if (typeA !== 'object') return false;
|
|
27
|
+
|
|
28
|
+
// Date values
|
|
29
|
+
if (a instanceof Date || b instanceof Date) {
|
|
30
|
+
return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Arrays: same length, element-wise equality.
|
|
34
|
+
const aIsArr = Array.isArray(a);
|
|
35
|
+
const bIsArr = Array.isArray(b);
|
|
36
|
+
if (aIsArr !== bIsArr) return false;
|
|
37
|
+
if (aIsArr && bIsArr) {
|
|
38
|
+
const arrA = a;
|
|
39
|
+
const arrB = b;
|
|
40
|
+
if (arrA.length !== arrB.length) return false;
|
|
41
|
+
for (let i = 0; i < arrA.length; i++) {
|
|
42
|
+
if (!deepEqual(arrA[i], arrB[i])) return false;
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Plain objects: same key set, deep-equal values.
|
|
48
|
+
const objA = a as Record<string, unknown>;
|
|
49
|
+
const objB = b as Record<string, unknown>;
|
|
50
|
+
const keysA = Object.keys(objA);
|
|
51
|
+
const keysB = Object.keys(objB);
|
|
52
|
+
if (keysA.length !== keysB.length) return false;
|
|
53
|
+
for (const k of keysA) {
|
|
54
|
+
if (!Object.prototype.hasOwnProperty.call(objB, k)) return false;
|
|
55
|
+
if (!deepEqual(objA[k], objB[k])) return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
* paragraph list properties.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type { Paragraph } from '../elements/Paragraph';
|
|
8
|
+
import type { Paragraph } from '../elements/Paragraph.js';
|
|
9
9
|
import type {
|
|
10
10
|
ListCategory,
|
|
11
11
|
ListDetectionResult,
|
|
12
12
|
NumberFormat,
|
|
13
13
|
BulletFormat,
|
|
14
|
-
} from '../types/list-types';
|
|
14
|
+
} from '../types/list-types.js';
|
|
15
15
|
|
|
16
16
|
// =============================================================================
|
|
17
17
|
// CONSTANTS
|
|
@@ -54,6 +54,10 @@ export function safeParseInt(value: unknown, defaultValue = 0): number {
|
|
|
54
54
|
* - Absent element = false (handled by caller checking for property existence)
|
|
55
55
|
*
|
|
56
56
|
* @param prop - The parsed XML property object (e.g., pPrObj["w:bold"])
|
|
57
|
+
* @param valAttr - The attribute key that carries the ST_OnOff literal.
|
|
58
|
+
* Defaults to `"@_w:val"` for the main WordprocessingML namespace.
|
|
59
|
+
* Pass `"@_w14:val"` for w14 extension elements such as
|
|
60
|
+
* `<w14:checked w14:val="1"/>` (CT_OnOff in the Word 2010+ namespace).
|
|
57
61
|
* @returns Boolean value
|
|
58
62
|
*
|
|
59
63
|
* @example
|
|
@@ -66,17 +70,21 @@ export function safeParseInt(value: unknown, defaultValue = 0): number {
|
|
|
66
70
|
* // For XML: <w:bold w:val="0"/>
|
|
67
71
|
* parseOoxmlBoolean({ "@_w:val": "0" }) // false
|
|
68
72
|
*
|
|
73
|
+
* // For XML: <w14:checked w14:val="on"/>
|
|
74
|
+
* parseOoxmlBoolean({ "@_w14:val": "on" }, "@_w14:val") // true
|
|
75
|
+
*
|
|
69
76
|
* // For absent element
|
|
70
77
|
* parseOoxmlBoolean(undefined) // false
|
|
71
78
|
*/
|
|
72
|
-
export function parseOoxmlBoolean(prop: unknown): boolean {
|
|
79
|
+
export function parseOoxmlBoolean(prop: unknown, valAttr = '@_w:val'): boolean {
|
|
73
80
|
// Absent element = false
|
|
74
81
|
if (!prop) {
|
|
75
82
|
return false;
|
|
76
83
|
}
|
|
77
84
|
|
|
78
|
-
// Get the w:val
|
|
79
|
-
|
|
85
|
+
// Get the val attribute value (w:val by default, w14:val or similar for
|
|
86
|
+
// extension namespaces).
|
|
87
|
+
const val = (prop as Record<string, unknown>)[valAttr];
|
|
80
88
|
|
|
81
89
|
// Self-closing tag without w:val attribute = true
|
|
82
90
|
// Per ECMA-376, presence of element without val means "on"
|
package/src/utils/validation.ts
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Validation utilities for DOCX files
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { REQUIRED_DOCX_FILES } from '../zip/types';
|
|
6
|
-
import { MissingRequiredFileError } from '../zip/errors';
|
|
7
|
-
import { defaultLogger } from './logger';
|
|
5
|
+
import { REQUIRED_DOCX_FILES } from '../zip/types.js';
|
|
6
|
+
import { MissingRequiredFileError } from '../zip/errors.js';
|
|
7
|
+
import { defaultLogger } from './logger.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Validates that all required DOCX files are present
|
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
* @module RevisionAutoFixer
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import type { Document } from '../core/Document';
|
|
11
|
-
import type { Revision } from '../elements/Revision';
|
|
12
|
-
import type { RevisionManager } from '../elements/RevisionManager';
|
|
10
|
+
import type { Document } from '../core/Document.js';
|
|
11
|
+
import type { Revision } from '../elements/Revision.js';
|
|
12
|
+
import type { RevisionManager } from '../elements/RevisionManager.js';
|
|
13
13
|
import {
|
|
14
14
|
REVISION_RULES,
|
|
15
15
|
AutoFixOptions,
|
|
16
16
|
AutoFixResult,
|
|
17
17
|
FixAction,
|
|
18
18
|
ValidationIssue,
|
|
19
|
-
} from './ValidationRules';
|
|
20
|
-
import { RevisionValidator } from './RevisionValidator';
|
|
19
|
+
} from './ValidationRules.js';
|
|
20
|
+
import { RevisionValidator } from './RevisionValidator.js';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Automatically fixes revision validation issues.
|
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
* @module RevisionValidator
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import type { Document } from '../core/Document';
|
|
11
|
-
import type { Revision } from '../elements/Revision';
|
|
10
|
+
import type { Document } from '../core/Document.js';
|
|
11
|
+
import type { Revision } from '../elements/Revision.js';
|
|
12
12
|
import {
|
|
13
13
|
REVISION_RULES,
|
|
14
14
|
ValidationIssue,
|
|
15
15
|
ValidationOptions,
|
|
16
16
|
ValidationResult,
|
|
17
17
|
createIssueFromRule,
|
|
18
|
-
} from './ValidationRules';
|
|
18
|
+
} from './ValidationRules.js';
|
|
19
|
+
import { ValidationRuleRegistry } from './ValidationRuleRegistry.js';
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Validates document revisions for ECMA-376 compliance.
|
|
@@ -41,12 +42,18 @@ export class RevisionValidator {
|
|
|
41
42
|
*/
|
|
42
43
|
static validate(doc: Document, options?: ValidationOptions): ValidationResult {
|
|
43
44
|
const revisionManager = doc.getRevisionManager();
|
|
45
|
+
const allIssues: ValidationIssue[] = [];
|
|
46
|
+
|
|
47
|
+
// Custom rules from ValidationRuleRegistry run regardless of whether
|
|
48
|
+
// the document has a revision manager — they validate document-level
|
|
49
|
+
// properties, not just revisions.
|
|
50
|
+
allIssues.push(...this.runCustomRules(doc));
|
|
51
|
+
|
|
44
52
|
if (!revisionManager) {
|
|
45
|
-
return this.
|
|
53
|
+
return this.finalize(allIssues, options);
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
const revisions = revisionManager.getAllRevisions();
|
|
49
|
-
const allIssues: ValidationIssue[] = [];
|
|
50
57
|
|
|
51
58
|
// Skip certain rules if lenient mode
|
|
52
59
|
const skipRules = new Set(options?.skipRules || []);
|
|
@@ -82,16 +89,40 @@ export class RevisionValidator {
|
|
|
82
89
|
allIssues.push(...this.validateRevisionDates(revisions));
|
|
83
90
|
}
|
|
84
91
|
|
|
85
|
-
|
|
92
|
+
return this.finalize(allIssues, options);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Run every rule in `ValidationRuleRegistry` against `doc` and convert
|
|
97
|
+
* the produced `CustomValidationIssue`s into the built-in
|
|
98
|
+
* `ValidationIssue` shape so they can be merged into the final result.
|
|
99
|
+
*/
|
|
100
|
+
private static runCustomRules(doc: Document): ValidationIssue[] {
|
|
101
|
+
const customIssues = ValidationRuleRegistry.runAll(doc);
|
|
102
|
+
return customIssues.map((c) => ({
|
|
103
|
+
code: c.ruleCode,
|
|
104
|
+
severity: c.severity,
|
|
105
|
+
message: c.message,
|
|
106
|
+
location: c.location ? { element: c.location } : undefined,
|
|
107
|
+
autoFixable: false,
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Apply maxIssues / warningsAsErrors options and bucket the issues
|
|
113
|
+
* into the standard `ValidationResult` shape.
|
|
114
|
+
*/
|
|
115
|
+
private static finalize(
|
|
116
|
+
allIssues: ValidationIssue[],
|
|
117
|
+
options?: ValidationOptions
|
|
118
|
+
): ValidationResult {
|
|
86
119
|
const limitedIssues = options?.maxIssues ? allIssues.slice(0, options.maxIssues) : allIssues;
|
|
87
120
|
|
|
88
|
-
// Separate by severity
|
|
89
121
|
let errors = limitedIssues.filter((i) => i.severity === 'error');
|
|
90
122
|
let warnings = limitedIssues.filter((i) => i.severity === 'warning');
|
|
91
123
|
const infos = limitedIssues.filter((i) => i.severity === 'info');
|
|
92
124
|
const autoFixable = limitedIssues.filter((i) => i.autoFixable);
|
|
93
125
|
|
|
94
|
-
// Handle warningsAsErrors option
|
|
95
126
|
if (options?.warningsAsErrors) {
|
|
96
127
|
errors = [...errors, ...warnings];
|
|
97
128
|
warnings = [];
|
|
@@ -113,26 +144,6 @@ export class RevisionValidator {
|
|
|
113
144
|
};
|
|
114
145
|
}
|
|
115
146
|
|
|
116
|
-
/**
|
|
117
|
-
* Creates an empty validation result (for documents with no revisions).
|
|
118
|
-
*/
|
|
119
|
-
private static createEmptyResult(): ValidationResult {
|
|
120
|
-
return {
|
|
121
|
-
valid: true,
|
|
122
|
-
errors: [],
|
|
123
|
-
warnings: [],
|
|
124
|
-
infos: [],
|
|
125
|
-
autoFixable: [],
|
|
126
|
-
summary: {
|
|
127
|
-
totalIssues: 0,
|
|
128
|
-
errorCount: 0,
|
|
129
|
-
warningCount: 0,
|
|
130
|
-
infoCount: 0,
|
|
131
|
-
autoFixableCount: 0,
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
|
|
136
147
|
/**
|
|
137
148
|
* Validates revision ID uniqueness.
|
|
138
149
|
*
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin extension point for custom validation rules. Built-in rules
|
|
3
|
+
* live in `ValidationRules.ts`; this registry lets consumers add their
|
|
4
|
+
* own without modifying framework code. Custom rules run alongside the
|
|
5
|
+
* built-ins when `RevisionValidator.validate()` executes — the validator
|
|
6
|
+
* appends `runAll()` issues to its `infos`/`warnings`/`errors` buckets
|
|
7
|
+
* based on each rule's declared severity.
|
|
8
|
+
*/
|
|
9
|
+
import type { Document } from '../core/Document.js';
|
|
10
|
+
import { KeyedRegistry } from '../utils/KeyedRegistry.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Severity for custom validation rules. Distinct from the built-in
|
|
14
|
+
* `ValidationSeverity` enum so the public API surface has no name
|
|
15
|
+
* collision.
|
|
16
|
+
*/
|
|
17
|
+
export type CustomValidationSeverity = 'error' | 'warning' | 'info';
|
|
18
|
+
|
|
19
|
+
export interface CustomValidationIssue {
|
|
20
|
+
ruleCode: string;
|
|
21
|
+
severity: CustomValidationSeverity;
|
|
22
|
+
message: string;
|
|
23
|
+
/** Optional element identifier or path for navigation in tooling. */
|
|
24
|
+
location?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface CustomValidationRule {
|
|
28
|
+
/** Unique rule identifier — must not collide with built-in rule codes. */
|
|
29
|
+
code: string;
|
|
30
|
+
/** Human-readable description of what the rule checks. */
|
|
31
|
+
description: string;
|
|
32
|
+
severity: CustomValidationSeverity;
|
|
33
|
+
/**
|
|
34
|
+
* Run the rule against a document and return any issues found.
|
|
35
|
+
* Synchronous — async rules should be wrapped externally.
|
|
36
|
+
*/
|
|
37
|
+
validate(doc: Document): CustomValidationIssue[];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
class ValidationRuleRegistryImpl {
|
|
41
|
+
private readonly inner = new KeyedRegistry<CustomValidationRule>('ValidationRuleRegistry');
|
|
42
|
+
|
|
43
|
+
register(rule: CustomValidationRule): void {
|
|
44
|
+
this.inner.register(rule.code, rule);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
unregister(code: string): boolean {
|
|
48
|
+
return this.inner.unregister(code);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
has(code: string): boolean {
|
|
52
|
+
return this.inner.has(code);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
get(code: string): CustomValidationRule | undefined {
|
|
56
|
+
return this.inner.get(code);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
getAll(): CustomValidationRule[] {
|
|
60
|
+
return this.inner.values();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Run every registered rule and concatenate the issues. A throwing
|
|
64
|
+
* rule is captured as a synthetic 'error' issue so consumers see it. */
|
|
65
|
+
runAll(doc: Document): CustomValidationIssue[] {
|
|
66
|
+
const out: CustomValidationIssue[] = [];
|
|
67
|
+
for (const rule of this.inner.values()) {
|
|
68
|
+
try {
|
|
69
|
+
out.push(...rule.validate(doc));
|
|
70
|
+
} catch {
|
|
71
|
+
out.push({
|
|
72
|
+
ruleCode: rule.code,
|
|
73
|
+
severity: 'error',
|
|
74
|
+
message: `Rule "${rule.code}" threw during validation`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
clear(): void {
|
|
82
|
+
this.inner.clear();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export const ValidationRuleRegistry = new ValidationRuleRegistryImpl();
|
package/src/validation/index.ts
CHANGED
|
@@ -21,10 +21,10 @@ export {
|
|
|
21
21
|
getRuleByCode,
|
|
22
22
|
getRulesBySeverity,
|
|
23
23
|
getAutoFixableRules,
|
|
24
|
-
} from './ValidationRules';
|
|
24
|
+
} from './ValidationRules.js';
|
|
25
25
|
|
|
26
26
|
// Validator class
|
|
27
|
-
export { RevisionValidator } from './RevisionValidator';
|
|
27
|
+
export { RevisionValidator } from './RevisionValidator.js';
|
|
28
28
|
|
|
29
29
|
// Auto-fixer class
|
|
30
|
-
export { RevisionAutoFixer } from './RevisionAutoFixer';
|
|
30
|
+
export { RevisionAutoFixer } from './RevisionAutoFixer.js';
|
package/src/xml/XMLBuilder.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Provides a simple fluent API for generating WordprocessingML XML
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { removeInvalidXmlChars } from '../utils/xmlSanitization';
|
|
7
|
-
import type { ShadingConfig } from '../elements/CommonTypes';
|
|
8
|
-
import { buildShadingAttributes } from '../elements/CommonTypes';
|
|
6
|
+
import { removeInvalidXmlChars } from '../utils/xmlSanitization.js';
|
|
7
|
+
import type { ShadingConfig } from '../elements/CommonTypes.js';
|
|
8
|
+
import { buildShadingAttributes } from '../elements/CommonTypes.js';
|
|
9
9
|
|
|
10
10
|
/** Represents a parsed XML object from XMLParser.parseToObject() */
|
|
11
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- parsed XML has dynamic keys and recursive structure
|
|
@@ -759,6 +759,11 @@ export class XMLBuilder {
|
|
|
759
759
|
size?: number;
|
|
760
760
|
color?: string;
|
|
761
761
|
space?: number;
|
|
762
|
+
themeColor?: string;
|
|
763
|
+
themeTint?: string;
|
|
764
|
+
themeShade?: string;
|
|
765
|
+
shadow?: boolean;
|
|
766
|
+
frame?: boolean;
|
|
762
767
|
}
|
|
763
768
|
): XMLElement {
|
|
764
769
|
const attrs = XMLBuilder.buildAttributes({
|
|
@@ -766,6 +771,11 @@ export class XMLBuilder {
|
|
|
766
771
|
'w:sz': border.size,
|
|
767
772
|
'w:color': border.color,
|
|
768
773
|
'w:space': border.space,
|
|
774
|
+
'w:themeColor': border.themeColor,
|
|
775
|
+
'w:themeTint': border.themeTint,
|
|
776
|
+
'w:themeShade': border.themeShade,
|
|
777
|
+
'w:shadow': border.shadow === undefined ? undefined : border.shadow ? '1' : '0',
|
|
778
|
+
'w:frame': border.frame === undefined ? undefined : border.frame ? '1' : '0',
|
|
769
779
|
});
|
|
770
780
|
|
|
771
781
|
return XMLBuilder.wSelf(side, attrs);
|
package/src/xml/XMLParser.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Completes the DocXML framework (XMLBuilder + XMLParser)
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { getGlobalLogger, createScopedLogger, ILogger } from '../utils/logger';
|
|
8
|
-
import { XMLBuilder } from './XMLBuilder';
|
|
7
|
+
import { getGlobalLogger, createScopedLogger, ILogger } from '../utils/logger.js';
|
|
8
|
+
import { XMLBuilder } from './XMLBuilder.js';
|
|
9
9
|
|
|
10
10
|
// Create scoped logger for XMLParser operations
|
|
11
11
|
function getLogger(): ILogger {
|