@actions/artifact 5.0.2 → 6.0.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/README.md +0 -1
- package/lib/artifact.d.ts +4 -4
- package/lib/artifact.js +6 -22
- package/lib/artifact.js.map +1 -1
- package/lib/generated/google/protobuf/timestamp.js +21 -24
- package/lib/generated/google/protobuf/timestamp.js.map +1 -1
- package/lib/generated/google/protobuf/wrappers.js +74 -77
- package/lib/generated/google/protobuf/wrappers.js.map +1 -1
- package/lib/generated/index.d.ts +4 -4
- package/lib/generated/index.js +4 -20
- package/lib/generated/index.js.map +1 -1
- package/lib/generated/results/api/v1/artifact.d.ts +3 -3
- package/lib/generated/results/api/v1/artifact.js +168 -171
- package/lib/generated/results/api/v1/artifact.js.map +1 -1
- package/lib/generated/results/api/v1/artifact.twirp-client.d.ts +1 -1
- package/lib/generated/results/api/v1/artifact.twirp-client.js +23 -28
- package/lib/generated/results/api/v1/artifact.twirp-client.js.map +1 -1
- package/lib/internal/client.d.ts +1 -1
- package/lib/internal/client.js +33 -37
- package/lib/internal/client.js.map +1 -1
- package/lib/internal/delete/delete-artifact.d.ts +1 -1
- package/lib/internal/delete/delete-artifact.js +25 -29
- package/lib/internal/delete/delete-artifact.js.map +1 -1
- package/lib/internal/download/download-artifact.d.ts +1 -1
- package/lib/internal/download/download-artifact.js +25 -66
- package/lib/internal/download/download-artifact.js.map +1 -1
- package/lib/internal/find/get-artifact.d.ts +1 -1
- package/lib/internal/find/get-artifact.js +23 -60
- package/lib/internal/find/get-artifact.js.map +1 -1
- package/lib/internal/find/list-artifacts.d.ts +1 -1
- package/lib/internal/find/list-artifacts.js +25 -29
- package/lib/internal/find/list-artifacts.js.map +1 -1
- package/lib/internal/find/retry-options.d.ts +1 -1
- package/lib/internal/find/retry-options.js +2 -38
- package/lib/internal/find/retry-options.js.map +1 -1
- package/lib/internal/shared/artifact-twirp-client.d.ts +1 -1
- package/lib/internal/shared/artifact-twirp-client.js +32 -35
- package/lib/internal/shared/artifact-twirp-client.js.map +1 -1
- package/lib/internal/shared/config.js +13 -26
- package/lib/internal/shared/config.js.map +1 -1
- package/lib/internal/shared/errors.js +6 -15
- package/lib/internal/shared/errors.js.map +1 -1
- package/lib/internal/shared/interfaces.js +1 -2
- package/lib/internal/shared/package-version.cjs +7 -0
- package/lib/internal/shared/user-agent.js +3 -7
- package/lib/internal/shared/user-agent.js.map +1 -1
- package/lib/internal/shared/util.js +13 -54
- package/lib/internal/shared/util.js.map +1 -1
- package/lib/internal/upload/blob-upload.d.ts +1 -1
- package/lib/internal/upload/blob-upload.js +13 -49
- package/lib/internal/upload/blob-upload.js.map +1 -1
- package/lib/internal/upload/path-and-artifact-name-validation.js +4 -8
- package/lib/internal/upload/path-and-artifact-name-validation.js.map +1 -1
- package/lib/internal/upload/retention.d.ts +1 -1
- package/lib/internal/upload/retention.js +4 -40
- package/lib/internal/upload/retention.js.map +1 -1
- package/lib/internal/upload/upload-artifact.d.ts +1 -1
- package/lib/internal/upload/upload-artifact.js +23 -59
- package/lib/internal/upload/upload-artifact.js.map +1 -1
- package/lib/internal/upload/upload-zip-specification.js +13 -50
- package/lib/internal/upload/upload-zip-specification.js.map +1 -1
- package/lib/internal/upload/zip.d.ts +1 -1
- package/lib/internal/upload/zip.js +12 -50
- package/lib/internal/upload/zip.js.map +1 -1
- package/package.json +24 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-artifacts.js","sourceRoot":"","sources":["../../../src/internal/find/list-artifacts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list-artifacts.js","sourceRoot":"","sources":["../../../src/internal/find/list-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getRetryOptions = getRetryOptions;
|
|
37
|
-
const core = __importStar(require("@actions/core"));
|
|
1
|
+
import * as core from '@actions/core';
|
|
38
2
|
// Defaults for fetching artifacts
|
|
39
3
|
const defaultMaxRetryNumber = 5;
|
|
40
4
|
const defaultExemptStatusCodes = [400, 401, 403, 404, 422]; // https://github.com/octokit/plugin-retry.js/blob/9a2443746c350b3beedec35cf26e197ea318a261/src/index.ts#L14
|
|
41
|
-
function getRetryOptions(defaultOptions, retries = defaultMaxRetryNumber, exemptStatusCodes = defaultExemptStatusCodes) {
|
|
5
|
+
export function getRetryOptions(defaultOptions, retries = defaultMaxRetryNumber, exemptStatusCodes = defaultExemptStatusCodes) {
|
|
42
6
|
var _a;
|
|
43
7
|
if (retries <= 0) {
|
|
44
8
|
return [{ enabled: false }, defaultOptions.request];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-options.js","sourceRoot":"","sources":["../../../src/internal/find/retry-options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retry-options.js","sourceRoot":"","sources":["../../../src/internal/find/retry-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AASrC,kCAAkC;AAClC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAC/B,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,4GAA4G;AAEvK,MAAM,UAAU,eAAe,CAC7B,cAA8B,EAC9B,UAAkB,qBAAqB,EACvC,oBAA8B,wBAAwB;;IAEtD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,YAAY,GAAiB;QACjC,OAAO,EAAE,IAAI;KACd,CAAA;IAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,YAAY,CAAC,UAAU,GAAG,iBAAiB,CAAA;IAC7C,CAAC;IAED,0DAA0D;IAC1D,yHAAyH;IACzH,oDAAoD;IACpD,MAAM,cAAc,mCACf,cAAc,CAAC,OAAO,KACzB,OAAO,GACR,CAAA;IAED,IAAI,CAAC,KAAK,CACR,4CACE,cAAc,CAAC,OACjB,+BACE,MAAA,YAAY,CAAC,UAAU,mCAAI,4CAC7B,GAAG,CACJ,CAAA;IAED,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,23 +7,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const errors_1 = require("./errors");
|
|
20
|
-
const util_1 = require("./util");
|
|
10
|
+
import { HttpClient, HttpCodes } from '@actions/http-client';
|
|
11
|
+
import { BearerCredentialHandler } from '@actions/http-client/lib/auth';
|
|
12
|
+
import { info, debug } from '@actions/core';
|
|
13
|
+
import { ArtifactServiceClientJSON } from '../../generated/index.js';
|
|
14
|
+
import { getResultsServiceUrl, getRuntimeToken } from './config.js';
|
|
15
|
+
import { getUserAgentString } from './user-agent.js';
|
|
16
|
+
import { NetworkError, UsageError } from './errors.js';
|
|
17
|
+
import { maskSecretUrls } from './util.js';
|
|
21
18
|
class ArtifactHttpClient {
|
|
22
19
|
constructor(userAgent, maxAttempts, baseRetryIntervalMilliseconds, retryMultiplier) {
|
|
23
20
|
this.maxAttempts = 5;
|
|
24
21
|
this.baseRetryIntervalMilliseconds = 3000;
|
|
25
22
|
this.retryMultiplier = 1.5;
|
|
26
|
-
const token =
|
|
27
|
-
this.baseUrl =
|
|
23
|
+
const token = getRuntimeToken();
|
|
24
|
+
this.baseUrl = getResultsServiceUrl();
|
|
28
25
|
if (maxAttempts) {
|
|
29
26
|
this.maxAttempts = maxAttempts;
|
|
30
27
|
}
|
|
@@ -34,8 +31,8 @@ class ArtifactHttpClient {
|
|
|
34
31
|
if (retryMultiplier) {
|
|
35
32
|
this.retryMultiplier = retryMultiplier;
|
|
36
33
|
}
|
|
37
|
-
this.httpClient = new
|
|
38
|
-
new
|
|
34
|
+
this.httpClient = new HttpClient(userAgent, [
|
|
35
|
+
new BearerCredentialHandler(token)
|
|
39
36
|
]);
|
|
40
37
|
}
|
|
41
38
|
// This function satisfies the Rpc interface. It is compatible with the JSON
|
|
@@ -43,7 +40,7 @@ class ArtifactHttpClient {
|
|
|
43
40
|
request(service, method, contentType, data) {
|
|
44
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
42
|
const url = new URL(`/twirp/${service}/${method}`, this.baseUrl).href;
|
|
46
|
-
|
|
43
|
+
debug(`[Request] ${method} ${url}`);
|
|
47
44
|
const headers = {
|
|
48
45
|
'Content-Type': contentType
|
|
49
46
|
};
|
|
@@ -67,32 +64,32 @@ class ArtifactHttpClient {
|
|
|
67
64
|
const response = yield operation();
|
|
68
65
|
const statusCode = response.message.statusCode;
|
|
69
66
|
rawBody = yield response.readBody();
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
debug(`[Response] - ${response.message.statusCode}`);
|
|
68
|
+
debug(`Headers: ${JSON.stringify(response.message.headers, null, 2)}`);
|
|
72
69
|
const body = JSON.parse(rawBody);
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
maskSecretUrls(body);
|
|
71
|
+
debug(`Body: ${JSON.stringify(body, null, 2)}`);
|
|
75
72
|
if (this.isSuccessStatusCode(statusCode)) {
|
|
76
73
|
return { response, body };
|
|
77
74
|
}
|
|
78
75
|
isRetryable = this.isRetryableHttpStatusCode(statusCode);
|
|
79
76
|
errorMessage = `Failed request: (${statusCode}) ${response.message.statusMessage}`;
|
|
80
77
|
if (body.msg) {
|
|
81
|
-
if (
|
|
82
|
-
throw new
|
|
78
|
+
if (UsageError.isUsageErrorMessage(body.msg)) {
|
|
79
|
+
throw new UsageError();
|
|
83
80
|
}
|
|
84
81
|
errorMessage = `${errorMessage}: ${body.msg}`;
|
|
85
82
|
}
|
|
86
83
|
}
|
|
87
84
|
catch (error) {
|
|
88
85
|
if (error instanceof SyntaxError) {
|
|
89
|
-
|
|
86
|
+
debug(`Raw Body: ${rawBody}`);
|
|
90
87
|
}
|
|
91
|
-
if (error instanceof
|
|
88
|
+
if (error instanceof UsageError) {
|
|
92
89
|
throw error;
|
|
93
90
|
}
|
|
94
|
-
if (
|
|
95
|
-
throw new
|
|
91
|
+
if (NetworkError.isNetworkErrorCode(error === null || error === void 0 ? void 0 : error.code)) {
|
|
92
|
+
throw new NetworkError(error === null || error === void 0 ? void 0 : error.code);
|
|
96
93
|
}
|
|
97
94
|
isRetryable = true;
|
|
98
95
|
errorMessage = error.message;
|
|
@@ -104,7 +101,7 @@ class ArtifactHttpClient {
|
|
|
104
101
|
throw new Error(`Failed to make request after ${this.maxAttempts} attempts: ${errorMessage}`);
|
|
105
102
|
}
|
|
106
103
|
const retryTimeMilliseconds = this.getExponentialRetryTimeMilliseconds(attempt);
|
|
107
|
-
|
|
104
|
+
info(`Attempt ${attempt + 1} of ${this.maxAttempts} failed with error: ${errorMessage}. Retrying request in ${retryTimeMilliseconds} ms...`);
|
|
108
105
|
yield this.sleep(retryTimeMilliseconds);
|
|
109
106
|
attempt++;
|
|
110
107
|
}
|
|
@@ -120,11 +117,11 @@ class ArtifactHttpClient {
|
|
|
120
117
|
if (!statusCode)
|
|
121
118
|
return false;
|
|
122
119
|
const retryableStatusCodes = [
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
120
|
+
HttpCodes.BadGateway,
|
|
121
|
+
HttpCodes.GatewayTimeout,
|
|
122
|
+
HttpCodes.InternalServerError,
|
|
123
|
+
HttpCodes.ServiceUnavailable,
|
|
124
|
+
HttpCodes.TooManyRequests
|
|
128
125
|
];
|
|
129
126
|
return retryableStatusCodes.includes(statusCode);
|
|
130
127
|
}
|
|
@@ -146,8 +143,8 @@ class ArtifactHttpClient {
|
|
|
146
143
|
return Math.trunc(Math.random() * (maxTime - minTime) + minTime);
|
|
147
144
|
}
|
|
148
145
|
}
|
|
149
|
-
function internalArtifactTwirpClient(options) {
|
|
150
|
-
const client = new ArtifactHttpClient(
|
|
151
|
-
return new
|
|
146
|
+
export function internalArtifactTwirpClient(options) {
|
|
147
|
+
const client = new ArtifactHttpClient(getUserAgentString(), options === null || options === void 0 ? void 0 : options.maxAttempts, options === null || options === void 0 ? void 0 : options.retryIntervalMs, options === null || options === void 0 ? void 0 : options.retryMultiplier);
|
|
148
|
+
return new ArtifactServiceClientJSON(client);
|
|
152
149
|
}
|
|
153
150
|
//# sourceMappingURL=artifact-twirp-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-twirp-client.js","sourceRoot":"","sources":["../../../src/internal/shared/artifact-twirp-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"artifact-twirp-client.js","sourceRoot":"","sources":["../../../src/internal/shared/artifact-twirp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getUploadChunkSize = getUploadChunkSize;
|
|
7
|
-
exports.getRuntimeToken = getRuntimeToken;
|
|
8
|
-
exports.getResultsServiceUrl = getResultsServiceUrl;
|
|
9
|
-
exports.isGhes = isGhes;
|
|
10
|
-
exports.getGitHubWorkspaceDir = getGitHubWorkspaceDir;
|
|
11
|
-
exports.getConcurrency = getConcurrency;
|
|
12
|
-
exports.getUploadChunkTimeout = getUploadChunkTimeout;
|
|
13
|
-
exports.getMaxArtifactListCount = getMaxArtifactListCount;
|
|
14
|
-
const os_1 = __importDefault(require("os"));
|
|
15
|
-
const core_1 = require("@actions/core");
|
|
1
|
+
import os from 'os';
|
|
2
|
+
import { info } from '@actions/core';
|
|
16
3
|
// Used for controlling the highWaterMark value of the zip that is being streamed
|
|
17
4
|
// The same value is used as the chunk size that is use during upload to blob storage
|
|
18
|
-
function getUploadChunkSize() {
|
|
5
|
+
export function getUploadChunkSize() {
|
|
19
6
|
return 8 * 1024 * 1024; // 8 MB Chunks
|
|
20
7
|
}
|
|
21
|
-
function getRuntimeToken() {
|
|
8
|
+
export function getRuntimeToken() {
|
|
22
9
|
const token = process.env['ACTIONS_RUNTIME_TOKEN'];
|
|
23
10
|
if (!token) {
|
|
24
11
|
throw new Error('Unable to get the ACTIONS_RUNTIME_TOKEN env variable');
|
|
25
12
|
}
|
|
26
13
|
return token;
|
|
27
14
|
}
|
|
28
|
-
function getResultsServiceUrl() {
|
|
15
|
+
export function getResultsServiceUrl() {
|
|
29
16
|
const resultsUrl = process.env['ACTIONS_RESULTS_URL'];
|
|
30
17
|
if (!resultsUrl) {
|
|
31
18
|
throw new Error('Unable to get the ACTIONS_RESULTS_URL env variable');
|
|
32
19
|
}
|
|
33
20
|
return new URL(resultsUrl).origin;
|
|
34
21
|
}
|
|
35
|
-
function isGhes() {
|
|
22
|
+
export function isGhes() {
|
|
36
23
|
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
|
37
24
|
const hostname = ghUrl.hostname.trimEnd().toUpperCase();
|
|
38
25
|
const isGitHubHost = hostname === 'GITHUB.COM';
|
|
@@ -40,7 +27,7 @@ function isGhes() {
|
|
|
40
27
|
const isLocalHost = hostname.endsWith('.LOCALHOST');
|
|
41
28
|
return !isGitHubHost && !isGheHost && !isLocalHost;
|
|
42
29
|
}
|
|
43
|
-
function getGitHubWorkspaceDir() {
|
|
30
|
+
export function getGitHubWorkspaceDir() {
|
|
44
31
|
const ghWorkspaceDir = process.env['GITHUB_WORKSPACE'];
|
|
45
32
|
if (!ghWorkspaceDir) {
|
|
46
33
|
throw new Error('Unable to get the GITHUB_WORKSPACE env variable');
|
|
@@ -49,8 +36,8 @@ function getGitHubWorkspaceDir() {
|
|
|
49
36
|
}
|
|
50
37
|
// The maximum value of concurrency is 300.
|
|
51
38
|
// This value can be changed with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable.
|
|
52
|
-
function getConcurrency() {
|
|
53
|
-
const numCPUs =
|
|
39
|
+
export function getConcurrency() {
|
|
40
|
+
const numCPUs = os.cpus().length;
|
|
54
41
|
let concurrencyCap = 32;
|
|
55
42
|
if (numCPUs > 4) {
|
|
56
43
|
const concurrency = 16 * numCPUs;
|
|
@@ -63,16 +50,16 @@ function getConcurrency() {
|
|
|
63
50
|
throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY env variable');
|
|
64
51
|
}
|
|
65
52
|
if (concurrency < concurrencyCap) {
|
|
66
|
-
|
|
53
|
+
info(`Set concurrency based on the value set in ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY.`);
|
|
67
54
|
return concurrency;
|
|
68
55
|
}
|
|
69
|
-
|
|
56
|
+
info(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Set it to the maximum value allowed.`);
|
|
70
57
|
return concurrencyCap;
|
|
71
58
|
}
|
|
72
59
|
// default concurrency to 5
|
|
73
60
|
return 5;
|
|
74
61
|
}
|
|
75
|
-
function getUploadChunkTimeout() {
|
|
62
|
+
export function getUploadChunkTimeout() {
|
|
76
63
|
const timeoutVar = process.env['ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS'];
|
|
77
64
|
if (!timeoutVar) {
|
|
78
65
|
return 300000; // 5 minutes
|
|
@@ -85,7 +72,7 @@ function getUploadChunkTimeout() {
|
|
|
85
72
|
}
|
|
86
73
|
// This value can be changed with ACTIONS_ARTIFACT_MAX_ARTIFACT_COUNT variable.
|
|
87
74
|
// Defaults to 1000 as a safeguard for rate limiting.
|
|
88
|
-
function getMaxArtifactListCount() {
|
|
75
|
+
export function getMaxArtifactListCount() {
|
|
89
76
|
const maxCountVar = process.env['ACTIONS_ARTIFACT_MAX_ARTIFACT_COUNT'] || '1000';
|
|
90
77
|
const maxCount = parseInt(maxCountVar);
|
|
91
78
|
if (isNaN(maxCount) || maxCount < 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/internal/shared/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/internal/shared/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UsageError = exports.NetworkError = exports.GHESNotSupportedError = exports.ArtifactNotFoundError = exports.InvalidResponseError = exports.FilesNotFoundError = void 0;
|
|
4
|
-
class FilesNotFoundError extends Error {
|
|
1
|
+
export class FilesNotFoundError extends Error {
|
|
5
2
|
constructor(files = []) {
|
|
6
3
|
let message = 'No files were found to upload';
|
|
7
4
|
if (files.length > 0) {
|
|
@@ -12,29 +9,25 @@ class FilesNotFoundError extends Error {
|
|
|
12
9
|
this.name = 'FilesNotFoundError';
|
|
13
10
|
}
|
|
14
11
|
}
|
|
15
|
-
|
|
16
|
-
class InvalidResponseError extends Error {
|
|
12
|
+
export class InvalidResponseError extends Error {
|
|
17
13
|
constructor(message) {
|
|
18
14
|
super(message);
|
|
19
15
|
this.name = 'InvalidResponseError';
|
|
20
16
|
}
|
|
21
17
|
}
|
|
22
|
-
|
|
23
|
-
class ArtifactNotFoundError extends Error {
|
|
18
|
+
export class ArtifactNotFoundError extends Error {
|
|
24
19
|
constructor(message = 'Artifact not found') {
|
|
25
20
|
super(message);
|
|
26
21
|
this.name = 'ArtifactNotFoundError';
|
|
27
22
|
}
|
|
28
23
|
}
|
|
29
|
-
|
|
30
|
-
class GHESNotSupportedError extends Error {
|
|
24
|
+
export class GHESNotSupportedError extends Error {
|
|
31
25
|
constructor(message = '@actions/artifact v2.0.0+, upload-artifact@v4+ and download-artifact@v4+ are not currently supported on GHES.') {
|
|
32
26
|
super(message);
|
|
33
27
|
this.name = 'GHESNotSupportedError';
|
|
34
28
|
}
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
class NetworkError extends Error {
|
|
30
|
+
export class NetworkError extends Error {
|
|
38
31
|
constructor(code) {
|
|
39
32
|
const message = `Unable to make request: ${code}\nIf you are using self-hosted runners, please make sure your runner has access to all GitHub endpoints: https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github`;
|
|
40
33
|
super(message);
|
|
@@ -42,7 +35,6 @@ class NetworkError extends Error {
|
|
|
42
35
|
this.name = 'NetworkError';
|
|
43
36
|
}
|
|
44
37
|
}
|
|
45
|
-
exports.NetworkError = NetworkError;
|
|
46
38
|
NetworkError.isNetworkErrorCode = (code) => {
|
|
47
39
|
if (!code)
|
|
48
40
|
return false;
|
|
@@ -54,14 +46,13 @@ NetworkError.isNetworkErrorCode = (code) => {
|
|
|
54
46
|
'EHOSTUNREACH'
|
|
55
47
|
].includes(code);
|
|
56
48
|
};
|
|
57
|
-
class UsageError extends Error {
|
|
49
|
+
export class UsageError extends Error {
|
|
58
50
|
constructor() {
|
|
59
51
|
const message = `Artifact storage quota has been hit. Unable to upload any new artifacts. Usage is recalculated every 6-12 hours.\nMore info on storage limits: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#calculating-minute-and-storage-spending`;
|
|
60
52
|
super(message);
|
|
61
53
|
this.name = 'UsageError';
|
|
62
54
|
}
|
|
63
55
|
}
|
|
64
|
-
exports.UsageError = UsageError;
|
|
65
56
|
UsageError.isUsageErrorMessage = (msg) => {
|
|
66
57
|
if (!msg)
|
|
67
58
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/internal/shared/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/internal/shared/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAG3C,YAAY,QAAkB,EAAE;QAC9B,IAAI,OAAO,GAAG,+BAA+B,CAAA;QAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAO,GAAG,oBAAoB;QACxC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YACE,OAAO,GAAG,+GAA+G;QAEzH,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IAGrC,YAAY,IAAY;QACtB,MAAM,OAAO,GAAG,2BAA2B,IAAI,kRAAkR,CAAA;QACjU,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;;AAEM,+BAAkB,GAAG,CAAC,IAAa,EAAW,EAAE;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,OAAO;QACL,YAAY;QACZ,WAAW;QACX,WAAW;QACX,cAAc;QACd,cAAc;KACf,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAClB,CAAC,CAAA;AAGH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC;QACE,MAAM,OAAO,GAAG,gSAAgS,CAAA;QAChT,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;;AAEM,8BAAmB,GAAG,CAAC,GAAY,EAAW,EAAE;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,OAAO,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AAC3C,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// This file exists as a CommonJS module to read the version from package.json.
|
|
2
|
+
// In an ESM package, using `require()` directly in .ts files requires disabling
|
|
3
|
+
// ESLint rules and doesn't work reliably across all Node.js versions.
|
|
4
|
+
// By keeping this as a .cjs file, we can use require() naturally and export
|
|
5
|
+
// the version for the ESM modules to import.
|
|
6
|
+
const packageJson = require('../../../package.json')
|
|
7
|
+
module.exports = { version: packageJson.version }
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUserAgentString = getUserAgentString;
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
|
|
5
|
-
const packageJson = require('../../../package.json');
|
|
1
|
+
import { version } from './package-version.cjs';
|
|
6
2
|
/**
|
|
7
3
|
* Ensure that this User Agent String is used in all HTTP calls so that we can monitor telemetry between different versions of this package
|
|
8
4
|
*/
|
|
9
|
-
function getUserAgentString() {
|
|
10
|
-
return `@actions/artifact-${
|
|
5
|
+
export function getUserAgentString() {
|
|
6
|
+
return `@actions/artifact-${version}`;
|
|
11
7
|
}
|
|
12
8
|
//# sourceMappingURL=user-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-agent.js","sourceRoot":"","sources":["../../../src/internal/shared/user-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-agent.js","sourceRoot":"","sources":["../../../src/internal/shared/user-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAE7C;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,qBAAqB,OAAO,EAAE,CAAA;AACvC,CAAC"}
|
|
@@ -1,54 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.getBackendIdsFromToken = getBackendIdsFromToken;
|
|
40
|
-
exports.maskSigUrl = maskSigUrl;
|
|
41
|
-
exports.maskSecretUrls = maskSecretUrls;
|
|
42
|
-
const core = __importStar(require("@actions/core"));
|
|
43
|
-
const config_1 = require("./config");
|
|
44
|
-
const jwt_decode_1 = __importDefault(require("jwt-decode"));
|
|
45
|
-
const core_1 = require("@actions/core");
|
|
1
|
+
import * as core from '@actions/core';
|
|
2
|
+
import { getRuntimeToken } from './config.js';
|
|
3
|
+
import { jwtDecode } from 'jwt-decode';
|
|
4
|
+
import { debug, setSecret } from '@actions/core';
|
|
46
5
|
const InvalidJwtError = new Error('Failed to get backend IDs: The provided JWT token is invalid and/or missing claims');
|
|
47
6
|
// uses the JWT token claims to get the
|
|
48
7
|
// workflow run and workflow job run backend ids
|
|
49
|
-
function getBackendIdsFromToken() {
|
|
50
|
-
const token =
|
|
51
|
-
const decoded = (
|
|
8
|
+
export function getBackendIdsFromToken() {
|
|
9
|
+
const token = getRuntimeToken();
|
|
10
|
+
const decoded = jwtDecode(token);
|
|
52
11
|
if (!decoded.scp) {
|
|
53
12
|
throw InvalidJwtError;
|
|
54
13
|
}
|
|
@@ -107,19 +66,19 @@ function getBackendIdsFromToken() {
|
|
|
107
66
|
* maskSigUrl('https://example.blob.core.windows.net/container/file.txt?sig=abc123&se=2023-01-01');
|
|
108
67
|
* ```
|
|
109
68
|
*/
|
|
110
|
-
function maskSigUrl(url) {
|
|
69
|
+
export function maskSigUrl(url) {
|
|
111
70
|
if (!url)
|
|
112
71
|
return;
|
|
113
72
|
try {
|
|
114
73
|
const parsedUrl = new URL(url);
|
|
115
74
|
const signature = parsedUrl.searchParams.get('sig');
|
|
116
75
|
if (signature) {
|
|
117
|
-
|
|
118
|
-
|
|
76
|
+
setSecret(signature);
|
|
77
|
+
setSecret(encodeURIComponent(signature));
|
|
119
78
|
}
|
|
120
79
|
}
|
|
121
80
|
catch (error) {
|
|
122
|
-
|
|
81
|
+
debug(`Failed to parse URL: ${url} ${error instanceof Error ? error.message : String(error)}`);
|
|
123
82
|
}
|
|
124
83
|
}
|
|
125
84
|
/**
|
|
@@ -143,9 +102,9 @@ function maskSigUrl(url) {
|
|
|
143
102
|
* maskSecretUrls(responseBody);
|
|
144
103
|
* ```
|
|
145
104
|
*/
|
|
146
|
-
function maskSecretUrls(body) {
|
|
105
|
+
export function maskSecretUrls(body) {
|
|
147
106
|
if (typeof body !== 'object' || body === null) {
|
|
148
|
-
|
|
107
|
+
debug('body is not an object or is null');
|
|
149
108
|
return;
|
|
150
109
|
}
|
|
151
110
|
if ('signed_upload_url' in body &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/internal/shared/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/internal/shared/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAA;AACpC,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,eAAe,CAAA;AAW9C,MAAM,eAAe,GAAG,IAAI,KAAK,CAC/B,oFAAoF,CACrF,CAAA;AAED,uCAAuC;AACvC,gDAAgD;AAChD,MAAM,UAAU,sBAAsB;IACpC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,SAAS,CAAe,KAAK,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,eAAe,CAAA;IACvB,CAAC;IAED;;;;;OAKG;IAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,eAAe,CAAA;IACvB,CAAC;IACD;;;OAGG;IAEH,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,MAAK,iBAAiB,EAAE,CAAC;YAC1C,gCAAgC;YAChC,SAAQ;QACV,CAAC;QAED;;;WAGG;QACH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,oCAAoC;YACpC,MAAM,eAAe,CAAA;QACvB,CAAC;QAED,MAAM,GAAG,GAAG;YACV,oBAAoB,EAAE,UAAU,CAAC,CAAC,CAAC;YACnC,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;SACvC,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAA;QAEzE,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,eAAe,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,SAAS,CAAC,CAAA;YACpB,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CACH,wBAAwB,GAAG,IACzB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoC;IACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACzC,OAAM;IACR,CAAC;IAED,IACE,mBAAmB,IAAI,IAAI;QAC3B,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,EAC1C,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,YAAY,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
|