mirror of
https://github.com/actions/deploy-pages.git
synced 2025-12-09 20:36:12 +00:00
ci
This commit is contained in:
9
.github/workflows/check-dist.yml
vendored
9
.github/workflows/check-dist.yml
vendored
@@ -37,8 +37,13 @@ jobs:
|
|||||||
- name: Compare the expected and actual dist/ directories
|
- name: Compare the expected and actual dist/ directories
|
||||||
run: |
|
run: |
|
||||||
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
|
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
|
||||||
echo "Detected uncommitted changes after build. See status below:"
|
echo "Detected uncommitted changes after build in dist folder. See status below:"
|
||||||
|
git diff
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(git diff --ignore-space-at-eol pre/ | wc -l)" -gt "0" ]; then
|
||||||
|
echo "Detected uncommitted changes after build in pre folder. See status below:"
|
||||||
git diff
|
git diff
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
id: diff
|
|
||||||
|
|||||||
177
dist/index.js
vendored
177
dist/index.js
vendored
@@ -5386,97 +5386,101 @@ RedirectableRequest.prototype._processResponse = function (response) {
|
|||||||
// the user agent MAY automatically redirect its request to the URI
|
// the user agent MAY automatically redirect its request to the URI
|
||||||
// referenced by the Location field value,
|
// referenced by the Location field value,
|
||||||
// even if the specific status code is not understood.
|
// even if the specific status code is not understood.
|
||||||
|
|
||||||
|
// If the response is not a redirect; return it as-is
|
||||||
var location = response.headers.location;
|
var location = response.headers.location;
|
||||||
if (location && this._options.followRedirects !== false &&
|
if (!location || this._options.followRedirects === false ||
|
||||||
statusCode >= 300 && statusCode < 400) {
|
statusCode < 300 || statusCode >= 400) {
|
||||||
// Abort the current request
|
|
||||||
abortRequest(this._currentRequest);
|
|
||||||
// Discard the remainder of the response to avoid waiting for data
|
|
||||||
response.destroy();
|
|
||||||
|
|
||||||
// RFC7231§6.4: A client SHOULD detect and intervene
|
|
||||||
// in cyclical redirections (i.e., "infinite" redirection loops).
|
|
||||||
if (++this._redirectCount > this._options.maxRedirects) {
|
|
||||||
this.emit("error", new TooManyRedirectsError());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// RFC7231§6.4: Automatic redirection needs to done with
|
|
||||||
// care for methods not known to be safe, […]
|
|
||||||
// RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
|
|
||||||
// the request method from POST to GET for the subsequent request.
|
|
||||||
if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
|
|
||||||
// RFC7231§6.4.4: The 303 (See Other) status code indicates that
|
|
||||||
// the server is redirecting the user agent to a different resource […]
|
|
||||||
// A user agent can perform a retrieval request targeting that URI
|
|
||||||
// (a GET or HEAD request if using HTTP) […]
|
|
||||||
(statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
|
|
||||||
this._options.method = "GET";
|
|
||||||
// Drop a possible entity and headers related to it
|
|
||||||
this._requestBodyBuffers = [];
|
|
||||||
removeMatchingHeaders(/^content-/i, this._options.headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drop the Host header, as the redirect might lead to a different host
|
|
||||||
var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
|
|
||||||
|
|
||||||
// If the redirect is relative, carry over the host of the last request
|
|
||||||
var currentUrlParts = url.parse(this._currentUrl);
|
|
||||||
var currentHost = currentHostHeader || currentUrlParts.host;
|
|
||||||
var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
|
|
||||||
url.format(Object.assign(currentUrlParts, { host: currentHost }));
|
|
||||||
|
|
||||||
// Determine the URL of the redirection
|
|
||||||
var redirectUrl;
|
|
||||||
try {
|
|
||||||
redirectUrl = url.resolve(currentUrl, location);
|
|
||||||
}
|
|
||||||
catch (cause) {
|
|
||||||
this.emit("error", new RedirectionError(cause));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the redirected request
|
|
||||||
debug("redirecting to", redirectUrl);
|
|
||||||
this._isRedirect = true;
|
|
||||||
var redirectUrlParts = url.parse(redirectUrl);
|
|
||||||
Object.assign(this._options, redirectUrlParts);
|
|
||||||
|
|
||||||
// Drop confidential headers when redirecting to another scheme:domain
|
|
||||||
if (redirectUrlParts.protocol !== currentUrlParts.protocol ||
|
|
||||||
!isSameOrSubdomain(redirectUrlParts.host, currentHost)) {
|
|
||||||
removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Evaluate the beforeRedirect callback
|
|
||||||
if (typeof this._options.beforeRedirect === "function") {
|
|
||||||
var responseDetails = { headers: response.headers };
|
|
||||||
try {
|
|
||||||
this._options.beforeRedirect.call(null, this._options, responseDetails);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.emit("error", err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this._sanitizeOptions(this._options);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform the redirected request
|
|
||||||
try {
|
|
||||||
this._performRequest();
|
|
||||||
}
|
|
||||||
catch (cause) {
|
|
||||||
this.emit("error", new RedirectionError(cause));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// The response is not a redirect; return it as-is
|
|
||||||
response.responseUrl = this._currentUrl;
|
response.responseUrl = this._currentUrl;
|
||||||
response.redirects = this._redirects;
|
response.redirects = this._redirects;
|
||||||
this.emit("response", response);
|
this.emit("response", response);
|
||||||
|
|
||||||
// Clean up
|
// Clean up
|
||||||
this._requestBodyBuffers = [];
|
this._requestBodyBuffers = [];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The response is a redirect, so abort the current request
|
||||||
|
abortRequest(this._currentRequest);
|
||||||
|
// Discard the remainder of the response to avoid waiting for data
|
||||||
|
response.destroy();
|
||||||
|
|
||||||
|
// RFC7231§6.4: A client SHOULD detect and intervene
|
||||||
|
// in cyclical redirections (i.e., "infinite" redirection loops).
|
||||||
|
if (++this._redirectCount > this._options.maxRedirects) {
|
||||||
|
this.emit("error", new TooManyRedirectsError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// RFC7231§6.4: Automatic redirection needs to done with
|
||||||
|
// care for methods not known to be safe, […]
|
||||||
|
// RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
|
||||||
|
// the request method from POST to GET for the subsequent request.
|
||||||
|
if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
|
||||||
|
// RFC7231§6.4.4: The 303 (See Other) status code indicates that
|
||||||
|
// the server is redirecting the user agent to a different resource […]
|
||||||
|
// A user agent can perform a retrieval request targeting that URI
|
||||||
|
// (a GET or HEAD request if using HTTP) […]
|
||||||
|
(statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
|
||||||
|
this._options.method = "GET";
|
||||||
|
// Drop a possible entity and headers related to it
|
||||||
|
this._requestBodyBuffers = [];
|
||||||
|
removeMatchingHeaders(/^content-/i, this._options.headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop the Host header, as the redirect might lead to a different host
|
||||||
|
var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
|
||||||
|
|
||||||
|
// If the redirect is relative, carry over the host of the last request
|
||||||
|
var currentUrlParts = url.parse(this._currentUrl);
|
||||||
|
var currentHost = currentHostHeader || currentUrlParts.host;
|
||||||
|
var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
|
||||||
|
url.format(Object.assign(currentUrlParts, { host: currentHost }));
|
||||||
|
|
||||||
|
// Determine the URL of the redirection
|
||||||
|
var redirectUrl;
|
||||||
|
try {
|
||||||
|
redirectUrl = url.resolve(currentUrl, location);
|
||||||
|
}
|
||||||
|
catch (cause) {
|
||||||
|
this.emit("error", new RedirectionError(cause));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the redirected request
|
||||||
|
debug("redirecting to", redirectUrl);
|
||||||
|
this._isRedirect = true;
|
||||||
|
var redirectUrlParts = url.parse(redirectUrl);
|
||||||
|
Object.assign(this._options, redirectUrlParts);
|
||||||
|
|
||||||
|
// Drop confidential headers when redirecting to a less secure protocol
|
||||||
|
// or to a different domain that is not a superdomain
|
||||||
|
if (redirectUrlParts.protocol !== currentUrlParts.protocol &&
|
||||||
|
redirectUrlParts.protocol !== "https:" ||
|
||||||
|
redirectUrlParts.host !== currentHost &&
|
||||||
|
!isSubdomain(redirectUrlParts.host, currentHost)) {
|
||||||
|
removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Evaluate the beforeRedirect callback
|
||||||
|
if (typeof this._options.beforeRedirect === "function") {
|
||||||
|
var responseDetails = { headers: response.headers };
|
||||||
|
try {
|
||||||
|
this._options.beforeRedirect.call(null, this._options, responseDetails);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
this.emit("error", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._sanitizeOptions(this._options);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform the redirected request
|
||||||
|
try {
|
||||||
|
this._performRequest();
|
||||||
|
}
|
||||||
|
catch (cause) {
|
||||||
|
this.emit("error", new RedirectionError(cause));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5610,10 +5614,7 @@ function abortRequest(request) {
|
|||||||
request.abort();
|
request.abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSameOrSubdomain(subdomain, domain) {
|
function isSubdomain(subdomain, domain) {
|
||||||
if (subdomain === domain) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
const dot = subdomain.length - domain.length - 1;
|
const dot = subdomain.length - domain.length - 1;
|
||||||
return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
|
return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
|
||||||
}
|
}
|
||||||
|
|||||||
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
177
pre/index.js
177
pre/index.js
@@ -5386,97 +5386,101 @@ RedirectableRequest.prototype._processResponse = function (response) {
|
|||||||
// the user agent MAY automatically redirect its request to the URI
|
// the user agent MAY automatically redirect its request to the URI
|
||||||
// referenced by the Location field value,
|
// referenced by the Location field value,
|
||||||
// even if the specific status code is not understood.
|
// even if the specific status code is not understood.
|
||||||
|
|
||||||
|
// If the response is not a redirect; return it as-is
|
||||||
var location = response.headers.location;
|
var location = response.headers.location;
|
||||||
if (location && this._options.followRedirects !== false &&
|
if (!location || this._options.followRedirects === false ||
|
||||||
statusCode >= 300 && statusCode < 400) {
|
statusCode < 300 || statusCode >= 400) {
|
||||||
// Abort the current request
|
|
||||||
abortRequest(this._currentRequest);
|
|
||||||
// Discard the remainder of the response to avoid waiting for data
|
|
||||||
response.destroy();
|
|
||||||
|
|
||||||
// RFC7231§6.4: A client SHOULD detect and intervene
|
|
||||||
// in cyclical redirections (i.e., "infinite" redirection loops).
|
|
||||||
if (++this._redirectCount > this._options.maxRedirects) {
|
|
||||||
this.emit("error", new TooManyRedirectsError());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// RFC7231§6.4: Automatic redirection needs to done with
|
|
||||||
// care for methods not known to be safe, […]
|
|
||||||
// RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
|
|
||||||
// the request method from POST to GET for the subsequent request.
|
|
||||||
if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
|
|
||||||
// RFC7231§6.4.4: The 303 (See Other) status code indicates that
|
|
||||||
// the server is redirecting the user agent to a different resource […]
|
|
||||||
// A user agent can perform a retrieval request targeting that URI
|
|
||||||
// (a GET or HEAD request if using HTTP) […]
|
|
||||||
(statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
|
|
||||||
this._options.method = "GET";
|
|
||||||
// Drop a possible entity and headers related to it
|
|
||||||
this._requestBodyBuffers = [];
|
|
||||||
removeMatchingHeaders(/^content-/i, this._options.headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drop the Host header, as the redirect might lead to a different host
|
|
||||||
var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
|
|
||||||
|
|
||||||
// If the redirect is relative, carry over the host of the last request
|
|
||||||
var currentUrlParts = url.parse(this._currentUrl);
|
|
||||||
var currentHost = currentHostHeader || currentUrlParts.host;
|
|
||||||
var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
|
|
||||||
url.format(Object.assign(currentUrlParts, { host: currentHost }));
|
|
||||||
|
|
||||||
// Determine the URL of the redirection
|
|
||||||
var redirectUrl;
|
|
||||||
try {
|
|
||||||
redirectUrl = url.resolve(currentUrl, location);
|
|
||||||
}
|
|
||||||
catch (cause) {
|
|
||||||
this.emit("error", new RedirectionError(cause));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the redirected request
|
|
||||||
debug("redirecting to", redirectUrl);
|
|
||||||
this._isRedirect = true;
|
|
||||||
var redirectUrlParts = url.parse(redirectUrl);
|
|
||||||
Object.assign(this._options, redirectUrlParts);
|
|
||||||
|
|
||||||
// Drop confidential headers when redirecting to another scheme:domain
|
|
||||||
if (redirectUrlParts.protocol !== currentUrlParts.protocol ||
|
|
||||||
!isSameOrSubdomain(redirectUrlParts.host, currentHost)) {
|
|
||||||
removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Evaluate the beforeRedirect callback
|
|
||||||
if (typeof this._options.beforeRedirect === "function") {
|
|
||||||
var responseDetails = { headers: response.headers };
|
|
||||||
try {
|
|
||||||
this._options.beforeRedirect.call(null, this._options, responseDetails);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.emit("error", err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this._sanitizeOptions(this._options);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform the redirected request
|
|
||||||
try {
|
|
||||||
this._performRequest();
|
|
||||||
}
|
|
||||||
catch (cause) {
|
|
||||||
this.emit("error", new RedirectionError(cause));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// The response is not a redirect; return it as-is
|
|
||||||
response.responseUrl = this._currentUrl;
|
response.responseUrl = this._currentUrl;
|
||||||
response.redirects = this._redirects;
|
response.redirects = this._redirects;
|
||||||
this.emit("response", response);
|
this.emit("response", response);
|
||||||
|
|
||||||
// Clean up
|
// Clean up
|
||||||
this._requestBodyBuffers = [];
|
this._requestBodyBuffers = [];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The response is a redirect, so abort the current request
|
||||||
|
abortRequest(this._currentRequest);
|
||||||
|
// Discard the remainder of the response to avoid waiting for data
|
||||||
|
response.destroy();
|
||||||
|
|
||||||
|
// RFC7231§6.4: A client SHOULD detect and intervene
|
||||||
|
// in cyclical redirections (i.e., "infinite" redirection loops).
|
||||||
|
if (++this._redirectCount > this._options.maxRedirects) {
|
||||||
|
this.emit("error", new TooManyRedirectsError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// RFC7231§6.4: Automatic redirection needs to done with
|
||||||
|
// care for methods not known to be safe, […]
|
||||||
|
// RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
|
||||||
|
// the request method from POST to GET for the subsequent request.
|
||||||
|
if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
|
||||||
|
// RFC7231§6.4.4: The 303 (See Other) status code indicates that
|
||||||
|
// the server is redirecting the user agent to a different resource […]
|
||||||
|
// A user agent can perform a retrieval request targeting that URI
|
||||||
|
// (a GET or HEAD request if using HTTP) […]
|
||||||
|
(statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
|
||||||
|
this._options.method = "GET";
|
||||||
|
// Drop a possible entity and headers related to it
|
||||||
|
this._requestBodyBuffers = [];
|
||||||
|
removeMatchingHeaders(/^content-/i, this._options.headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop the Host header, as the redirect might lead to a different host
|
||||||
|
var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
|
||||||
|
|
||||||
|
// If the redirect is relative, carry over the host of the last request
|
||||||
|
var currentUrlParts = url.parse(this._currentUrl);
|
||||||
|
var currentHost = currentHostHeader || currentUrlParts.host;
|
||||||
|
var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
|
||||||
|
url.format(Object.assign(currentUrlParts, { host: currentHost }));
|
||||||
|
|
||||||
|
// Determine the URL of the redirection
|
||||||
|
var redirectUrl;
|
||||||
|
try {
|
||||||
|
redirectUrl = url.resolve(currentUrl, location);
|
||||||
|
}
|
||||||
|
catch (cause) {
|
||||||
|
this.emit("error", new RedirectionError(cause));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the redirected request
|
||||||
|
debug("redirecting to", redirectUrl);
|
||||||
|
this._isRedirect = true;
|
||||||
|
var redirectUrlParts = url.parse(redirectUrl);
|
||||||
|
Object.assign(this._options, redirectUrlParts);
|
||||||
|
|
||||||
|
// Drop confidential headers when redirecting to a less secure protocol
|
||||||
|
// or to a different domain that is not a superdomain
|
||||||
|
if (redirectUrlParts.protocol !== currentUrlParts.protocol &&
|
||||||
|
redirectUrlParts.protocol !== "https:" ||
|
||||||
|
redirectUrlParts.host !== currentHost &&
|
||||||
|
!isSubdomain(redirectUrlParts.host, currentHost)) {
|
||||||
|
removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Evaluate the beforeRedirect callback
|
||||||
|
if (typeof this._options.beforeRedirect === "function") {
|
||||||
|
var responseDetails = { headers: response.headers };
|
||||||
|
try {
|
||||||
|
this._options.beforeRedirect.call(null, this._options, responseDetails);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
this.emit("error", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._sanitizeOptions(this._options);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform the redirected request
|
||||||
|
try {
|
||||||
|
this._performRequest();
|
||||||
|
}
|
||||||
|
catch (cause) {
|
||||||
|
this.emit("error", new RedirectionError(cause));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -5610,10 +5614,7 @@ function abortRequest(request) {
|
|||||||
request.abort();
|
request.abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSameOrSubdomain(subdomain, domain) {
|
function isSubdomain(subdomain, domain) {
|
||||||
if (subdomain === domain) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
const dot = subdomain.length - domain.length - 1;
|
const dot = subdomain.length - domain.length - 1;
|
||||||
return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
|
return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user