docxmlater 10.0.2 → 10.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
- package/dist/constants/legacyCompatFlags.js.map +1 -1
- package/dist/constants/limits.d.ts +0 -27
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +13 -13
- package/dist/constants/limits.js.map +1 -1
- package/dist/core/Document.d.ts +23 -19
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +197 -63
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentContent.d.ts.map +1 -1
- package/dist/core/DocumentContent.js.map +1 -1
- package/dist/core/DocumentGenerator.d.ts.map +1 -1
- package/dist/core/DocumentGenerator.js +59 -24
- package/dist/core/DocumentGenerator.js.map +1 -1
- package/dist/core/DocumentIdManager.d.ts.map +1 -1
- package/dist/core/DocumentIdManager.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +6 -6
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +86 -55
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/core/DocumentValidator.d.ts.map +1 -1
- package/dist/core/DocumentValidator.js.map +1 -1
- package/dist/core/Relationship.d.ts.map +1 -1
- package/dist/core/Relationship.js +1 -1
- package/dist/core/Relationship.js.map +1 -1
- package/dist/core/RelationshipManager.js +3 -3
- package/dist/core/RelationshipManager.js.map +1 -1
- package/dist/elements/AlternateContent.js.map +1 -1
- package/dist/elements/Bookmark.d.ts.map +1 -1
- package/dist/elements/Bookmark.js.map +1 -1
- package/dist/elements/BookmarkManager.d.ts.map +1 -1
- package/dist/elements/BookmarkManager.js.map +1 -1
- package/dist/elements/Comment.js +1 -1
- package/dist/elements/Comment.js.map +1 -1
- package/dist/elements/CommentManager.d.ts.map +1 -1
- package/dist/elements/CommentManager.js +8 -2
- package/dist/elements/CommentManager.js.map +1 -1
- package/dist/elements/CommonTypes.d.ts.map +1 -1
- package/dist/elements/CommonTypes.js +1 -2
- package/dist/elements/CommonTypes.js.map +1 -1
- package/dist/elements/CustomXml.js.map +1 -1
- package/dist/elements/Endnote.d.ts.map +1 -1
- package/dist/elements/Endnote.js.map +1 -1
- package/dist/elements/EndnoteManager.d.ts.map +1 -1
- package/dist/elements/EndnoteManager.js.map +1 -1
- package/dist/elements/Field.d.ts.map +1 -1
- package/dist/elements/Field.js +31 -28
- package/dist/elements/Field.js.map +1 -1
- package/dist/elements/FieldHelpers.d.ts.map +1 -1
- package/dist/elements/FieldHelpers.js +6 -6
- package/dist/elements/FieldHelpers.js.map +1 -1
- package/dist/elements/FontManager.d.ts.map +1 -1
- package/dist/elements/FontManager.js.map +1 -1
- package/dist/elements/Footer.js.map +1 -1
- package/dist/elements/Footnote.d.ts.map +1 -1
- package/dist/elements/Footnote.js.map +1 -1
- package/dist/elements/FootnoteManager.d.ts.map +1 -1
- package/dist/elements/FootnoteManager.js.map +1 -1
- package/dist/elements/Header.js.map +1 -1
- package/dist/elements/HeaderFooterManager.js.map +1 -1
- package/dist/elements/Hyperlink.d.ts.map +1 -1
- package/dist/elements/Hyperlink.js +5 -5
- package/dist/elements/Hyperlink.js.map +1 -1
- package/dist/elements/Image.d.ts +2 -2
- package/dist/elements/Image.d.ts.map +1 -1
- package/dist/elements/Image.js +21 -5
- package/dist/elements/Image.js.map +1 -1
- package/dist/elements/ImageManager.d.ts.map +1 -1
- package/dist/elements/ImageManager.js +2 -2
- package/dist/elements/ImageManager.js.map +1 -1
- package/dist/elements/ImageRun.js.map +1 -1
- package/dist/elements/MathElement.js.map +1 -1
- package/dist/elements/Paragraph.d.ts +8 -0
- package/dist/elements/Paragraph.d.ts.map +1 -1
- package/dist/elements/Paragraph.js +153 -118
- package/dist/elements/Paragraph.js.map +1 -1
- package/dist/elements/PreservedElement.js.map +1 -1
- package/dist/elements/PropertyChangeTypes.js.map +1 -1
- package/dist/elements/RangeMarker.js.map +1 -1
- package/dist/elements/Revision.d.ts +1 -0
- package/dist/elements/Revision.d.ts.map +1 -1
- package/dist/elements/Revision.js +44 -5
- package/dist/elements/Revision.js.map +1 -1
- package/dist/elements/RevisionContent.js.map +1 -1
- package/dist/elements/RevisionManager.d.ts.map +1 -1
- package/dist/elements/RevisionManager.js.map +1 -1
- package/dist/elements/Run.d.ts.map +1 -1
- package/dist/elements/Run.js +1 -3
- package/dist/elements/Run.js.map +1 -1
- package/dist/elements/Section.d.ts.map +1 -1
- package/dist/elements/Section.js +127 -118
- package/dist/elements/Section.js.map +1 -1
- package/dist/elements/Shape.d.ts.map +1 -1
- package/dist/elements/Shape.js +21 -0
- package/dist/elements/Shape.js.map +1 -1
- package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
- package/dist/elements/StructuredDocumentTag.js +20 -8
- package/dist/elements/StructuredDocumentTag.js.map +1 -1
- package/dist/elements/Table.d.ts +2 -2
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +29 -35
- package/dist/elements/Table.js.map +1 -1
- package/dist/elements/TableCell.d.ts +2 -2
- package/dist/elements/TableCell.d.ts.map +1 -1
- package/dist/elements/TableCell.js +63 -67
- package/dist/elements/TableCell.js.map +1 -1
- package/dist/elements/TableGridChange.js.map +1 -1
- package/dist/elements/TableOfContents.d.ts +6 -6
- package/dist/elements/TableOfContents.d.ts.map +1 -1
- package/dist/elements/TableOfContents.js.map +1 -1
- package/dist/elements/TableOfContentsElement.js.map +1 -1
- package/dist/elements/TableRow.d.ts.map +1 -1
- package/dist/elements/TableRow.js +65 -47
- package/dist/elements/TableRow.js.map +1 -1
- package/dist/elements/TextBox.d.ts.map +1 -1
- package/dist/elements/TextBox.js +1 -1
- package/dist/elements/TextBox.js.map +1 -1
- package/dist/formatting/AbstractNumbering.d.ts +1 -1
- package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
- package/dist/formatting/AbstractNumbering.js +11 -11
- package/dist/formatting/AbstractNumbering.js.map +1 -1
- package/dist/formatting/NumberingInstance.d.ts.map +1 -1
- package/dist/formatting/NumberingInstance.js +4 -4
- package/dist/formatting/NumberingInstance.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +26 -26
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/formatting/NumberingManager.d.ts +1 -1
- package/dist/formatting/NumberingManager.d.ts.map +1 -1
- package/dist/formatting/NumberingManager.js.map +1 -1
- package/dist/formatting/Style.d.ts.map +1 -1
- package/dist/formatting/Style.js +87 -95
- package/dist/formatting/Style.js.map +1 -1
- package/dist/formatting/StylesManager.d.ts +3 -3
- package/dist/formatting/StylesManager.d.ts.map +1 -1
- package/dist/formatting/StylesManager.js.map +1 -1
- package/dist/helpers/CleanupHelper.js.map +1 -1
- package/dist/images/ImageOptimizer.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/DrawingManager.d.ts.map +1 -1
- package/dist/managers/DrawingManager.js.map +1 -1
- package/dist/tracking/DocumentTrackingContext.js.map +1 -1
- package/dist/tracking/TrackingContext.js.map +1 -1
- package/dist/types/compatibility-types.js.map +1 -1
- package/dist/types/formatting.js.map +1 -1
- package/dist/types/list-types.d.ts +4 -4
- package/dist/types/list-types.d.ts.map +1 -1
- package/dist/types/list-types.js.map +1 -1
- package/dist/types/settings-types.js.map +1 -1
- package/dist/types/styleConfig.js.map +1 -1
- package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
- package/dist/utils/ChangelogGenerator.js.map +1 -1
- package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
- package/dist/utils/CompatibilityUpgrader.js +7 -7
- package/dist/utils/CompatibilityUpgrader.js.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/InMemoryRevisionAcceptor.js +23 -2
- package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
- package/dist/utils/MoveOperationHelper.js.map +1 -1
- package/dist/utils/RevisionAwareProcessor.js.map +1 -1
- package/dist/utils/RevisionWalker.js.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.d.ts +1 -0
- package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
- package/dist/utils/SelectiveRevisionAcceptor.js +46 -0
- package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
- package/dist/utils/ShadingResolver.js +1 -1
- package/dist/utils/ShadingResolver.js.map +1 -1
- package/dist/utils/acceptRevisions.d.ts +0 -28
- package/dist/utils/acceptRevisions.d.ts.map +1 -1
- package/dist/utils/acceptRevisions.js +5 -7
- package/dist/utils/acceptRevisions.js.map +1 -1
- package/dist/utils/cnfStyleDecoder.js +1 -1
- package/dist/utils/cnfStyleDecoder.js.map +1 -1
- package/dist/utils/corruptionDetection.js.map +1 -1
- package/dist/utils/dateFormatting.js.map +1 -1
- package/dist/utils/deepClone.d.ts +0 -1
- package/dist/utils/deepClone.d.ts.map +1 -1
- package/dist/utils/deepClone.js +0 -7
- package/dist/utils/deepClone.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +2 -2
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/errorHandling.js.map +1 -1
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/list-detection.d.ts +2 -2
- package/dist/utils/list-detection.d.ts.map +1 -1
- package/dist/utils/list-detection.js +3 -3
- package/dist/utils/list-detection.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/parsingHelpers.js.map +1 -1
- package/dist/utils/stripTrackedChanges.d.ts +0 -19
- package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
- package/dist/utils/stripTrackedChanges.js +0 -2
- package/dist/utils/stripTrackedChanges.js.map +1 -1
- package/dist/utils/textDiff.js.map +1 -1
- package/dist/utils/units.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/xmlSanitization.js.map +1 -1
- package/dist/validation/RevisionAutoFixer.js.map +1 -1
- package/dist/validation/RevisionValidator.js.map +1 -1
- package/dist/validation/ValidationRules.js.map +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/xml/XMLBuilder.d.ts.map +1 -1
- package/dist/xml/XMLBuilder.js +10 -0
- package/dist/xml/XMLBuilder.js.map +1 -1
- package/dist/xml/XMLParser.d.ts.map +1 -1
- package/dist/xml/XMLParser.js +4 -5
- package/dist/xml/XMLParser.js.map +1 -1
- package/dist/zip/ZipHandler.js.map +1 -1
- package/dist/zip/ZipReader.js.map +1 -1
- package/dist/zip/ZipWriter.js.map +1 -1
- package/dist/zip/errors.js.map +1 -1
- package/dist/zip/types.js.map +1 -1
- package/package.json +34 -4
- package/src/__tests__/helper-methods.test.ts +512 -0
- package/src/constants/legacyCompatFlags.ts +138 -0
- package/src/constants/limits.ts +50 -0
- package/src/core/CLAUDE.md +109 -0
- package/src/core/Document.ts +15569 -0
- package/src/core/DocumentContent.ts +467 -0
- package/src/core/DocumentGenerator.ts +1104 -0
- package/src/core/DocumentIdManager.ts +158 -0
- package/src/core/DocumentParser.ts +10140 -0
- package/src/core/DocumentValidator.ts +372 -0
- package/src/core/Relationship.ts +367 -0
- package/src/core/RelationshipManager.ts +428 -0
- package/src/elements/AlternateContent.ts +42 -0
- package/src/elements/Bookmark.ts +210 -0
- package/src/elements/BookmarkManager.ts +250 -0
- package/src/elements/CLAUDE.md +126 -0
- package/src/elements/Comment.ts +359 -0
- package/src/elements/CommentManager.ts +502 -0
- package/src/elements/CommonTypes.ts +549 -0
- package/src/elements/CustomXml.ts +36 -0
- package/src/elements/Endnote.ts +217 -0
- package/src/elements/EndnoteManager.ts +249 -0
- package/src/elements/Field.ts +1233 -0
- package/src/elements/FieldHelpers.ts +333 -0
- package/src/elements/FontManager.ts +339 -0
- package/src/elements/Footer.ts +269 -0
- package/src/elements/Footnote.ts +217 -0
- package/src/elements/FootnoteManager.ts +249 -0
- package/src/elements/Header.ts +269 -0
- package/src/elements/HeaderFooterManager.ts +219 -0
- package/src/elements/Hyperlink.ts +1146 -0
- package/src/elements/Image.ts +1756 -0
- package/src/elements/ImageManager.ts +432 -0
- package/src/elements/ImageRun.ts +59 -0
- package/src/elements/MathElement.ts +65 -0
- package/src/elements/Paragraph.ts +4287 -0
- package/src/elements/PreservedElement.ts +53 -0
- package/src/elements/PropertyChangeTypes.ts +442 -0
- package/src/elements/RangeMarker.ts +400 -0
- package/src/elements/Revision.ts +1217 -0
- package/src/elements/RevisionContent.ts +73 -0
- package/src/elements/RevisionManager.ts +1070 -0
- package/src/elements/Run.ts +3068 -0
- package/src/elements/Section.ts +1421 -0
- package/src/elements/Shape.ts +873 -0
- package/src/elements/StructuredDocumentTag.ts +978 -0
- package/src/elements/Table.ts +2524 -0
- package/src/elements/TableCell.ts +1586 -0
- package/src/elements/TableGridChange.ts +151 -0
- package/src/elements/TableOfContents.ts +691 -0
- package/src/elements/TableOfContentsElement.ts +89 -0
- package/src/elements/TableRow.ts +906 -0
- package/src/elements/TextBox.ts +768 -0
- package/src/formatting/AbstractNumbering.ts +548 -0
- package/src/formatting/CLAUDE.md +74 -0
- package/src/formatting/NumberingInstance.ts +212 -0
- package/src/formatting/NumberingLevel.ts +1006 -0
- package/src/formatting/NumberingManager.ts +827 -0
- package/src/formatting/Style.ts +1833 -0
- package/src/formatting/StylesManager.ts +1005 -0
- package/src/helpers/CleanupHelper.ts +524 -0
- package/src/images/ImageOptimizer.ts +274 -0
- package/src/index.ts +554 -0
- package/src/managers/CLAUDE.md +47 -0
- package/src/managers/DrawingManager.ts +319 -0
- package/src/tracking/DocumentTrackingContext.ts +643 -0
- package/src/tracking/TrackingContext.ts +173 -0
- package/src/types/compatibility-types.ts +49 -0
- package/src/types/formatting.ts +210 -0
- package/src/types/list-types.ts +152 -0
- package/src/types/settings-types.ts +59 -0
- package/src/types/styleConfig.ts +189 -0
- package/src/utils/CLAUDE.md +153 -0
- package/src/utils/ChangelogGenerator.ts +1581 -0
- package/src/utils/CompatibilityUpgrader.ts +237 -0
- package/src/utils/InMemoryRevisionAcceptor.ts +696 -0
- package/src/utils/MoveOperationHelper.ts +238 -0
- package/src/utils/RevisionAwareProcessor.ts +526 -0
- package/src/utils/RevisionWalker.ts +457 -0
- package/src/utils/SelectiveRevisionAcceptor.ts +683 -0
- package/src/utils/ShadingResolver.ts +107 -0
- package/src/utils/acceptRevisions.ts +714 -0
- package/src/utils/cnfStyleDecoder.ts +217 -0
- package/src/utils/corruptionDetection.ts +345 -0
- package/src/utils/dateFormatting.ts +20 -0
- package/src/utils/deepClone.ts +78 -0
- package/src/utils/diagnostics.ts +129 -0
- package/src/utils/errorHandling.ts +80 -0
- package/src/utils/formatting.ts +213 -0
- package/src/utils/list-detection.ts +274 -0
- package/src/utils/logger.ts +404 -0
- package/src/utils/parsingHelpers.ts +190 -0
- package/src/utils/stripTrackedChanges.ts +353 -0
- package/src/utils/textDiff.ts +100 -0
- package/src/utils/units.ts +421 -0
- package/src/utils/validation.ts +542 -0
- package/src/utils/xmlSanitization.ts +182 -0
- package/src/validation/RevisionAutoFixer.ts +542 -0
- package/src/validation/RevisionValidator.ts +460 -0
- package/src/validation/ValidationRules.ts +338 -0
- package/src/validation/index.ts +30 -0
- package/src/xml/CLAUDE.md +65 -0
- package/src/xml/XMLBuilder.ts +871 -0
- package/src/xml/XMLParser.ts +919 -0
- package/src/zip/CLAUDE.md +55 -0
- package/src/zip/ZipHandler.ts +637 -0
- package/src/zip/ZipReader.ts +299 -0
- package/src/zip/ZipWriter.ts +390 -0
- package/src/zip/errors.ts +69 -0
- package/src/zip/types.ts +116 -0
- package/dist/core/ListNormalizer.d.ts +0 -23
- package/dist/core/ListNormalizer.d.ts.map +0 -1
- package/dist/core/ListNormalizer.js +0 -624
- package/dist/core/ListNormalizer.js.map +0 -1
- package/dist/images/index.d.ts +0 -2
- package/dist/images/index.d.ts.map +0 -1
- package/dist/images/index.js +0 -8
- package/dist/images/index.js.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
- package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
- package/dist/ms-doc/cfb/CFBReader.js +0 -360
- package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
- package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
- package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
- package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
- package/dist/ms-doc/fib/FIB.d.ts +0 -18
- package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
- package/dist/ms-doc/fib/FIB.js +0 -342
- package/dist/ms-doc/fib/FIB.js.map +0 -1
- package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
- package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
- package/dist/ms-doc/fields/FieldParser.js +0 -266
- package/dist/ms-doc/fields/FieldParser.js.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
- package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
- package/dist/ms-doc/images/PictureExtractor.js +0 -233
- package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
- package/dist/ms-doc/index.d.ts +0 -20
- package/dist/ms-doc/index.d.ts.map +0 -1
- package/dist/ms-doc/index.js +0 -59
- package/dist/ms-doc/index.js.map +0 -1
- package/dist/ms-doc/properties/SPRM.d.ts +0 -210
- package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
- package/dist/ms-doc/properties/SPRM.js +0 -633
- package/dist/ms-doc/properties/SPRM.js.map +0 -1
- package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
- package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
- package/dist/ms-doc/sections/SectionParser.js +0 -214
- package/dist/ms-doc/sections/SectionParser.js.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
- package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
- package/dist/ms-doc/styles/StyleSheet.js +0 -268
- package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
- package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
- package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
- package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
- package/dist/ms-doc/tables/TableParser.d.ts +0 -29
- package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
- package/dist/ms-doc/tables/TableParser.js +0 -176
- package/dist/ms-doc/tables/TableParser.js.map +0 -1
- package/dist/ms-doc/text/PieceTable.d.ts +0 -21
- package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
- package/dist/ms-doc/text/PieceTable.js +0 -171
- package/dist/ms-doc/text/PieceTable.js.map +0 -1
- package/dist/ms-doc/types/Constants.d.ts +0 -99
- package/dist/ms-doc/types/Constants.d.ts.map +0 -1
- package/dist/ms-doc/types/Constants.js +0 -102
- package/dist/ms-doc/types/Constants.js.map +0 -1
- package/dist/ms-doc/types/DocTypes.d.ts +0 -368
- package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
- package/dist/ms-doc/types/DocTypes.js +0 -3
- package/dist/ms-doc/types/DocTypes.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -3
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -6
- package/dist/tracking/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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"]}
|
package/dist/zip/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/zip/types.ts"],"names":[],"mappings":";;;AAuCa,QAAA,mBAAmB,GAA+B;IAC7D,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,GAAG;CACf,CAAC;AA4CW,QAAA,mBAAmB,GAAG;IACjC,qBAAqB;IACrB,aAAa;IACb,mBAAmB;CACX,CAAC;AAKE,QAAA,UAAU,GAAG;IACxB,aAAa,EAAE,qBAAqB;IACpC,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,8BAA8B;IAC7C,MAAM,EAAE,iBAAiB;IACzB,SAAS,EAAE,oBAAoB;IAC/B,cAAc,EAAE,+BAA+B;IAC/C,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,oBAAoB;IAChC,KAAK,EAAE,uBAAuB;IAC9B,UAAU,EAAE,mBAAmB;IAC/B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,mBAAmB;IAC7B,iBAAiB,EAAE,2BAA2B;IAC9C,YAAY,EAAE,sBAAsB;IACpC,mBAAmB,EAAE,6BAA6B;IAClD,YAAY,EAAE,sBAAsB;CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/zip/types.ts"],"names":[],"mappings":";;;AAuCa,QAAA,mBAAmB,GAA+B;IAC7D,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,GAAG;CACf,CAAC;AA4CW,QAAA,mBAAmB,GAAG;IACjC,qBAAqB;IACrB,aAAa;IACb,mBAAmB;CACX,CAAC;AAKE,QAAA,UAAU,GAAG;IACxB,aAAa,EAAE,qBAAqB;IACpC,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,8BAA8B;IAC7C,MAAM,EAAE,iBAAiB;IACzB,SAAS,EAAE,oBAAoB;IAC/B,cAAc,EAAE,+BAA+B;IAC/C,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,oBAAoB;IAChC,KAAK,EAAE,uBAAuB;IAC9B,UAAU,EAAE,mBAAmB;IAC/B,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,mBAAmB;IAC7B,iBAAiB,EAAE,2BAA2B;IAC9C,YAAY,EAAE,sBAAsB;IACpC,mBAAmB,EAAE,6BAA6B;IAClD,YAAY,EAAE,sBAAsB;CAC5B,CAAC","sourcesContent":["/**\r\n * Types and interfaces for ZIP archive handling\r\n */\r\n\r\n/**\r\n * Represents a file within a ZIP archive\r\n */\r\nexport interface ZipFile {\r\n /** The path of the file within the archive */\r\n path: string;\r\n /** The content of the file (string for text, Buffer for binary) */\r\n content: string | Buffer;\r\n /** Whether the content is binary */\r\n isBinary: boolean;\r\n /** File size in bytes */\r\n size: number;\r\n /** Last modified date */\r\n date?: Date;\r\n}\r\n\r\n/**\r\n * Size limit configuration for document loading\r\n */\r\nexport interface SizeLimitOptions {\r\n /**\r\n * Size in MB at which to show a warning (default: 50 MB)\r\n * Set to 0 to disable warnings\r\n */\r\n warningSizeMB?: number;\r\n /**\r\n * Maximum size in MB to load (default: 150 MB)\r\n * Set to 0 to disable the limit (not recommended)\r\n */\r\n maxSizeMB?: number;\r\n}\r\n\r\n/**\r\n * Default size limits for document loading\r\n */\r\nexport const DEFAULT_SIZE_LIMITS: Required<SizeLimitOptions> = {\r\n warningSizeMB: 50,\r\n maxSizeMB: 150,\r\n};\r\n\r\n/**\r\n * Options for loading a DOCX file\r\n */\r\nexport interface LoadOptions {\r\n /** Whether to validate the DOCX structure on load */\r\n validate?: boolean;\r\n /** Whether to load files lazily */\r\n lazy?: boolean;\r\n /** Size limit configuration (warning and max size thresholds) */\r\n sizeLimits?: SizeLimitOptions;\r\n}\r\n\r\n/**\r\n * Options for saving a DOCX file\r\n */\r\nexport interface SaveOptions {\r\n /** Compression level (0-9, where 0 is no compression and 9 is maximum) */\r\n compression?: number;\r\n /** Whether to validate the DOCX structure before save */\r\n validate?: boolean;\r\n}\r\n\r\n/**\r\n * Options for adding files to the archive\r\n */\r\nexport interface AddFileOptions {\r\n /** Whether the content is binary */\r\n binary?: boolean;\r\n /** Compression level for this specific file */\r\n compression?: number;\r\n /** Last modified date */\r\n date?: Date;\r\n}\r\n\r\n/**\r\n * Map of file paths to their contents\r\n */\r\nexport type FileMap = Map<string, ZipFile>;\r\n\r\n/**\r\n * Required files for a valid DOCX structure\r\n */\r\nexport const REQUIRED_DOCX_FILES = [\r\n '[Content_Types].xml',\r\n '_rels/.rels',\r\n 'word/document.xml'\r\n] as const;\r\n\r\n/**\r\n * Common DOCX file paths\r\n */\r\nexport const DOCX_PATHS = {\r\n CONTENT_TYPES: '[Content_Types].xml',\r\n RELS: '_rels/.rels',\r\n DOCUMENT: 'word/document.xml',\r\n DOCUMENT_RELS: 'word/_rels/document.xml.rels',\r\n STYLES: 'word/styles.xml',\r\n NUMBERING: 'word/numbering.xml',\r\n NUMBERING_RELS: 'word/_rels/numbering.xml.rels',\r\n SETTINGS: 'word/settings.xml',\r\n FONT_TABLE: 'word/fontTable.xml',\r\n THEME: 'word/theme/theme1.xml',\r\n CORE_PROPS: 'docProps/core.xml',\r\n APP_PROPS: 'docProps/app.xml',\r\n MEDIA_DIR: 'word/media/',\r\n FOOTNOTES: 'word/footnotes.xml',\r\n ENDNOTES: 'word/endnotes.xml',\r\n COMMENTS_EXTENDED: 'word/commentsExtended.xml',\r\n COMMENTS_IDS: 'word/commentsIds.xml',\r\n COMMENTS_EXTENSIBLE: 'word/commentsExtensible.xml',\r\n WEB_SETTINGS: 'word/webSettings.xml',\r\n} as const;\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docxmlater",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.4",
|
|
4
4
|
"description": "A comprehensive DOCX editing framework for creating, reading, and manipulating Microsoft Word documents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,7 +14,18 @@
|
|
|
14
14
|
"prepublishOnly": "npm run clean && npm run build",
|
|
15
15
|
"docs:metrics": "echo 'Source Files:' && find src -name '*.ts' | wc -l && echo 'Test Files:' && find tests -name '*.test.ts' | wc -l && echo 'Lines of Code:' && find src -name '*.ts' -exec wc -l {} + | tail -1",
|
|
16
16
|
"docs:check": "echo 'Checking documentation...' && ls -1 README.md CHANGELOG.md 2>/dev/null || echo 'Missing documentation files'",
|
|
17
|
-
"test-list-arch": "ts-node examples/test-list-formatting-architecture.ts"
|
|
17
|
+
"test-list-arch": "ts-node examples/test-list-formatting-architecture.ts",
|
|
18
|
+
"lint": "eslint src/",
|
|
19
|
+
"lint:fix": "eslint src/ --fix",
|
|
20
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"dev:watch": "tsc --watch",
|
|
23
|
+
"dev:push": "nodemon --watch dist --ext js,d.ts --exec \"yalc push --changed\"",
|
|
24
|
+
"dev:full": "concurrently \"npm run dev:watch\" \"npm run dev:push\"",
|
|
25
|
+
"knip": "knip",
|
|
26
|
+
"knip:fix": "knip --fix",
|
|
27
|
+
"depcruise": "depcruise src --config",
|
|
28
|
+
"size": "size-limit"
|
|
18
29
|
},
|
|
19
30
|
"keywords": [
|
|
20
31
|
"docx",
|
|
@@ -41,6 +52,7 @@
|
|
|
41
52
|
"homepage": "https://github.com/ItMeDiaTech/docXMLater#readme",
|
|
42
53
|
"files": [
|
|
43
54
|
"dist",
|
|
55
|
+
"src",
|
|
44
56
|
"README.md",
|
|
45
57
|
"LICENSE"
|
|
46
58
|
],
|
|
@@ -48,15 +60,33 @@
|
|
|
48
60
|
"node": ">=18.0.0"
|
|
49
61
|
},
|
|
50
62
|
"devDependencies": {
|
|
63
|
+
"@size-limit/file": "^12.0.0",
|
|
51
64
|
"@types/jest": "^30.0.0",
|
|
52
65
|
"@types/node": "^25.0.3",
|
|
66
|
+
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
67
|
+
"@typescript-eslint/parser": "^8.56.0",
|
|
68
|
+
"@xarsh/ooxml-validator": "^0.1.10",
|
|
69
|
+
"concurrently": "^9.2.1",
|
|
70
|
+
"dependency-cruiser": "^17.3.8",
|
|
71
|
+
"eslint": "^10.0.1",
|
|
53
72
|
"jest": "^30.2.0",
|
|
73
|
+
"knip": "^5.84.1",
|
|
74
|
+
"nodemon": "^3.1.14",
|
|
75
|
+
"prettier": "^3.8.1",
|
|
54
76
|
"rimraf": "^6.1.0",
|
|
77
|
+
"size-limit": "^12.0.0",
|
|
55
78
|
"ts-jest": "^29.2.5",
|
|
56
79
|
"ts-node": "^10.9.2",
|
|
57
|
-
"typescript": "^5.7.2"
|
|
80
|
+
"typescript": "^5.7.2",
|
|
81
|
+
"typescript-eslint": "^8.56.0"
|
|
58
82
|
},
|
|
59
83
|
"dependencies": {
|
|
60
84
|
"jszip": "^3.10.1"
|
|
61
|
-
}
|
|
85
|
+
},
|
|
86
|
+
"size-limit": [
|
|
87
|
+
{
|
|
88
|
+
"path": "dist/index.js",
|
|
89
|
+
"limit": "150 KB"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
62
92
|
}
|