docxmlater 10.0.2 → 10.0.3
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 +2 -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 +60 -54
- 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.map +1 -1
- package/dist/elements/Paragraph.js +128 -117
- 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.js +1 -1
- 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.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 +10107 -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 +4227 -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 +668 -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 +613 -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
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complete catalog of legacy boolean compat elements defined in
|
|
3
|
+
* ECMA-376 4th Edition Part 4 (Transitional) and [MS-DOCX] specification.
|
|
4
|
+
*
|
|
5
|
+
* These elements are direct children of <w:compat> with complex type CT_OnOff.
|
|
6
|
+
* They emulate rendering quirks of older word processors. When compatibilityMode
|
|
7
|
+
* is upgraded to 15, Word's modern layout engine no longer needs them and they
|
|
8
|
+
* should be removed.
|
|
9
|
+
*
|
|
10
|
+
* Source: ECMA-376 4th Edition Part 4 sections 2.15.3.1 through 2.15.3.65
|
|
11
|
+
* and the [MS-DOCX] specification section 2.15.3.
|
|
12
|
+
* Verified against: http://www.datypic.com/sc/ooxml/t-w_CT_Compat.html (65 elements)
|
|
13
|
+
*
|
|
14
|
+
* Element names include the w: namespace prefix as they appear in XML.
|
|
15
|
+
*/
|
|
16
|
+
export const LEGACY_COMPAT_ELEMENTS: string[] = [
|
|
17
|
+
// Word 6/95 emulation
|
|
18
|
+
'w:useSingleBorderforContiguousCells',
|
|
19
|
+
'w:wpJustification',
|
|
20
|
+
'w:noTabHangInd',
|
|
21
|
+
'w:noLeading',
|
|
22
|
+
'w:spaceForUL',
|
|
23
|
+
'w:noColumnBalance',
|
|
24
|
+
'w:balanceSingleByteDoubleByteWidth',
|
|
25
|
+
'w:noExtraLineSpacing',
|
|
26
|
+
'w:doNotLeaveBackslashAlone',
|
|
27
|
+
'w:ulTrailSpace',
|
|
28
|
+
'w:doNotExpandShiftReturn',
|
|
29
|
+
'w:spacingInWholePoints',
|
|
30
|
+
'w:lineWrapLikeWord6',
|
|
31
|
+
'w:printBodyTextBeforeHeader',
|
|
32
|
+
'w:printColBlack',
|
|
33
|
+
'w:wpSpaceWidth',
|
|
34
|
+
'w:showBreaksInFrames',
|
|
35
|
+
'w:subFontBySize',
|
|
36
|
+
'w:suppressBottomSpacing',
|
|
37
|
+
'w:suppressTopSpacing',
|
|
38
|
+
'w:suppressSpacingAtTopOfPage',
|
|
39
|
+
'w:suppressTopSpacingWP',
|
|
40
|
+
'w:suppressSpBfAfterPgBrk',
|
|
41
|
+
'w:swapBordersFacingPages',
|
|
42
|
+
'w:convMailMergeEsc',
|
|
43
|
+
'w:truncateFontHeightsLikeWP6',
|
|
44
|
+
'w:mwSmallCaps',
|
|
45
|
+
|
|
46
|
+
// Word 97/2000 emulation
|
|
47
|
+
'w:usePrinterMetrics',
|
|
48
|
+
'w:doNotSuppressParagraphBorders',
|
|
49
|
+
'w:wrapTrailSpaces',
|
|
50
|
+
'w:footnoteLayoutLikeWW8',
|
|
51
|
+
'w:shapeLayoutLikeWW8',
|
|
52
|
+
'w:alignTablesRowByRow',
|
|
53
|
+
'w:forgetLastTabAlignment',
|
|
54
|
+
'w:adjustLineHeightInTable',
|
|
55
|
+
'w:autoSpaceLikeWord95',
|
|
56
|
+
'w:noSpaceRaiseLower',
|
|
57
|
+
'w:doNotUseHTMLParagraphAutoSpacing',
|
|
58
|
+
'w:layoutRawTableWidth',
|
|
59
|
+
'w:layoutTableRowsApart',
|
|
60
|
+
'w:useWord97LineBreakRules',
|
|
61
|
+
'w:doNotBreakWrappedTables',
|
|
62
|
+
'w:doNotSnapToGridInCell',
|
|
63
|
+
'w:selectFldWithFirstOrLastChar',
|
|
64
|
+
'w:applyBreakingRules',
|
|
65
|
+
'w:doNotWrapTextWithPunct',
|
|
66
|
+
'w:doNotUseEastAsianBreakRules',
|
|
67
|
+
'w:useWord2002TableStyleRules',
|
|
68
|
+
|
|
69
|
+
// Word 2003+ additions
|
|
70
|
+
'w:growAutofit',
|
|
71
|
+
'w:useFELayout',
|
|
72
|
+
'w:useNormalStyleForList',
|
|
73
|
+
'w:doNotUseIndentAsNumberingTabStop',
|
|
74
|
+
'w:useAltKinsokuLineBreakRules',
|
|
75
|
+
'w:allowSpaceOfSameStyleInTable',
|
|
76
|
+
'w:doNotSuppressIndentation',
|
|
77
|
+
'w:doNotAutofitConstrainedTables',
|
|
78
|
+
'w:autofitToFirstFixedWidthCell',
|
|
79
|
+
'w:underlineTabInNumList',
|
|
80
|
+
'w:displayHangulFixedWidth',
|
|
81
|
+
'w:splitPgBreakAndParaMark',
|
|
82
|
+
'w:doNotVertAlignCellWithSp',
|
|
83
|
+
'w:doNotBreakConstrainedForcedTable',
|
|
84
|
+
'w:doNotVertAlignInTxbx',
|
|
85
|
+
'w:useAnsiKerningPairs',
|
|
86
|
+
'w:cachedColBalance',
|
|
87
|
+
];
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Set of legacy compat element names without the w: prefix,
|
|
91
|
+
* for efficient lookup during parsing and filtering.
|
|
92
|
+
*/
|
|
93
|
+
export const LEGACY_COMPAT_ELEMENT_NAMES = new Set<string>(
|
|
94
|
+
LEGACY_COMPAT_ELEMENTS.map(e => e.replace('w:', ''))
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
import type { CompatSetting } from '../types/compatibility-types';
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The w:compatSetting entries that Word 2013+ includes for
|
|
101
|
+
* fully modern documents. These are the settings emitted when
|
|
102
|
+
* a user clicks File > Info > Convert in Word.
|
|
103
|
+
*
|
|
104
|
+
* Note: useWord2013TrackBottomHyphenation is intentionally omitted.
|
|
105
|
+
* Its default value varies across Word versions and its presence
|
|
106
|
+
* could change hyphenation behavior. Real Word 2016+ documents
|
|
107
|
+
* sometimes include it as "0" and sometimes as "1".
|
|
108
|
+
*/
|
|
109
|
+
export const MODERN_COMPAT_SETTINGS: CompatSetting[] = [
|
|
110
|
+
{
|
|
111
|
+
name: 'compatibilityMode',
|
|
112
|
+
uri: 'http://schemas.microsoft.com/office/word',
|
|
113
|
+
val: '15',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'overrideTableStyleFontSizeAndJustification',
|
|
117
|
+
uri: 'http://schemas.microsoft.com/office/word',
|
|
118
|
+
val: '1',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'enableOpenTypeFeatures',
|
|
122
|
+
uri: 'http://schemas.microsoft.com/office/word',
|
|
123
|
+
val: '1',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'doNotFlipMirrorIndents',
|
|
127
|
+
uri: 'http://schemas.microsoft.com/office/word',
|
|
128
|
+
val: '1',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'differentiateMultirowTableHeaders',
|
|
132
|
+
uri: 'http://schemas.microsoft.com/office/word',
|
|
133
|
+
val: '1',
|
|
134
|
+
},
|
|
135
|
+
];
|
|
136
|
+
|
|
137
|
+
/** The Microsoft Office Word URI used for w:compatSetting entries */
|
|
138
|
+
export const MS_WORD_COMPAT_URI = 'http://schemas.microsoft.com/office/word';
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document validation and processing limits
|
|
3
|
+
* These constants define thresholds for memory usage, file sizes, and content limits
|
|
4
|
+
* Based on Microsoft Word compatibility constraints and practical performance testing
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const PROPERTY_LIMITS = {
|
|
8
|
+
MAX_STRING_LENGTH: 10000,
|
|
9
|
+
MAX_REVISION: 999999,
|
|
10
|
+
} as const;
|
|
11
|
+
|
|
12
|
+
const FILE_SIZE_LIMITS = {
|
|
13
|
+
WARNING_SIZE_MB: 50,
|
|
14
|
+
ERROR_SIZE_MB: 150,
|
|
15
|
+
} as const;
|
|
16
|
+
|
|
17
|
+
const XML_LIMITS = {
|
|
18
|
+
MAX_PARSE_SIZE_MB: 10,
|
|
19
|
+
MAX_PARSE_SIZE_BYTES: 10 * 1024 * 1024,
|
|
20
|
+
} as const;
|
|
21
|
+
|
|
22
|
+
const MEMORY_LIMITS = {
|
|
23
|
+
DEFAULT_MAX_HEAP_PERCENT: 80,
|
|
24
|
+
DEFAULT_MAX_RSS_MB: 2048,
|
|
25
|
+
DEFAULT_USE_ABSOLUTE_LIMIT: true,
|
|
26
|
+
} as const;
|
|
27
|
+
|
|
28
|
+
const IMAGE_LIMITS = {
|
|
29
|
+
DEFAULT_MAX_IMAGE_COUNT: 20,
|
|
30
|
+
DEFAULT_MAX_TOTAL_SIZE_MB: 100,
|
|
31
|
+
DEFAULT_MAX_SINGLE_SIZE_MB: 20,
|
|
32
|
+
} as const;
|
|
33
|
+
|
|
34
|
+
const SIZE_ESTIMATES = {
|
|
35
|
+
BYTES_PER_PARAGRAPH: 200,
|
|
36
|
+
BYTES_PER_TABLE: 1000,
|
|
37
|
+
BASE_STRUCTURE_BYTES: 50000,
|
|
38
|
+
} as const;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* All limits combined for easy import
|
|
42
|
+
*/
|
|
43
|
+
export const LIMITS = {
|
|
44
|
+
...PROPERTY_LIMITS,
|
|
45
|
+
...FILE_SIZE_LIMITS,
|
|
46
|
+
...XML_LIMITS,
|
|
47
|
+
...MEMORY_LIMITS,
|
|
48
|
+
...IMAGE_LIMITS,
|
|
49
|
+
...SIZE_ESTIMATES,
|
|
50
|
+
} as const;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Core Module
|
|
2
|
+
|
|
3
|
+
`src/core/` — Document lifecycle, XML parsing/generation, validation, relationships.
|
|
4
|
+
|
|
5
|
+
## Classes
|
|
6
|
+
|
|
7
|
+
### Document (`Document.ts`)
|
|
8
|
+
|
|
9
|
+
Primary entry point. Factory pattern: `Document.create()` (new), `Document.load()`/`loadFromBuffer()` (existing). Disposal pattern: always call `dispose()` when done.
|
|
10
|
+
|
|
11
|
+
**Load Options:**
|
|
12
|
+
```typescript
|
|
13
|
+
interface DocumentLoadOptions {
|
|
14
|
+
revisionHandling?: 'accept' | 'strip' | 'preserve'; // default: 'accept'
|
|
15
|
+
acceptRevisions?: boolean; // true = parse then accept in-memory
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Use `revisionHandling: 'preserve'` to retain `pPrChange` and other revision elements during round-trip.
|
|
20
|
+
|
|
21
|
+
### DocumentParser (`DocumentParser.ts`)
|
|
22
|
+
|
|
23
|
+
Converts XML to JavaScript object models. Position-based parsing (ReDoS-safe).
|
|
24
|
+
|
|
25
|
+
**Key behaviors:**
|
|
26
|
+
- Hyperlink defragmentation (merges consecutive hyperlinks with same URL)
|
|
27
|
+
- Special characters: `<w:tab/>`, `<w:br/>` → string equivalents
|
|
28
|
+
- Multi-paragraph complex fields: assembles fields (like TOC) spanning multiple paragraphs into single `ComplexField` objects
|
|
29
|
+
- Element order via `_orderedChildren` for correct tab/break ordering
|
|
30
|
+
- Body-level bookmarks: `extractBodyLevelBookmarkStarts()`/`extractBodyLevelBookmarkEnds()`
|
|
31
|
+
- Form field data: `parseFormFieldData()` with typed interfaces
|
|
32
|
+
- Footnotes/endnotes: `parseFootnotesXml()`/`parseEndnotesXml()`
|
|
33
|
+
- Unknown elements preserved for round-trip fidelity
|
|
34
|
+
|
|
35
|
+
### DocumentGenerator (`DocumentGenerator.ts`)
|
|
36
|
+
|
|
37
|
+
Converts object models to DOCX XML. Template-based, on-demand, validates before generation.
|
|
38
|
+
|
|
39
|
+
Generates: `[Content_Types].xml`, `_rels/.rels`, `word/document.xml`, `word/styles.xml`, `word/numbering.xml`, `word/settings.xml`, `word/fontTable.xml`, `word/_rels/document.xml.rels`, `word/footnotes.xml`, `word/endnotes.xml`, `docProps/core.xml`, `docProps/app.xml`.
|
|
40
|
+
|
|
41
|
+
### DocumentValidator (`DocumentValidator.ts`)
|
|
42
|
+
|
|
43
|
+
Estimates final DOCX file size and validates memory usage. Size formula: `(base ~5KB + text*1.5 + images + cells*200) * 0.3 compression`.
|
|
44
|
+
|
|
45
|
+
### RelationshipManager (`RelationshipManager.ts`)
|
|
46
|
+
|
|
47
|
+
Manages relationships (images, hyperlinks, headers, footers, comments, footnotes, endnotes, people). Sequential IDs (`rId1`, `rId2`, ...). Singleton types (comments, footnotes, endnotes, people) need check-before-add guard to prevent duplicates on round-trip.
|
|
48
|
+
|
|
49
|
+
### BaseManager (`BaseManager.ts`)
|
|
50
|
+
|
|
51
|
+
Abstract base for all manager classes. Subclasses: StylesManager, NumberingManager, ImageManager, BookmarkManager, CommentManager, RevisionManager, FootnoteManager, EndnoteManager, DrawingManager, HeaderFooterManager.
|
|
52
|
+
|
|
53
|
+
## Data Flow
|
|
54
|
+
|
|
55
|
+
**Load:** `Document.load()` → `ZipHandler.load()` → extract XML → `DocumentParser.parse()` → parse styles/numbering/relationships → build object model → return Document
|
|
56
|
+
|
|
57
|
+
**Save:** `Document.save()` → `DocumentValidator.estimateSize()` → `DocumentGenerator.generate()` → generate all XML → `RelationshipManager.generateXML()` → `ZipWriter.create()` → write ZIP
|
|
58
|
+
|
|
59
|
+
## Revision Acceptance Architecture
|
|
60
|
+
|
|
61
|
+
The framework implements the **industry-standard in-memory DOM transformation approach** (same as OpenXML PowerTools, Aspose.Words).
|
|
62
|
+
|
|
63
|
+
**`acceptAllRevisions()` transforms Revision objects in the in-memory model:**
|
|
64
|
+
1. **Insertions (`w:ins`)**: Unwrap — child Runs/Hyperlinks extracted into parent paragraph
|
|
65
|
+
2. **Deletions (`w:del`)**: Remove — revision and content deleted from model
|
|
66
|
+
3. **MoveFrom (`w:moveFrom`)**: Remove — content exists at moveTo destination
|
|
67
|
+
4. **MoveTo (`w:moveTo`)**: Unwrap — keep content, remove wrapper
|
|
68
|
+
5. **Property changes (`w:rPrChange`, etc.)**: Remove metadata, keep current formatting
|
|
69
|
+
|
|
70
|
+
Because this transforms the in-memory model (not raw XML), standard `save()` regeneration includes both accepted changes AND subsequent modifications.
|
|
71
|
+
|
|
72
|
+
**`acceptAllRevisionsRawXml()` (legacy):** Sets `skipDocumentXmlRegeneration = true`. Any modifications after this call will NOT be saved.
|
|
73
|
+
|
|
74
|
+
**Helper Functions:**
|
|
75
|
+
```typescript
|
|
76
|
+
import { acceptRevisionsInMemory, paragraphHasRevisions, getRevisionsFromParagraph, countRevisionsByType } from 'docxmlater';
|
|
77
|
+
|
|
78
|
+
// Selective acceptance
|
|
79
|
+
const result = acceptRevisionsInMemory(doc, {
|
|
80
|
+
acceptInsertions: true,
|
|
81
|
+
acceptDeletions: true,
|
|
82
|
+
acceptMoves: true,
|
|
83
|
+
acceptPropertyChanges: false,
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Sanitization & Cleanup Pipeline
|
|
88
|
+
|
|
89
|
+
All methods below are explicitly called by user code. None run automatically. **Removals are intentional — do not treat as bugs.**
|
|
90
|
+
|
|
91
|
+
**Post-Processing (`_postProcessDocumentXml`):** Runs during `prepareSave()`, after `updateDocumentXml()` and before `updateSettingsXml()`. Zero overhead when no flags set.
|
|
92
|
+
|
|
93
|
+
| Method | Removes | Why |
|
|
94
|
+
|--------|---------|-----|
|
|
95
|
+
| `flattenFieldCodes()` | INCLUDEPICTURE fldChar/instrText runs | Outlook bloat. Preserves w:drawing. Other fields untouched. Sets `skipDocumentXmlRegeneration = true`. |
|
|
96
|
+
| `stripOrphanRSIDs()` | Unreferenced RSIDs in settings.xml | 80%+ of settings.xml. Preserves `rsidRoot`. |
|
|
97
|
+
| `clearDirectSpacingForStyles()` | Direct w:spacing on styled paragraphs | Lets style spacing take effect. Protects w:pPrChange/w:rPr. |
|
|
98
|
+
| `cleanupUnusedNumbering()` | Unreferenced numbering defs | Scans 6 sources before removing. |
|
|
99
|
+
| `consolidateNumbering()` | Duplicate abstract numberings | Copy-paste creates 10-50+ identical copies. |
|
|
100
|
+
|
|
101
|
+
## Performance
|
|
102
|
+
|
|
103
|
+
| Document Size | Load/Save Time |
|
|
104
|
+
|--------------|----------------|
|
|
105
|
+
| <100KB | <50ms |
|
|
106
|
+
| 100KB-1MB | 100-500ms |
|
|
107
|
+
| >1MB | 500ms-2s |
|
|
108
|
+
|
|
109
|
+
Buffer operations are 20-30% faster than file I/O. Base memory: ~2MB per Document, ~2 bytes/char, full buffer per image, ~200 bytes/cell.
|