From 67d37cd34678091933f0a88cd1bb026171ea20d2 Mon Sep 17 00:00:00 2001 From: bethanyj28 Date: Fri, 23 Feb 2024 16:42:29 -0500 Subject: [PATCH 1/4] Update toolkit --- dist/index.js | 55 +++++++++++++++++++++++++++++++++++++++++++---- package-lock.json | 12 +++++------ 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index bd49f47..e1ab3b2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2328,6 +2328,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.downloadArtifactInternal = exports.downloadArtifactPublic = exports.streamExtractExternal = void 0; const promises_1 = __importDefault(__nccwpck_require__(73292)); +const stream = __importStar(__nccwpck_require__(12781)); +const fs_1 = __nccwpck_require__(57147); +const path = __importStar(__nccwpck_require__(71017)); const github = __importStar(__nccwpck_require__(95438)); const core = __importStar(__nccwpck_require__(42186)); const httpClient = __importStar(__nccwpck_require__(96255)); @@ -2368,6 +2371,9 @@ function streamExtract(url, directory) { return; } catch (error) { + if (error.message.includes('Malformed extraction path')) { + throw new Error(`Artifact download failed with unretryable error: ${error.message}`); + } retryCount++; core.debug(`Failed to download artifact after ${retryCount} retries due to ${error.message}. Retrying in 5 seconds...`); // wait 5 seconds before retrying @@ -2390,6 +2396,8 @@ function streamExtractExternal(url, directory) { response.message.destroy(new Error(`Blob storage chunk did not respond in ${timeout}ms`)); }; const timer = setTimeout(timerFn, timeout); + const createdDirectories = new Set(); + createdDirectories.add(directory); response.message .on('data', () => { timer.refresh(); @@ -2399,11 +2407,50 @@ function streamExtractExternal(url, directory) { clearTimeout(timer); reject(error); }) - .pipe(unzip_stream_1.default.Extract({ path: directory })) - .on('close', () => { + .pipe(unzip_stream_1.default.Parse()) + .pipe(new stream.Transform({ + objectMode: true, + transform: (entry, _, callback) => __awaiter(this, void 0, void 0, function* () { + const fullPath = path.normalize(path.join(directory, entry.path)); + if (!directory.endsWith(path.sep)) { + directory += path.sep; + } + if (!fullPath.startsWith(directory)) { + reject(new Error(`Malformed extraction path: ${fullPath}`)); + } + core.debug(`Extracting artifact entry: ${fullPath}`); + if (entry.type === 'Directory') { + if (!createdDirectories.has(fullPath)) { + createdDirectories.add(fullPath); + yield resolveOrCreateDirectory(fullPath).then(() => { + entry.autodrain(); + callback(); + }); + } + else { + entry.autodrain(); + callback(); + } + } + else { + if (!createdDirectories.has(path.dirname(fullPath))) { + createdDirectories.add(path.dirname(fullPath)); + yield resolveOrCreateDirectory(path.dirname(fullPath)).then(() => { + entry.autodrain(); + callback(); + }); + } + const writeStream = (0, fs_1.createWriteStream)(fullPath); + writeStream.on('finish', callback); + writeStream.on('error', reject); + entry.pipe(writeStream); + } + }) + })) + .on('finish', () => __awaiter(this, void 0, void 0, function* () { clearTimeout(timer); resolve(); - }) + })) .on('error', (error) => { reject(error); }); @@ -125221,7 +125268,7 @@ exports.unescape = unescape; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.1.1","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^5.3.1","crypto":"^1.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.1.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^5.3.1","crypto":"^1.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/package-lock.json b/package-lock.json index 6df9b30..929c39f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,9 +36,9 @@ } }, "node_modules/@actions/artifact": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.1.tgz", - "integrity": "sha512-xVVwWhrRb4YLiTeYkNxctv9IhwIKUsLwIhqD9CKknXtQaqIksq5HttFN8wXQvMrpjQO4zGJf5xLUs6mKyfN4yQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.2.tgz", + "integrity": "sha512-JggZCTFze8D+10qFHnv9qnAElXMCXfV7m0IiZKuj9vwGVPrt9ak+vVpS2Iyn7KNXMyuUxXh7/bNugL4e4jfZIg==", "dependencies": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", @@ -5862,9 +5862,9 @@ "dev": true }, "@actions/artifact": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.1.tgz", - "integrity": "sha512-xVVwWhrRb4YLiTeYkNxctv9IhwIKUsLwIhqD9CKknXtQaqIksq5HttFN8wXQvMrpjQO4zGJf5xLUs6mKyfN4yQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.2.tgz", + "integrity": "sha512-JggZCTFze8D+10qFHnv9qnAElXMCXfV7m0IiZKuj9vwGVPrt9ak+vVpS2Iyn7KNXMyuUxXh7/bNugL4e4jfZIg==", "requires": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", From 7c63dfde29f42bb9cb0f61b67e54c91106a6586e Mon Sep 17 00:00:00 2001 From: bethanyj28 Date: Fri, 23 Feb 2024 16:49:11 -0500 Subject: [PATCH 2/4] licensed --- .licenses/npm/@actions/artifact.dep.yml | 6 +++--- .licenses/npm/minimatch.dep.yml | 26 ------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 .licenses/npm/minimatch.dep.yml diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index bc59d55..ad1c399 100644 --- a/.licenses/npm/@actions/artifact.dep.yml +++ b/.licenses/npm/@actions/artifact.dep.yml @@ -1,9 +1,9 @@ --- name: "@actions/artifact" -version: 2.1.1 +version: 2.1.2 type: npm -summary: -homepage: +summary: Actions artifact lib +homepage: https://github.com/actions/toolkit/tree/main/packages/artifact license: mit licenses: - sources: LICENSE.md diff --git a/.licenses/npm/minimatch.dep.yml b/.licenses/npm/minimatch.dep.yml deleted file mode 100644 index 5709755..0000000 --- a/.licenses/npm/minimatch.dep.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: minimatch -version: 9.0.3 -type: npm -summary: -homepage: -license: isc -licenses: -- sources: LICENSE - text: | - The ISC License - - Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -notices: [] From f71c0e3da3bb6b4fcc53196b9ac75ee981db5bc6 Mon Sep 17 00:00:00 2001 From: bethanyj28 Date: Fri, 23 Feb 2024 16:51:09 -0500 Subject: [PATCH 3/4] Revert "licensed" This reverts commit 7c63dfde29f42bb9cb0f61b67e54c91106a6586e. --- .licenses/npm/@actions/artifact.dep.yml | 6 +++--- .licenses/npm/minimatch.dep.yml | 26 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 .licenses/npm/minimatch.dep.yml diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index ad1c399..bc59d55 100644 --- a/.licenses/npm/@actions/artifact.dep.yml +++ b/.licenses/npm/@actions/artifact.dep.yml @@ -1,9 +1,9 @@ --- name: "@actions/artifact" -version: 2.1.2 +version: 2.1.1 type: npm -summary: Actions artifact lib -homepage: https://github.com/actions/toolkit/tree/main/packages/artifact +summary: +homepage: license: mit licenses: - sources: LICENSE.md diff --git a/.licenses/npm/minimatch.dep.yml b/.licenses/npm/minimatch.dep.yml new file mode 100644 index 0000000..5709755 --- /dev/null +++ b/.licenses/npm/minimatch.dep.yml @@ -0,0 +1,26 @@ +--- +name: minimatch +version: 9.0.3 +type: npm +summary: +homepage: +license: isc +licenses: +- sources: LICENSE + text: | + The ISC License + + Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +notices: [] From 6dd49bff0a6150b47d41011c034b762053acaf6f Mon Sep 17 00:00:00 2001 From: bethanyj28 Date: Fri, 23 Feb 2024 16:51:43 -0500 Subject: [PATCH 4/4] licensed only artifact --- .licenses/npm/@actions/artifact.dep.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index bc59d55..ad1c399 100644 --- a/.licenses/npm/@actions/artifact.dep.yml +++ b/.licenses/npm/@actions/artifact.dep.yml @@ -1,9 +1,9 @@ --- name: "@actions/artifact" -version: 2.1.1 +version: 2.1.2 type: npm -summary: -homepage: +summary: Actions artifact lib +homepage: https://github.com/actions/toolkit/tree/main/packages/artifact license: mit licenses: - sources: LICENSE.md