docxmlater 10.0.2 → 10.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.d.ts +0 -27
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +13 -13
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +23 -19
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +197 -63
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +59 -24
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.d.ts.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +6 -6
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +60 -54
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.d.ts.map +1 -1
- package/dist/core/Relationship.js +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.js +1 -1
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +8 -2
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -2
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +31 -28
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +6 -6
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +5 -5
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +2 -2
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +21 -5
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +2 -2
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +128 -117
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts +1 -0
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +44 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +1 -3
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +127 -118
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +21 -0
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +20 -8
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +2 -2
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +29 -35
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +2 -2
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +63 -67
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +6 -6
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +65 -47
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +1 -1
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +1 -1
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +11 -11
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +4 -4
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +26 -26
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +87 -95
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +3 -3
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +4 -4
- package/dist/types/list-types.d.ts.map +1 -1
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +7 -7
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts +0 -28
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +5 -7
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +1 -1
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.d.ts +0 -1
- package/dist/utils/deepClone.d.ts.map +1 -1
- package/dist/utils/deepClone.js +0 -7
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +2 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +3 -3
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -19
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +0 -2
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +10 -0
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +4 -5
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/errors.js.map +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +34 -4
- package/src/__tests__/helper-methods.test.ts +512 -0
- package/src/constants/legacyCompatFlags.ts +138 -0
- package/src/constants/limits.ts +50 -0
- package/src/core/CLAUDE.md +109 -0
- package/src/core/Document.ts +15569 -0
- package/src/core/DocumentContent.ts +467 -0
- package/src/core/DocumentGenerator.ts +1104 -0
- package/src/core/DocumentIdManager.ts +158 -0
- package/src/core/DocumentParser.ts +10107 -0
- package/src/core/DocumentValidator.ts +372 -0
- package/src/core/Relationship.ts +367 -0
- package/src/core/RelationshipManager.ts +428 -0
- package/src/elements/AlternateContent.ts +42 -0
- package/src/elements/Bookmark.ts +210 -0
- package/src/elements/BookmarkManager.ts +250 -0
- package/src/elements/CLAUDE.md +126 -0
- package/src/elements/Comment.ts +359 -0
- package/src/elements/CommentManager.ts +502 -0
- package/src/elements/CommonTypes.ts +549 -0
- package/src/elements/CustomXml.ts +36 -0
- package/src/elements/Endnote.ts +217 -0
- package/src/elements/EndnoteManager.ts +249 -0
- package/src/elements/Field.ts +1233 -0
- package/src/elements/FieldHelpers.ts +333 -0
- package/src/elements/FontManager.ts +339 -0
- package/src/elements/Footer.ts +269 -0
- package/src/elements/Footnote.ts +217 -0
- package/src/elements/FootnoteManager.ts +249 -0
- package/src/elements/Header.ts +269 -0
- package/src/elements/HeaderFooterManager.ts +219 -0
- package/src/elements/Hyperlink.ts +1146 -0
- package/src/elements/Image.ts +1756 -0
- package/src/elements/ImageManager.ts +432 -0
- package/src/elements/ImageRun.ts +59 -0
- package/src/elements/MathElement.ts +65 -0
- package/src/elements/Paragraph.ts +4227 -0
- package/src/elements/PreservedElement.ts +53 -0
- package/src/elements/PropertyChangeTypes.ts +442 -0
- package/src/elements/RangeMarker.ts +400 -0
- package/src/elements/Revision.ts +1217 -0
- package/src/elements/RevisionContent.ts +73 -0
- package/src/elements/RevisionManager.ts +1070 -0
- package/src/elements/Run.ts +3068 -0
- package/src/elements/Section.ts +1421 -0
- package/src/elements/Shape.ts +873 -0
- package/src/elements/StructuredDocumentTag.ts +978 -0
- package/src/elements/Table.ts +2524 -0
- package/src/elements/TableCell.ts +1586 -0
- package/src/elements/TableGridChange.ts +151 -0
- package/src/elements/TableOfContents.ts +691 -0
- package/src/elements/TableOfContentsElement.ts +89 -0
- package/src/elements/TableRow.ts +906 -0
- package/src/elements/TextBox.ts +768 -0
- package/src/formatting/AbstractNumbering.ts +548 -0
- package/src/formatting/CLAUDE.md +74 -0
- package/src/formatting/NumberingInstance.ts +212 -0
- package/src/formatting/NumberingLevel.ts +1006 -0
- package/src/formatting/NumberingManager.ts +827 -0
- package/src/formatting/Style.ts +1833 -0
- package/src/formatting/StylesManager.ts +1005 -0
- package/src/helpers/CleanupHelper.ts +524 -0
- package/src/images/ImageOptimizer.ts +274 -0
- package/src/index.ts +554 -0
- package/src/managers/CLAUDE.md +47 -0
- package/src/managers/DrawingManager.ts +319 -0
- package/src/tracking/DocumentTrackingContext.ts +643 -0
- package/src/tracking/TrackingContext.ts +173 -0
- package/src/types/compatibility-types.ts +49 -0
- package/src/types/formatting.ts +210 -0
- package/src/types/list-types.ts +152 -0
- package/src/types/settings-types.ts +59 -0
- package/src/types/styleConfig.ts +189 -0
- package/src/utils/CLAUDE.md +153 -0
- package/src/utils/ChangelogGenerator.ts +1581 -0
- package/src/utils/CompatibilityUpgrader.ts +237 -0
- package/src/utils/InMemoryRevisionAcceptor.ts +668 -0
- package/src/utils/MoveOperationHelper.ts +238 -0
- package/src/utils/RevisionAwareProcessor.ts +526 -0
- package/src/utils/RevisionWalker.ts +457 -0
- package/src/utils/SelectiveRevisionAcceptor.ts +613 -0
- package/src/utils/ShadingResolver.ts +107 -0
- package/src/utils/acceptRevisions.ts +714 -0
- package/src/utils/cnfStyleDecoder.ts +217 -0
- package/src/utils/corruptionDetection.ts +345 -0
- package/src/utils/dateFormatting.ts +20 -0
- package/src/utils/deepClone.ts +78 -0
- package/src/utils/diagnostics.ts +129 -0
- package/src/utils/errorHandling.ts +80 -0
- package/src/utils/formatting.ts +213 -0
- package/src/utils/list-detection.ts +274 -0
- package/src/utils/logger.ts +404 -0
- package/src/utils/parsingHelpers.ts +190 -0
- package/src/utils/stripTrackedChanges.ts +353 -0
- package/src/utils/textDiff.ts +100 -0
- package/src/utils/units.ts +421 -0
- package/src/utils/validation.ts +542 -0
- package/src/utils/xmlSanitization.ts +182 -0
- package/src/validation/RevisionAutoFixer.ts +542 -0
- package/src/validation/RevisionValidator.ts +460 -0
- package/src/validation/ValidationRules.ts +338 -0
- package/src/validation/index.ts +30 -0
- package/src/xml/CLAUDE.md +65 -0
- package/src/xml/XMLBuilder.ts +871 -0
- package/src/xml/XMLParser.ts +919 -0
- package/src/zip/CLAUDE.md +55 -0
- package/src/zip/ZipHandler.ts +637 -0
- package/src/zip/ZipReader.ts +299 -0
- package/src/zip/ZipWriter.ts +390 -0
- package/src/zip/errors.ts +69 -0
- package/src/zip/types.ts +116 -0
- package/dist/core/ListNormalizer.d.ts +0 -23
- package/dist/core/ListNormalizer.d.ts.map +0 -1
- package/dist/core/ListNormalizer.js +0 -624
- package/dist/core/ListNormalizer.js.map +0 -1
- package/dist/images/index.d.ts +0 -2
- package/dist/images/index.d.ts.map +0 -1
- package/dist/images/index.js +0 -8
- package/dist/images/index.js.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
- package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.js +0 -360
- package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
- package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
- package/dist/ms-doc/fib/FIB.d.ts +0 -18
- package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
- package/dist/ms-doc/fib/FIB.js +0 -342
- package/dist/ms-doc/fib/FIB.js.map +0 -1
- package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
- package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
- package/dist/ms-doc/fields/FieldParser.js +0 -266
- package/dist/ms-doc/fields/FieldParser.js.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
- package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.js +0 -233
- package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
- package/dist/ms-doc/index.d.ts +0 -20
- package/dist/ms-doc/index.d.ts.map +0 -1
- package/dist/ms-doc/index.js +0 -59
- package/dist/ms-doc/index.js.map +0 -1
- package/dist/ms-doc/properties/SPRM.d.ts +0 -210
- package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
- package/dist/ms-doc/properties/SPRM.js +0 -633
- package/dist/ms-doc/properties/SPRM.js.map +0 -1
- package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
- package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
- package/dist/ms-doc/sections/SectionParser.js +0 -214
- package/dist/ms-doc/sections/SectionParser.js.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
- package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.js +0 -268
- package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
- package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
- package/dist/ms-doc/tables/TableParser.d.ts +0 -29
- package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
- package/dist/ms-doc/tables/TableParser.js +0 -176
- package/dist/ms-doc/tables/TableParser.js.map +0 -1
- package/dist/ms-doc/text/PieceTable.d.ts +0 -21
- package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
- package/dist/ms-doc/text/PieceTable.js +0 -171
- package/dist/ms-doc/text/PieceTable.js.map +0 -1
- package/dist/ms-doc/types/Constants.d.ts +0 -99
- package/dist/ms-doc/types/Constants.d.ts.map +0 -1
- package/dist/ms-doc/types/Constants.js +0 -102
- package/dist/ms-doc/types/Constants.js.map +0 -1
- package/dist/ms-doc/types/DocTypes.d.ts +0 -368
- package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
- package/dist/ms-doc/types/DocTypes.js +0 -3
- package/dist/ms-doc/types/DocTypes.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -3
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -6
- package/dist/tracking/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLBuilder.js","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"XMLBuilder.js","sourceRoot":"","sources":["../../src/xml/XMLBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * XMLBuilder - Utility for building XML content\r\n * Provides a simple fluent API for generating WordprocessingML XML\r\n */\r\n\r\nimport { removeInvalidXmlChars } from \"../utils/xmlSanitization\";\r\nimport type { ShadingConfig } from \"../elements/CommonTypes\";\r\nimport { buildShadingAttributes } from \"../elements/CommonTypes\";\r\n\r\n/** Represents a parsed XML object from XMLParser.parseToObject() */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- parsed XML has dynamic keys and recursive structure\r\ntype ParsedXmlObject = Record<string, any>;\r\n\r\n/**\r\n * Represents an XML element with attributes and children\r\n */\r\nexport interface XMLElement {\r\n name: string;\r\n attributes?: Record<string, string | number | boolean | undefined>;\r\n children?: (XMLElement | string)[];\r\n selfClosing?: boolean;\r\n /** Raw XML content to include without escaping (used for VML passthrough) */\r\n rawXml?: string;\r\n}\r\n\r\n/**\r\n * XML Builder for creating WordprocessingML XML\r\n */\r\nexport class XMLBuilder {\r\n private elements: (XMLElement | string)[] = [];\r\n\r\n /**\r\n * Elements that must NEVER be self-closing in Word XML per ECMA-376.\r\n * Self-closing these elements causes Word to not parse correctly or lose content.\r\n */\r\n private static readonly CANNOT_SELF_CLOSE = [\r\n \"w:t\",\r\n \"w:r\",\r\n \"w:p\",\r\n \"w:tbl\",\r\n \"w:tr\",\r\n \"w:tc\",\r\n \"w:body\",\r\n \"w:document\",\r\n \"w:hyperlink\",\r\n \"w:sdt\",\r\n \"w:sdtContent\",\r\n \"w:sdtPr\",\r\n \"w:pPr\",\r\n \"w:rPr\",\r\n \"w:sectPr\",\r\n \"w:del\", // Deletion revisions - container element, must have closing tag\r\n \"w:ins\", // Insertion revisions - container element, must have closing tag\r\n \"w:moveFrom\", // Move source markers - container element\r\n \"w:moveTo\", // Move destination markers - container element\r\n // Note: w:bookmarkStart and w:bookmarkEnd MUST be self-closing per ECMA-376\r\n ];\r\n\r\n /**\r\n * Adds an element to the builder\r\n * @param name - Element name (with namespace prefix if needed)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements or text\r\n * @returns This builder for chaining\r\n */\r\n element(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLBuilder {\r\n this.elements.push({\r\n name,\r\n attributes,\r\n children,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a self-closing element\r\n * @param name - Element name\r\n * @param attributes - Element attributes\r\n * @returns This builder for chaining\r\n * @throws {Error} If attempting to create self-closing w:t element (not allowed per ECMA-376)\r\n */\r\n selfClosingElement(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLBuilder {\r\n // Validation: Text elements (<w:t>) cannot be self-closing per ECMA-376\r\n // Self-closing <w:t/> elements cause Word to fail opening the document\r\n if (name === 'w:t' || name === 't') {\r\n throw new Error(\r\n 'Text elements (<w:t>) cannot be self-closing per ECMA-376. ' +\r\n 'Use element() with empty text content instead: XMLBuilder.w(\"t\", attrs, [\"\"])'\r\n );\r\n }\r\n\r\n this.elements.push({\r\n name,\r\n attributes,\r\n selfClosing: true,\r\n });\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds text content\r\n * @param text - Text to add\r\n * @returns This builder for chaining\r\n */\r\n text(text: string): XMLBuilder {\r\n this.elements.push(text);\r\n return this;\r\n }\r\n\r\n /**\r\n * Builds the XML string\r\n * @param includeDeclaration - Whether to include XML declaration\r\n * @returns Generated XML string\r\n */\r\n build(includeDeclaration = false): string {\r\n let xml = \"\";\r\n\r\n if (includeDeclaration) {\r\n xml += '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\r\n }\r\n\r\n xml += this.elementsToString(this.elements);\r\n return xml;\r\n }\r\n\r\n /**\r\n * Converts elements to XML string\r\n */\r\n private elementsToString(elements: (XMLElement | string)[]): string {\r\n let xml = \"\";\r\n\r\n for (const element of elements) {\r\n if (typeof element === \"string\") {\r\n xml += this.escapeXml(element);\r\n } else {\r\n xml += this.elementToString(element);\r\n }\r\n }\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Converts a single element to XML string\r\n */\r\n private elementToString(element: XMLElement): string {\r\n // Special case: raw XML passthrough (no wrapper element)\r\n // Used for VML and other legacy content that must be preserved exactly\r\n if (element.name === \"__rawXml\" && element.rawXml) {\r\n return element.rawXml;\r\n }\r\n\r\n let xml = `<${element.name}`;\r\n\r\n // Add attributes\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n if (value !== undefined && value !== null && value !== false) {\r\n // Handle boolean attributes\r\n const attrValue = value === true ? key : String(value);\r\n // Use escapeXmlAttribute for attribute values (Issue #8)\r\n xml += ` ${key}=\"${XMLBuilder.escapeXmlAttribute(attrValue)}\"`;\r\n }\r\n }\r\n }\r\n\r\n // Self-closing element validation\r\n if (element.selfClosing) {\r\n if (XMLBuilder.CANNOT_SELF_CLOSE.includes(element.name)) {\r\n // Instead of throwing, force open/close tags for safety\r\n xml += \"></\" + element.name + \">\";\r\n return xml;\r\n }\r\n xml += \"/>\";\r\n return xml;\r\n }\r\n\r\n xml += \">\";\r\n\r\n // Add raw XML content if present (for VML passthrough)\r\n if (element.rawXml) {\r\n xml += element.rawXml;\r\n }\r\n\r\n // Add children\r\n if (element.children && element.children.length > 0) {\r\n xml += this.elementsToString(element.children);\r\n }\r\n\r\n xml += `</${element.name}>`;\r\n return xml;\r\n }\r\n\r\n /**\r\n * Escapes special XML characters for text content\r\n * (Issue #8 fix: Use escapeXmlText for element text, escapeXmlAttribute called directly for attrs)\r\n */\r\n private escapeXml(text: string): string {\r\n // This method is now only used for text content in elementsToString()\r\n // Attributes call escapeXmlAttribute() directly in elementToString()\r\n // Text content should NOT escape quotes (only & < >)\r\n return XMLBuilder.escapeXmlText(text);\r\n }\r\n\r\n /**\r\n * Escapes XML text content (element text nodes)\r\n * Removes invalid XML 1.0 control characters and escapes: & < >\r\n *\r\n * Per XML 1.0 spec, control chars 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid.\r\n * Tab (0x09), newline (0x0A), and CR (0x0D) are preserved.\r\n *\r\n * @param text Text to escape\r\n * @returns Escaped text safe for XML content\r\n */\r\n static escapeXmlText(text: string): string {\r\n return removeInvalidXmlChars(text)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\");\r\n }\r\n\r\n /**\r\n * Escapes XML attribute values\r\n * Removes invalid XML 1.0 control characters and escapes: & < > \" '\r\n *\r\n * Per XML 1.0 spec, control chars 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid.\r\n * Tab (0x09), newline (0x0A), and CR (0x0D) are preserved.\r\n *\r\n * @param value Attribute value to escape\r\n * @returns Escaped value safe for XML attributes\r\n */\r\n static escapeXmlAttribute(value: string): string {\r\n return removeInvalidXmlChars(value)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\");\r\n }\r\n\r\n /**\r\n * Unescapes XML entities back to original characters\r\n * @param text Text with XML entities\r\n * @returns Unescaped text\r\n */\r\n static unescapeXml(text: string): string {\r\n return text\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n .replace(/"/g, '\"')\r\n .replace(/'/g, \"'\")\r\n .replace(/&/g, \"&\"); // Must be last to avoid double-unescaping\r\n }\r\n\r\n /**\r\n * Sanitizes and escapes XML content for safe inclusion in XML documents\r\n * Removes control characters, null bytes, and escapes special XML characters\r\n * Use this for user-provided content that may contain unsafe characters\r\n *\r\n * Per XML 1.0 spec, control chars 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F are invalid.\r\n * Tab (0x09), newline (0x0A), and CR (0x0D) are preserved.\r\n *\r\n * @param text Text to sanitize and escape\r\n * @returns Sanitized text safe for XML content\r\n *\r\n * **Issue #11 fix:** Prevents malformed XML from CDATA markers, control chars, etc.\r\n */\r\n static sanitizeXmlContent(text: string): string {\r\n return (\r\n removeInvalidXmlChars(text)\r\n // Escape CDATA end marker to prevent CDATA injection\r\n .replace(/\\]\\]>/g, \"]]>\")\r\n // Standard XML escaping (& must be first to avoid double-escaping)\r\n .replace(/&/g, \"&\")\r\n .replace(/</g, \"<\")\r\n .replace(/>/g, \">\")\r\n );\r\n }\r\n\r\n /**\r\n * Creates a WordprocessingML namespace attribute object\r\n */\r\n static createNamespaces(): Record<string, string> {\r\n return {\r\n \"xmlns:w\": \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\r\n \"xmlns:r\":\r\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\r\n \"xmlns:wp\":\r\n \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\",\r\n \"xmlns:a\": \"http://schemas.openxmlformats.org/drawingml/2006/main\",\r\n \"xmlns:pic\": \"http://schemas.openxmlformats.org/drawingml/2006/picture\",\r\n \"xmlns:w14\": \"http://schemas.microsoft.com/office/word/2010/wordml\",\r\n \"xmlns:wpc\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\",\r\n \"xmlns:mc\": \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\r\n \"xmlns:o\": \"urn:schemas-microsoft-com:office:office\",\r\n \"xmlns:v\": \"urn:schemas-microsoft-com:vml\",\r\n \"xmlns:wp14\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\",\r\n \"xmlns:w10\": \"urn:schemas-microsoft-com:office:word\",\r\n \"xmlns:w15\": \"http://schemas.microsoft.com/office/word/2012/wordml\",\r\n \"xmlns:wpg\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\",\r\n \"xmlns:wpi\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\",\r\n \"xmlns:wne\": \"http://schemas.microsoft.com/office/word/2006/wordml\",\r\n \"xmlns:wps\":\r\n \"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\",\r\n \"xmlns:asvg\":\r\n \"http://schemas.microsoft.com/office/drawing/2016/SVG/main\",\r\n };\r\n }\r\n\r\n /**\r\n * Converts a single XMLElement to its XML string representation\r\n * Useful for merging elements into existing XML\r\n *\r\n * @param element - The XMLElement to convert\r\n * @returns XML string representation of the element\r\n */\r\n static elementToString(element: XMLElement): string {\r\n const builder = new XMLBuilder();\r\n // Use the private elementToString via the elements array + build\r\n (builder as any).elements.push(element);\r\n return builder.build();\r\n }\r\n\r\n /**\r\n * Helper method to create a WordprocessingML element\r\n * @param name - Element name (without 'w:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static w(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `w:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing WordprocessingML element\r\n * @param name - Element name (without 'w:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static wSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `w:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a w14 element (Word 2010+ features)\r\n * @param name - Element name (without 'w14:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static w14(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `w14:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing w14 element\r\n * @param name - Element name (without 'w14:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static w14Self(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `w14:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a DrawingML element (a: namespace)\r\n * @param name - Element name (without 'a:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static a(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `a:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing DrawingML element\r\n * @param name - Element name (without 'a:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static aSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `a:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a Picture element (pic: namespace)\r\n * @param name - Element name (without 'pic:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static pic(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `pic:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing Picture element\r\n * @param name - Element name (without 'pic:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static picSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `pic:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a Wordprocessing Drawing element (wp: namespace)\r\n * @param name - Element name (without 'wp:' prefix)\r\n * @param attributes - Element attributes\r\n * @param children - Child elements\r\n * @returns XMLElement\r\n */\r\n static wp(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>,\r\n children?: (XMLElement | string)[]\r\n ): XMLElement {\r\n return {\r\n name: `wp:${name}`,\r\n attributes,\r\n children,\r\n };\r\n }\r\n\r\n /**\r\n * Helper method to create a self-closing Wordprocessing Drawing element\r\n * @param name - Element name (without 'wp:' prefix)\r\n * @param attributes - Element attributes\r\n * @returns XMLElement\r\n */\r\n static wpSelf(\r\n name: string,\r\n attributes?: Record<string, string | number | boolean | undefined>\r\n ): XMLElement {\r\n return {\r\n name: `wp:${name}`,\r\n attributes,\r\n selfClosing: true,\r\n };\r\n }\r\n\r\n /**\r\n * Helper to create cx/cy extent attributes (for a:ext, wp:extent, etc.)\r\n * @param name - Element name (e.g., 'ext')\r\n * @param cx - Width in EMUs\r\n * @param cy - Height in EMUs\r\n * @returns Self-closing XMLElement\r\n */\r\n static cxCy(\r\n name: string,\r\n cx: number,\r\n cy: number\r\n ): XMLElement {\r\n return {\r\n name,\r\n attributes: { cx, cy },\r\n selfClosing: true\r\n };\r\n }\r\n\r\n /**\r\n * Creates an SDT (Structured Document Tag) wrapper for content\r\n * @param content - Content to wrap (paragraphs, tables, etc.)\r\n * @param options - SDT options\r\n * @returns XMLElement representing the SDT wrapper\r\n */\r\n static createSDT(\r\n content: XMLElement[],\r\n options?: {\r\n id?: number;\r\n docPartGallery?: string;\r\n docPartUnique?: boolean;\r\n }\r\n ): XMLElement {\r\n const sdtId = options?.id ?? Math.floor(Math.random() * 2000000000) - 1000000000;\r\n\r\n // Build SDT properties\r\n const sdtPrChildren: XMLElement[] = [\r\n XMLBuilder.wSelf('id', { 'w:val': sdtId })\r\n ];\r\n\r\n // Add docPartObj if docPartGallery is specified\r\n if (options?.docPartGallery) {\r\n sdtPrChildren.push(\r\n XMLBuilder.w('docPartObj', undefined, [\r\n XMLBuilder.wSelf('docPartGallery', { 'w:val': options.docPartGallery }),\r\n XMLBuilder.wSelf('docPartUnique', {\r\n 'w:val': options?.docPartUnique !== false ? '1' : '0'\r\n })\r\n ])\r\n );\r\n }\r\n\r\n // Create complete SDT structure\r\n return XMLBuilder.w('sdt', undefined, [\r\n XMLBuilder.w('sdtPr', undefined, sdtPrChildren),\r\n XMLBuilder.w('sdtContent', undefined, content)\r\n ]);\r\n }\r\n\r\n /**\r\n * Creates a complete WordprocessingML document structure\r\n * @param bodyContent - Content for the document body\r\n * @returns XML string for word/document.xml\r\n */\r\n static createDocument(\r\n bodyContent: XMLElement[],\r\n namespaces: Record<string, string> = {},\r\n preBodyContent?: XMLElement[]\r\n ): string {\r\n const builder = new XMLBuilder();\r\n\r\n // Preserve document's original namespace order, then fill in framework defaults\r\n const allNamespaces: Record<string, string> = {};\r\n for (const [key, value] of Object.entries(namespaces)) {\r\n allNamespaces[key] = value;\r\n }\r\n for (const [key, value] of Object.entries(XMLBuilder.createNamespaces())) {\r\n if (!(key in allNamespaces)) {\r\n allNamespaces[key] = value;\r\n }\r\n }\r\n\r\n // Ensure mc:Ignorable is present when extended namespaces are declared.\r\n // Per ECMA-376, mc:Ignorable tells Word which namespace prefixes can be\r\n // safely ignored if the processor doesn't support them. Without it,\r\n // attributes like w14:paraId in raw XML passthrough zones cause corruption.\r\n if (!allNamespaces[\"mc:Ignorable\"]) {\r\n const ignorable: string[] = [];\r\n if (allNamespaces[\"xmlns:w14\"]) ignorable.push(\"w14\");\r\n if (allNamespaces[\"xmlns:w15\"]) ignorable.push(\"w15\");\r\n if (allNamespaces[\"xmlns:wp14\"]) ignorable.push(\"wp14\");\r\n if (allNamespaces[\"xmlns:w16se\"]) ignorable.push(\"w16se\");\r\n if (allNamespaces[\"xmlns:w16cid\"]) ignorable.push(\"w16cid\");\r\n if (allNamespaces[\"xmlns:w16\"]) ignorable.push(\"w16\");\r\n if (allNamespaces[\"xmlns:w16cex\"]) ignorable.push(\"w16cex\");\r\n if (allNamespaces[\"xmlns:w16sdtdh\"]) ignorable.push(\"w16sdtdh\");\r\n if (allNamespaces[\"xmlns:w16sdtfl\"]) ignorable.push(\"w16sdtfl\");\r\n if (allNamespaces[\"xmlns:w16du\"]) ignorable.push(\"w16du\");\r\n if (allNamespaces[\"xmlns:asvg\"]) ignorable.push(\"asvg\");\r\n if (ignorable.length > 0) {\r\n allNamespaces[\"mc:Ignorable\"] = ignorable.join(\" \");\r\n }\r\n } else {\r\n // mc:Ignorable was loaded from the original document — ensure every\r\n // prefix referenced in mc:Ignorable has a matching xmlns declaration.\r\n // Without this, the validator rejects prefixes that appear in\r\n // mc:Ignorable but lack namespace declarations in the root element.\r\n const defaults = XMLBuilder.createNamespaces();\r\n const prefixes = allNamespaces[\"mc:Ignorable\"].split(/\\s+/);\r\n for (const prefix of prefixes) {\r\n const nsKey = `xmlns:${prefix}`;\r\n if (!allNamespaces[nsKey] && defaults[nsKey]) {\r\n allNamespaces[nsKey] = defaults[nsKey];\r\n }\r\n }\r\n }\r\n\r\n const documentChildren: XMLElement[] = [];\r\n if (preBodyContent) {\r\n documentChildren.push(...preBodyContent);\r\n }\r\n documentChildren.push(XMLBuilder.w(\"body\", undefined, bodyContent));\r\n builder.element(\"w:document\", allNamespaces, documentChildren);\r\n\r\n return builder.build(true);\r\n }\r\n\r\n /**\r\n * Builds an XML string from a JavaScript object.\r\n * This is the reverse of XMLParser.parseToObject\r\n */\r\n static buildObject(obj: ParsedXmlObject, rootName: string): string {\r\n const builder = new XMLBuilder();\r\n const element = XMLBuilder.objectToElement(obj, rootName);\r\n if (element) {\r\n if (typeof element === \"string\") {\r\n builder.text(element);\r\n } else {\r\n builder.elements.push(element);\r\n }\r\n }\r\n return builder.build();\r\n }\r\n\r\n /**\r\n * Converts a JavaScript object to an XMLElement.\r\n * @private\r\n */\r\n private static objectToElement(\r\n obj: ParsedXmlObject | string | number | boolean | null | undefined,\r\n name: string\r\n ): XMLElement | string | null {\r\n if (obj === null || obj === undefined) {\r\n return null;\r\n }\r\n\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return String(obj);\r\n }\r\n\r\n const attributes: Record<string, string | number | boolean> = {};\r\n const children: (XMLElement | string)[] = [];\r\n\r\n if (obj[\"#text\"] && Object.keys(obj).length === 1) {\r\n return String(obj[\"#text\"]);\r\n }\r\n\r\n for (const key in obj) {\r\n if (key.startsWith(\"@_\")) {\r\n const attrName = key.substring(2);\r\n // Validate attribute name is not empty after prefix removal\r\n if (attrName.length > 0) {\r\n attributes[attrName] = obj[key];\r\n }\r\n } else if (key === \"#text\") {\r\n children.push(String(obj[key]));\r\n } else {\r\n const childObj = obj[key];\r\n if (Array.isArray(childObj)) {\r\n childObj.forEach((item) => {\r\n const childElement = XMLBuilder.objectToElement(item, key);\r\n if (childElement) {\r\n children.push(childElement);\r\n }\r\n });\r\n } else {\r\n const childElement = XMLBuilder.objectToElement(childObj, key);\r\n if (childElement) {\r\n children.push(childElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const element: XMLElement = {\r\n name,\r\n attributes,\r\n children: children.length > 0 ? children : undefined,\r\n };\r\n\r\n if (!element.children || element.children.length === 0) {\r\n if (!XMLBuilder.CANNOT_SELF_CLOSE.includes(name)) {\r\n element.selfClosing = true;\r\n }\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Helper method to build attributes object, filtering out undefined/null values\r\n * This simplifies the common pattern of conditionally adding attributes\r\n *\r\n * @param mapping - Map of attribute names to values\r\n * @returns Filtered attributes object with only defined values\r\n *\r\n * @example\r\n * ```typescript\r\n * const attrs = XMLBuilder.buildAttributes({\r\n * 'w:before': spacing?.before,\r\n * 'w:after': spacing?.after,\r\n * 'w:line': spacing?.line\r\n * });\r\n * // Returns only attributes with defined values\r\n * ```\r\n */\r\n static buildAttributes(mapping: Record<string, any>): Record<string, string | number> {\r\n const attrs: Record<string, string | number> = {};\r\n for (const [key, value] of Object.entries(mapping)) {\r\n if (value !== undefined && value !== null) {\r\n attrs[key] = value;\r\n }\r\n }\r\n return attrs;\r\n }\r\n\r\n /**\r\n * Creates a border element for WordprocessingML\r\n * Used for table borders, cell borders, and paragraph borders\r\n *\r\n * @param side - Border side (e.g., 'top', 'left', 'bottom', 'right', 'insideH', 'insideV')\r\n * @param border - Border definition\r\n * @returns XML element for border\r\n *\r\n * @example\r\n * ```typescript\r\n * const border = XMLBuilder.createBorder('top', {\r\n * style: 'single',\r\n * size: 4,\r\n * color: 'FF0000',\r\n * space: 0\r\n * });\r\n * ```\r\n */\r\n static createBorder(\r\n side: string,\r\n border: {\r\n style?: string;\r\n size?: number;\r\n color?: string;\r\n space?: number;\r\n }\r\n ): XMLElement {\r\n const attrs = XMLBuilder.buildAttributes({\r\n 'w:val': border.style || 'single',\r\n 'w:sz': border.size,\r\n 'w:color': border.color,\r\n 'w:space': border.space\r\n });\r\n\r\n return XMLBuilder.wSelf(side, attrs);\r\n }\r\n\r\n /**\r\n * Creates a shading element for WordprocessingML\r\n * Used for paragraph shading, table shading, and cell shading\r\n *\r\n * @param shading - Shading definition (ShadingConfig with theme support)\r\n * @returns XML element for shading, or null if no shading properties\r\n *\r\n * @example\r\n * ```typescript\r\n * const shading = XMLBuilder.createShading({\r\n * fill: 'FFFF00',\r\n * pattern: 'clear',\r\n * color: '000000'\r\n * });\r\n * ```\r\n */\r\n static createShading(shading: ShadingConfig): XMLElement | null {\r\n const attrs = buildShadingAttributes(shading);\r\n // Default w:val to \"clear\" if not specified but other attrs exist\r\n if (!attrs['w:val'] && Object.keys(attrs).length > 0) {\r\n attrs['w:val'] = 'clear';\r\n }\r\n if (Object.keys(attrs).length > 0) {\r\n return XMLBuilder.wSelf('shd', attrs);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Creates a margins element (tcMar, pgMar, etc.)\r\n * Used for cell margins, page margins, etc.\r\n *\r\n * @param type - Margin type element name (e.g., 'tcMar', 'pgMar')\r\n * @param margins - Margin values in twips\r\n * @returns XML element for margins, or null if no margins defined\r\n *\r\n * @example\r\n * ```typescript\r\n * const margins = XMLBuilder.createMargins('tcMar', {\r\n * top: 100,\r\n * bottom: 100,\r\n * left: 100,\r\n * right: 100\r\n * });\r\n * ```\r\n */\r\n static createMargins(\r\n type: string,\r\n margins: {\r\n top?: number;\r\n bottom?: number;\r\n left?: number;\r\n right?: number;\r\n start?: number;\r\n end?: number;\r\n }\r\n ): XMLElement | null {\r\n const children: XMLElement[] = [];\r\n\r\n if (margins.top !== undefined) {\r\n children.push(XMLBuilder.wSelf('top', { 'w:w': margins.top, 'w:type': 'dxa' }));\r\n }\r\n if (margins.bottom !== undefined) {\r\n children.push(XMLBuilder.wSelf('bottom', { 'w:w': margins.bottom, 'w:type': 'dxa' }));\r\n }\r\n if (margins.left !== undefined) {\r\n children.push(XMLBuilder.wSelf('left', { 'w:w': margins.left, 'w:type': 'dxa' }));\r\n }\r\n if (margins.right !== undefined) {\r\n children.push(XMLBuilder.wSelf('right', { 'w:w': margins.right, 'w:type': 'dxa' }));\r\n }\r\n if (margins.start !== undefined) {\r\n children.push(XMLBuilder.wSelf('start', { 'w:w': margins.start, 'w:type': 'dxa' }));\r\n }\r\n if (margins.end !== undefined) {\r\n children.push(XMLBuilder.wSelf('end', { 'w:w': margins.end, 'w:type': 'dxa' }));\r\n }\r\n\r\n if (children.length > 0) {\r\n return XMLBuilder.w(type, undefined, children);\r\n }\r\n return null;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLParser.d.ts","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAK7C,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,EAAE,GACjB,IAAI,GACJ,SAAS,CAAC;AAKd,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAcD,qBAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAyB1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAyG9D,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS;IAsBrB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAoB/D,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAwBhE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkCvC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,IAAI;IAqB1E,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IA4BrB,MAAM,CAAC,qBAAqB,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAsDrB,MAAM,CAAC,aAAa,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe;IAoClB,OAAO,CAAC,MAAM,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"XMLParser.d.ts","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAK7C,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,EAAE,GACjB,IAAI,GACJ,SAAS,CAAC;AAKd,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAcD,qBAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAyB1C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAyG9D,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS;IAsBrB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAoB/D,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAwBhE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkCvC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,IAAI;IAqB1E,MAAM,CAAC,kBAAkB,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IA4BrB,MAAM,CAAC,qBAAqB,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS;IAsDrB,MAAM,CAAC,aAAa,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe;IAoClB,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAmMnC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6FvC,OAAO,CAAC,MAAM,CAAC,cAAc;IA2E7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiD/B,OAAO,CAAC,MAAM,CAAC,UAAU;CAqC1B"}
|
package/dist/xml/XMLParser.js
CHANGED
|
@@ -226,9 +226,8 @@ class XMLParser {
|
|
|
226
226
|
}
|
|
227
227
|
return { value: {}, endPos: xml.length };
|
|
228
228
|
}
|
|
229
|
-
const nameMatch = xml
|
|
230
|
-
.substring(openTagStart + 1)
|
|
231
|
-
.match(/^([a-zA-Z0-9:_-]+)/);
|
|
229
|
+
const nameMatch = /^([a-zA-Z0-9:_-]+)/.exec(xml
|
|
230
|
+
.substring(openTagStart + 1));
|
|
232
231
|
if (!nameMatch) {
|
|
233
232
|
return { value: {}, endPos: openTagStart + 1 };
|
|
234
233
|
}
|
|
@@ -302,7 +301,7 @@ class XMLParser {
|
|
|
302
301
|
elementValue = text;
|
|
303
302
|
}
|
|
304
303
|
else {
|
|
305
|
-
elementValue[options.textNodeName] = text;
|
|
304
|
+
(elementValue)[options.textNodeName] = text;
|
|
306
305
|
}
|
|
307
306
|
}
|
|
308
307
|
}
|
|
@@ -461,7 +460,7 @@ class XMLParser {
|
|
|
461
460
|
}
|
|
462
461
|
}
|
|
463
462
|
if (orderedChildren.length > 0) {
|
|
464
|
-
result
|
|
463
|
+
result._orderedChildren = orderedChildren;
|
|
465
464
|
}
|
|
466
465
|
return result;
|
|
467
466
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":";;;AAMA,4CAA+E;AAC/E,6CAA0C;AAG1C,SAAS,SAAS;IAChB,OAAO,IAAA,2BAAkB,EAAC,IAAA,wBAAe,GAAE,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAMY,QAAA,yBAAyB,GAAG,GAAG,CAAC;AA+D7C,MAAa,SAAS;IAMpB,MAAM,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC;QAE3B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAG/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAG9B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAE7B,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IASD,MAAM,CAAC,eAAe,CAAC,GAAW,EAAE,OAAe;QACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,OAAO,GAAG,CAAC;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC;QAE5B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,MAAM;YAI3B,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,IACE,YAAY;gBACZ,YAAY,KAAK,GAAG;gBACpB,YAAY,KAAK,GAAG;gBACpB,YAAY,KAAK,GAAG;gBACpB,YAAY,KAAK,IAAI;gBACrB,YAAY,KAAK,IAAI;gBACrB,YAAY,KAAK,IAAI;gBACrB,YAAY,KAAK,GAAG,EACpB,CAAC;gBAED,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;gBAChC,SAAS;YACX,CAAC;YAGD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,CAAC,CAAC;gBAAE,MAAM;YAG1B,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;gBAC/D,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpD,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YAGD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC;YAE5B,OAAO,KAAK,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBAE3C,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAClB,IAAI,aAAa,GAAG,SAAS,CAAC;gBAC9B,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBAC1D,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;wBACzB,MAAM;oBACR,CAAC;oBAED,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBACtD,IACE,SAAS;wBACT,SAAS,KAAK,GAAG;wBACjB,SAAS,KAAK,GAAG;wBACjB,SAAS,KAAK,GAAG;wBACjB,SAAS,KAAK,IAAI;wBAClB,SAAS,KAAK,IAAI;wBAClB,SAAS,KAAK,IAAI,EAClB,CAAC;wBAED,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;wBAC/C,SAAS;oBACX,CAAC;oBACD,QAAQ,GAAG,aAAa,CAAC;oBACzB,MAAM;gBACR,CAAC;gBAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAEnD,IAAI,SAAS,KAAK,CAAC,CAAC;oBAAE,MAAM;gBAE5B,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;oBAC5C,KAAK,EAAE,CAAC;oBACR,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,KAAK,EAAE,CAAC;oBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;wBAChB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;wBACpE,GAAG,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAEd,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAQD,MAAM,CAAC,gBAAgB,CACrB,GAAW,EACX,aAAqB;QAGrB,MAAM,WAAW,GAAG,GAAG,aAAa,IAAI,CAAC;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEtC,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;QACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEtC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAGrD,OAAO,uBAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAQD,MAAM,CAAC,iBAAiB,CAAC,GAAW,EAAE,OAAe;QACnD,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;IACvE,CAAC;IAkBD,MAAM,CAAC,kBAAkB,CAAC,GAAW,EAAE,OAAe;QAEpD,IACE,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,YAAY,CAAC;YACrC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,eAAe,CAAC,EACxC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAID,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAQD,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAE1B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,MAAM;YAG3B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,CAAC,CAAC;gBAAE,MAAM;YAG1B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,MAAM;YAG3B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjB,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAQD,MAAM,CAAC,YAAY,CAAC,GAAW,EAAE,UAAkB,EAAE,GAAG,IAAI,GAAG,IAAI;QACjE,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sCAAsC,CACpC,GAAG,CAAC,MAAM;gBACV,IAAI;gBACJ,IAAI,CACL,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;gBACjB,oBAAoB,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAUD,MAAM,CAAC,kBAAkB,CACvB,GAAW,EACX,QAAgB,EAChB,MAAc;QAEd,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAGtC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAGrC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEpC,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAeD,MAAM,CAAC,qBAAqB,CAC1B,GAAW,EACX,OAAe;QAEf,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,SAAS,GAAG,CAAC,CAAC;QAGlB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,QAAQ,KAAK,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YAGtC,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAGzD,IAAI,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;gBAEzE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC3C,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;oBAElB,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACjD,IAAI,aAAa,KAAK,CAAC,CAAC;wBAAE,OAAO,SAAS,CAAC;oBAG3C,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBACtE,CAAC;gBAGD,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/D,CAAC;YAID,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAqBD,MAAM,CAAC,aAAa,CAClB,GAAW,EACX,OAA8B;QAE9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAG/D,MAAM,IAAI,GAAmC;YAC3C,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,KAAK;YACpD,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,IAAI,IAAI;YACzD,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,OAAO;YAC9C,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,KAAK;YAClD,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,IAAI,IAAI;YACzD,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;YACvC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK;YAC1C,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,iCAAyB;SACvE,CAAC;QAGF,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAG5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;QAGD,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,KAAwB,CAAC;IACzC,CAAC;IAMO,MAAM,CAAC,oBAAoB,CACjC,GAAW,EACX,QAAgB,EAChB,OAAuC,EACvC,KAAa;QAGb,IAAI,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,CAAC,eAAe,IAAI;gBACnE,wDAAwD;gBACxD,iEAAiE,CAClE,CAAC;QACJ,CAAC;QAGD,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,CAAC;QAGD,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACxD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,OAAO,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,CAAC;QAGD,MAAM,SAAS,GAAG,GAAG;aAClB,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;aAC3B,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,mBAAmB,GAAW,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,WAAW,GAAW,mBAAmB,CAAC;QAC9C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3C,CAAC;QAGD,IAAI,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;QACzD,CAAC;QAGD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAC7B,YAAY,GAAG,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAC7C,YAAY,CACb,CAAC;QACF,MAAM,UAAU,GAAG,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAG1E,MAAM,aAAa,GACjB,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;QAElE,IAAI,aAAa,EAAE,CAAC;YAElB,MAAM,YAAY,GAAoB,EAAE,GAAG,UAAU,EAAE,CAAC;YACxD,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE;gBACtC,MAAM,EAAE,YAAY,GAAG,CAAC;aACzB,CAAC;QACJ,CAAC;QAGD,MAAM,UAAU,GAAG,KAAK,mBAAmB,GAAG,CAAC;QAC/C,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAC5C,GAAG,EACH,mBAAmB,EACnB,YAAY,CACb,CAAC;QAEF,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YAEzB,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE;gBAC3C,MAAM,EAAE,YAAY,GAAG,CAAC;aACzB,CAAC;QACJ,CAAC;QAGD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAG3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE1C,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;gBAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAGpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBAE5D,WAAW,IAAI,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM;YACR,CAAC;YAGD,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAG7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBAE5D,WAAW,IAAI,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAGD,MAAM,WAAW,GAAG,SAAS,CAAC,oBAAoB,CAChD,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GAAG,CAAC,CACV,CAAC;YACF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAwB,CAAC;YAGtD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;YAED,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;QAC3B,CAAC;QAGD,IAAI,YAAY,GAAmB,EAAE,CAAC;QAGtC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,YAAY,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QACnC,CAAC;QAKD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACnE,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrE,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAE3C,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBAEL,YAAgC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrE,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,iBAAiB,CAAC;YACnC,CAAC;QACH,CAAC;QAGD,IACE,OAAO,YAAY,KAAK,QAAQ;YAChC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EACtC,CAAC;YACD,YAAY,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,OAAO;YACL,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE;YACtC,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC,MAAM;SAC1C,CAAC;IACJ,CAAC;IAMO,MAAM,CAAC,wBAAwB,CACrC,SAAiB,EACjB,OAAuC;QAEvC,MAAM,UAAU,GAA8C,EAAE,CAAC;QAEjE,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QAGD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAE9B,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,GAAG,EAAE,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtD,MAAM;YACR,CAAC;YAGD,MAAM,SAAS,GAAG,GAAG,CAAC;YACtB,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,GAAG,EAAE,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;YAED,IAAI,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAGnD,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,GAAG,EAAE,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;YAGD,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IACE,GAAG,GAAG,SAAS,CAAC,MAAM;gBACtB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAClD,CAAC;gBACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7B,GAAG,EAAE,CAAC;gBACN,MAAM,UAAU,GAAG,GAAG,CAAC;gBAEvB,OAAO,GAAG,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;oBAC1D,GAAG,EAAE,CAAC;gBACR,CAAC;gBAED,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACjD,GAAG,EAAE,CAAC;YACR,CAAC;YAGD,IAAI,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;YAChD,CAAC;YAGD,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,GAAG,QAAQ,CAAC;YAG5D,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,mBAAmB;gBACpD,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAMO,MAAM,CAAC,cAAc,CAC3B,GAAW,EACX,WAAmB,EACnB,QAAgB;QAEhB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,KAAK,WAAW,GAAG,CAAC;QACrC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,QAAQ,CAAC;QAEnB,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAE7C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YAID,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,GAAG,CAAC;YACpB,OAAO,SAAS,GAAG,SAAS,EAAE,CAAC;gBAC7B,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACtD,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;oBACvD,MAAM;gBACR,CAAC;gBAED,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBACtD,IACE,SAAS,KAAK,GAAG;oBACjB,SAAS,KAAK,GAAG;oBACjB,SAAS,KAAK,GAAG;oBACjB,SAAS,KAAK,IAAI;oBAClB,SAAS,KAAK,IAAI;oBAClB,SAAS,KAAK,IAAI,EAClB,CAAC;oBAGD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;oBAC/C,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAE7C,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;wBACvB,SAAS;oBACX,CAAC;oBAED,WAAW,GAAG,aAAa,CAAC;oBAC5B,MAAM;gBACR,CAAC;gBAID,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7C,CAAC;YAED,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBAEvB,KAAK,EAAE,CAAC;gBACR,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YACrC,CAAC;iBAAM,CAAC;gBAEN,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,GAAG,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAMO,MAAM,CAAC,gBAAgB,CAC7B,QAAyB,EACzB,OAAuC;QAEvC,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,WAAW,GAA2B,EAAE,CAAC;QAI/C,MAAM,eAAe,GAA2C,EAAE,CAAC;QAGnE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QAGD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,aAAa,GACjB,OAAO,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAG3D,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YAChE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;YAE3C,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,CAAC;gBACA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QAGD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,kBAAkB,CAAC,GAAG,eAAe,CAAC;QAC/C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAMO,MAAM,CAAC,UAAU,CAAC,KAAa;QACrC,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QAIpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;QAID,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAKD,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC;QAC9B,CAAC;QAED,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC;QAC9B,CAAC;QAID,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAt0BD,8BAs0BC"}
|
|
1
|
+
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml/XMLParser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * XMLParser - Simple position-based XML parser\r\n * Avoids regex backtracking issues that can cause ReDoS attacks\r\n * Completes the DocXML framework (XMLBuilder + XMLParser)\r\n */\r\n\r\nimport { getGlobalLogger, createScopedLogger, ILogger } from \"../utils/logger\";\r\nimport { XMLBuilder } from \"./XMLBuilder\";\r\n\r\n// Create scoped logger for XMLParser operations\r\nfunction getLogger(): ILogger {\r\n return createScopedLogger(getGlobalLogger(), 'XMLParser');\r\n}\r\n\r\n/**\r\n * Default maximum nesting depth for XML parsing.\r\n * Prevents stack overflow on deeply nested documents.\r\n */\r\nexport const DEFAULT_MAX_NESTING_DEPTH = 256;\r\n\r\n/**\r\n * Options for XML-to-object parsing\r\n */\r\nexport interface ParseToObjectOptions {\r\n /** Ignore attributes (default: false) */\r\n ignoreAttributes?: boolean;\r\n\r\n /** Attribute name prefix (default: '@_') */\r\n attributeNamePrefix?: string;\r\n\r\n /** Text node property name (default: '#text') */\r\n textNodeName?: string;\r\n\r\n /** Remove namespace prefixes from element names (default: false) */\r\n ignoreNamespace?: boolean;\r\n\r\n /** Parse numeric attribute values (default: true) */\r\n parseAttributeValue?: boolean;\r\n\r\n /** Trim whitespace from text values (default: true) */\r\n trimValues?: boolean;\r\n\r\n /** Always return arrays for elements (default: false) */\r\n alwaysArray?: boolean;\r\n\r\n /** Maximum nesting depth (default: 256). Prevents stack overflow on deeply nested documents. */\r\n maxNestingDepth?: number;\r\n}\r\n\r\n/**\r\n * Parsed XML object structure\r\n * Can be a string, object, array, or nested structure\r\n */\r\nexport type ParsedXMLValue =\r\n | string\r\n | number\r\n | boolean\r\n | ParsedXMLObject\r\n | ParsedXMLObject[]\r\n | null\r\n | undefined;\r\n\r\n/**\r\n * Parsed XML object with dynamic keys\r\n */\r\nexport interface ParsedXMLObject {\r\n [key: string]: ParsedXMLValue;\r\n}\r\n\r\n/**\r\n * Internal structure for tracking parsed elements during parsing\r\n */\r\ninterface ParsedElement {\r\n name: string;\r\n value: ParsedXMLValue;\r\n}\r\n\r\n/**\r\n * Simple XML parser using position-based parsing instead of regex\r\n * Prevents catastrophic backtracking (ReDoS attacks) by avoiding nested regex patterns\r\n */\r\nexport class XMLParser {\r\n /**\r\n * Extracts the body content from a Word document XML\r\n * @param docXml - The complete document.xml content\r\n * @returns The body content, or empty string if not found\r\n */\r\n static extractBody(docXml: string): string {\r\n const startTag = \"<w:body\";\r\n const endTag = \"</w:body>\";\r\n\r\n const startIdx = docXml.indexOf(startTag);\r\n if (startIdx === -1) return \"\";\r\n\r\n // Find the closing > of opening tag\r\n const openEnd = docXml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) return \"\";\r\n\r\n // Find matching closing tag\r\n const endIdx = docXml.indexOf(endTag, openEnd);\r\n if (endIdx === -1) return \"\";\r\n\r\n return docXml.substring(openEnd + 1, endIdx);\r\n }\r\n\r\n /**\r\n * Extracts all elements of a given type using position-based parsing\r\n * Handles nested tags correctly by tracking depth\r\n * @param xml - XML content to parse\r\n * @param tagName - Tag name to extract (e.g., 'w:p', 'w:r')\r\n * @returns Array of XML strings for each element\r\n */\r\n static extractElements(xml: string, tagName: string): string[] {\r\n const elements: string[] = [];\r\n const openTag = `<${tagName}`;\r\n const closeTag = `</${tagName}>`;\r\n const selfClosingEnd = \"/>\";\r\n\r\n let pos = 0;\r\n while (pos < xml.length) {\r\n const startIdx = xml.indexOf(openTag, pos);\r\n if (startIdx === -1) break;\r\n\r\n // Verify this is the exact tag (not a prefix match like <w:p matching <w:pPr>)\r\n // The character after the tag name must be either '>', '/', whitespace, or '=' (for attributes)\r\n const charAfterTag = xml[startIdx + openTag.length];\r\n if (\r\n charAfterTag &&\r\n charAfterTag !== \">\" &&\r\n charAfterTag !== \"/\" &&\r\n charAfterTag !== \" \" &&\r\n charAfterTag !== \"\\t\" &&\r\n charAfterTag !== \"\\n\" &&\r\n charAfterTag !== \"\\r\" &&\r\n charAfterTag !== \"=\"\r\n ) {\r\n // This is a prefix match (e.g., <w:pPr> when looking for <w:p>), skip it (Issue #5)\r\n pos = startIdx + openTag.length;\r\n continue;\r\n }\r\n\r\n // Find the end of opening tag\r\n const openEnd = xml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) break;\r\n\r\n // Check if self-closing\r\n if (xml.substring(openEnd - 1, openEnd + 1) === selfClosingEnd) {\r\n elements.push(xml.substring(startIdx, openEnd + 1));\r\n pos = openEnd + 1;\r\n continue;\r\n }\r\n\r\n // Find matching closing tag (handle nesting)\r\n let depth = 1;\r\n let searchPos = openEnd + 1;\r\n\r\n while (depth > 0 && searchPos < xml.length) {\r\n // Find next potential opening tag\r\n let nextOpen = -1;\r\n let openSearchPos = searchPos;\r\n while (true) {\r\n const candidateOpen = xml.indexOf(openTag, openSearchPos);\r\n if (candidateOpen === -1) {\r\n break;\r\n }\r\n // Verify it's an exact match (not a prefix)\r\n const charAfter = xml[candidateOpen + openTag.length];\r\n if (\r\n charAfter &&\r\n charAfter !== \">\" &&\r\n charAfter !== \"/\" &&\r\n charAfter !== \" \" &&\r\n charAfter !== \"\\t\" &&\r\n charAfter !== \"\\n\" &&\r\n charAfter !== \"\\r\"\r\n ) {\r\n // Prefix match, keep searching\r\n openSearchPos = candidateOpen + openTag.length;\r\n continue;\r\n }\r\n nextOpen = candidateOpen;\r\n break;\r\n }\r\n\r\n const nextClose = xml.indexOf(closeTag, searchPos);\r\n\r\n if (nextClose === -1) break;\r\n\r\n if (nextOpen !== -1 && nextOpen < nextClose) {\r\n depth++;\r\n searchPos = nextOpen + openTag.length;\r\n } else {\r\n depth--;\r\n if (depth === 0) {\r\n elements.push(xml.substring(startIdx, nextClose + closeTag.length));\r\n pos = nextClose + closeTag.length;\r\n } else {\r\n searchPos = nextClose + closeTag.length;\r\n }\r\n }\r\n }\r\n\r\n if (depth > 0) {\r\n // Unclosed tag - skip it\r\n pos = startIdx + openTag.length;\r\n }\r\n }\r\n\r\n return elements;\r\n }\r\n\r\n /**\r\n * Extracts attribute value from an XML string\r\n * @param xml - XML content\r\n * @param attributeName - Attribute name (e.g., 'w:val')\r\n * @returns Attribute value or undefined\r\n */\r\n static extractAttribute(\r\n xml: string,\r\n attributeName: string\r\n ): string | undefined {\r\n // Use simple indexOf for bounded string search (safe)\r\n const attrPattern = `${attributeName}=\"`;\r\n const startIdx = xml.indexOf(attrPattern);\r\n if (startIdx === -1) return undefined;\r\n\r\n const valueStart = startIdx + attrPattern.length;\r\n const valueEnd = xml.indexOf('\"', valueStart);\r\n if (valueEnd === -1) return undefined;\r\n\r\n const rawValue = xml.substring(valueStart, valueEnd);\r\n // Unescape XML entities to get the actual value\r\n // This prevents double-escaping when the value is later re-serialized\r\n return XMLBuilder.unescapeXml(rawValue);\r\n }\r\n\r\n /**\r\n * Checks if an XML string contains a self-closing tag\r\n * @param xml - XML content\r\n * @param tagName - Tag name to check\r\n * @returns True if the tag exists as self-closing\r\n */\r\n static hasSelfClosingTag(xml: string, tagName: string): boolean {\r\n return xml.includes(`<${tagName}/>`) || xml.includes(`<${tagName} `);\r\n }\r\n\r\n /**\r\n * Checks if a boolean property tag is enabled (w:val=\"1\" or w:val=\"true\")\r\n * Per ECMA-376, boolean properties can be:\r\n * - Present with w:val=\"1\" or w:val=\"true\" (enabled)\r\n * - Present with w:val=\"0\" or w:val=\"false\" (explicitly disabled)\r\n * - Absent (disabled by default)\r\n *\r\n * @param xml - XML content to search\r\n * @param tagName - Tag name (e.g., 'w:keepNext')\r\n * @returns True if tag exists with w:val=\"1\" or w:val=\"true\", false otherwise\r\n *\r\n * @example\r\n * hasBooleanProperty('<w:pPr><w:keepNext w:val=\"1\"/></w:pPr>', 'w:keepNext'); // true\r\n * hasBooleanProperty('<w:pPr><w:keepNext w:val=\"0\"/></w:pPr>', 'w:keepNext'); // false\r\n * hasBooleanProperty('<w:pPr><w:spacing/></w:pPr>', 'w:keepNext'); // false\r\n */\r\n static hasBooleanProperty(xml: string, tagName: string): boolean {\r\n // Check for tag with w:val=\"1\" or w:val=\"true\"\r\n if (\r\n xml.includes(`<${tagName} w:val=\"1\"`) ||\r\n xml.includes(`<${tagName} w:val=\"true\"`)\r\n ) {\r\n return true;\r\n }\r\n\r\n // Check for self-closing tag without w:val attribute (means true per ECMA-376)\r\n // Example: <w:b/> means bold=true\r\n if (xml.includes(`<${tagName}/>`)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Extracts text content from within tags\r\n * Finds all <w:t>...</w:t> tags and extracts their text\r\n * @param xml - XML content\r\n * @returns Combined text content\r\n */\r\n static extractText(xml: string): string {\r\n const texts: string[] = [];\r\n const openTag = \"<w:t\";\r\n const closeTag = \"</w:t>\";\r\n\r\n let pos = 0;\r\n while (pos < xml.length) {\r\n const startIdx = xml.indexOf(openTag, pos);\r\n if (startIdx === -1) break;\r\n\r\n // Find the end of opening tag\r\n const openEnd = xml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) break;\r\n\r\n // Find closing tag\r\n const closeIdx = xml.indexOf(closeTag, openEnd);\r\n if (closeIdx === -1) break;\r\n\r\n // Extract text between tags\r\n const text = xml.substring(openEnd + 1, closeIdx);\r\n texts.push(text);\r\n\r\n pos = closeIdx + closeTag.length;\r\n }\r\n\r\n return texts.join(\"\");\r\n }\r\n\r\n /**\r\n * Validates input size to prevent excessive memory usage\r\n * @param xml - XML content\r\n * @param maxSize - Maximum size in bytes (default: 10MB)\r\n * @throws Error if XML exceeds max size\r\n */\r\n static validateSize(xml: string, maxSize: number = 10 * 1024 * 1024): void {\r\n if (xml.length > maxSize) {\r\n throw new Error(\r\n `XML content too large for parsing (${(\r\n xml.length /\r\n 1024 /\r\n 1024\r\n ).toFixed(1)}MB). ` +\r\n `Maximum allowed: ${(maxSize / 1024 / 1024).toFixed(0)}MB`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Extracts content between two specific tags\r\n * More efficient than regex for large documents\r\n * @param xml - XML content\r\n * @param startTag - Opening tag (e.g., '<w:pPr')\r\n * @param endTag - Closing tag (e.g., '</w:pPr>')\r\n * @returns Content between tags, or undefined if not found\r\n */\r\n static extractBetweenTags(\r\n xml: string,\r\n startTag: string,\r\n endTag: string\r\n ): string | undefined {\r\n const startIdx = xml.indexOf(startTag);\r\n if (startIdx === -1) return undefined;\r\n\r\n // Find the end of the opening tag\r\n const openEnd = xml.indexOf(\">\", startIdx);\r\n if (openEnd === -1) return undefined;\r\n\r\n // Find the closing tag\r\n const endIdx = xml.indexOf(endTag, openEnd);\r\n if (endIdx === -1) return undefined;\r\n\r\n return xml.substring(openEnd + 1, endIdx);\r\n }\r\n\r\n /**\r\n * Extracts a complete self-closing tag with its attributes\r\n * Handles cases where multiple similar tags exist (e.g., <w:sz.../> and <w:szCs.../>)\r\n *\r\n * @param xml - XML string to search\r\n * @param tagName - Tag name to find (e.g., \"w:color\", \"w:sz\")\r\n * @returns The complete tag content (attributes portion) or undefined if not found\r\n *\r\n * @example\r\n * const xml = '<w:sz w:val=\"36\"/><w:color w:val=\"FF0000\"/>';\r\n * const colorTag = XMLParser.extractSelfClosingTag(xml, 'w:color');\r\n * // Returns: ' w:val=\"FF0000\"'\r\n */\r\n static extractSelfClosingTag(\r\n xml: string,\r\n tagName: string\r\n ): string | undefined {\r\n const startPattern = `<${tagName}`;\r\n let searchPos = 0;\r\n\r\n // Search for the exact tag (not tags that start with this pattern)\r\n while (true) {\r\n const startIdx = xml.indexOf(startPattern, searchPos);\r\n if (startIdx === -1) return undefined;\r\n\r\n // Check what character follows the tag name\r\n const charAfterTag = xml[startIdx + startPattern.length];\r\n\r\n // Valid separators after tag name: space, '/', or '>'\r\n if (charAfterTag === ' ' || charAfterTag === '/' || charAfterTag === '>') {\r\n // Found the exact tag, now find its end\r\n const endIdx = xml.indexOf('/>', startIdx);\r\n if (endIdx === -1) {\r\n // Try finding a closing tag instead (non-self-closing)\r\n const closeTagStart = xml.indexOf('>', startIdx);\r\n if (closeTagStart === -1) return undefined;\r\n\r\n // Return attributes portion\r\n return xml.substring(startIdx + startPattern.length, closeTagStart);\r\n }\r\n\r\n // Return attributes portion (between tag name and />)\r\n return xml.substring(startIdx + startPattern.length, endIdx);\r\n }\r\n\r\n // Not the exact tag (e.g., found \"w:sz\" when looking for \"w:s\")\r\n // Continue searching\r\n searchPos = startIdx + 1;\r\n }\r\n }\r\n\r\n /**\r\n * Parse XML string to JavaScript object\r\n * Compatible with fast-xml-parser output format\r\n *\r\n * @param xml - XML string to parse\r\n * @param options - Parsing options\r\n * @returns Parsed JavaScript object\r\n *\r\n * @example\r\n * const xml = '<Relationships><Relationship Id=\"rId1\" Target=\"https://example.com\"/></Relationships>';\r\n * const obj = XMLParser.parseToObject(xml);\r\n * // Returns: { Relationships: { Relationship: { '@_Id': 'rId1', '@_Target': 'https://example.com' } } }\r\n *\r\n * @example\r\n * // Multiple elements become arrays\r\n * const xml = '<Items><Item id=\"1\"/><Item id=\"2\"/></Items>';\r\n * const obj = XMLParser.parseToObject(xml);\r\n * // Returns: { Items: { Item: [{ '@_id': '1' }, { '@_id': '2' }] } }\r\n */\r\n static parseToObject(\r\n xml: string,\r\n options?: ParseToObjectOptions\r\n ): ParsedXMLObject {\r\n const logger = getLogger();\r\n logger.debug('Parsing XML to object', { xmlSize: xml.length });\r\n\r\n // Default options\r\n const opts: Required<ParseToObjectOptions> = {\r\n ignoreAttributes: options?.ignoreAttributes ?? false,\r\n attributeNamePrefix: options?.attributeNamePrefix ?? \"@_\",\r\n textNodeName: options?.textNodeName ?? \"#text\",\r\n ignoreNamespace: options?.ignoreNamespace ?? false,\r\n parseAttributeValue: options?.parseAttributeValue ?? true,\r\n trimValues: options?.trimValues ?? true,\r\n alwaysArray: options?.alwaysArray ?? false,\r\n maxNestingDepth: options?.maxNestingDepth ?? DEFAULT_MAX_NESTING_DEPTH,\r\n };\r\n\r\n // Validate input size\r\n XMLParser.validateSize(xml);\r\n\r\n // Remove XML declaration and trim\r\n xml = xml.replace(/<\\?xml[^>]*\\?>\\s*/g, \"\").trim();\r\n\r\n if (!xml) {\r\n return {};\r\n }\r\n\r\n // Parse root element (start at depth 0)\r\n const result = XMLParser.parseElementToObject(xml, 0, opts, 0);\r\n logger.debug('XML parsed to object');\r\n return result.value as ParsedXMLObject;\r\n }\r\n\r\n /**\r\n * Parses a single XML element into an object\r\n * @private\r\n */\r\n private static parseElementToObject(\r\n xml: string,\r\n startPos: number,\r\n options: Required<ParseToObjectOptions>,\r\n depth: number\r\n ): { value: ParsedXMLValue; endPos: number } {\r\n // Check nesting depth to prevent stack overflow\r\n if (depth > options.maxNestingDepth) {\r\n throw new Error(\r\n `XML nesting depth exceeds maximum of ${options.maxNestingDepth}. ` +\r\n `This may indicate malformed XML or an attack attempt. ` +\r\n `Use the maxNestingDepth option to increase the limit if needed.`\r\n );\r\n }\r\n\r\n // Find opening tag\r\n const openTagStart = xml.indexOf(\"<\", startPos);\r\n if (openTagStart === -1) {\r\n return { value: {}, endPos: xml.length };\r\n }\r\n\r\n // Skip comments\r\n if (xml.substring(openTagStart, openTagStart + 4) === \"<!--\") {\r\n const commentEnd = xml.indexOf(\"-->\", openTagStart + 4);\r\n if (commentEnd !== -1) {\r\n return XMLParser.parseElementToObject(xml, commentEnd + 3, options, depth);\r\n }\r\n return { value: {}, endPos: xml.length };\r\n }\r\n\r\n // Extract element name\r\n const nameMatch = /^([a-zA-Z0-9:_-]+)/.exec(xml\r\n .substring(openTagStart + 1));\r\n if (!nameMatch) {\r\n return { value: {}, endPos: openTagStart + 1 };\r\n }\r\n\r\n const originalElementName: string = nameMatch[1] || \"\";\r\n let elementName: string = originalElementName;\r\n const tagHeaderEnd = xml.indexOf(\">\", openTagStart);\r\n if (tagHeaderEnd === -1) {\r\n return { value: {}, endPos: xml.length };\r\n }\r\n\r\n // Remove namespace if requested (but keep original for offset calculations)\r\n if (options.ignoreNamespace && elementName.includes(\":\")) {\r\n elementName = elementName.split(\":\")[1] || elementName;\r\n }\r\n\r\n // Extract attributes using ORIGINAL element name length for correct offset\r\n const tagHeader = xml.substring(\r\n openTagStart + 1 + originalElementName.length,\r\n tagHeaderEnd\r\n );\r\n const attributes = XMLParser.extractAttributesFromTag(tagHeader, options);\r\n\r\n // Check if self-closing\r\n const isSelfClosing =\r\n tagHeader.trim().endsWith(\"/\") || xml[tagHeaderEnd - 1] === \"/\";\r\n\r\n if (isSelfClosing) {\r\n // Self-closing tag - return object with attributes only\r\n const elementValue: ParsedXMLObject = { ...attributes };\r\n return {\r\n value: { [elementName]: elementValue },\r\n endPos: tagHeaderEnd + 1,\r\n };\r\n }\r\n\r\n // Find closing tag (use original name with namespace for correct matching)\r\n const closingTag = `</${originalElementName}>`;\r\n const contentStart = tagHeaderEnd + 1;\r\n const closingTagPos = XMLParser.findClosingTag(\r\n xml,\r\n originalElementName,\r\n contentStart\r\n );\r\n\r\n if (closingTagPos === -1) {\r\n // No closing tag found - treat as self-closing\r\n return {\r\n value: { [elementName]: { ...attributes } },\r\n endPos: tagHeaderEnd + 1,\r\n };\r\n }\r\n\r\n // Extract content between tags\r\n const content = xml.substring(contentStart, closingTagPos);\r\n\r\n // Parse content (children or text)\r\n const children: ParsedElement[] = [];\r\n let textContent = \"\";\r\n let pos = 0;\r\n\r\n while (pos < content.length) {\r\n const nextTag = content.indexOf(\"<\", pos);\r\n\r\n if (nextTag === -1) {\r\n // No more tags - rest is text\r\n const text = content.substring(pos);\r\n // When trimValues is false, preserve whitespace-only text\r\n // When trimValues is true, only include text that has non-whitespace content\r\n if (text.length > 0 && (!options.trimValues || text.trim())) {\r\n // Unescape XML entities in text content (e.g., < -> <)\r\n textContent += XMLBuilder.unescapeXml(text);\r\n }\r\n break;\r\n }\r\n\r\n // Collect text before next tag\r\n if (nextTag > pos) {\r\n const text = content.substring(pos, nextTag);\r\n // When trimValues is false, preserve whitespace-only text\r\n // When trimValues is true, only include text that has non-whitespace content\r\n if (text.length > 0 && (!options.trimValues || text.trim())) {\r\n // Unescape XML entities in text content (e.g., < -> <)\r\n textContent += XMLBuilder.unescapeXml(text);\r\n }\r\n }\r\n\r\n // Parse child element (increment depth for children)\r\n const childResult = XMLParser.parseElementToObject(\r\n content,\r\n nextTag,\r\n options,\r\n depth + 1\r\n );\r\n const childObj = childResult.value as ParsedXMLObject;\r\n\r\n // Extract child name and value\r\n const childKeys = Object.keys(childObj);\r\n if (childKeys.length > 0) {\r\n const childName = childKeys[0];\r\n if (childName) {\r\n const childValue = childObj[childName];\r\n children.push({ name: childName, value: childValue });\r\n }\r\n }\r\n\r\n pos = childResult.endPos;\r\n }\r\n\r\n // Build element value\r\n let elementValue: ParsedXMLValue = {};\r\n\r\n // Add attributes\r\n if (!options.ignoreAttributes && Object.keys(attributes).length > 0) {\r\n elementValue = { ...attributes };\r\n }\r\n\r\n // Add text content\r\n // When trimValues is false, include whitespace-only text\r\n // When trimValues is true, only include text with non-whitespace content\r\n if (textContent.length > 0 && (!options.trimValues || textContent.trim())) {\r\n const text = options.trimValues ? textContent.trim() : textContent;\r\n if (typeof elementValue === \"object\" && !Array.isArray(elementValue)) {\r\n if (Object.keys(elementValue).length === 0) {\r\n // Only text, no attributes - return as direct value if simple\r\n elementValue = text;\r\n } else {\r\n // Text with attributes\r\n (elementValue)[options.textNodeName] = text;\r\n }\r\n }\r\n }\r\n\r\n // Add children\r\n if (children.length > 0) {\r\n const coalescedChildren = XMLParser.coalesceChildren(children, options);\r\n if (typeof elementValue === \"object\" && !Array.isArray(elementValue)) {\r\n elementValue = { ...elementValue, ...coalescedChildren };\r\n } else {\r\n elementValue = coalescedChildren;\r\n }\r\n }\r\n\r\n // If element has no content, attributes, or children - return empty object\r\n if (\r\n typeof elementValue === \"object\" &&\r\n !Array.isArray(elementValue) &&\r\n Object.keys(elementValue).length === 0\r\n ) {\r\n elementValue = {};\r\n }\r\n\r\n return {\r\n value: { [elementName]: elementValue },\r\n endPos: closingTagPos + closingTag.length,\r\n };\r\n }\r\n\r\n /**\r\n * Extracts attributes from a tag header\r\n * @private\r\n */\r\n private static extractAttributesFromTag(\r\n tagHeader: string,\r\n options: Required<ParseToObjectOptions>\r\n ): Record<string, string | number | boolean> {\r\n const attributes: Record<string, string | number | boolean> = {};\r\n\r\n if (options.ignoreAttributes) {\r\n return attributes;\r\n }\r\n\r\n // Simple attribute extraction using position-based parsing\r\n let pos = 0;\r\n while (pos < tagHeader.length) {\r\n // Skip whitespace\r\n while (pos < tagHeader.length) {\r\n const char = tagHeader[pos];\r\n if (char && /\\s/.test(char)) {\r\n pos++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (pos >= tagHeader.length || tagHeader[pos] === \"/\") {\r\n break;\r\n }\r\n\r\n // Extract attribute name\r\n const nameStart = pos;\r\n while (pos < tagHeader.length) {\r\n const char = tagHeader[pos];\r\n if (char && /[a-zA-Z0-9:_-]/.test(char)) {\r\n pos++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (pos === nameStart) {\r\n break;\r\n }\r\n\r\n let attrName = tagHeader.substring(nameStart, pos);\r\n\r\n // Skip whitespace and '='\r\n while (pos < tagHeader.length) {\r\n const char = tagHeader[pos];\r\n if (char && /[\\s=]/.test(char)) {\r\n pos++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Extract attribute value\r\n let attrValue = \"\";\r\n if (\r\n pos < tagHeader.length &&\r\n (tagHeader[pos] === '\"' || tagHeader[pos] === \"'\")\r\n ) {\r\n const quote = tagHeader[pos];\r\n pos++; // Skip opening quote\r\n const valueStart = pos;\r\n\r\n while (pos < tagHeader.length && tagHeader[pos] !== quote) {\r\n pos++;\r\n }\r\n\r\n attrValue = tagHeader.substring(valueStart, pos);\r\n pos++; // Skip closing quote\r\n }\r\n\r\n // Remove namespace from attribute name if requested\r\n if (options.ignoreNamespace && attrName.includes(\":\")) {\r\n attrName = attrName.split(\":\")[1] || attrName;\r\n }\r\n\r\n // Add prefix to attribute name\r\n const prefixedName = options.attributeNamePrefix + attrName;\r\n\r\n // Parse attribute value\r\n attributes[prefixedName] = options.parseAttributeValue\r\n ? XMLParser.parseValue(attrValue)\r\n : attrValue;\r\n }\r\n\r\n return attributes;\r\n }\r\n\r\n /**\r\n * Finds the closing tag for an element, handling nesting\r\n * @private\r\n */\r\n private static findClosingTag(\r\n xml: string,\r\n elementName: string,\r\n startPos: number\r\n ): number {\r\n const openTag = `<${elementName}`;\r\n const closeTag = `</${elementName}>`;\r\n let depth = 1;\r\n let pos = startPos;\r\n\r\n while (depth > 0 && pos < xml.length) {\r\n const nextClose = xml.indexOf(closeTag, pos);\r\n\r\n if (nextClose === -1) {\r\n return -1; // No closing tag found\r\n }\r\n\r\n // Find the next REAL opening tag (not a prefix match like <w:pPrChange for <w:pPr)\r\n // Must search for all potential matches and verify each one\r\n let realOpenPos = -1;\r\n let searchPos = pos;\r\n while (searchPos < nextClose) {\r\n const candidateOpen = xml.indexOf(openTag, searchPos);\r\n if (candidateOpen === -1 || candidateOpen >= nextClose) {\r\n break; // No more candidates before the closing tag\r\n }\r\n\r\n const charAfter = xml[candidateOpen + openTag.length];\r\n if (\r\n charAfter === \">\" ||\r\n charAfter === \" \" ||\r\n charAfter === \"/\" ||\r\n charAfter === \"\\t\" ||\r\n charAfter === \"\\n\" ||\r\n charAfter === \"\\r\"\r\n ) {\r\n // This looks like a real opening tag - but check if it's self-closing\r\n // Self-closing tags like <w:rPr/> should NOT increase depth\r\n const tagEnd = xml.indexOf(\">\", candidateOpen);\r\n if (tagEnd !== -1 && xml[tagEnd - 1] === \"/\") {\r\n // Self-closing tag - skip it (don't affect depth)\r\n searchPos = tagEnd + 1;\r\n continue;\r\n }\r\n // This is a real opening tag (not self-closing)\r\n realOpenPos = candidateOpen;\r\n break;\r\n }\r\n\r\n // False positive (e.g., <w:pPrChange when looking for <w:pPr)\r\n // Keep searching from after this position\r\n searchPos = candidateOpen + openTag.length;\r\n }\r\n\r\n if (realOpenPos !== -1) {\r\n // Found a real opening tag before the closing tag - increase depth\r\n depth++;\r\n pos = realOpenPos + openTag.length;\r\n } else {\r\n // No real opening tag before this closing tag - decrease depth\r\n depth--;\r\n if (depth === 0) {\r\n return nextClose;\r\n }\r\n pos = nextClose + closeTag.length;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Coalesces children with duplicate names into arrays\r\n * @private\r\n */\r\n private static coalesceChildren(\r\n children: ParsedElement[],\r\n options: Required<ParseToObjectOptions>\r\n ): ParsedXMLObject {\r\n const result: ParsedXMLObject = {};\r\n const nameCounts: Record<string, number> = {};\r\n const nameIndices: Record<string, number> = {};\r\n\r\n // Track element order for correct run content parsing (tabs, breaks, text)\r\n // This is critical for preserving the order of mixed content like: text -> tab -> text\r\n const orderedChildren: { type: string; index: number }[] = [];\r\n\r\n // Count occurrences of each child name\r\n for (const child of children) {\r\n nameCounts[child.name] = (nameCounts[child.name] || 0) + 1;\r\n }\r\n\r\n // Build result object while tracking order\r\n for (const child of children) {\r\n const shouldBeArray =\r\n options.alwaysArray || (nameCounts[child.name] || 0) > 1;\r\n\r\n // Track element order with its index in the array\r\n const currentIndex = nameIndices[child.name] || 0;\r\n orderedChildren.push({ type: child.name, index: currentIndex });\r\n nameIndices[child.name] = currentIndex + 1;\r\n\r\n if (shouldBeArray) {\r\n if (!result[child.name]) {\r\n result[child.name] = [];\r\n }\r\n (result[child.name] as ParsedXMLValue[]).push(child.value);\r\n } else {\r\n result[child.name] = child.value;\r\n }\r\n }\r\n\r\n // Add _orderedChildren to track element order (used by DocumentParser for runs)\r\n if (orderedChildren.length > 0) {\r\n result._orderedChildren = orderedChildren;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Parses a string value to number or boolean if applicable\r\n * @private\r\n */\r\n private static parseValue(value: string): string | number | boolean {\r\n if (value === \"true\") return true;\r\n if (value === \"false\") return false;\r\n\r\n // Preserve 6-character hex color codes (OpenXML standard for colors)\r\n // This includes \"000000\" (black) which should stay as a string\r\n if (/^[0-9A-Fa-f]{6}$/.test(value)) {\r\n return value.toUpperCase(); // Normalize to uppercase per Microsoft convention\r\n }\r\n\r\n // Preserve long digit-only strings (e.g., cnfStyle binary strings like \"100000000000\")\r\n // These should not be converted to numbers to avoid losing leading zeros\r\n if (/^\\d{7,}$/.test(value)) {\r\n return value; // Keep as string for values with 7+ digits\r\n }\r\n\r\n // Try parsing as number\r\n // 3-character values like \"240\" will be parsed as numbers\r\n // 6-character hex values are already handled above\r\n if (/^-?\\d+$/.test(value)) {\r\n const num = parseInt(value, 10);\r\n if (!isNaN(num)) return num;\r\n }\r\n\r\n if (/^-?\\d+\\.\\d+$/.test(value)) {\r\n const num = parseFloat(value);\r\n if (!isNaN(num)) return num;\r\n }\r\n\r\n // Preserve 3-character hex codes (like \"F0A\") that have letters\r\n // Pure numeric 3-char values (like \"240\") are already parsed as numbers above\r\n if (/^[0-9A-Fa-f]{3}$/.test(value) && /[A-Fa-f]/.test(value)) {\r\n return value.toUpperCase();\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZipHandler.js","sourceRoot":"","sources":["../../src/zip/ZipHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ZipHandler.js","sourceRoot":"","sources":["../../src/zip/ZipHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ZipHandler - Main facade for ZIP archive operations\r\n * Provides a unified interface for reading and writing DOCX files\r\n */\r\n\r\nimport { ZipReader } from './ZipReader';\r\nimport { ZipWriter } from './ZipWriter';\r\nimport {\r\n ZipFile,\r\n FileMap,\r\n LoadOptions,\r\n SaveOptions,\r\n AddFileOptions,\r\n SizeLimitOptions,\r\n DEFAULT_SIZE_LIMITS,\r\n} from './types';\r\nimport { getGlobalLogger, createScopedLogger, ILogger } from '../utils/logger';\r\n\r\n// Create scoped logger for ZipHandler operations\r\nfunction getLogger(): ILogger {\r\n return createScopedLogger(getGlobalLogger(), 'ZipHandler');\r\n}\r\n\r\n/**\r\n * Main class for handling ZIP archives (DOCX files)\r\n * Combines reading and writing operations into a single interface\r\n */\r\nexport class ZipHandler {\r\n private reader: ZipReader;\r\n private writer: ZipWriter;\r\n private mode: 'read' | 'write' | 'modify' = 'write';\r\n\r\n constructor() {\r\n this.reader = new ZipReader();\r\n this.writer = new ZipWriter();\r\n }\r\n\r\n // ==================== SIZE VALIDATION ====================\r\n\r\n /**\r\n * Validates document size against configured limits\r\n * @param sizeMB - Size in megabytes\r\n * @param limits - Size limit options (merged with defaults)\r\n * @throws Error if size exceeds maximum\r\n */\r\n private validateDocumentSize(sizeMB: number, limits: Required<SizeLimitOptions>): void {\r\n const logger = getLogger();\r\n const { warningSizeMB, maxSizeMB } = limits;\r\n\r\n // Check maximum size (if enabled)\r\n if (maxSizeMB > 0 && sizeMB > maxSizeMB) {\r\n logger.error('Document exceeds maximum size', { sizeMB: sizeMB.toFixed(1), maxSizeMB });\r\n throw new Error(\r\n `Document size (${sizeMB.toFixed(1)}MB) exceeds maximum supported size (${maxSizeMB}MB). ` +\r\n `This would likely cause out-of-memory errors. Consider:\\n` +\r\n `- Compressing/optimizing images\\n` +\r\n `- Splitting into multiple documents\\n` +\r\n `- Processing on a machine with more memory\\n` +\r\n `- Increasing maxSizeMB via LoadOptions.sizeLimits (not recommended)`\r\n );\r\n }\r\n\r\n // Warn on large files (if enabled)\r\n if (warningSizeMB > 0 && sizeMB > warningSizeMB) {\r\n logger.warn('Large document detected', { sizeMB: sizeMB.toFixed(1), warningSizeMB });\r\n }\r\n }\r\n\r\n /**\r\n * Gets merged size limits from options and defaults\r\n * @param options - Load options that may contain size limits\r\n * @returns Merged size limits with all values defined\r\n */\r\n private getSizeLimits(options: LoadOptions): Required<SizeLimitOptions> {\r\n return {\r\n ...DEFAULT_SIZE_LIMITS,\r\n ...options.sizeLimits,\r\n };\r\n }\r\n\r\n // ==================== LOADING ====================\r\n\r\n /**\r\n * Loads a DOCX file from the filesystem\r\n * @param filePath - Path to the DOCX file\r\n * @param options - Load options (including configurable size limits)\r\n */\r\n async load(filePath: string, options: LoadOptions = {}): Promise<void> {\r\n const logger = getLogger();\r\n logger.info('Loading DOCX file', { path: filePath });\r\n\r\n // Check file size before loading\r\n const { promises: fs } = await import('fs');\r\n const stats = await fs.stat(filePath);\r\n const sizeMB = stats.size / (1024 * 1024);\r\n\r\n // Validate against configurable limits\r\n const limits = this.getSizeLimits(options);\r\n this.validateDocumentSize(sizeMB, limits);\r\n\r\n await this.reader.loadFromFile(filePath, options);\r\n\r\n // Copy all files from reader to writer for modification\r\n const files = this.reader.getAllFiles();\r\n this.writer.clear();\r\n this.writer.addFiles(files);\r\n\r\n this.mode = 'modify';\r\n logger.info('DOCX file loaded', { fileCount: files.size, sizeMB: sizeMB.toFixed(2) });\r\n }\r\n\r\n /**\r\n * Loads a DOCX file from a buffer\r\n * @param buffer - Buffer containing the DOCX data\r\n * @param options - Load options (including configurable size limits)\r\n */\r\n async loadFromBuffer(buffer: Buffer, options: LoadOptions = {}): Promise<void> {\r\n const logger = getLogger();\r\n logger.info('Loading DOCX from buffer', { bufferSize: buffer.length });\r\n\r\n // Check buffer size before loading\r\n const sizeMB = buffer.length / (1024 * 1024);\r\n\r\n // Validate against configurable limits\r\n const limits = this.getSizeLimits(options);\r\n this.validateDocumentSize(sizeMB, limits);\r\n\r\n await this.reader.loadFromBuffer(buffer, options);\r\n\r\n // Copy all files from reader to writer for modification\r\n const files = this.reader.getAllFiles();\r\n this.writer.clear();\r\n this.writer.addFiles(files);\r\n\r\n this.mode = 'modify';\r\n logger.info('DOCX buffer loaded', { fileCount: files.size, sizeMB: sizeMB.toFixed(2) });\r\n }\r\n\r\n // ==================== FILE OPERATIONS ====================\r\n\r\n /**\r\n * Adds a file to the archive\r\n * @param filePath - Path where the file will be stored in the archive\r\n * @param content - File content (string or Buffer)\r\n * @param options - Options for adding the file\r\n */\r\n addFile(\r\n filePath: string,\r\n content: string | Buffer,\r\n options: AddFileOptions = {}\r\n ): void {\r\n this.writer.addFile(filePath, content, options);\r\n }\r\n\r\n /**\r\n * Adds multiple files to the archive\r\n * @param files - Map of file paths to contents\r\n * @param options - Options for adding files\r\n */\r\n addFiles(files: FileMap, options: AddFileOptions = {}): void {\r\n this.writer.addFiles(files, options);\r\n }\r\n\r\n /**\r\n * Updates an existing file in the archive\r\n * @param filePath - Path to the file to update\r\n * @param content - New content\r\n * @param options - Options for updating the file\r\n * @returns True if the file was updated, false if it didn't exist\r\n */\r\n updateFile(\r\n filePath: string,\r\n content: string | Buffer,\r\n options: AddFileOptions = {}\r\n ): boolean {\r\n if (!this.hasFile(filePath)) {\r\n return false;\r\n }\r\n this.addFile(filePath, content, options);\r\n return true;\r\n }\r\n\r\n /**\r\n * Removes a file from the archive\r\n * @param filePath - Path to the file to remove\r\n * @returns True if the file was removed, false if it didn't exist\r\n */\r\n removeFile(filePath: string): boolean {\r\n return this.writer.removeFile(filePath);\r\n }\r\n\r\n /**\r\n * Gets a specific file from the archive\r\n * @param filePath - Path to the file within the archive\r\n * @returns The file data, or undefined if not found\r\n */\r\n getFile(filePath: string): ZipFile | undefined {\r\n return this.writer.getFile(filePath);\r\n }\r\n\r\n /**\r\n * Gets the content of a specific file as a string\r\n * @param filePath - Path to the file within the archive\r\n * @returns The file content as a UTF-8 string, or undefined if not found\r\n * @throws Error if attempting to convert a binary file to string (Issue #12 fix)\r\n *\r\n * **Encoding Note:**\r\n * - Returns UTF-8 decoded string content for text files\r\n * - All text content in DOCX files must be UTF-8 per OpenXML specification\r\n * - For binary files (images, fonts), throws an error to prevent garbage output\r\n * - Use getFileAsBuffer() for binary files instead\r\n */\r\n getFileAsString(filePath: string): string | undefined {\r\n const file = this.getFile(filePath);\r\n if (!file) {\r\n return undefined;\r\n }\r\n\r\n // Issue #12 fix: Prevent converting binary files to UTF-8 strings\r\n // This produces garbage output for images, fonts, etc.\r\n if (file.isBinary) {\r\n throw new Error(\r\n `Cannot convert binary file \"${filePath}\" to string. ` +\r\n `Binary files (images, fonts, etc.) cannot be safely converted to UTF-8 strings. ` +\r\n `Use getFileAsBuffer() instead to access the raw bytes.`\r\n );\r\n }\r\n\r\n // After ZipWriter fix (Issue #4), check actual content type instead of flag\r\n // Content from ZipWriter is always Buffer, content from ZipReader may be string\r\n if (Buffer.isBuffer(file.content)) {\r\n // Convert buffer to UTF-8 string\r\n return file.content.toString('utf8');\r\n }\r\n\r\n return file.content;\r\n }\r\n\r\n /**\r\n * Gets the content of a specific file as a buffer\r\n * @param filePath - Path to the file within the archive\r\n * @returns The file content as a Buffer, or undefined if not found\r\n *\r\n * **Encoding Note:**\r\n * - Returns Buffer with UTF-8 encoded content for text files\r\n * - For binary files, returns raw bytes unchanged\r\n * - All text content is guaranteed to be UTF-8 encoded\r\n */\r\n getFileAsBuffer(filePath: string): Buffer | undefined {\r\n const file = this.getFile(filePath);\r\n if (!file) {\r\n return undefined;\r\n }\r\n\r\n // After ZipWriter fix (Issue #4), check actual content type instead of flag\r\n // Content from ZipWriter is always Buffer, content from ZipReader may be string\r\n if (Buffer.isBuffer(file.content)) {\r\n return file.content;\r\n }\r\n\r\n // Encode string content as UTF-8 Buffer (for content from ZipReader)\r\n return Buffer.from(file.content, 'utf8');\r\n }\r\n\r\n /**\r\n * Gets all files from the archive\r\n * @returns Map of file paths to file data\r\n */\r\n getAllFiles(): FileMap {\r\n return this.writer.getAllFiles();\r\n }\r\n\r\n /**\r\n * Gets a list of all file paths in the archive\r\n * @returns Array of file paths\r\n */\r\n getFilePaths(): string[] {\r\n return this.writer.getFilePaths();\r\n }\r\n\r\n /**\r\n * Checks if a file exists in the archive\r\n * @param filePath - Path to check\r\n * @returns True if the file exists\r\n */\r\n hasFile(filePath: string): boolean {\r\n return this.writer.hasFile(filePath);\r\n }\r\n\r\n /**\r\n * Gets the number of files in the archive\r\n * @returns Number of files\r\n */\r\n getFileCount(): number {\r\n return this.writer.getFileCount();\r\n }\r\n\r\n // ==================== HELPER METHODS ====================\r\n\r\n /**\r\n * Renames a file in the archive\r\n * @param oldPath - Current path of the file\r\n * @param newPath - New path for the file\r\n * @returns True if the file was renamed, false if it didn't exist\r\n */\r\n renameFile(oldPath: string, newPath: string): boolean {\r\n const file = this.getFile(oldPath);\r\n if (!file) {\r\n return false;\r\n }\r\n this.addFile(newPath, file.content, {\r\n binary: file.isBinary,\r\n date: file.date,\r\n });\r\n this.removeFile(oldPath);\r\n return true;\r\n }\r\n\r\n /**\r\n * Copies a file within the archive\r\n * @param srcPath - Source file path\r\n * @param destPath - Destination file path\r\n * @returns True if the file was copied, false if source didn't exist\r\n */\r\n copyFile(srcPath: string, destPath: string): boolean {\r\n const file = this.getFile(srcPath);\r\n if (!file) {\r\n return false;\r\n }\r\n this.addFile(destPath, file.content, {\r\n binary: file.isBinary,\r\n date: file.date,\r\n });\r\n return true;\r\n }\r\n\r\n /**\r\n * Moves a file within the archive (copy and delete)\r\n * @param srcPath - Source file path\r\n * @param destPath - Destination file path\r\n * @returns True if the file was moved, false if source didn't exist\r\n */\r\n moveFile(srcPath: string, destPath: string): boolean {\r\n if (!this.copyFile(srcPath, destPath)) {\r\n return false;\r\n }\r\n this.removeFile(srcPath);\r\n return true;\r\n }\r\n\r\n /**\r\n * Checks if a file exists, throws if it doesn't\r\n * @param filePath - Path to check\r\n * @throws {Error} If file doesn't exist\r\n */\r\n existsOrThrow(filePath: string): void {\r\n if (!this.hasFile(filePath)) {\r\n throw new Error(`File not found in archive: ${filePath}`);\r\n }\r\n }\r\n\r\n /**\r\n * Removes multiple files from the archive\r\n * @param filePaths - Array of file paths to remove\r\n * @returns Number of files successfully removed\r\n */\r\n removeFiles(filePaths: string[]): number {\r\n let count = 0;\r\n for (const filePath of filePaths) {\r\n if (this.removeFile(filePath)) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Gets all files with a specific extension\r\n * @param extension - File extension (with or without leading dot)\r\n * @returns Array of files with the specified extension\r\n */\r\n getFilesByExtension(extension: string): ZipFile[] {\r\n const ext = extension.startsWith('.') ? extension : `.${extension}`;\r\n const files: ZipFile[] = [];\r\n for (const [path, file] of this.getAllFiles()) {\r\n if (path.toLowerCase().endsWith(ext.toLowerCase())) {\r\n files.push(file);\r\n }\r\n }\r\n return files;\r\n }\r\n\r\n /**\r\n * Gets the total uncompressed size of all files in the archive\r\n * @returns Total size in bytes\r\n */\r\n getTotalSize(): number {\r\n let totalSize = 0;\r\n for (const file of this.getAllFiles().values()) {\r\n totalSize += file.size;\r\n }\r\n return totalSize;\r\n }\r\n\r\n /**\r\n * Gets comprehensive statistics about the archive\r\n * @returns Statistics object\r\n */\r\n getStats(): {\r\n fileCount: number;\r\n totalSize: number;\r\n textFileCount: number;\r\n binaryFileCount: number;\r\n avgFileSize: number;\r\n } {\r\n let textCount = 0;\r\n let binaryCount = 0;\r\n const totalSize = this.getTotalSize();\r\n const fileCount = this.getFileCount();\r\n\r\n for (const file of this.getAllFiles().values()) {\r\n if (file.isBinary) {\r\n binaryCount++;\r\n } else {\r\n textCount++;\r\n }\r\n }\r\n\r\n return {\r\n fileCount,\r\n totalSize,\r\n textFileCount: textCount,\r\n binaryFileCount: binaryCount,\r\n avgFileSize: fileCount > 0 ? Math.round(totalSize / fileCount) : 0,\r\n };\r\n }\r\n\r\n /**\r\n * Checks if the archive is empty\r\n * @returns True if the archive has no files\r\n */\r\n isEmpty(): boolean {\r\n return this.getFileCount() === 0;\r\n }\r\n\r\n /**\r\n * Gets all text (non-binary) files from the archive\r\n * @returns Array of text files\r\n */\r\n getTextFiles(): ZipFile[] {\r\n const files: ZipFile[] = [];\r\n for (const file of this.getAllFiles().values()) {\r\n if (!file.isBinary) {\r\n files.push(file);\r\n }\r\n }\r\n return files;\r\n }\r\n\r\n /**\r\n * Gets all binary files from the archive\r\n * @returns Array of binary files\r\n */\r\n getBinaryFiles(): ZipFile[] {\r\n const files: ZipFile[] = [];\r\n for (const file of this.getAllFiles().values()) {\r\n if (file.isBinary) {\r\n files.push(file);\r\n }\r\n }\r\n return files;\r\n }\r\n\r\n /**\r\n * Gets all media files from the word/media/ directory\r\n * @returns Array of media files\r\n */\r\n getMediaFiles(): ZipFile[] {\r\n const files: ZipFile[] = [];\r\n for (const [path, file] of this.getAllFiles()) {\r\n if (path.startsWith('word/media/')) {\r\n files.push(file);\r\n }\r\n }\r\n return files;\r\n }\r\n\r\n /**\r\n * Exports a file from the archive to the filesystem\r\n * @param internalPath - Path of the file within the archive\r\n * @param outputPath - Path where the file will be saved\r\n */\r\n async exportFile(internalPath: string, outputPath: string): Promise<void> {\r\n const { promises: fs } = await import('fs');\r\n const content = this.getFileAsBuffer(internalPath);\r\n if (!content) {\r\n throw new Error(`File not found in archive: ${internalPath}`);\r\n }\r\n await fs.writeFile(outputPath, content);\r\n }\r\n\r\n /**\r\n * Imports a file from the filesystem into the archive\r\n * @param sourcePath - Path to the file on filesystem\r\n * @param internalPath - Path where the file will be stored in archive\r\n * @param options - Options for adding the file\r\n */\r\n async importFile(\r\n sourcePath: string,\r\n internalPath: string,\r\n options: AddFileOptions = {}\r\n ): Promise<void> {\r\n const { promises: fs } = await import('fs');\r\n const content = await fs.readFile(sourcePath);\r\n this.addFile(internalPath, content, {\r\n ...options,\r\n binary: options.binary !== undefined ? options.binary : true,\r\n });\r\n }\r\n\r\n // ==================== SAVING ====================\r\n\r\n /**\r\n * Saves the archive to a file\r\n * @param filePath - Path where the file will be saved\r\n * @param options - Save options\r\n */\r\n async save(filePath: string, options: SaveOptions = {}): Promise<void> {\r\n const logger = getLogger();\r\n logger.info('Saving DOCX file', { path: filePath, fileCount: this.getFileCount() });\r\n await this.writer.saveToFile(filePath, options);\r\n logger.info('DOCX file saved', { path: filePath });\r\n }\r\n\r\n /**\r\n * Generates the ZIP archive as a buffer\r\n * @param options - Save options\r\n * @returns Buffer containing the ZIP archive\r\n */\r\n async toBuffer(options: SaveOptions = {}): Promise<Buffer> {\r\n const logger = getLogger();\r\n logger.info('Generating DOCX buffer', { fileCount: this.getFileCount() });\r\n const buffer = await this.writer.toBuffer(options);\r\n logger.info('DOCX buffer generated', { bufferSize: buffer.length });\r\n return buffer;\r\n }\r\n\r\n // ==================== VALIDATION ====================\r\n\r\n /**\r\n * Validates the DOCX structure\r\n * @throws {MissingRequiredFileError} If required files are missing\r\n */\r\n validate(): void {\r\n const logger = getLogger();\r\n logger.info('Validating DOCX structure');\r\n this.writer.validate();\r\n logger.info('DOCX structure valid');\r\n }\r\n\r\n // ==================== UTILITY ====================\r\n\r\n /**\r\n * Creates a new empty archive\r\n */\r\n clear(): void {\r\n this.reader.clear();\r\n this.writer.clear();\r\n this.mode = 'write';\r\n }\r\n\r\n /**\r\n * Gets the current mode of the handler\r\n * @returns Current mode ('read', 'write', or 'modify')\r\n */\r\n getMode(): 'read' | 'write' | 'modify' {\r\n return this.mode;\r\n }\r\n\r\n /**\r\n * Checks if the archive has been loaded\r\n * @returns True if loaded\r\n */\r\n isLoaded(): boolean {\r\n return this.reader.isLoaded();\r\n }\r\n\r\n /**\r\n * Creates a clone of this handler with all its files\r\n * @returns A new ZipHandler instance with the same files\r\n */\r\n clone(): ZipHandler {\r\n const newHandler = new ZipHandler();\r\n newHandler.writer = this.writer.clone();\r\n newHandler.mode = this.mode;\r\n return newHandler;\r\n }\r\n\r\n // ==================== CONVENIENCE METHODS ====================\r\n\r\n /**\r\n * Reads a DOCX file, modifies it, and saves it back\r\n * @param inputPath - Path to the input DOCX file\r\n * @param outputPath - Path to save the modified file\r\n * @param modifier - Function that modifies the handler\r\n * @param loadOptions - Options for loading\r\n * @param saveOptions - Options for saving\r\n */\r\n static async modify(\r\n inputPath: string,\r\n outputPath: string,\r\n modifier: (handler: ZipHandler) => void | Promise<void>,\r\n loadOptions: LoadOptions = {},\r\n saveOptions: SaveOptions = {}\r\n ): Promise<void> {\r\n const handler = new ZipHandler();\r\n await handler.load(inputPath, loadOptions);\r\n await modifier(handler);\r\n await handler.save(outputPath, saveOptions);\r\n }\r\n\r\n /**\r\n * Creates a new DOCX file with the provided files\r\n * @param outputPath - Path to save the new file\r\n * @param files - Map of file paths to contents\r\n * @param saveOptions - Options for saving\r\n */\r\n static async create(\r\n outputPath: string,\r\n files: FileMap,\r\n saveOptions: SaveOptions = {}\r\n ): Promise<void> {\r\n const handler = new ZipHandler();\r\n handler.addFiles(files);\r\n await handler.save(outputPath, saveOptions);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZipReader.js","sourceRoot":"","sources":["../../src/zip/ZipReader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ZipReader.js","sourceRoot":"","sources":["../../src/zip/ZipReader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ZipReader - Handles reading ZIP archives (DOCX files)\r\n */\r\n\r\nimport JSZip from 'jszip';\r\nimport { promises as fs } from 'fs';\r\nimport { ZipFile, FileMap, LoadOptions } from './types';\r\nimport {\r\n DocxNotFoundError,\r\n InvalidDocxError,\r\n CorruptedArchiveError,\r\n FileOperationError,\r\n} from './errors';\r\nimport {\r\n validateDocxStructure,\r\n isBinaryFile,\r\n normalizePath,\r\n isValidZipBuffer,\r\n} from '../utils/validation';\r\n\r\n/**\r\n * Handles reading operations on ZIP archives\r\n */\r\nexport class ZipReader {\r\n private zip: JSZip | null = null;\r\n private files: FileMap = new Map();\r\n private loaded = false;\r\n\r\n /**\r\n * Loads a DOCX file from the filesystem\r\n * @param filePath - Path to the DOCX file\r\n * @param options - Load options\r\n */\r\n async loadFromFile(filePath: string, options: LoadOptions = {}): Promise<void> {\r\n try {\r\n // Check if file exists\r\n try {\r\n await fs.access(filePath);\r\n } catch {\r\n throw new DocxNotFoundError(filePath);\r\n }\r\n\r\n // Read file as buffer\r\n const buffer = await fs.readFile(filePath);\r\n await this.loadFromBuffer(buffer, options);\r\n } catch (error: unknown) {\r\n if (error instanceof DocxNotFoundError) {\r\n throw error;\r\n }\r\n const message = error instanceof Error ? error.message : String(error);\r\n throw new FileOperationError('read', message);\r\n }\r\n }\r\n\r\n /**\r\n * Loads a DOCX file from a buffer\r\n * @param buffer - Buffer containing the DOCX data\r\n * @param options - Load options\r\n */\r\n async loadFromBuffer(buffer: Buffer, options: LoadOptions = {}): Promise<void> {\r\n const { validate = true } = options;\r\n\r\n try {\r\n // Validate ZIP signature\r\n if (!isValidZipBuffer(buffer)) {\r\n throw new InvalidDocxError('File is not a valid ZIP archive');\r\n }\r\n\r\n // Load ZIP archive\r\n this.zip = await JSZip.loadAsync(buffer);\r\n\r\n // Extract all files\r\n await this.extractFiles();\r\n\r\n // Validate DOCX structure if requested\r\n if (validate) {\r\n this.validate();\r\n }\r\n\r\n this.loaded = true;\r\n } catch (error: unknown) {\r\n if (error instanceof InvalidDocxError) {\r\n throw error;\r\n }\r\n const message = error instanceof Error ? error.message : String(error);\r\n throw new CorruptedArchiveError(message);\r\n }\r\n }\r\n\r\n /**\r\n * Extracts all files from the ZIP archive into memory\r\n *\r\n * **Encoding Note:**\r\n * - Text files (XML, etc.) are extracted as UTF-8 strings using `async('string')`\r\n * - JSZip automatically decodes UTF-8 when extracting as 'string'\r\n * - Binary files are extracted as Buffers to preserve exact content\r\n * - All text content is guaranteed to be valid UTF-8\r\n */\r\n private async extractFiles(): Promise<void> {\r\n if (!this.zip) {\r\n throw new Error('ZIP archive not loaded');\r\n }\r\n\r\n this.files.clear();\r\n\r\n // Get all file paths\r\n const filePaths = Object.keys(this.zip.files).filter(\r\n (path) => !this.zip!.files[path]!.dir\r\n );\r\n\r\n // Extract each file\r\n for (const filePath of filePaths) {\r\n const normalizedPath = normalizePath(filePath);\r\n const zipObject = this.zip.files[filePath];\r\n\r\n if (!zipObject) {\r\n continue;\r\n }\r\n\r\n const isBinary = isBinaryFile(normalizedPath);\r\n\r\n // Extract content based on type\r\n // For text files: JSZip's async('string') automatically uses UTF-8 decoding\r\n // For binary files: async('nodebuffer') preserves exact bytes\r\n let content;\r\n if (isBinary) {\r\n content = await zipObject.async('nodebuffer');\r\n } else {\r\n // Text files are extracted as UTF-8 strings\r\n // JSZip automatically handles UTF-8 decoding for 'string' type\r\n content = await zipObject.async('string');\r\n }\r\n\r\n // Get file metadata\r\n const date = zipObject.date;\r\n\r\n // Store file information\r\n this.files.set(normalizedPath, {\r\n path: normalizedPath,\r\n content,\r\n isBinary,\r\n size: isBinary ? (content as Buffer).length : (content as string).length,\r\n date,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validates the DOCX structure\r\n * @throws {MissingRequiredFileError} If required files are missing\r\n */\r\n private validate(): void {\r\n const filePaths = Array.from(this.files.keys());\r\n validateDocxStructure(filePaths);\r\n }\r\n\r\n /**\r\n * Gets a specific file from the archive\r\n * @param filePath - Path to the file within the archive\r\n * @returns The file data, or undefined if not found\r\n */\r\n getFile(filePath: string): ZipFile | undefined {\r\n this.ensureLoaded();\r\n const normalizedPath = normalizePath(filePath);\r\n return this.files.get(normalizedPath);\r\n }\r\n\r\n /**\r\n * Gets the content of a specific file as a string\r\n * @param filePath - Path to the file within the archive\r\n * @returns The file content as a UTF-8 string, or undefined if not found\r\n *\r\n * **Encoding Note:**\r\n * - Returns UTF-8 decoded string content\r\n * - For binary files, converts the Buffer to UTF-8 string\r\n * - Assumes all text content is UTF-8 encoded (per OpenXML standard)\r\n */\r\n getFileAsString(filePath: string): string | undefined {\r\n const file = this.getFile(filePath);\r\n if (!file) {\r\n return undefined;\r\n }\r\n\r\n // Check actual content type instead of flag (Issue #4)\r\n // Content is Buffer for binary files, string for text files\r\n if (Buffer.isBuffer(file.content)) {\r\n // Convert binary buffer to UTF-8 string\r\n return file.content.toString('utf8');\r\n }\r\n\r\n return file.content;\r\n }\r\n\r\n /**\r\n * Gets the content of a specific file as a buffer\r\n * @param filePath - Path to the file within the archive\r\n * @returns The file content as a Buffer, or undefined if not found\r\n *\r\n * **Encoding Note:**\r\n * - Returns Buffer with UTF-8 encoded content for text files\r\n * - For binary files, returns raw bytes\r\n * - String content is explicitly encoded as UTF-8\r\n */\r\n getFileAsBuffer(filePath: string): Buffer | undefined {\r\n const file = this.getFile(filePath);\r\n if (!file) {\r\n return undefined;\r\n }\r\n\r\n // Check actual content type instead of flag (Issue #4)\r\n // Content is Buffer for binary files, string for text files\r\n if (Buffer.isBuffer(file.content)) {\r\n return file.content;\r\n }\r\n\r\n // Encode string content as UTF-8 Buffer\r\n return Buffer.from(file.content, 'utf8');\r\n }\r\n\r\n /**\r\n * Gets all files from the archive\r\n * @returns Map of file paths to file data\r\n */\r\n getAllFiles(): FileMap {\r\n this.ensureLoaded();\r\n return new Map(this.files);\r\n }\r\n\r\n /**\r\n * Gets a list of all file paths in the archive\r\n * @returns Array of file paths\r\n */\r\n getFilePaths(): string[] {\r\n this.ensureLoaded();\r\n return Array.from(this.files.keys());\r\n }\r\n\r\n /**\r\n * Checks if a file exists in the archive\r\n * @param filePath - Path to check\r\n * @returns True if the file exists\r\n */\r\n hasFile(filePath: string): boolean {\r\n this.ensureLoaded();\r\n const normalizedPath = normalizePath(filePath);\r\n return this.files.has(normalizedPath);\r\n }\r\n\r\n /**\r\n * Gets files matching a pattern (simple glob)\r\n * @param pattern - Pattern to match (supports * wildcard)\r\n * @returns Array of matching files\r\n */\r\n getFilesByPattern(pattern: string): ZipFile[] {\r\n this.ensureLoaded();\r\n\r\n // Convert simple glob pattern to regex\r\n const regexPattern = pattern\r\n .replace(/\\*/g, '.*')\r\n .replace(/\\?/g, '.');\r\n const regex = new RegExp(`^${regexPattern}$`);\r\n\r\n const matchingFiles: ZipFile[] = [];\r\n for (const [path, file] of this.files) {\r\n if (regex.test(path)) {\r\n matchingFiles.push(file);\r\n }\r\n }\r\n\r\n return matchingFiles;\r\n }\r\n\r\n /**\r\n * Ensures the archive is loaded before operations\r\n * @throws {Error} If archive is not loaded\r\n */\r\n private ensureLoaded(): void {\r\n if (!this.loaded) {\r\n throw new Error('Archive not loaded. Call loadFromFile() or loadFromBuffer() first.');\r\n }\r\n }\r\n\r\n /**\r\n * Checks if the archive is loaded\r\n * @returns True if loaded\r\n */\r\n isLoaded(): boolean {\r\n return this.loaded;\r\n }\r\n\r\n /**\r\n * Clears all loaded data\r\n */\r\n clear(): void {\r\n this.zip = null;\r\n this.files.clear();\r\n this.loaded = false;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZipWriter.js","sourceRoot":"","sources":["../../src/zip/ZipWriter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ZipWriter.js","sourceRoot":"","sources":["../../src/zip/ZipWriter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ZipWriter - Handles writing ZIP archives (DOCX files)\r\n *\r\n * DOCX Compliance Notes:\r\n * - [Content_Types].xml MUST be the first entry in the ZIP\r\n * - [Content_Types].xml MUST use STORE compression (uncompressed)\r\n * - File order matters for Microsoft Word compatibility\r\n */\r\n\r\nimport JSZip from \"jszip\";\r\nimport { promises as fs } from \"fs\";\r\nimport { ZipFile, FileMap, SaveOptions, AddFileOptions } from \"./types\";\r\nimport { FileOperationError } from \"./errors\";\r\nimport { validateDocxStructure, normalizePath } from \"../utils/validation\";\r\n\r\n/**\r\n * Handles writing operations on ZIP archives with DOCX-specific compliance\r\n */\r\nexport class ZipWriter {\r\n private zip: JSZip;\r\n private files: FileMap = new Map();\r\n\r\n constructor() {\r\n this.zip = new JSZip();\r\n }\r\n\r\n /**\r\n * Adds a file to the archive\r\n * @param filePath - Path where the file will be stored in the archive\r\n * @param content - File content (string or Buffer)\r\n * @param options - Options for adding the file\r\n *\r\n * **Encoding Note:**\r\n * - String content is always encoded as UTF-8 per DOCX/OpenXML standard\r\n * - Buffer content is stored as-is (should already be UTF-8 encoded for text)\r\n * - XML files must use UTF-8 encoding as specified in their XML declaration\r\n *\r\n * **DOCX Compliance:**\r\n * - [Content_Types].xml is automatically set to STORE compression\r\n */\r\n /**\r\n * Validates a file path for security issues\r\n * @param path - Normalized file path\r\n * @throws {Error} If path contains path traversal or other security issues\r\n * @private\r\n */\r\n private validatePathSecurity(path: string): void {\r\n // Check for path traversal attacks\r\n if (path.includes(\"..\")) {\r\n throw new Error(\r\n `Security error: Path \"${path}\" contains path traversal sequence \"..\". ` +\r\n `This could be an attempt to write files outside the archive.`\r\n );\r\n }\r\n\r\n // Check for absolute paths (even after normalization)\r\n if (path.startsWith(\"/\") || /^[a-zA-Z]:/.test(path)) {\r\n throw new Error(\r\n `Security error: Path \"${path}\" is an absolute path. ` +\r\n `Only relative paths are allowed in ZIP archives.`\r\n );\r\n }\r\n\r\n // Check for null bytes (can be used to truncate paths)\r\n if (path.includes(\"\\0\")) {\r\n throw new Error(\r\n `Security error: Path \"${path}\" contains null byte. ` +\r\n `This could be an attempt to exploit path handling.`\r\n );\r\n }\r\n\r\n // Check for excessively long paths (potential DoS)\r\n const MAX_PATH_LENGTH = 260; // Windows MAX_PATH\r\n if (path.length > MAX_PATH_LENGTH) {\r\n throw new Error(\r\n `Security error: Path \"${path}\" exceeds maximum length of ${MAX_PATH_LENGTH} characters.`\r\n );\r\n }\r\n }\r\n\r\n addFile(\r\n filePath: string,\r\n content: string | Buffer,\r\n options: AddFileOptions = {}\r\n ): void {\r\n const {\r\n binary = Buffer.isBuffer(content),\r\n compression = 6,\r\n date = new Date(),\r\n } = options;\r\n\r\n const normalizedPath = normalizePath(filePath);\r\n\r\n // Security: Validate path for traversal and other attacks\r\n this.validatePathSecurity(normalizedPath);\r\n\r\n // Convert string content to UTF-8 Buffer if not already binary\r\n // This ensures consistent UTF-8 encoding regardless of system locale\r\n let processedContent = content;\r\n if (typeof content === \"string\") {\r\n // Explicitly encode string as UTF-8 Buffer\r\n processedContent = Buffer.from(content, \"utf8\");\r\n }\r\n\r\n // DOCX REQUIREMENT: [Content_Types].xml MUST be uncompressed (STORE)\r\n const isContentTypes = normalizedPath === \"[Content_Types].xml\";\r\n const useCompression = isContentTypes\r\n ? \"STORE\"\r\n : compression > 0\r\n ? \"DEFLATE\"\r\n : \"STORE\";\r\n const compressionLevel = isContentTypes ? 0 : compression;\r\n\r\n // For text content (XML), this ensures UTF-8 encoding is preserved\r\n this.zip.file(normalizedPath, processedContent, {\r\n binary: true, // Always treat as binary since we're using Buffers\r\n compression: useCompression,\r\n compressionOptions: {\r\n level: compressionLevel,\r\n },\r\n date,\r\n });\r\n\r\n // Store in our file map\r\n // IMPORTANT: Store the PROCESSED content (Buffer), not the original\r\n // This ensures consistency with what was added to this.zip and prevents\r\n // double UTF-8 conversion in toBuffer() method (Issue #1)\r\n this.files.set(normalizedPath, {\r\n path: normalizedPath,\r\n content: processedContent, // Store Buffer, not original string\r\n isBinary: binary,\r\n size: processedContent.length, // Buffer.length is always correct (Issue #3)\r\n date,\r\n });\r\n }\r\n\r\n /**\r\n * Adds multiple files to the archive\r\n * @param files - Map of file paths to contents\r\n * @param options - Options for adding files\r\n */\r\n addFiles(files: FileMap, options: AddFileOptions = {}): void {\r\n for (const [path, file] of files) {\r\n this.addFile(path, file.content, {\r\n ...options,\r\n binary: file.isBinary,\r\n date: file.date,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Removes a file from the archive\r\n * @param filePath - Path to the file to remove\r\n * @returns True if the file was removed, false if it didn't exist\r\n */\r\n removeFile(filePath: string): boolean {\r\n const normalizedPath = normalizePath(filePath);\r\n\r\n // Remove from JSZip\r\n const zipFile = this.zip.file(normalizedPath);\r\n if (zipFile) {\r\n this.zip.remove(normalizedPath);\r\n this.files.delete(normalizedPath);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if a file exists in the archive\r\n * @param filePath - Path to check\r\n * @returns True if the file exists\r\n */\r\n hasFile(filePath: string): boolean {\r\n const normalizedPath = normalizePath(filePath);\r\n return this.files.has(normalizedPath);\r\n }\r\n\r\n /**\r\n * Gets a file from the archive\r\n * @param filePath - Path to the file\r\n * @returns The file data, or undefined if not found\r\n */\r\n getFile(filePath: string): ZipFile | undefined {\r\n const normalizedPath = normalizePath(filePath);\r\n return this.files.get(normalizedPath);\r\n }\r\n\r\n /**\r\n * Gets all files in the archive\r\n * @returns Map of file paths to file data\r\n */\r\n getAllFiles(): FileMap {\r\n return new Map(this.files);\r\n }\r\n\r\n /**\r\n * Gets a list of all file paths in the archive\r\n * @returns Array of file paths\r\n */\r\n getFilePaths(): string[] {\r\n return Array.from(this.files.keys());\r\n }\r\n\r\n /**\r\n * Validates the DOCX structure before saving\r\n * @throws {MissingRequiredFileError} If required files are missing\r\n */\r\n validate(): void {\r\n const filePaths = this.getFilePaths();\r\n validateDocxStructure(filePaths);\r\n }\r\n\r\n /**\r\n * Sorts files according to DOCX best practices\r\n * Microsoft Word expects files in a specific order for optimal compatibility\r\n *\r\n * @returns Sorted array of file paths\r\n *\r\n * **DOCX File Order (CRITICAL):**\r\n * 1. [Content_Types].xml - MUST be first\r\n * 2. _rels/.rels - Root relationships\r\n * 3. docProps/* - Document properties\r\n * 4. word/_rels/document.xml.rels - Document relationships\r\n * 5. word/document.xml - Main document\r\n * 6. word/* - Other word files (styles, numbering, etc.)\r\n * 7. Everything else - Media, custom XML, etc.\r\n */\r\n private getSortedFilePaths(): string[] {\r\n const paths = Array.from(this.files.keys());\r\n\r\n return paths.sort((a, b) => {\r\n // Priority 1: [Content_Types].xml MUST be first (CRITICAL for MS Word)\r\n if (a === \"[Content_Types].xml\") return -1;\r\n if (b === \"[Content_Types].xml\") return 1;\r\n\r\n // Priority 2: Root relationships\r\n if (a === \"_rels/.rels\") return -1;\r\n if (b === \"_rels/.rels\") return 1;\r\n\r\n // Priority 3: Document properties\r\n const aIsDocProps = a.startsWith(\"docProps/\");\r\n const bIsDocProps = b.startsWith(\"docProps/\");\r\n if (aIsDocProps && !bIsDocProps) return -1;\r\n if (!aIsDocProps && bIsDocProps) return 1;\r\n\r\n // Priority 4: word/_rels/document.xml.rels\r\n if (a === \"word/_rels/document.xml.rels\") return -1;\r\n if (b === \"word/_rels/document.xml.rels\") return 1;\r\n\r\n // Priority 5: word/document.xml\r\n if (a === \"word/document.xml\") return -1;\r\n if (b === \"word/document.xml\") return 1;\r\n\r\n // Priority 6: Other word/ folder files (before relationships)\r\n const aIsWordRels = a.startsWith(\"word/_rels/\");\r\n const bIsWordRels = b.startsWith(\"word/_rels/\");\r\n const aIsWord = a.startsWith(\"word/\") && !aIsWordRels;\r\n const bIsWord = b.startsWith(\"word/\") && !bIsWordRels;\r\n\r\n if (aIsWord && !bIsWord && !bIsWordRels) return -1;\r\n if (!aIsWord && bIsWord && !aIsWordRels) return 1;\r\n\r\n // Priority 7: word/_rels/ files\r\n if (aIsWordRels && !bIsWordRels) return -1;\r\n if (!aIsWordRels && bIsWordRels) return 1;\r\n\r\n // Alphabetical for same priority\r\n return a.localeCompare(b);\r\n });\r\n }\r\n\r\n /**\r\n * Generates the ZIP archive as a buffer\r\n * @param options - Save options\r\n * @returns Buffer containing the ZIP archive\r\n *\r\n * **Encoding Note:**\r\n * The generated buffer contains UTF-8 encoded XML and text files.\r\n * All string content within files has been explicitly UTF-8 encoded\r\n * before being added to the archive to ensure consistency.\r\n *\r\n * **DOCX Compliance:**\r\n * - Files are ordered with [Content_Types].xml first (REQUIRED)\r\n * - [Content_Types].xml uses STORE compression (uncompressed)\r\n * - All other files use DEFLATE compression by default\r\n */\r\n async toBuffer(options: SaveOptions = {}): Promise<Buffer> {\r\n const { compression = 6, validate = true } = options;\r\n\r\n // Validate structure if requested\r\n if (validate) {\r\n this.validate();\r\n }\r\n\r\n try {\r\n // Create a new JSZip instance with proper file ordering\r\n const orderedZip = new JSZip();\r\n const sortedPaths = this.getSortedFilePaths();\r\n\r\n // Add files in the correct order\r\n for (const path of sortedPaths) {\r\n const file = this.files.get(path);\r\n if (!file) continue;\r\n\r\n // Content is already a Buffer from addFile() - no re-conversion needed (Issue #2)\r\n const processedContent = file.content as Buffer;\r\n\r\n // DOCX REQUIREMENT: [Content_Types].xml MUST be uncompressed\r\n const isContentTypes = path === \"[Content_Types].xml\";\r\n const useCompression = isContentTypes\r\n ? \"STORE\"\r\n : compression > 0\r\n ? \"DEFLATE\"\r\n : \"STORE\";\r\n const compressionLevel = isContentTypes ? 0 : compression;\r\n\r\n orderedZip.file(path, processedContent, {\r\n binary: true,\r\n compression: useCompression,\r\n compressionOptions: {\r\n level: compressionLevel,\r\n },\r\n date: file.date,\r\n });\r\n }\r\n\r\n // Generate ZIP with the ordered files\r\n const buffer = await orderedZip.generateAsync({\r\n type: \"nodebuffer\",\r\n compression: compression > 0 ? \"DEFLATE\" : \"STORE\",\r\n compressionOptions: {\r\n level: compression,\r\n },\r\n streamFiles: true,\r\n });\r\n\r\n return buffer;\r\n } catch (error: unknown) {\r\n const err = error instanceof Error ? error : new Error(String(error));\r\n throw new FileOperationError(\"generate\", err.message);\r\n }\r\n }\r\n\r\n /**\r\n * Saves the archive to a file\r\n * @param filePath - Path where the file will be saved\r\n * @param options - Save options\r\n */\r\n async saveToFile(filePath: string, options: SaveOptions = {}): Promise<void> {\r\n try {\r\n const buffer = await this.toBuffer(options);\r\n await fs.writeFile(filePath, buffer);\r\n } catch (error: unknown) {\r\n if (error instanceof FileOperationError) {\r\n throw error;\r\n }\r\n const err = error instanceof Error ? error : new Error(String(error));\r\n throw new FileOperationError(\"save\", err.message);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new empty archive\r\n */\r\n clear(): void {\r\n this.zip = new JSZip();\r\n this.files.clear();\r\n }\r\n\r\n /**\r\n * Gets the number of files in the archive\r\n * @returns Number of files\r\n */\r\n getFileCount(): number {\r\n return this.files.size;\r\n }\r\n\r\n /**\r\n * Creates a clone of this writer with all its files\r\n * @returns A new ZipWriter instance with the same files\r\n */\r\n clone(): ZipWriter {\r\n const newWriter = new ZipWriter();\r\n newWriter.addFiles(this.files);\r\n return newWriter;\r\n }\r\n}\r\n"]}
|
package/dist/zip/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/zip/errors.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;CACF;AAND,8BAMC;AAKD,MAAa,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,QAAgB;QAC1B,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAND,8CAMC;AAKD,MAAa,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACF;AAND,4CAMC;AAKD,MAAa,qBAAsB,SAAQ,SAAS;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAND,sDAMC;AAKD,MAAa,wBAAyB,SAAQ,SAAS;IACrD,YAAY,QAAgB;QAC1B,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAND,4DAMC;AAKD,MAAa,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CAAC,mBAAmB,SAAS,aAAa,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF;AAND,gDAMC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/zip/errors.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;CACF;AAND,8BAMC;AAKD,MAAa,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,QAAgB;QAC1B,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAND,8CAMC;AAKD,MAAa,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;CACF;AAND,4CAMC;AAKD,MAAa,qBAAsB,SAAQ,SAAS;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAND,sDAMC;AAKD,MAAa,wBAAyB,SAAQ,SAAS;IACrD,YAAY,QAAgB;QAC1B,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAND,4DAMC;AAKD,MAAa,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CAAC,mBAAmB,SAAS,aAAa,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;CACF;AAND,gDAMC","sourcesContent":["/**\r\n * Custom error classes for ZIP and DOCX operations\r\n */\r\n\r\n/**\r\n * Base error class for all DOCX-related errors\r\n */\r\nexport class DocxError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'DocxError';\r\n Object.setPrototypeOf(this, DocxError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown when a DOCX file is not found\r\n */\r\nexport class DocxNotFoundError extends DocxError {\r\n constructor(filePath: string) {\r\n super(`DOCX file not found: ${filePath}`);\r\n this.name = 'DocxNotFoundError';\r\n Object.setPrototypeOf(this, DocxNotFoundError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown when a file is not a valid DOCX/ZIP archive\r\n */\r\nexport class InvalidDocxError extends DocxError {\r\n constructor(message: string) {\r\n super(`Invalid DOCX file: ${message}`);\r\n this.name = 'InvalidDocxError';\r\n Object.setPrototypeOf(this, InvalidDocxError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown when a ZIP archive is corrupted\r\n */\r\nexport class CorruptedArchiveError extends DocxError {\r\n constructor(message: string) {\r\n super(`Corrupted archive: ${message}`);\r\n this.name = 'CorruptedArchiveError';\r\n Object.setPrototypeOf(this, CorruptedArchiveError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown when a required DOCX file is missing\r\n */\r\nexport class MissingRequiredFileError extends DocxError {\r\n constructor(fileName: string) {\r\n super(`Missing required file: ${fileName}`);\r\n this.name = 'MissingRequiredFileError';\r\n Object.setPrototypeOf(this, MissingRequiredFileError.prototype);\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown when a file operation fails\r\n */\r\nexport class FileOperationError extends DocxError {\r\n constructor(operation: string, message: string) {\r\n super(`File operation '${operation}' failed: ${message}`);\r\n this.name = 'FileOperationError';\r\n Object.setPrototypeOf(this, FileOperationError.prototype);\r\n }\r\n}\r\n"]}
|