@alwaysmeticulous/downloading-helpers 2.240.3 → 2.241.2

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.
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.downloadAndExtractFile = exports.downloadFile = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const promises_1 = require("fs/promises");
9
+ const path_1 = require("path");
9
10
  const stream_1 = require("stream");
10
11
  const util_1 = require("util");
11
12
  const axios_1 = __importDefault(require("axios"));
12
13
  const axios_retry_1 = __importDefault(require("axios-retry"));
13
- const extract_zip_1 = __importDefault(require("extract-zip"));
14
+ const unzipper_1 = __importDefault(require("unzipper"));
14
15
  const promisifiedFinished = (0, util_1.promisify)(stream_1.finished);
15
16
  /**
16
17
  * Warning: this function is not thread safe. Do not try downloading a file to a path that may already be in use by another process.
@@ -88,9 +89,26 @@ const downloadAndExtractFile = async (fileUrl, tmpZipFilePath, extractPath, extr
88
89
  const entries = [];
89
90
  try {
90
91
  const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Zip extraction timed out after ${extractTimeoutInMs}ms`)), extractTimeoutInMs));
91
- const extractPromise = (0, extract_zip_1.default)(tmpZipFilePath, {
92
- dir: extractPath,
93
- onEntry: (entry) => entries.push(entry.fileName),
92
+ const extractPromise = new Promise((resolve, reject) => {
93
+ (0, fs_1.createReadStream)(tmpZipFilePath)
94
+ .pipe(unzipper_1.default.Parse())
95
+ .on("entry", async (entry) => {
96
+ if (entry.type === "Directory") {
97
+ entry.autodrain();
98
+ }
99
+ else {
100
+ entries.push(entry.path);
101
+ if (entry.path.includes("..")) {
102
+ reject(new Error(`Path traversal attempt detected: ${entry.path}`));
103
+ return;
104
+ }
105
+ const filePath = (0, path_1.join)(extractPath, entry.path);
106
+ await (0, promises_1.mkdir)((0, path_1.dirname)(filePath), { recursive: true });
107
+ entry.pipe((0, fs_1.createWriteStream)(filePath));
108
+ }
109
+ })
110
+ .on("close", () => resolve())
111
+ .on("error", (err) => reject(err));
94
112
  });
95
113
  await Promise.race([extractPromise, timeoutPromise]);
96
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"download-file.js","sourceRoot":"","sources":["../../src/file-downloads/download-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download-file.js","sourceRoot":"","sources":["../../src/file-downloads/download-file.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwaysmeticulous/downloading-helpers",
3
- "version": "2.240.3",
3
+ "version": "2.241.2",
4
4
  "description": "Helper utilities for downloading files & scripts required to execute replays",
5
5
  "license": "ISC",
6
6
  "main": "dist/index.js",
@@ -20,19 +20,20 @@
20
20
  "test": "jest"
21
21
  },
22
22
  "dependencies": {
23
- "@alwaysmeticulous/api": "^2.240.3",
24
- "@alwaysmeticulous/client": "^2.240.3",
25
- "@alwaysmeticulous/common": "^2.240.3",
23
+ "@alwaysmeticulous/api": "^2.241.0",
24
+ "@alwaysmeticulous/client": "^2.241.0",
25
+ "@alwaysmeticulous/common": "^2.241.0",
26
26
  "axios": "^1.7.9",
27
27
  "axios-retry": "^4.5.0",
28
- "extract-zip": "^2.0.1",
29
28
  "luxon": "^3.2.1",
30
29
  "p-limit": "^3.1.0",
31
- "proper-lockfile": "^4.1.2"
30
+ "proper-lockfile": "^4.1.2",
31
+ "unzipper": "^0.12.3"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/luxon": "^3.2.0",
35
- "@types/proper-lockfile": "^4.1.2"
35
+ "@types/proper-lockfile": "^4.1.2",
36
+ "@types/unzipper": "^0.10.10"
36
37
  },
37
38
  "author": {
38
39
  "name": "The Meticulous Team",
@@ -54,5 +55,5 @@
54
55
  "jest": {
55
56
  "preset": "../../jest.config.js"
56
57
  },
57
- "gitHead": "8288bbe87b4322a72a4c490e5dc489380719ddd5"
58
+ "gitHead": "6b121d5e524d9842c36f4de8f43c097e2d26ca3e"
58
59
  }