@depup/mammoth 1.12.0-depup.54 → 1.12.1-depup.0

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/NEWS CHANGED
@@ -1,3 +1,11 @@
1
+ # 1.12.1
2
+
3
+ * Fix: on Windows, when an image's content type includes a backslash in the
4
+ subpart, files may be written outside of the directory set by --output-dir.
5
+
6
+ * Detect and ignore numbering levels that use numStyleLink to refer to
7
+ themselves.
8
+
1
9
  # 1.12.0
2
10
 
3
11
  * Handle hyperlinked wp:anchor and wp:inline elements.
package/README.md CHANGED
@@ -13,8 +13,8 @@ npm install @depup/mammoth
13
13
 
14
14
  | Field | Value |
15
15
  |-------|-------|
16
- | Original | [mammoth](https://www.npmjs.com/package/mammoth) @ 1.12.0 |
17
- | Processed | 2026-07-21 |
16
+ | Original | [mammoth](https://www.npmjs.com/package/mammoth) @ 1.12.1 |
17
+ | Processed | 2026-08-09 |
18
18
  | Smoke test | passed |
19
19
  | Deps updated | 7 |
20
20
 
package/changes.json CHANGED
@@ -29,6 +29,6 @@
29
29
  "to": "^15.1.1"
30
30
  }
31
31
  },
32
- "timestamp": "2026-07-21T17:17:25.871Z",
32
+ "timestamp": "2026-08-09T16:09:15.209Z",
33
33
  "totalUpdated": 7
34
34
  }
@@ -17,20 +17,29 @@ function Numbering(nums, abstractNums, styles) {
17
17
  );
18
18
 
19
19
  function findLevel(numId, level) {
20
+ return findLevelWithSeenNumIds(numId, level, {});
21
+ }
22
+
23
+ function findLevelWithSeenNumIds(numId, level, seenNumIds) {
24
+ if (seenNumIds[numId]) {
25
+ return null;
26
+ }
27
+ seenNumIds[numId] = true;
28
+
20
29
  var num = nums[numId];
21
- if (num) {
22
- var abstractNum = abstractNums[num.abstractNumId];
23
- if (!abstractNum) {
24
- return null;
25
- } else if (abstractNum.numStyleLink == null) {
26
- return abstractNums[num.abstractNumId].levels[level];
27
- } else {
28
- var style = styles.findNumberingStyleById(abstractNum.numStyleLink);
29
- return findLevel(style.numId, level);
30
- }
31
- } else {
30
+ if (!num) {
32
31
  return null;
33
32
  }
33
+
34
+ var abstractNum = abstractNums[num.abstractNumId];
35
+ if (!abstractNum) {
36
+ return null;
37
+ } else if (abstractNum.numStyleLink == null) {
38
+ return abstractNums[num.abstractNumId].levels[level];
39
+ } else {
40
+ var style = styles.findNumberingStyleById(abstractNum.numStyleLink);
41
+ return findLevelWithSeenNumIds(style.numId, level, seenNumIds);
42
+ }
34
43
  }
35
44
 
36
45
  function findLevelByParagraphStyleId(styleId) {
package/lib/images.js CHANGED
@@ -29,3 +29,9 @@ exports.dataUri = imgElement(function(element) {
29
29
  };
30
30
  });
31
31
  });
32
+
33
+ function imageFilenameExtension(image) {
34
+ return image.contentType.split(/\/|\\/)[1];
35
+ }
36
+
37
+ exports.imageFilenameExtension = imageFilenameExtension;
package/lib/main.js CHANGED
@@ -13,22 +13,22 @@ function main(argv) {
13
13
  var outputDir = argv.output_dir;
14
14
  var outputFormat = argv.output_format;
15
15
  var styleMapPath = argv.style_map;
16
-
16
+
17
17
  readStyleMap(styleMapPath).then(function(styleMap) {
18
18
  var options = {
19
19
  styleMap: styleMap,
20
20
  outputFormat: outputFormat
21
21
  };
22
-
22
+
23
23
  if (outputDir) {
24
24
  var basename = path.basename(docxPath, ".docx");
25
25
  outputPath = path.join(outputDir, basename + ".html");
26
26
  var imageIndex = 0;
27
27
  options.convertImage = images.imgElement(function(element) {
28
28
  imageIndex++;
29
- var extension = element.contentType.split("/")[1];
30
- var filename = imageIndex + "." + extension;
31
-
29
+ var extension = images.imageFilenameExtension(element);
30
+ var filename = imageIndex + (extension === undefined ? "" : "." + extension);
31
+
32
32
  return element.read().then(function(imageBuffer) {
33
33
  var imagePath = path.join(outputDir, filename);
34
34
  return promises.nfcall(fs.writeFile, imagePath, imageBuffer);
@@ -37,16 +37,16 @@ function main(argv) {
37
37
  });
38
38
  });
39
39
  }
40
-
40
+
41
41
  return mammoth.convert({path: docxPath}, options)
42
42
  .then(function(result) {
43
43
  result.messages.forEach(function(message) {
44
44
  process.stderr.write(message.message);
45
45
  process.stderr.write("\n");
46
46
  });
47
-
47
+
48
48
  var outputStream = outputPath ? fs.createWriteStream(outputPath) : process.stdout;
49
-
49
+
50
50
  outputStream.write(result.value);
51
51
  });
52
52
  }).done();
@@ -25,7 +25,7 @@
25
25
  // Module: lop@0.4.2
26
26
  // License: BSD-2-Clause
27
27
  //
28
- // Module: mammoth@1.12.0
28
+ // Module: mammoth@1.12.1
29
29
  // License: BSD-2-Clause
30
30
  //
31
31
  // Module: option@0.2.4
@@ -2002,20 +2002,29 @@ function Numbering(nums, abstractNums, styles) {
2002
2002
  );
2003
2003
 
2004
2004
  function findLevel(numId, level) {
2005
+ return findLevelWithSeenNumIds(numId, level, {});
2006
+ }
2007
+
2008
+ function findLevelWithSeenNumIds(numId, level, seenNumIds) {
2009
+ if (seenNumIds[numId]) {
2010
+ return null;
2011
+ }
2012
+ seenNumIds[numId] = true;
2013
+
2005
2014
  var num = nums[numId];
2006
- if (num) {
2007
- var abstractNum = abstractNums[num.abstractNumId];
2008
- if (!abstractNum) {
2009
- return null;
2010
- } else if (abstractNum.numStyleLink == null) {
2011
- return abstractNums[num.abstractNumId].levels[level];
2012
- } else {
2013
- var style = styles.findNumberingStyleById(abstractNum.numStyleLink);
2014
- return findLevel(style.numId, level);
2015
- }
2016
- } else {
2015
+ if (!num) {
2017
2016
  return null;
2018
2017
  }
2018
+
2019
+ var abstractNum = abstractNums[num.abstractNumId];
2020
+ if (!abstractNum) {
2021
+ return null;
2022
+ } else if (abstractNum.numStyleLink == null) {
2023
+ return abstractNums[num.abstractNumId].levels[level];
2024
+ } else {
2025
+ var style = styles.findNumberingStyleById(abstractNum.numStyleLink);
2026
+ return findLevelWithSeenNumIds(style.numId, level, seenNumIds);
2027
+ }
2019
2028
  }
2020
2029
 
2021
2030
  function findLevelByParagraphStyleId(styleId) {
@@ -2626,6 +2635,12 @@ exports.dataUri = imgElement(function(element) {
2626
2635
  });
2627
2636
  });
2628
2637
 
2638
+ function imageFilenameExtension(image) {
2639
+ return image.contentType.split(/\/|\\/)[1];
2640
+ }
2641
+
2642
+ exports.imageFilenameExtension = imageFilenameExtension;
2643
+
2629
2644
  },{"./html":18,"./promises":23,"underscore":102}],21:[function(require,module,exports){
2630
2645
  (function (Buffer){
2631
2646
  var _ = require("underscore");