docxmlater 10.0.1 → 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 +3 -2
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.d.ts +0 -27
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +13 -13
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +24 -19
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +272 -71
- 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.d.ts.map +1 -1
- package/dist/helpers/CleanupHelper.js +1 -7
- 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
package/dist/utils/units.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/utils/units.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/utils/units.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Unit Conversion Utilities\r\n *\r\n * Word documents use multiple measurement units:\r\n * - Twips: 1/20th of a point (used for most measurements like margins, indents)\r\n * - EMUs: English Metric Units (used for DrawingML, images)\r\n * - Points: Typography unit (72 points = 1 inch)\r\n * - Pixels: Screen measurement (depends on DPI)\r\n * - Inches/Centimeters: Human-readable units\r\n *\r\n * Conversion factors:\r\n * - 1 inch = 72 points = 1440 twips = 914,400 EMUs\r\n * - 1 cm = 0.393701 inches = 360,000 EMUs\r\n * - 1 point = 20 twips = 12,700 EMUs\r\n */\r\n\r\n/**\r\n * Standard DPI (dots per inch) for screen displays\r\n */\r\nexport const STANDARD_DPI = 96;\r\n\r\n/**\r\n * Conversion constants\r\n */\r\nexport const UNITS = {\r\n /** EMUs per inch */\r\n EMUS_PER_INCH: 914400,\r\n /** Twips per inch */\r\n TWIPS_PER_INCH: 1440,\r\n /** Points per inch */\r\n POINTS_PER_INCH: 72,\r\n /** Twips per point */\r\n TWIPS_PER_POINT: 20,\r\n /** EMUs per twip */\r\n EMUS_PER_TWIP: 635,\r\n /** EMUs per point */\r\n EMUS_PER_POINT: 12700,\r\n /** EMUs per centimeter */\r\n EMUS_PER_CM: 360000,\r\n /** Inches per centimeter */\r\n INCHES_PER_CM: 0.393701,\r\n /** Centimeters per inch */\r\n CM_PER_INCH: 2.54,\r\n /** Half-points per point (Word uses half-points for font sizes) */\r\n HALF_POINTS_PER_POINT: 2,\r\n} as const;\r\n\r\n// ============================================================================\r\n// Twips Conversions\r\n// ============================================================================\r\n\r\n/**\r\n * Converts twips to points\r\n * @param twips Value in twips\r\n * @returns Value in points\r\n */\r\nexport function twipsToPoints(twips: number): number {\r\n return twips / UNITS.TWIPS_PER_POINT;\r\n}\r\n\r\n/**\r\n * Converts twips to inches\r\n * @param twips Value in twips\r\n * @returns Value in inches\r\n */\r\nexport function twipsToInches(twips: number): number {\r\n return twips / UNITS.TWIPS_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts twips to centimeters\r\n * @param twips Value in twips\r\n * @returns Value in centimeters\r\n */\r\nexport function twipsToCm(twips: number): number {\r\n return twipsToInches(twips) * UNITS.CM_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts twips to EMUs\r\n * @param twips Value in twips\r\n * @returns Value in EMUs\r\n */\r\nexport function twipsToEmus(twips: number): number {\r\n return Math.round(twips * UNITS.EMUS_PER_TWIP);\r\n}\r\n\r\n// ============================================================================\r\n// EMUs Conversions\r\n// ============================================================================\r\n\r\n/**\r\n * Converts EMUs to twips\r\n * @param emus Value in EMUs\r\n * @returns Value in twips\r\n */\r\nexport function emusToTwips(emus: number): number {\r\n return Math.round(emus / UNITS.EMUS_PER_TWIP);\r\n}\r\n\r\n/**\r\n * Converts EMUs to inches\r\n * @param emus Value in EMUs\r\n * @returns Value in inches\r\n */\r\nexport function emusToInches(emus: number): number {\r\n return emus / UNITS.EMUS_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts EMUs to centimeters\r\n * @param emus Value in EMUs\r\n * @returns Value in centimeters\r\n */\r\nexport function emusToCm(emus: number): number {\r\n return emus / UNITS.EMUS_PER_CM;\r\n}\r\n\r\n/**\r\n * Converts EMUs to points\r\n * @param emus Value in EMUs\r\n * @returns Value in points\r\n */\r\nexport function emusToPoints(emus: number): number {\r\n return emus / UNITS.EMUS_PER_POINT;\r\n}\r\n\r\n/**\r\n * Converts EMUs to pixels\r\n * @param emus Value in EMUs\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in pixels\r\n */\r\nexport function emusToPixels(emus: number, dpi: number = STANDARD_DPI): number {\r\n return Math.round((emus / UNITS.EMUS_PER_INCH) * dpi);\r\n}\r\n\r\n// ============================================================================\r\n// Points Conversions\r\n// ============================================================================\r\n\r\n/**\r\n * Converts points to twips\r\n * @param points Value in points\r\n * @returns Value in twips\r\n */\r\nexport function pointsToTwips(points: number): number {\r\n return points * UNITS.TWIPS_PER_POINT;\r\n}\r\n\r\n/**\r\n * Converts points to EMUs\r\n * @param points Value in points\r\n * @returns Value in EMUs\r\n */\r\nexport function pointsToEmus(points: number): number {\r\n return Math.round(points * UNITS.EMUS_PER_POINT);\r\n}\r\n\r\n/**\r\n * Converts points to inches\r\n * @param points Value in points\r\n * @returns Value in inches\r\n */\r\nexport function pointsToInches(points: number): number {\r\n return points / UNITS.POINTS_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts points to centimeters\r\n * @param points Value in points\r\n * @returns Value in centimeters\r\n */\r\nexport function pointsToCm(points: number): number {\r\n return pointsToInches(points) * UNITS.CM_PER_INCH;\r\n}\r\n\r\n// ============================================================================\r\n// Half-Points Conversions (Word uses half-points for font sizes)\r\n// ============================================================================\r\n\r\n/**\r\n * Converts points to half-points (for Word font size storage)\r\n * @param points Value in points\r\n * @returns Value in half-points\r\n */\r\nexport function pointsToHalfPoints(points: number): number {\r\n return points * UNITS.HALF_POINTS_PER_POINT;\r\n}\r\n\r\n/**\r\n * Converts half-points to points (from Word font size storage)\r\n * @param halfPoints Value in half-points\r\n * @returns Value in points\r\n */\r\nexport function halfPointsToPoints(halfPoints: number): number {\r\n return halfPoints / UNITS.HALF_POINTS_PER_POINT;\r\n}\r\n\r\n// ============================================================================\r\n// Inches Conversions\r\n// ============================================================================\r\n\r\n/**\r\n * Converts inches to twips\r\n * @param inches Value in inches\r\n * @returns Value in twips\r\n */\r\nexport function inchesToTwips(inches: number): number {\r\n return Math.round(inches * UNITS.TWIPS_PER_INCH);\r\n}\r\n\r\n/**\r\n * Converts inches to EMUs\r\n * @param inches Value in inches\r\n * @returns Value in EMUs\r\n */\r\nexport function inchesToEmus(inches: number): number {\r\n return Math.round(inches * UNITS.EMUS_PER_INCH);\r\n}\r\n\r\n/**\r\n * Converts inches to points\r\n * @param inches Value in inches\r\n * @returns Value in points\r\n */\r\nexport function inchesToPoints(inches: number): number {\r\n return inches * UNITS.POINTS_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts inches to centimeters\r\n * @param inches Value in inches\r\n * @returns Value in centimeters\r\n */\r\nexport function inchesToCm(inches: number): number {\r\n return inches * UNITS.CM_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts inches to pixels\r\n * @param inches Value in inches\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in pixels\r\n */\r\nexport function inchesToPixels(inches: number, dpi: number = STANDARD_DPI): number {\r\n return Math.round(inches * dpi);\r\n}\r\n\r\n// ============================================================================\r\n// Centimeters Conversions\r\n// ============================================================================\r\n\r\n/**\r\n * Converts centimeters to twips\r\n * @param cm Value in centimeters\r\n * @returns Value in twips\r\n */\r\nexport function cmToTwips(cm: number): number {\r\n return inchesToTwips(cm * UNITS.INCHES_PER_CM);\r\n}\r\n\r\n/**\r\n * Converts centimeters to EMUs\r\n * @param cm Value in centimeters\r\n * @returns Value in EMUs\r\n */\r\nexport function cmToEmus(cm: number): number {\r\n return Math.round(cm * UNITS.EMUS_PER_CM);\r\n}\r\n\r\n/**\r\n * Converts centimeters to inches\r\n * @param cm Value in centimeters\r\n * @returns Value in inches\r\n */\r\nexport function cmToInches(cm: number): number {\r\n return cm * UNITS.INCHES_PER_CM;\r\n}\r\n\r\n/**\r\n * Converts centimeters to points\r\n * @param cm Value in centimeters\r\n * @returns Value in points\r\n */\r\nexport function cmToPoints(cm: number): number {\r\n return inchesToPoints(cmToInches(cm));\r\n}\r\n\r\n/**\r\n * Converts centimeters to pixels\r\n * @param cm Value in centimeters\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in pixels\r\n */\r\nexport function cmToPixels(cm: number, dpi: number = STANDARD_DPI): number {\r\n return inchesToPixels(cmToInches(cm), dpi);\r\n}\r\n\r\n// ============================================================================\r\n// Pixels Conversions\r\n// ============================================================================\r\n\r\n/**\r\n * Converts pixels to EMUs\r\n * @param pixels Value in pixels\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in EMUs\r\n */\r\nexport function pixelsToEmus(pixels: number, dpi: number = STANDARD_DPI): number {\r\n return Math.round((pixels / dpi) * UNITS.EMUS_PER_INCH);\r\n}\r\n\r\n/**\r\n * Converts pixels to inches\r\n * @param pixels Value in pixels\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in inches\r\n */\r\nexport function pixelsToInches(pixels: number, dpi: number = STANDARD_DPI): number {\r\n return pixels / dpi;\r\n}\r\n\r\n/**\r\n * Converts pixels to twips\r\n * @param pixels Value in pixels\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in twips\r\n */\r\nexport function pixelsToTwips(pixels: number, dpi: number = STANDARD_DPI): number {\r\n return inchesToTwips(pixelsToInches(pixels, dpi));\r\n}\r\n\r\n/**\r\n * Converts pixels to centimeters\r\n * @param pixels Value in pixels\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in centimeters\r\n */\r\nexport function pixelsToCm(pixels: number, dpi: number = STANDARD_DPI): number {\r\n return pixelsToInches(pixels, dpi) * UNITS.CM_PER_INCH;\r\n}\r\n\r\n/**\r\n * Converts pixels to points\r\n * @param pixels Value in pixels\r\n * @param dpi Dots per inch (default: 96)\r\n * @returns Value in points\r\n */\r\nexport function pixelsToPoints(pixels: number, dpi: number = STANDARD_DPI): number {\r\n return inchesToPoints(pixelsToInches(pixels, dpi));\r\n}\r\n\r\n// ============================================================================\r\n// Common Document Sizes (in twips)\r\n// ============================================================================\r\n\r\n/**\r\n * Common page sizes in twips\r\n */\r\nexport const PAGE_SIZES = {\r\n /** Letter (8.5\" x 11\") */\r\n LETTER: {\r\n width: 12240, // 8.5 inches\r\n height: 15840, // 11 inches\r\n },\r\n /** A4 (21cm x 29.7cm) */\r\n A4: {\r\n width: 11906, // 21cm\r\n height: 16838, // 29.7cm\r\n },\r\n /** Legal (8.5\" x 14\") */\r\n LEGAL: {\r\n width: 12240, // 8.5 inches\r\n height: 20160, // 14 inches\r\n },\r\n /** Tabloid (11\" x 17\") */\r\n TABLOID: {\r\n width: 15840, // 11 inches\r\n height: 24480, // 17 inches\r\n },\r\n /** A3 (29.7cm x 42cm) */\r\n A3: {\r\n width: 16838, // 29.7cm\r\n height: 23811, // 42cm\r\n },\r\n} as const;\r\n\r\n/**\r\n * Common margin sizes in twips\r\n */\r\nexport const COMMON_MARGINS = {\r\n /** Normal margins (1 inch all around) */\r\n NORMAL: {\r\n top: 1440,\r\n bottom: 1440,\r\n left: 1440,\r\n right: 1440,\r\n },\r\n /** Narrow margins (0.5 inch all around) */\r\n NARROW: {\r\n top: 720,\r\n bottom: 720,\r\n left: 720,\r\n right: 720,\r\n },\r\n /** Wide margins (2 inches left/right, 1 inch top/bottom) */\r\n WIDE: {\r\n top: 1440,\r\n bottom: 1440,\r\n left: 2880,\r\n right: 2880,\r\n },\r\n /** Moderate margins (1 inch top/bottom, 0.75 inch left/right) */\r\n MODERATE: {\r\n top: 1440,\r\n bottom: 1440,\r\n left: 1080,\r\n right: 1080,\r\n },\r\n} as const;\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAaA,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAQ/D;AAOD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQtD;AAgBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6ClD;AAQD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWxD;AAOD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAa/D;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAaA,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAQ/D;AAOD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQtD;AAgBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6ClD;AAQD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWxD;AAOD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAa/D;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,IAAI,CActE;AAmBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBpD;AASD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,IAAI,CAatE;AAKD,eAAO,MAAM,gBAAgB,sBAAgB,CAAC;AAQ9C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAiB,GAAG,IAAI,CAcnF;AASD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,SAAU,EACnB,QAAQ,SAAI,GACX,IAAI,CAQN;AASD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,SAAS,SAAc,GACtB,IAAI,CAUN;AASD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAc,GAAG,IAAI,CAkB5E;AAQD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,IAAI,CAQ/E;AAQD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAe,GAAG,IAAI,CAQhF;AAUD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,IAAI,CAoBpE;AAKD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAuDpF;AAaD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAyBzE;AAaD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,oBAAoB,CA0BtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Validation utilities for DOCX files\r\n */\r\n\r\nimport { REQUIRED_DOCX_FILES } from '../zip/types';\r\nimport { MissingRequiredFileError } from '../zip/errors';\r\nimport { defaultLogger } from './logger';\r\n\r\n/**\r\n * Validates that all required DOCX files are present\r\n * @param filePaths - Array of file paths in the archive\r\n * @throws {MissingRequiredFileError} If a required file is missing\r\n */\r\nexport function validateDocxStructure(filePaths: string[]): void {\r\n const fileSet = new Set(filePaths);\r\n\r\n for (const requiredFile of REQUIRED_DOCX_FILES) {\r\n if (!fileSet.has(requiredFile)) {\r\n throw new MissingRequiredFileError(requiredFile);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Checks if a file path represents a binary file based on extension\r\n * @param filePath - The file path to check\r\n * @returns True if the file is likely binary\r\n */\r\nexport function isBinaryFile(filePath: string): boolean {\r\n const binaryExtensions = [\r\n '.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff', '.ico',\r\n '.emf', '.wmf', '.bin', '.dat', '.ttf', '.otf', '.woff',\r\n ];\r\n\r\n const extension = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();\r\n return binaryExtensions.includes(extension);\r\n}\r\n\r\n/**\r\n * Normalizes a file path for consistent comparisons\r\n * Converts backslashes to forward slashes and removes leading slashes\r\n * Also validates against path traversal attacks\r\n *\r\n * **Security:** This function validates paths to prevent:\r\n * - Path traversal attacks (../, ..\\, URL-encoded variants)\r\n * - Absolute paths (C:\\, /etc/, etc.)\r\n * - Malicious DOCX files attempting directory escape\r\n *\r\n * @param path - The path to normalize\r\n * @returns Normalized path\r\n * @throws {Error} If path contains path traversal sequences, absolute paths, or URL-encoded attacks\r\n */\r\nexport function normalizePath(path: string): string {\r\n // First convert all backslashes to forward slashes for consistent checking\r\n const normalized = path.replace(/\\\\/g, '/').replace(/^\\/+/, '');\r\n\r\n // Security: Reject URL-encoded path traversal attempts\r\n // Attackers might try: %2e%2e%2f (%2e = . and %2f = /)\r\n if (/%2[eE]|%2[fF]|%5[cC]/.test(path)) {\r\n throw new Error(\r\n `Invalid file path: \"${path}\" contains URL-encoded characters (%2E, %2F, %5C). ` +\r\n `This could be an attempt to bypass path validation. ` +\r\n `Only plain characters are allowed in DOCX file paths.`\r\n );\r\n }\r\n\r\n // Security: Prevent path traversal attacks\r\n // Check AFTER normalization when all paths use forward slashes\r\n // This catches: ../, /.., or standalone \"..\"\r\n if (normalized.includes('../') || normalized.includes('/..') || normalized === '..') {\r\n throw new Error(\r\n `Invalid file path: \"${path}\" contains path traversal sequence (..). ` +\r\n `This could be a malicious DOCX file attempting directory traversal. ` +\r\n `DOCX archives must only contain relative paths within the archive.`\r\n );\r\n }\r\n\r\n // Security: Prevent absolute paths (Windows drive letters)\r\n // Examples: C:/, C:\\, D:, etc.\r\n if (/^[a-zA-Z]:/.test(normalized)) {\r\n throw new Error(\r\n `Invalid file path: \"${path}\" appears to be an absolute Windows path. ` +\r\n `Absolute paths are not allowed in DOCX archives. ` +\r\n `Only relative paths within the archive are permitted.`\r\n );\r\n }\r\n\r\n // Security: Prevent Unix absolute paths\r\n // After removing leading slashes, if it starts with / it's suspicious\r\n if (path.startsWith('/') && normalized.startsWith('/')) {\r\n throw new Error(\r\n `Invalid file path: \"${path}\" appears to be an absolute Unix path. ` +\r\n `Only relative paths are allowed in DOCX archives.`\r\n );\r\n }\r\n\r\n return normalized;\r\n}\r\n\r\n/**\r\n * Validates that a buffer contains a valid ZIP file signature\r\n * ZIP files start with the signature 'PK' (0x50 0x4B)\r\n * @param buffer - The buffer to validate\r\n * @returns True if the buffer appears to be a ZIP file\r\n */\r\nexport function isValidZipBuffer(buffer: Buffer): boolean {\r\n if (buffer.length < 4) {\r\n return false;\r\n }\r\n\r\n // Check for ZIP signature: PK\\x03\\x04 or PK\\x05\\x06 (for empty archives)\r\n return (\r\n (buffer[0] === 0x50 && buffer[1] === 0x4B) &&\r\n ((buffer[2] === 0x03 && buffer[3] === 0x04) ||\r\n (buffer[2] === 0x05 && buffer[3] === 0x06))\r\n );\r\n}\r\n\r\n/**\r\n * Checks if a string is valid UTF-8 text\r\n * @param content - The content to check\r\n * @returns True if the content is valid text\r\n */\r\nexport function isTextContent(content: Buffer | string): boolean {\r\n if (typeof content === 'string') {\r\n return true;\r\n }\r\n\r\n // Try to decode as UTF-8 and check for null bytes\r\n try {\r\n const text = content.toString('utf8');\r\n // Binary files often contain null bytes\r\n return !text.includes('\\0');\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Validates a twips value (used for spacing, indentation, margins)\r\n * Twips: 1/20th of a point, 1440 twips = 1 inch\r\n * Reasonable range: -31680 to 31680 (±22 inches)\r\n * @param value - The twips value to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the value is invalid\r\n */\r\nexport function validateTwips(value: number, fieldName = 'value'): void {\r\n if (!Number.isFinite(value)) {\r\n throw new Error(`${fieldName} must be a finite number, got ${value}`);\r\n }\r\n\r\n // Reasonable range: ±22 inches (31680 twips)\r\n const MIN_TWIPS = -31680;\r\n const MAX_TWIPS = 31680;\r\n\r\n if (value < MIN_TWIPS || value > MAX_TWIPS) {\r\n throw new Error(\r\n `${fieldName} out of range: ${value} twips (allowed: ${MIN_TWIPS} to ${MAX_TWIPS}, ±22 inches)`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes a color to uppercase 6-character hex format\r\n * Accepts 3-character or 6-character hex colors with or without '#' prefix\r\n * Follows Microsoft Word convention of uppercase hex colors\r\n *\r\n * @param color - Color to normalize (e.g., '#F00', 'FF0000', '#FF0000', 'f00')\r\n * @returns Normalized color (e.g., 'FF0000')\r\n * @throws Error if color format is invalid\r\n *\r\n * @example\r\n * ```typescript\r\n * normalizeColor('#F00') // Returns: 'FF0000'\r\n * normalizeColor('FF0000') // Returns: 'FF0000'\r\n * normalizeColor('#ff0000') // Returns: 'FF0000'\r\n * normalizeColor('f00') // Returns: 'FF0000'\r\n * ```\r\n */\r\nexport function normalizeColor(color: string): string {\r\n const hex = color.replace(/^#/, '');\r\n\r\n // Validate hex format\r\n if (!/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(hex)) {\r\n throw new Error(\r\n `Invalid color format: \"${color}\". Expected 3 or 6-character hex ` +\r\n `(e.g., \"FF0000\", \"#FF0000\", \"F00\", or \"#F00\")`\r\n );\r\n }\r\n\r\n // Expand 3-character to 6-character\r\n if (hex.length === 3) {\r\n return (hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2)).toUpperCase();\r\n }\r\n\r\n return hex.toUpperCase();\r\n}\r\n\r\n/**\r\n * Validates a hexadecimal color value\r\n * Must be 6 characters (RRGGBB format)\r\n * @param color - The color hex string to validate (without #)\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the color is invalid\r\n */\r\nexport function validateColor(color: string, fieldName = 'color'): void {\r\n if (typeof color !== 'string') {\r\n throw new Error(`${fieldName} must be a string, got ${typeof color}`);\r\n }\r\n\r\n // Allow both with and without # prefix\r\n const cleanColor = color.startsWith('#') ? color.substring(1) : color;\r\n\r\n if (!/^[0-9A-Fa-f]{6}$/.test(cleanColor)) {\r\n throw new Error(\r\n `${fieldName} must be a 6-digit hex color (e.g., 'FF0000' or '#FF0000'), got '${color}'`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Alias for validateColor for backwards compatibility\r\n */\r\nexport const validateHexColor = validateColor;\r\n\r\n/**\r\n * Validates a numbering ID (must be non-negative integer)\r\n * @param numId - The numbering ID to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the ID is invalid\r\n */\r\nexport function validateNumberingId(numId: number, fieldName = 'numbering ID'): void {\r\n if (!Number.isInteger(numId)) {\r\n throw new Error(`${fieldName} must be an integer, got ${numId}`);\r\n }\r\n\r\n if (numId < 0) {\r\n throw new Error(`${fieldName} must be non-negative, got ${numId}`);\r\n }\r\n\r\n // Word supports numbering IDs up to 2147483647\r\n const MAX_NUM_ID = 2147483647;\r\n if (numId > MAX_NUM_ID) {\r\n throw new Error(`${fieldName} exceeds maximum value ${MAX_NUM_ID}, got ${numId}`);\r\n }\r\n}\r\n\r\n/**\r\n * Validates a numbering level (0-8 for Word)\r\n * @param level - The level to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @param maxLevel - Maximum allowed level (default 8)\r\n * @throws {Error} If the level is invalid\r\n */\r\nexport function validateLevel(\r\n level: number,\r\n fieldName = 'level',\r\n maxLevel = 8\r\n): void {\r\n if (!Number.isInteger(level)) {\r\n throw new Error(`${fieldName} must be an integer, got ${level}`);\r\n }\r\n\r\n if (level < 0 || level > maxLevel) {\r\n throw new Error(`${fieldName} must be between 0 and ${maxLevel}, got ${level}`);\r\n }\r\n}\r\n\r\n/**\r\n * Validates an alignment value against allowed values\r\n * @param alignment - The alignment value to validate\r\n * @param allowed - Array of allowed alignment values\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the alignment is invalid\r\n */\r\nexport function validateAlignment(\r\n alignment: string,\r\n allowed: readonly string[],\r\n fieldName = 'alignment'\r\n): void {\r\n if (typeof alignment !== 'string') {\r\n throw new Error(`${fieldName} must be a string, got ${typeof alignment}`);\r\n }\r\n\r\n if (!allowed.includes(alignment)) {\r\n throw new Error(\r\n `Invalid ${fieldName}: '${alignment}' (allowed: ${allowed.join(', ')})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Validates a font size (in half-points for Word)\r\n * Reasonable range: 2-1638 (1-819 points)\r\n * @param size - The font size in half-points to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the size is invalid\r\n */\r\nexport function validateFontSize(size: number, fieldName = 'font size'): void {\r\n if (!Number.isFinite(size)) {\r\n throw new Error(`${fieldName} must be a finite number, got ${size}`);\r\n }\r\n\r\n if (!Number.isInteger(size)) {\r\n throw new Error(`${fieldName} must be an integer (in half-points), got ${size}`);\r\n }\r\n\r\n // Reasonable range: 2-1638 half-points (1-819 points)\r\n const MIN_SIZE = 2;\r\n const MAX_SIZE = 1638;\r\n\r\n if (size < MIN_SIZE || size > MAX_SIZE) {\r\n throw new Error(\r\n `${fieldName} out of range: ${size} half-points (allowed: ${MIN_SIZE}-${MAX_SIZE}, or ${MIN_SIZE / 2}-${MAX_SIZE / 2} points)`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Validates that a string is not empty\r\n * @param value - The string to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the string is empty or not a string\r\n */\r\nexport function validateNonEmptyString(value: string, fieldName = 'value'): void {\r\n if (typeof value !== 'string') {\r\n throw new Error(`${fieldName} must be a string, got ${typeof value}`);\r\n }\r\n\r\n if (value.trim().length === 0) {\r\n throw new Error(`${fieldName} cannot be empty`);\r\n }\r\n}\r\n\r\n/**\r\n * Validates a percentage value (0-100)\r\n * @param value - The percentage to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the percentage is invalid\r\n */\r\nexport function validatePercentage(value: number, fieldName = 'percentage'): void {\r\n if (!Number.isFinite(value)) {\r\n throw new Error(`${fieldName} must be a finite number, got ${value}`);\r\n }\r\n\r\n if (value < 0 || value > 100) {\r\n throw new Error(`${fieldName} must be between 0 and 100, got ${value}`);\r\n }\r\n}\r\n\r\n/**\r\n * Validates EMUs (English Metric Units) value\r\n * Used for image dimensions: 914400 EMUs = 1 inch\r\n * Reasonable range: 0 to 50 million (about 55 inches)\r\n * @param value - The EMUs value to validate\r\n * @param fieldName - Name of the field (for error messages)\r\n * @throws {Error} If the value is invalid\r\n */\r\nexport function validateEmus(value: number, fieldName = 'EMUs'): void {\r\n if (!Number.isFinite(value)) {\r\n throw new Error(`${fieldName} must be a finite number, got ${value}`);\r\n }\r\n\r\n if (!Number.isInteger(value)) {\r\n throw new Error(`${fieldName} must be an integer, got ${value}`);\r\n }\r\n\r\n if (value < 0) {\r\n throw new Error(`${fieldName} must be non-negative, got ${value}`);\r\n }\r\n\r\n // Reasonable maximum: 50 million EMUs (about 55 inches)\r\n const MAX_EMUS = 50000000;\r\n if (value > MAX_EMUS) {\r\n throw new Error(\r\n `${fieldName} exceeds maximum ${MAX_EMUS} (about 55 inches), got ${value}`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Result of text validation for XML-like content\r\n */\r\nexport interface TextValidationResult {\r\n isValid: boolean;\r\n hasXmlPatterns: boolean;\r\n warnings: string[];\r\n cleanedText?: string;\r\n}\r\n\r\n/**\r\n * Detects XML-like patterns in text that might cause display issues\r\n *\r\n * This function checks for patterns that look like XML markup which,\r\n * when properly escaped in XML output, will display as literal text\r\n * in Word documents rather than being interpreted as markup.\r\n *\r\n * @param text - The text to validate\r\n * @param context - Optional context for better warning messages (e.g., \"hyperlink text\")\r\n * @returns Validation result with warnings and optional cleaned text\r\n */\r\nexport function detectXmlInText(text: string, context?: string): TextValidationResult {\r\n const warnings: string[] = [];\r\n let hasXmlPatterns = false;\r\n\r\n // Check for common XML element patterns\r\n const xmlElementPattern = /<\\/?w:[^>]+>|<w:[^>]+\\/>/g;\r\n const escapedXmlPattern = /<.*?>|"|'/g;\r\n\r\n // Check for specific problematic patterns we've seen\r\n const problematicPatterns = [\r\n /<w:t\\s+xml:space=\"preserve\">/,\r\n /<w:t\\s+xml:space=[\"']preserve[\"']>/,\r\n /<\\/w:t>/,\r\n /<w:t\\s+xml:space="preserve">/,\r\n ];\r\n\r\n // Check for any XML-like tags\r\n if (xmlElementPattern.test(text)) {\r\n hasXmlPatterns = true;\r\n const contextStr = context ? ` in ${context}` : '';\r\n warnings.push(\r\n `Text${contextStr} contains XML-like markup: \"${text.substring(0, 100)}${text.length > 100 ? '...' : ''}\". ` +\r\n `This will be displayed as literal text in the document. ` +\r\n `If you intended to add formatting, use the appropriate API methods instead.`\r\n );\r\n }\r\n\r\n // Check for already-escaped XML entities\r\n if (escapedXmlPattern.test(text)) {\r\n hasXmlPatterns = true;\r\n const contextStr = context ? ` in ${context}` : '';\r\n warnings.push(\r\n `Text${contextStr} contains escaped XML entities (e.g., <, >, "). ` +\r\n `These will appear as literal characters in the document.`\r\n );\r\n }\r\n\r\n // Check for specific known problematic patterns\r\n for (const pattern of problematicPatterns) {\r\n if (pattern.test(text)) {\r\n hasXmlPatterns = true;\r\n const contextStr = context ? ` in ${context}` : '';\r\n warnings.push(\r\n `Text${contextStr} contains a known problematic XML pattern that suggests ` +\r\n `the text may have been corrupted by previous processing.`\r\n );\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n isValid: true, // Text is always \"valid\" - we just warn about potential issues\r\n hasXmlPatterns,\r\n warnings,\r\n };\r\n}\r\n\r\n/**\r\n * Cleans XML-like patterns from text\r\n *\r\n * This function removes or cleans various XML patterns that might\r\n * appear in text content, typically from corrupted or improperly\r\n * processed documents.\r\n *\r\n * @param text - The text to clean\r\n * @param aggressive - If true, removes all angle brackets; if false, only removes clear XML tags\r\n * @returns Cleaned text with XML patterns removed\r\n */\r\nexport function cleanXmlFromText(text: string, aggressive = false): string {\r\n let cleaned = text;\r\n\r\n // First, unescape any HTML/XML entities\r\n cleaned = cleaned\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/"/g, '\"')\r\n .replace(/'/g, \"'\")\r\n .replace(/&/g, '&');\r\n\r\n // Remove specific Word XML patterns\r\n // This targets patterns like <w:t xml:space=\"preserve\">\r\n cleaned = cleaned.replace(/<w:[^>]+>/g, '');\r\n cleaned = cleaned.replace(/<\\/w:[^>]+>/g, '');\r\n\r\n // Remove any remaining XML-like tags if aggressive mode\r\n if (aggressive) {\r\n cleaned = cleaned.replace(/<[^>]+>/g, '');\r\n }\r\n\r\n // Clean up any double spaces left behind\r\n cleaned = cleaned.replace(/\\s+/g, ' ').trim();\r\n\r\n return cleaned;\r\n}\r\n\r\n/**\r\n * Validates text for use in Run or Hyperlink elements\r\n *\r\n * This is the main validation function that should be called when\r\n * setting text content in Run or Hyperlink elements. It provides\r\n * warnings about problematic content and optionally cleans the text.\r\n *\r\n * @param text - The text to validate\r\n * @param options - Validation options\r\n * @returns Validation result with warnings and optionally cleaned text\r\n */\r\nexport function validateRunText(\r\n text: string,\r\n options: {\r\n context?: string;\r\n autoClean?: boolean;\r\n aggressive?: boolean;\r\n warnToConsole?: boolean;\r\n } = {}\r\n): TextValidationResult {\r\n const { context, autoClean = false, aggressive = false, warnToConsole = true } = options;\r\n\r\n // Detect XML patterns\r\n const result = detectXmlInText(text, context);\r\n\r\n // If auto-cleaning is enabled and XML patterns were found\r\n if (autoClean && result.hasXmlPatterns) {\r\n result.cleanedText = cleanXmlFromText(text, aggressive);\r\n\r\n // Add a note about cleaning\r\n result.warnings.push(\r\n `Text has been automatically cleaned. ` +\r\n `Original: \"${text.substring(0, 50)}${text.length > 50 ? '...' : ''}\" ` +\r\n `Cleaned: \"${result.cleanedText.substring(0, 50)}${result.cleanedText.length > 50 ? '...' : ''}\"`\r\n );\r\n }\r\n\r\n // Log warnings to console in development if requested\r\n if (warnToConsole && result.warnings.length > 0 && typeof console !== 'undefined') {\r\n const contextStr = context ? ` [${context}]` : '';\r\n defaultLogger.warn(`DocXML Text Validation Warning${contextStr}:`);\r\n result.warnings.forEach(warning => defaultLogger.warn(` - ${warning}`));\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xmlSanitization.js","sourceRoot":"","sources":["../../src/utils/xmlSanitization.ts"],"names":[],"mappings":";;;AAuDA,sDAuBC;AAoBD,kDAqBC;AAkBD,gDAIC;AAzHD,qCAA2C;AAO3C,MAAM,sBAAsB,GAAG,mCAAmC,CAAC;AA4BnE,SAAgB,qBAAqB,CACnC,IAAY,EACZ,UAAU,GAAG,IAAI;IAGjB,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IAErC,IAAI,UAAU,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAEpD,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,YAAY;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;aAChE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAA,wBAAe,GAAE,CAAC,IAAI,CACpB,8DAA8D,QAAQ,EAAE,CACzE,CAAC;IACJ,CAAC;IAGD,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAoBD,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAGhC,IACE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAC9B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAC9B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAC9B,IAAI,KAAK,IAAI,EACb,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAkBD,SAAgB,kBAAkB,CAAC,IAAY;IAE7C,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IACrC,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAKY,QAAA,iBAAiB,GAAG;IAE/B,IAAI,EAAE,IAAI;IAEV,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,EAAE,EAAE,IAAI;IAER,GAAG,EAAE,IAAI;IAET,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,GAAG,EAAE,IAAI;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"xmlSanitization.js","sourceRoot":"","sources":["../../src/utils/xmlSanitization.ts"],"names":[],"mappings":";;;AAuDA,sDAuBC;AAoBD,kDAqBC;AAkBD,gDAIC;AAzHD,qCAA2C;AAO3C,MAAM,sBAAsB,GAAG,mCAAmC,CAAC;AA4BnE,SAAgB,qBAAqB,CACnC,IAAY,EACZ,UAAU,GAAG,IAAI;IAGjB,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IAErC,IAAI,UAAU,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAEpD,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,YAAY;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;aAChE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAA,wBAAe,GAAE,CAAC,IAAI,CACpB,8DAA8D,QAAQ,EAAE,CACzE,CAAC;IACJ,CAAC;IAGD,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAoBD,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAGhC,IACE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAC9B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAC9B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;YAC9B,IAAI,KAAK,IAAI,EACb,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAkBD,SAAgB,kBAAkB,CAAC,IAAY;IAE7C,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IACrC,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAKY,QAAA,iBAAiB,GAAG;IAE/B,IAAI,EAAE,IAAI;IAEV,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,GAAG,EAAE,IAAI;IAET,EAAE,EAAE,IAAI;IAER,GAAG,EAAE,IAAI;IAET,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,EAAE,EAAE,IAAI;IAER,GAAG,EAAE,IAAI;CACD,CAAC","sourcesContent":["/**\r\n * XML Sanitization Utilities\r\n *\r\n * Provides functions for validating and sanitizing text content per XML 1.0 specification.\r\n * Per XML 1.0, certain control characters are invalid and must be removed before\r\n * including text in XML documents.\r\n *\r\n * Valid characters in XML 1.0:\r\n * - 0x09 (tab), 0x0A (newline), 0x0D (carriage return)\r\n * - 0x20-0xD7FF, 0xE000-0xFFFD, 0x10000-0x10FFFF\r\n *\r\n * Invalid characters (control characters that must be removed):\r\n * - 0x00-0x08 (NULL through BACKSPACE)\r\n * - 0x0B-0x0C (VERTICAL TAB and FORM FEED)\r\n * - 0x0E-0x1F (SHIFT OUT through UNIT SEPARATOR)\r\n * - 0x7F (DELETE)\r\n *\r\n * @module xmlSanitization\r\n */\r\n\r\nimport { getGlobalLogger } from \"./logger\";\r\n\r\n/**\r\n * Regular expression matching invalid XML 1.0 control characters.\r\n * Matches: 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F\r\n * Does NOT match valid chars: 0x09 (tab), 0x0A (newline), 0x0D (CR)\r\n */\r\nconst INVALID_XML_CHAR_REGEX = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]/g;\r\n\r\n/**\r\n * Removes invalid XML 1.0 control characters from text.\r\n *\r\n * Per XML 1.0 spec, characters 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid\r\n * and cannot appear in XML documents. This function removes them.\r\n *\r\n * Valid control characters are preserved:\r\n * - Tab (0x09)\r\n * - Line Feed / Newline (0x0A)\r\n * - Carriage Return (0x0D)\r\n *\r\n * @param text - Input text to sanitize\r\n * @param logWarning - If true, logs a warning when invalid chars are found (default: true)\r\n * @returns Sanitized text with invalid control characters removed\r\n *\r\n * @example\r\n * ```typescript\r\n * // Remove NULL byte from text\r\n * const clean = removeInvalidXmlChars(\"Hello\\x00World\");\r\n * // Returns: \"HelloWorld\"\r\n *\r\n * // Tab and newline are preserved\r\n * const preserved = removeInvalidXmlChars(\"Hello\\tWorld\\n\");\r\n * // Returns: \"Hello\\tWorld\\n\"\r\n * ```\r\n */\r\nexport function removeInvalidXmlChars(\r\n text: string,\r\n logWarning = true\r\n): string {\r\n // Reset regex lastIndex for global regex\r\n INVALID_XML_CHAR_REGEX.lastIndex = 0;\r\n\r\n if (logWarning && INVALID_XML_CHAR_REGEX.test(text)) {\r\n // Reset regex lastIndex after test\r\n INVALID_XML_CHAR_REGEX.lastIndex = 0;\r\n\r\n const invalidChars = findInvalidXmlChars(text);\r\n const hexCodes = invalidChars\r\n .map((c) => `0x${c.toString(16).toUpperCase().padStart(2, \"0\")}`)\r\n .join(\", \");\r\n getGlobalLogger().warn(\r\n `[XMLSanitization] Removing invalid XML control characters: ${hexCodes}`\r\n );\r\n }\r\n\r\n // Reset regex lastIndex before replace\r\n INVALID_XML_CHAR_REGEX.lastIndex = 0;\r\n return text.replace(INVALID_XML_CHAR_REGEX, \"\");\r\n}\r\n\r\n/**\r\n * Finds all invalid XML 1.0 control characters in text.\r\n *\r\n * Returns an array of unique character codes that are invalid per XML 1.0 spec.\r\n * This is useful for diagnostics and error reporting.\r\n *\r\n * @param text - Text to scan for invalid characters\r\n * @returns Array of unique invalid character codes found, or empty array if text is valid\r\n *\r\n * @example\r\n * ```typescript\r\n * const invalid = findInvalidXmlChars(\"Hello\\x00\\x08World\");\r\n * // Returns: [0, 8] - NULL and BACKSPACE codes\r\n *\r\n * const valid = findInvalidXmlChars(\"Hello\\tWorld\");\r\n * // Returns: [] - tab is valid\r\n * ```\r\n */\r\nexport function findInvalidXmlChars(text: string): number[] {\r\n const invalid: number[] = [];\r\n\r\n for (let i = 0; i < text.length; i++) {\r\n const code = text.charCodeAt(i);\r\n\r\n // Check if character is in invalid ranges\r\n if (\r\n (code >= 0x00 && code <= 0x08) || // NULL through BACKSPACE\r\n (code >= 0x0b && code <= 0x0c) || // VERTICAL TAB and FORM FEED\r\n (code >= 0x0e && code <= 0x1f) || // SHIFT OUT through UNIT SEPARATOR\r\n code === 0x7f // DELETE\r\n ) {\r\n // Only add unique codes\r\n if (!invalid.includes(code)) {\r\n invalid.push(code);\r\n }\r\n }\r\n }\r\n\r\n return invalid;\r\n}\r\n\r\n/**\r\n * Checks if text contains any invalid XML 1.0 control characters.\r\n *\r\n * This is a fast check that returns true/false without identifying specific characters.\r\n * Use `findInvalidXmlChars()` if you need to know which characters are invalid.\r\n *\r\n * @param text - Text to check\r\n * @returns true if text contains invalid characters, false otherwise\r\n *\r\n * @example\r\n * ```typescript\r\n * hasInvalidXmlChars(\"Hello\\x00World\"); // true - NULL byte\r\n * hasInvalidXmlChars(\"Hello\\tWorld\"); // false - tab is valid\r\n * hasInvalidXmlChars(\"Normal text\"); // false\r\n * ```\r\n */\r\nexport function hasInvalidXmlChars(text: string): boolean {\r\n // Reset regex lastIndex for global regex\r\n INVALID_XML_CHAR_REGEX.lastIndex = 0;\r\n return INVALID_XML_CHAR_REGEX.test(text);\r\n}\r\n\r\n/**\r\n * Character code constants for documentation and testing.\r\n */\r\nexport const XML_CONTROL_CHARS = {\r\n /** NULL (0x00) - Invalid */\r\n NULL: 0x00,\r\n /** Start of Heading (0x01) - Invalid */\r\n SOH: 0x01,\r\n /** Start of Text (0x02) - Invalid */\r\n STX: 0x02,\r\n /** End of Text (0x03) - Invalid */\r\n ETX: 0x03,\r\n /** End of Transmission (0x04) - Invalid */\r\n EOT: 0x04,\r\n /** Enquiry (0x05) - Invalid */\r\n ENQ: 0x05,\r\n /** Acknowledge (0x06) - Invalid */\r\n ACK: 0x06,\r\n /** Bell (0x07) - Invalid */\r\n BEL: 0x07,\r\n /** Backspace (0x08) - Invalid */\r\n BS: 0x08,\r\n /** Horizontal Tab (0x09) - VALID */\r\n TAB: 0x09,\r\n /** Line Feed / Newline (0x0A) - VALID */\r\n LF: 0x0a,\r\n /** Vertical Tab (0x0B) - Invalid */\r\n VT: 0x0b,\r\n /** Form Feed (0x0C) - Invalid */\r\n FF: 0x0c,\r\n /** Carriage Return (0x0D) - VALID */\r\n CR: 0x0d,\r\n /** Shift Out (0x0E) - Invalid */\r\n SO: 0x0e,\r\n /** Unit Separator (0x1F) - Invalid */\r\n US: 0x1f,\r\n /** Delete (0x7F) - Invalid */\r\n DEL: 0x7f,\r\n} as const;\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevisionAutoFixer.js","sourceRoot":"","sources":["../../src/validation/RevisionAutoFixer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RevisionAutoFixer.js","sourceRoot":"","sources":["../../src/validation/RevisionAutoFixer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RevisionAutoFixer - Automatically fixes revision validation issues\r\n *\r\n * Provides auto-fix capabilities for common revision compliance issues,\r\n * helping to prevent document corruption while preserving user intent.\r\n *\r\n * @module RevisionAutoFixer\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport type { Revision } from '../elements/Revision';\r\nimport {\r\n REVISION_RULES,\r\n AutoFixOptions,\r\n AutoFixResult,\r\n FixAction,\r\n ValidationIssue,\r\n} from './ValidationRules';\r\nimport { RevisionValidator } from './RevisionValidator';\r\n\r\n/**\r\n * Automatically fixes revision validation issues.\r\n *\r\n * @example\r\n * ```typescript\r\n * // Auto-fix all issues\r\n * const result = RevisionAutoFixer.fix(doc);\r\n * console.log(`Fixed ${result.issuesFixed} issues`);\r\n *\r\n * // Dry run (preview fixes without applying)\r\n * const preview = RevisionAutoFixer.fix(doc, { dryRun: true });\r\n * for (const action of preview.actions) {\r\n * console.log(`Would fix: ${action.action}`);\r\n * }\r\n * ```\r\n */\r\nexport class RevisionAutoFixer {\r\n /**\r\n * Auto-fix all fixable issues in a document.\r\n *\r\n * @param doc - Document to fix\r\n * @param options - Fix options\r\n * @returns Result with details of all fixes applied\r\n */\r\n static fix(doc: Document, options?: AutoFixOptions): AutoFixResult {\r\n const actions: FixAction[] = [];\r\n const errors: string[] = [];\r\n const revisionManager = doc.getRevisionManager();\r\n\r\n if (!revisionManager) {\r\n return {\r\n allFixed: true,\r\n issuesFixed: 0,\r\n issuesRemaining: 0,\r\n actions: [],\r\n errors: [],\r\n };\r\n }\r\n\r\n const revisions = revisionManager.getAllRevisions();\r\n const skipRules = new Set(options?.skipRules || []);\r\n const onlyRules = options?.onlyRules ? new Set(options.onlyRules) : null;\r\n\r\n // Helper to check if a rule should be processed\r\n const shouldProcess = (ruleCode: string) => {\r\n if (skipRules.has(ruleCode)) return false;\r\n if (onlyRules && !onlyRules.has(ruleCode)) return false;\r\n return true;\r\n };\r\n\r\n try {\r\n // Fix duplicate IDs (REV001)\r\n if (shouldProcess('REV001')) {\r\n actions.push(...this.fixDuplicateIds(revisions, options?.dryRun));\r\n }\r\n\r\n // Fix missing authors (REV002)\r\n if (shouldProcess('REV002')) {\r\n const defaultAuthor = options?.defaultAuthor || 'Unknown Author';\r\n actions.push(...this.fixMissingAuthors(revisions, defaultAuthor, options?.dryRun));\r\n }\r\n\r\n // Fix orphaned move markers (REV003, REV004)\r\n if (shouldProcess('REV003') || shouldProcess('REV004')) {\r\n actions.push(...this.fixOrphanedMoveMarkers(revisionManager, revisions, options?.dryRun));\r\n }\r\n\r\n // Fix missing dates (REV101)\r\n if (shouldProcess('REV101')) {\r\n actions.push(...this.fixMissingDates(revisions, options?.dryRun));\r\n }\r\n\r\n // Fix invalid dates (REV102)\r\n if (shouldProcess('REV102')) {\r\n actions.push(...this.fixInvalidDates(revisions, options?.dryRun));\r\n }\r\n\r\n // Fix empty revisions (REV103)\r\n if (shouldProcess('REV103')) {\r\n actions.push(...this.fixEmptyRevisions(revisionManager, revisions, options?.dryRun));\r\n }\r\n\r\n // Fix non-sequential IDs (REV104)\r\n if (shouldProcess('REV104')) {\r\n actions.push(...this.fixNonSequentialIds(revisions, options?.dryRun));\r\n }\r\n\r\n } catch (error: unknown) {\r\n errors.push(`Fix error: ${error instanceof Error ? error.message : String(error)}`);\r\n }\r\n\r\n // Validate after fixes\r\n const postValidation = RevisionValidator.validate(doc);\r\n\r\n // Log actions if verbose\r\n if (options?.verbose) {\r\n for (const action of actions) {\r\n console.log(`[AutoFix] ${action.action}: ${action.issue.code}`);\r\n }\r\n }\r\n\r\n return {\r\n allFixed: postValidation.valid,\r\n issuesFixed: actions.filter(a => a.success).length,\r\n issuesRemaining: postValidation.summary.errorCount + postValidation.summary.warningCount,\r\n actions,\r\n errors,\r\n };\r\n }\r\n\r\n /**\r\n * Fix duplicate revision IDs by reassigning.\r\n *\r\n * Assigns new unique IDs to revisions with duplicate IDs.\r\n *\r\n * @param revisions - Array of revisions\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixDuplicateIds(revisions: Revision[], dryRun?: boolean): FixAction[] {\r\n const actions: FixAction[] = [];\r\n const usedIds = new Set<number>();\r\n let nextId = Math.max(...revisions.map(r => r.getId()), 0) + 1;\r\n\r\n for (const rev of revisions) {\r\n const id = rev.getId();\r\n\r\n if (usedIds.has(id)) {\r\n const newId = nextId++;\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.DUPLICATE_ID.code,\r\n severity: 'error',\r\n message: `Duplicate ID ${id}`,\r\n location: { revisionId: id },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Reassigned duplicate ID ${id} to ${newId}`,\r\n before: id,\r\n after: newId,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n rev.setId(newId);\r\n }\r\n }\r\n usedIds.add(rev.getId());\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Fix missing authors by setting a default value.\r\n *\r\n * @param revisions - Array of revisions\r\n * @param defaultAuthor - Default author name to use\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixMissingAuthors(\r\n revisions: Revision[],\r\n defaultAuthor: string,\r\n dryRun?: boolean\r\n ): FixAction[] {\r\n const actions: FixAction[] = [];\r\n\r\n for (const rev of revisions) {\r\n const author = rev.getAuthor();\r\n\r\n if (!author || author.trim() === '') {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.MISSING_AUTHOR.code,\r\n severity: 'error',\r\n message: `Missing author for revision ${rev.getId()}`,\r\n location: { revisionId: rev.getId() },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Set author to \"${defaultAuthor}\" for revision ${rev.getId()}`,\r\n before: author,\r\n after: defaultAuthor,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n rev.setAuthor(defaultAuthor);\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Fix missing dates by setting current date.\r\n *\r\n * @param revisions - Array of revisions\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixMissingDates(revisions: Revision[], dryRun?: boolean): FixAction[] {\r\n const actions: FixAction[] = [];\r\n const now = new Date();\r\n\r\n for (const rev of revisions) {\r\n const date = rev.getDate();\r\n\r\n if (!date) {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.MISSING_DATE.code,\r\n severity: 'warning',\r\n message: `Missing date for revision ${rev.getId()}`,\r\n location: { revisionId: rev.getId() },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Set date to ${now.toISOString()} for revision ${rev.getId()}`,\r\n before: null,\r\n after: now,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n rev.setDate(now);\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Fix invalid dates by replacing with current date.\r\n *\r\n * @param revisions - Array of revisions\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixInvalidDates(revisions: Revision[], dryRun?: boolean): FixAction[] {\r\n const actions: FixAction[] = [];\r\n const now = new Date();\r\n\r\n for (const rev of revisions) {\r\n const date = rev.getDate();\r\n\r\n if (date && isNaN(date.getTime())) {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.INVALID_DATE_FORMAT.code,\r\n severity: 'warning',\r\n message: `Invalid date for revision ${rev.getId()}`,\r\n location: { revisionId: rev.getId() },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Replaced invalid date with ${now.toISOString()} for revision ${rev.getId()}`,\r\n before: date,\r\n after: now,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n rev.setDate(now);\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Fix orphaned move markers by removing them.\r\n *\r\n * @param revisionManager - RevisionManager instance\r\n * @param revisions - Array of revisions\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixOrphanedMoveMarkers(\r\n revisionManager: { removeById(id: number): boolean },\r\n revisions: Revision[],\r\n dryRun?: boolean\r\n ): FixAction[] {\r\n const actions: FixAction[] = [];\r\n\r\n const moveFromIds = new Map<string, Revision>();\r\n const moveToIds = new Map<string, Revision>();\r\n\r\n for (const rev of revisions) {\r\n const moveId = rev.getMoveId();\r\n if (!moveId) continue;\r\n\r\n if (rev.getType() === 'moveFrom') {\r\n moveFromIds.set(moveId, rev);\r\n } else if (rev.getType() === 'moveTo') {\r\n moveToIds.set(moveId, rev);\r\n }\r\n }\r\n\r\n // Remove orphaned moveFrom\r\n for (const [moveId, rev] of moveFromIds) {\r\n if (!moveToIds.has(moveId)) {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.ORPHANED_MOVE_FROM.code,\r\n severity: 'error',\r\n message: `Orphaned moveFrom with moveId=\"${moveId}\"`,\r\n location: { revisionId: rev.getId() },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Removed orphaned moveFrom (ID: ${rev.getId()}, moveId: ${moveId})`,\r\n before: { type: 'moveFrom', moveId },\r\n after: null,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n revisionManager.removeById(rev.getId());\r\n }\r\n }\r\n }\r\n\r\n // Remove orphaned moveTo\r\n for (const [moveId, rev] of moveToIds) {\r\n if (!moveFromIds.has(moveId)) {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.ORPHANED_MOVE_TO.code,\r\n severity: 'error',\r\n message: `Orphaned moveTo with moveId=\"${moveId}\"`,\r\n location: { revisionId: rev.getId() },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Removed orphaned moveTo (ID: ${rev.getId()}, moveId: ${moveId})`,\r\n before: { type: 'moveTo', moveId },\r\n after: null,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n revisionManager.removeById(rev.getId());\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Fix empty revisions by removing them.\r\n *\r\n * @param revisionManager - RevisionManager instance\r\n * @param revisions - Array of revisions\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixEmptyRevisions(\r\n revisionManager: any,\r\n revisions: Revision[],\r\n dryRun?: boolean\r\n ): FixAction[] {\r\n const actions: FixAction[] = [];\r\n\r\n const propertyChangeTypes = [\r\n 'runPropertiesChange',\r\n 'paragraphPropertiesChange',\r\n 'tablePropertiesChange',\r\n 'tableExceptionPropertiesChange',\r\n 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange',\r\n 'sectionPropertiesChange',\r\n 'numberingChange',\r\n ];\r\n\r\n for (const rev of revisions) {\r\n const type = rev.getType();\r\n\r\n // Skip property changes\r\n if (propertyChangeTypes.includes(type)) {\r\n continue;\r\n }\r\n\r\n const runs = rev.getRuns();\r\n const hasContent = runs.length > 0 && runs.some(r => r.getText().length > 0);\r\n\r\n if (!hasContent) {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.EMPTY_REVISION.code,\r\n severity: 'warning',\r\n message: `Empty revision ${rev.getId()} (type: ${type})`,\r\n location: { revisionId: rev.getId() },\r\n autoFixable: true,\r\n };\r\n\r\n actions.push({\r\n issue,\r\n action: `Removed empty revision (ID: ${rev.getId()}, type: ${type})`,\r\n before: { id: rev.getId(), type },\r\n after: null,\r\n success: true,\r\n });\r\n\r\n if (!dryRun) {\r\n revisionManager.removeById(rev.getId());\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Fix non-sequential IDs by reassigning.\r\n *\r\n * @param revisions - Array of revisions\r\n * @param dryRun - If true, only report changes without applying\r\n * @returns Array of fix actions\r\n */\r\n static fixNonSequentialIds(revisions: Revision[], dryRun?: boolean): FixAction[] {\r\n const actions: FixAction[] = [];\r\n\r\n if (revisions.length === 0) return actions;\r\n\r\n // Check if IDs are already sequential\r\n const ids = revisions.map(r => r.getId()).sort((a, b) => a - b);\r\n let isSequential = true;\r\n\r\n for (let i = 1; i < ids.length; i++) {\r\n const currentId = ids[i]!;\r\n const prevId = ids[i - 1]!;\r\n if (currentId !== prevId + 1) {\r\n isSequential = false;\r\n break;\r\n }\r\n }\r\n\r\n if (!isSequential) {\r\n const issue: ValidationIssue = {\r\n code: REVISION_RULES.NON_SEQUENTIAL_IDS.code,\r\n severity: 'warning',\r\n message: 'Revision IDs are not sequential',\r\n autoFixable: true,\r\n };\r\n\r\n const oldIds = revisions.map(r => r.getId());\r\n const newIds: number[] = [];\r\n\r\n revisions.forEach((rev, index) => {\r\n newIds.push(index);\r\n if (!dryRun) {\r\n rev.setId(index);\r\n }\r\n });\r\n\r\n actions.push({\r\n issue,\r\n action: `Reassigned ${revisions.length} revision IDs to be sequential (0 to ${revisions.length - 1})`,\r\n before: oldIds,\r\n after: newIds,\r\n success: true,\r\n });\r\n }\r\n\r\n return actions;\r\n }\r\n\r\n /**\r\n * Preview fixes without applying them.\r\n *\r\n * Convenience method that calls fix() with dryRun: true.\r\n *\r\n * @param doc - Document to preview fixes for\r\n * @param options - Fix options (dryRun is forced to true)\r\n * @returns Result showing what would be fixed\r\n */\r\n static preview(doc: Document, options?: Omit<AutoFixOptions, 'dryRun'>): AutoFixResult {\r\n return this.fix(doc, { ...options, dryRun: true });\r\n }\r\n\r\n /**\r\n * Format fix result as a human-readable string.\r\n *\r\n * @param result - AutoFixResult to format\r\n * @returns Formatted string\r\n */\r\n static formatResult(result: AutoFixResult): string {\r\n const lines: string[] = [];\r\n\r\n lines.push(`Auto-Fix ${result.allFixed ? 'COMPLETE' : 'PARTIAL'}`);\r\n lines.push(`Fixed: ${result.issuesFixed}, Remaining: ${result.issuesRemaining}`);\r\n\r\n if (result.actions.length > 0) {\r\n lines.push('\\nActions taken:');\r\n for (const action of result.actions) {\r\n const status = action.success ? 'OK' : 'FAILED';\r\n lines.push(` [${status}] ${action.action}`);\r\n }\r\n }\r\n\r\n if (result.errors.length > 0) {\r\n lines.push('\\nErrors:');\r\n for (const error of result.errors) {\r\n lines.push(` - ${error}`);\r\n }\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevisionValidator.js","sourceRoot":"","sources":["../../src/validation/RevisionValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RevisionValidator.js","sourceRoot":"","sources":["../../src/validation/RevisionValidator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RevisionValidator - Validates document revisions for ECMA-376 compliance\r\n *\r\n * Checks tracked changes against OOXML specifications to prevent\r\n * document corruption and ensure compatibility with Microsoft Word.\r\n *\r\n * @module RevisionValidator\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport type { Revision } from '../elements/Revision';\r\nimport {\r\n REVISION_RULES,\r\n ValidationIssue,\r\n ValidationOptions,\r\n ValidationResult,\r\n createIssueFromRule,\r\n} from './ValidationRules';\r\n\r\n/**\r\n * Validates document revisions for ECMA-376 compliance.\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = RevisionValidator.validate(doc);\r\n * if (!result.valid) {\r\n * console.error(`Found ${result.errors.length} errors`);\r\n * for (const error of result.errors) {\r\n * console.error(` ${error.code}: ${error.message}`);\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport class RevisionValidator {\r\n /**\r\n * Validates all revisions in a document.\r\n *\r\n * @param doc - Document to validate\r\n * @param options - Validation options\r\n * @returns Validation result with all issues found\r\n */\r\n static validate(doc: Document, options?: ValidationOptions): ValidationResult {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return this.createEmptyResult();\r\n }\r\n\r\n const revisions = revisionManager.getAllRevisions();\r\n const allIssues: ValidationIssue[] = [];\r\n\r\n // Skip certain rules if lenient mode\r\n const skipRules = new Set(options?.skipRules || []);\r\n if (options?.level === 'lenient') {\r\n // In lenient mode, skip info rules\r\n skipRules.add('REV201');\r\n skipRules.add('REV202');\r\n }\r\n\r\n // Run all validations\r\n if (!skipRules.has('REV001')) {\r\n allIssues.push(...this.validateRevisionIds(revisions));\r\n }\r\n if (!skipRules.has('REV003') && !skipRules.has('REV004')) {\r\n allIssues.push(...this.validateMovePairs(revisions));\r\n }\r\n if (!skipRules.has('REV002')) {\r\n allIssues.push(...this.validateAuthors(revisions));\r\n }\r\n if (!skipRules.has('REV101') && !skipRules.has('REV102')) {\r\n allIssues.push(...this.validateDates(revisions));\r\n }\r\n if (!skipRules.has('REV103')) {\r\n allIssues.push(...this.validateContent(revisions));\r\n }\r\n if (!skipRules.has('REV104') && options?.level === 'strict') {\r\n allIssues.push(...this.validateSequentialIds(revisions));\r\n }\r\n if (!skipRules.has('REV201')) {\r\n allIssues.push(...this.validateRevisionCount(revisions));\r\n }\r\n if (!skipRules.has('REV202')) {\r\n allIssues.push(...this.validateRevisionDates(revisions));\r\n }\r\n\r\n // Apply max issues limit\r\n const limitedIssues = options?.maxIssues\r\n ? allIssues.slice(0, options.maxIssues)\r\n : allIssues;\r\n\r\n // Separate by severity\r\n let errors = limitedIssues.filter(i => i.severity === 'error');\r\n let warnings = limitedIssues.filter(i => i.severity === 'warning');\r\n const infos = limitedIssues.filter(i => i.severity === 'info');\r\n const autoFixable = limitedIssues.filter(i => i.autoFixable);\r\n\r\n // Handle warningsAsErrors option\r\n if (options?.warningsAsErrors) {\r\n errors = [...errors, ...warnings];\r\n warnings = [];\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n infos,\r\n autoFixable,\r\n summary: {\r\n totalIssues: limitedIssues.length,\r\n errorCount: errors.length,\r\n warningCount: warnings.length,\r\n infoCount: infos.length,\r\n autoFixableCount: autoFixable.length,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Creates an empty validation result (for documents with no revisions).\r\n */\r\n private static createEmptyResult(): ValidationResult {\r\n return {\r\n valid: true,\r\n errors: [],\r\n warnings: [],\r\n infos: [],\r\n autoFixable: [],\r\n summary: {\r\n totalIssues: 0,\r\n errorCount: 0,\r\n warningCount: 0,\r\n infoCount: 0,\r\n autoFixableCount: 0,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Validates revision ID uniqueness.\r\n *\r\n * Per ECMA-376, revision IDs must be unique within a document.\r\n * Duplicate IDs can cause Word to reject the document.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for duplicate IDs\r\n */\r\n static validateRevisionIds(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n const seenIds = new Map<number, number[]>(); // id -> indices\r\n\r\n revisions.forEach((rev, index) => {\r\n const id = rev.getId();\r\n if (!seenIds.has(id)) {\r\n seenIds.set(id, []);\r\n }\r\n seenIds.get(id)!.push(index);\r\n });\r\n\r\n for (const [id, indices] of seenIds) {\r\n if (indices.length > 1) {\r\n const rule = REVISION_RULES.DUPLICATE_ID;\r\n if (rule) {\r\n issues.push(createIssueFromRule(\r\n rule,\r\n { revisionId: id },\r\n `Duplicate revision ID ${id} found at ${indices.length} locations (indices: ${indices.join(', ')})`\r\n ));\r\n }\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates move operation pairs.\r\n *\r\n * Each moveFrom must have a matching moveTo with the same moveId,\r\n * and vice versa. Orphaned move markers can cause document corruption.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for orphaned move operations\r\n */\r\n static validateMovePairs(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n const moveFromIds = new Map<string, Revision>();\r\n const moveToIds = new Map<string, Revision>();\r\n\r\n for (const rev of revisions) {\r\n const moveId = rev.getMoveId();\r\n if (!moveId) continue;\r\n\r\n if (rev.getType() === 'moveFrom') {\r\n moveFromIds.set(moveId, rev);\r\n } else if (rev.getType() === 'moveTo') {\r\n moveToIds.set(moveId, rev);\r\n }\r\n }\r\n\r\n // Check for orphaned moveFrom\r\n for (const [moveId, rev] of moveFromIds) {\r\n if (!moveToIds.has(moveId)) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.ORPHANED_MOVE_FROM,\r\n { revisionId: rev.getId() },\r\n `moveFrom with moveId=\"${moveId}\" has no matching moveTo`\r\n ));\r\n }\r\n }\r\n\r\n // Check for orphaned moveTo\r\n for (const [moveId, rev] of moveToIds) {\r\n if (!moveFromIds.has(moveId)) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.ORPHANED_MOVE_TO,\r\n { revisionId: rev.getId() },\r\n `moveTo with moveId=\"${moveId}\" has no matching moveFrom`\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates author presence.\r\n *\r\n * Per ECMA-376, the author attribute is required for revisions.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for missing authors\r\n */\r\n static validateAuthors(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n for (const rev of revisions) {\r\n const author = rev.getAuthor();\r\n if (!author || author.trim() === '') {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.MISSING_AUTHOR,\r\n { revisionId: rev.getId() }\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates date presence and format.\r\n *\r\n * Per ECMA-376, revision dates should be in ISO 8601 format.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for date problems\r\n */\r\n static validateDates(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n for (const rev of revisions) {\r\n const date = rev.getDate();\r\n\r\n if (!date) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.MISSING_DATE,\r\n { revisionId: rev.getId() }\r\n ));\r\n } else if (isNaN(date.getTime())) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.INVALID_DATE_FORMAT,\r\n { revisionId: rev.getId() },\r\n `Revision ${rev.getId()} has an invalid date`\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates revision content.\r\n *\r\n * Revisions (except property changes) should have content.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for empty revisions\r\n */\r\n static validateContent(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n const propertyChangeTypes = [\r\n 'runPropertiesChange',\r\n 'paragraphPropertiesChange',\r\n 'tablePropertiesChange',\r\n 'tableExceptionPropertiesChange',\r\n 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange',\r\n 'sectionPropertiesChange',\r\n 'numberingChange',\r\n ];\r\n\r\n for (const rev of revisions) {\r\n const type = rev.getType();\r\n\r\n // Property changes don't need text content\r\n if (propertyChangeTypes.includes(type)) {\r\n continue;\r\n }\r\n\r\n const runs = rev.getRuns();\r\n const hasContent = runs.length > 0 && runs.some(r => r.getText().length > 0);\r\n\r\n if (!hasContent) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.EMPTY_REVISION,\r\n { revisionId: rev.getId() },\r\n `Revision ${rev.getId()} (type: ${type}) has no content`\r\n ));\r\n }\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates that revision IDs are sequential.\r\n *\r\n * While not strictly required, sequential IDs are best practice.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for non-sequential IDs\r\n */\r\n static validateSequentialIds(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n if (revisions.length === 0) return issues;\r\n\r\n // Use Set for O(n) lookup instead of sorting\r\n const idSet = new Set(revisions.map(r => r.getId()));\r\n const ids = Array.from(idSet);\r\n\r\n if (ids.length === 0) return issues;\r\n\r\n const minId = Math.min(...ids);\r\n const maxId = Math.max(...ids);\r\n\r\n // Find actual missing IDs in the range\r\n const missingIds: number[] = [];\r\n for (let i = minId; i <= maxId; i++) {\r\n if (!idSet.has(i)) {\r\n missingIds.push(i);\r\n }\r\n }\r\n\r\n if (missingIds.length > 0) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.NON_SEQUENTIAL_IDS,\r\n undefined,\r\n `Revision IDs are not sequential. Missing IDs: ${missingIds.slice(0, 10).join(', ')}${missingIds.length > 10 ? ` (and ${missingIds.length - 10} more)` : ''}`\r\n ));\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates revision count (info-level).\r\n *\r\n * Large numbers of revisions can slow down Word.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for large revision counts\r\n */\r\n static validateRevisionCount(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n\r\n if (revisions.length > 1000) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.LARGE_REVISION_COUNT,\r\n undefined,\r\n `Document has ${revisions.length} revisions (>1000). Consider accepting or rejecting some.`\r\n ));\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Validates revision dates for staleness (info-level).\r\n *\r\n * Very old revisions may indicate stale tracked changes.\r\n *\r\n * @param revisions - Array of revisions to validate\r\n * @returns Array of validation issues for old revisions\r\n */\r\n static validateRevisionDates(revisions: Revision[]): ValidationIssue[] {\r\n const issues: ValidationIssue[] = [];\r\n const oneYearAgo = new Date();\r\n oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\r\n\r\n let oldCount = 0;\r\n for (const rev of revisions) {\r\n const date = rev.getDate();\r\n if (date && date < oneYearAgo) {\r\n oldCount++;\r\n }\r\n }\r\n\r\n if (oldCount > 0) {\r\n issues.push(createIssueFromRule(\r\n REVISION_RULES.OLD_REVISION_DATE,\r\n undefined,\r\n `${oldCount} revision(s) are older than 1 year. Consider reviewing and accepting.`\r\n ));\r\n }\r\n\r\n return issues;\r\n }\r\n\r\n /**\r\n * Quick check if a document has any validation errors.\r\n *\r\n * @param doc - Document to check\r\n * @returns True if the document has no errors\r\n */\r\n static isValid(doc: Document): boolean {\r\n const result = this.validate(doc, { level: 'normal' });\r\n return result.valid;\r\n }\r\n\r\n /**\r\n * Get a summary string of validation results.\r\n *\r\n * @param result - Validation result\r\n * @returns Human-readable summary string\r\n */\r\n static formatSummary(result: ValidationResult): string {\r\n const lines: string[] = [];\r\n\r\n lines.push(`Validation ${result.valid ? 'PASSED' : 'FAILED'}`);\r\n lines.push(`Total issues: ${result.summary.totalIssues}`);\r\n\r\n if (result.summary.errorCount > 0) {\r\n lines.push(` Errors: ${result.summary.errorCount}`);\r\n }\r\n if (result.summary.warningCount > 0) {\r\n lines.push(` Warnings: ${result.summary.warningCount}`);\r\n }\r\n if (result.summary.infoCount > 0) {\r\n lines.push(` Info: ${result.summary.infoCount}`);\r\n }\r\n\r\n if (result.summary.autoFixableCount > 0) {\r\n lines.push(` Auto-fixable: ${result.summary.autoFixableCount}`);\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationRules.js","sourceRoot":"","sources":["../../src/validation/ValidationRules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ValidationRules.js","sourceRoot":"","sources":["../../src/validation/ValidationRules.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ValidationRules - Defines validation rules for ECMA-376 revision compliance\r\n *\r\n * These rules ensure tracked changes in documents are compliant with the\r\n * OOXML specification and will not cause corruption when opened in Word.\r\n *\r\n * **Auto-Fix Execution Order:**\r\n *\r\n * When auto-fixing multiple issues, the order matters. Fixing some issues\r\n * may affect the presence or nature of other issues. The recommended\r\n * execution order is:\r\n *\r\n * 1. **REV001 (Duplicate IDs)** - Fix first, as other fixes may reference IDs\r\n * 2. **REV002 (Missing Author)** - Can be fixed independently\r\n * 3. **REV003/REV004 (Orphaned Moves)** - Fix after ID issues are resolved\r\n * - Removing orphaned moves changes revision count\r\n * - Must be fixed as a pair (check both moveFrom and moveTo)\r\n * 4. **REV103 (Empty Revisions)** - Fix after move fixes (moves might create empties)\r\n * 5. **REV104 (Non-Sequential IDs)** - Fix LAST, after all additions/removals\r\n * 6. **REV101/REV102 (Date Issues)** - Can be fixed at any time\r\n *\r\n * **Dependency Graph:**\r\n * ```\r\n * REV001 ──┐\r\n * ├──► REV003/REV004 ──► REV103 ──► REV104\r\n * REV002 ──┘\r\n *\r\n * REV101, REV102 (independent - fix anytime)\r\n * REV201, REV202 (info only - not auto-fixable)\r\n * ```\r\n *\r\n * **Example Auto-Fix Sequence:**\r\n * ```typescript\r\n * // Correct order\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV001')); // First: duplicate IDs\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV002')); // Second: missing authors\r\n * autoFixer.fix(issues.filter(i => ['REV003', 'REV004'].includes(i.code))); // Third: orphaned moves\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV103')); // Fourth: empty revisions\r\n * autoFixer.fix(issues.filter(i => i.code === 'REV104')); // Last: sequential IDs\r\n * ```\r\n *\r\n * @module ValidationRules\r\n */\r\n\r\n/**\r\n * Severity level for validation issues.\r\n */\r\nexport type ValidationSeverity = 'error' | 'warning' | 'info';\r\n\r\n/**\r\n * Represents a single validation issue found in a document.\r\n */\r\nexport interface ValidationIssue {\r\n /** Rule code (e.g., 'REV001') */\r\n code: string;\r\n /** Severity level */\r\n severity: ValidationSeverity;\r\n /** Human-readable message describing the issue */\r\n message: string;\r\n /** Location of the issue within the document */\r\n location?: {\r\n paragraphIndex?: number;\r\n runIndex?: number;\r\n revisionId?: number;\r\n element?: string;\r\n };\r\n /** Whether this issue can be automatically fixed */\r\n autoFixable: boolean;\r\n /** Suggested fix description */\r\n suggestedFix?: string;\r\n}\r\n\r\n/**\r\n * Rule definition for validation.\r\n */\r\nexport interface ValidationRule {\r\n /** Unique rule code */\r\n code: string;\r\n /** Severity level */\r\n severity: ValidationSeverity;\r\n /** Default message template */\r\n message: string;\r\n /** Whether this rule can be auto-fixed */\r\n autoFixable: boolean;\r\n /** Default suggested fix */\r\n suggestedFix?: string;\r\n}\r\n\r\n/**\r\n * Revision validation rules per ECMA-376.\r\n *\r\n * Error-level rules (will cause Word to reject document):\r\n * - REV001: Duplicate revision ID\r\n * - REV002: Missing required author attribute\r\n * - REV003: Orphaned moveFrom (no matching moveTo)\r\n * - REV004: Orphaned moveTo (no matching moveFrom)\r\n *\r\n * Warning-level rules (document opens but may have issues):\r\n * - REV101: Missing date attribute\r\n * - REV102: Invalid date format (not ISO 8601)\r\n * - REV103: Empty revision content\r\n * - REV104: Non-sequential revision IDs\r\n *\r\n * Info-level rules (best practices):\r\n * - REV201: Large number of revisions (>1000)\r\n * - REV202: Very old revision date\r\n */\r\nexport const REVISION_RULES = {\r\n // ============================================================\r\n // Error-level rules (cause Word to reject document)\r\n // ============================================================\r\n\r\n DUPLICATE_ID: {\r\n code: 'REV001',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'Duplicate revision ID found',\r\n autoFixable: true,\r\n suggestedFix: 'Reassign unique IDs to duplicate revisions',\r\n },\r\n\r\n MISSING_AUTHOR: {\r\n code: 'REV002',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'Revision missing required author attribute',\r\n autoFixable: true,\r\n suggestedFix: 'Set default author for revisions with missing author',\r\n },\r\n\r\n ORPHANED_MOVE_FROM: {\r\n code: 'REV003',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'moveFrom element without matching moveTo',\r\n autoFixable: true,\r\n suggestedFix: 'Remove orphaned moveFrom element',\r\n },\r\n\r\n ORPHANED_MOVE_TO: {\r\n code: 'REV004',\r\n severity: 'error' as ValidationSeverity,\r\n message: 'moveTo element without matching moveFrom',\r\n autoFixable: true,\r\n suggestedFix: 'Remove orphaned moveTo element',\r\n },\r\n\r\n // ============================================================\r\n // Warning-level rules (document opens but may have issues)\r\n // ============================================================\r\n\r\n MISSING_DATE: {\r\n code: 'REV101',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Revision missing date attribute',\r\n autoFixable: true,\r\n suggestedFix: 'Set current date for revisions with missing date',\r\n },\r\n\r\n INVALID_DATE_FORMAT: {\r\n code: 'REV102',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Date not in ISO 8601 format',\r\n autoFixable: true,\r\n suggestedFix: 'Convert date to ISO 8601 format',\r\n },\r\n\r\n EMPTY_REVISION: {\r\n code: 'REV103',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Revision has no content',\r\n autoFixable: true,\r\n suggestedFix: 'Remove empty revision',\r\n },\r\n\r\n NON_SEQUENTIAL_IDS: {\r\n code: 'REV104',\r\n severity: 'warning' as ValidationSeverity,\r\n message: 'Revision IDs are not sequential (Word may renumber)',\r\n autoFixable: true,\r\n suggestedFix: 'Reassign sequential IDs starting from 0',\r\n },\r\n\r\n // ============================================================\r\n // Info-level rules (best practices)\r\n // ============================================================\r\n\r\n LARGE_REVISION_COUNT: {\r\n code: 'REV201',\r\n severity: 'info' as ValidationSeverity,\r\n message: 'Document has a large number of revisions (>1000)',\r\n autoFixable: false,\r\n suggestedFix: 'Consider accepting or rejecting some revisions',\r\n },\r\n\r\n OLD_REVISION_DATE: {\r\n code: 'REV202',\r\n severity: 'info' as ValidationSeverity,\r\n message: 'Revision date is very old (>1 year)',\r\n autoFixable: false,\r\n suggestedFix: 'Consider reviewing and accepting old revisions',\r\n },\r\n};\r\n\r\n/**\r\n * Options for validation behavior.\r\n */\r\nexport interface ValidationOptions {\r\n /** Validation strictness level */\r\n level?: 'strict' | 'normal' | 'lenient';\r\n /** Skip specific rules by code */\r\n skipRules?: string[];\r\n /** Treat warnings as errors */\r\n warningsAsErrors?: boolean;\r\n /** Maximum number of issues to report (default: unlimited) */\r\n maxIssues?: number;\r\n}\r\n\r\n/**\r\n * Options for auto-fix behavior.\r\n */\r\nexport interface AutoFixOptions {\r\n /** Only fix specific rules */\r\n onlyRules?: string[];\r\n /** Skip specific rules */\r\n skipRules?: string[];\r\n /** Default author for missing authors */\r\n defaultAuthor?: string;\r\n /** Dry run mode - report only, don't modify */\r\n dryRun?: boolean;\r\n /** Log each fix action */\r\n verbose?: boolean;\r\n}\r\n\r\n/**\r\n * Result of validation.\r\n */\r\nexport interface ValidationResult {\r\n /** Whether the document passed validation */\r\n valid: boolean;\r\n /** Error-level issues */\r\n errors: ValidationIssue[];\r\n /** Warning-level issues */\r\n warnings: ValidationIssue[];\r\n /** Info-level issues */\r\n infos: ValidationIssue[];\r\n /** Issues that can be automatically fixed */\r\n autoFixable: ValidationIssue[];\r\n /** Summary of validation */\r\n summary: {\r\n totalIssues: number;\r\n errorCount: number;\r\n warningCount: number;\r\n infoCount: number;\r\n autoFixableCount: number;\r\n };\r\n}\r\n\r\n/**\r\n * Represents a single fix action performed during auto-fix.\r\n */\r\nexport interface FixAction {\r\n /** The issue that was fixed */\r\n issue: ValidationIssue;\r\n /** Description of the action taken */\r\n action: string;\r\n /** Value before the fix */\r\n before: unknown;\r\n /** Value after the fix */\r\n after: unknown;\r\n /** Whether the fix was successful */\r\n success: boolean;\r\n}\r\n\r\n/**\r\n * Result of auto-fix operation.\r\n */\r\nexport interface AutoFixResult {\r\n /** Whether all issues were fixed */\r\n allFixed: boolean;\r\n /** Number of issues that were fixed */\r\n issuesFixed: number;\r\n /** Number of issues that remain unfixed */\r\n issuesRemaining: number;\r\n /** Individual fix actions taken */\r\n actions: FixAction[];\r\n /** Any errors that occurred during fixing */\r\n errors: string[];\r\n}\r\n\r\n/**\r\n * Helper function to create a validation issue from a rule.\r\n *\r\n * @param rule - Rule definition\r\n * @param location - Optional location information\r\n * @param customMessage - Optional custom message to override default\r\n * @returns ValidationIssue\r\n */\r\nexport function createIssueFromRule(\r\n rule: ValidationRule,\r\n location?: ValidationIssue['location'],\r\n customMessage?: string\r\n): ValidationIssue {\r\n return {\r\n code: rule.code,\r\n severity: rule.severity,\r\n message: customMessage || rule.message,\r\n location,\r\n autoFixable: rule.autoFixable,\r\n suggestedFix: rule.suggestedFix,\r\n };\r\n}\r\n\r\n/**\r\n * Get a rule by its code.\r\n *\r\n * @param code - Rule code (e.g., 'REV001')\r\n * @returns ValidationRule or undefined\r\n */\r\nexport function getRuleByCode(code: string): ValidationRule | undefined {\r\n return Object.values(REVISION_RULES).find(rule => rule.code === code);\r\n}\r\n\r\n/**\r\n * Get all rules of a specific severity.\r\n *\r\n * @param severity - Severity level to filter by\r\n * @returns Array of rules\r\n */\r\nexport function getRulesBySeverity(severity: ValidationSeverity): ValidationRule[] {\r\n return Object.values(REVISION_RULES).filter(rule => rule.severity === severity);\r\n}\r\n\r\n/**\r\n * Get all auto-fixable rules.\r\n *\r\n * @returns Array of rules that can be auto-fixed\r\n */\r\nexport function getAutoFixableRules(): ValidationRule[] {\r\n return Object.values(REVISION_RULES).filter(rule => rule.autoFixable);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":";;;AASA,qDAc2B;AAbzB,iHAAA,cAAc,OAAA;AASd,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AAIrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAG1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":";;;AASA,qDAc2B;AAbzB,iHAAA,cAAc,OAAA;AASd,sHAAA,mBAAmB,OAAA;AACnB,gHAAA,aAAa,OAAA;AACb,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AAIrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAG1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA","sourcesContent":["/**\r\n * Validation Module\r\n *\r\n * Provides validation and auto-fix capabilities for ECMA-376 revision compliance.\r\n *\r\n * @module validation\r\n */\r\n\r\n// Rule definitions and types\r\nexport {\r\n REVISION_RULES,\r\n ValidationSeverity,\r\n ValidationIssue,\r\n ValidationRule,\r\n ValidationOptions,\r\n AutoFixOptions,\r\n ValidationResult,\r\n FixAction,\r\n AutoFixResult,\r\n createIssueFromRule,\r\n getRuleByCode,\r\n getRulesBySeverity,\r\n getAutoFixableRules,\r\n} from './ValidationRules';\r\n\r\n// Validator class\r\nexport { RevisionValidator } from './RevisionValidator';\r\n\r\n// Auto-fixer class\r\nexport { RevisionAutoFixer } from './RevisionAutoFixer';\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLBuilder.d.ts","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"XMLBuilder.d.ts","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/xml/XMLBuilder.js
CHANGED
|
@@ -294,6 +294,16 @@ class XMLBuilder {
|
|
|
294
294
|
allNamespaces["mc:Ignorable"] = ignorable.join(" ");
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
|
+
else {
|
|
298
|
+
const defaults = XMLBuilder.createNamespaces();
|
|
299
|
+
const prefixes = allNamespaces["mc:Ignorable"].split(/\s+/);
|
|
300
|
+
for (const prefix of prefixes) {
|
|
301
|
+
const nsKey = `xmlns:${prefix}`;
|
|
302
|
+
if (!allNamespaces[nsKey] && defaults[nsKey]) {
|
|
303
|
+
allNamespaces[nsKey] = defaults[nsKey];
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
297
307
|
const documentChildren = [];
|
|
298
308
|
if (preBodyContent) {
|
|
299
309
|
documentChildren.push(...preBodyContent);
|