mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 01:30:10 +08:00
I explicitly had to downgrade "@octokit/plugin-retry" to "^6.0.0". Other dependencies were upgraded.
197 lines
6.6 KiB
JavaScript
197 lines
6.6 KiB
JavaScript
// pkg/dist-src/index.js
|
|
import { endpoint } from "@octokit/endpoint";
|
|
|
|
// pkg/dist-src/defaults.js
|
|
import { getUserAgent } from "universal-user-agent";
|
|
|
|
// pkg/dist-src/version.js
|
|
var VERSION = "0.0.0-development";
|
|
|
|
// pkg/dist-src/defaults.js
|
|
var defaults_default = {
|
|
headers: {
|
|
"user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
|
|
}
|
|
};
|
|
|
|
// pkg/dist-src/fetch-wrapper.js
|
|
import { safeParse } from "fast-content-type-parse";
|
|
|
|
// pkg/dist-src/is-plain-object.js
|
|
function isPlainObject(value) {
|
|
if (typeof value !== "object" || value === null) return false;
|
|
if (Object.prototype.toString.call(value) !== "[object Object]") return false;
|
|
const proto = Object.getPrototypeOf(value);
|
|
if (proto === null) return true;
|
|
const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
|
|
return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
|
|
}
|
|
|
|
// pkg/dist-src/fetch-wrapper.js
|
|
import { RequestError } from "@octokit/request-error";
|
|
async function fetchWrapper(requestOptions) {
|
|
const fetch = requestOptions.request?.fetch || globalThis.fetch;
|
|
if (!fetch) {
|
|
throw new Error(
|
|
"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
|
|
);
|
|
}
|
|
const log = requestOptions.request?.log || console;
|
|
const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;
|
|
const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSON.stringify(requestOptions.body) : requestOptions.body;
|
|
const requestHeaders = Object.fromEntries(
|
|
Object.entries(requestOptions.headers).map(([name, value]) => [
|
|
name,
|
|
String(value)
|
|
])
|
|
);
|
|
let fetchResponse;
|
|
try {
|
|
fetchResponse = await fetch(requestOptions.url, {
|
|
method: requestOptions.method,
|
|
body,
|
|
redirect: requestOptions.request?.redirect,
|
|
headers: requestHeaders,
|
|
signal: requestOptions.request?.signal,
|
|
// duplex must be set if request.body is ReadableStream or Async Iterables.
|
|
// See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
|
|
...requestOptions.body && { duplex: "half" }
|
|
});
|
|
} catch (error) {
|
|
let message = "Unknown Error";
|
|
if (error instanceof Error) {
|
|
if (error.name === "AbortError") {
|
|
error.status = 500;
|
|
throw error;
|
|
}
|
|
message = error.message;
|
|
if (error.name === "TypeError" && "cause" in error) {
|
|
if (error.cause instanceof Error) {
|
|
message = error.cause.message;
|
|
} else if (typeof error.cause === "string") {
|
|
message = error.cause;
|
|
}
|
|
}
|
|
}
|
|
const requestError = new RequestError(message, 500, {
|
|
request: requestOptions
|
|
});
|
|
requestError.cause = error;
|
|
throw requestError;
|
|
}
|
|
const status = fetchResponse.status;
|
|
const url = fetchResponse.url;
|
|
const responseHeaders = {};
|
|
for (const [key, value] of fetchResponse.headers) {
|
|
responseHeaders[key] = value;
|
|
}
|
|
const octokitResponse = {
|
|
url,
|
|
status,
|
|
headers: responseHeaders,
|
|
data: ""
|
|
};
|
|
if ("deprecation" in responseHeaders) {
|
|
const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/);
|
|
const deprecationLink = matches && matches.pop();
|
|
log.warn(
|
|
`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
|
|
);
|
|
}
|
|
if (status === 204 || status === 205) {
|
|
return octokitResponse;
|
|
}
|
|
if (requestOptions.method === "HEAD") {
|
|
if (status < 400) {
|
|
return octokitResponse;
|
|
}
|
|
throw new RequestError(fetchResponse.statusText, status, {
|
|
response: octokitResponse,
|
|
request: requestOptions
|
|
});
|
|
}
|
|
if (status === 304) {
|
|
octokitResponse.data = await getResponseData(fetchResponse);
|
|
throw new RequestError("Not modified", status, {
|
|
response: octokitResponse,
|
|
request: requestOptions
|
|
});
|
|
}
|
|
if (status >= 400) {
|
|
octokitResponse.data = await getResponseData(fetchResponse);
|
|
throw new RequestError(toErrorMessage(octokitResponse.data), status, {
|
|
response: octokitResponse,
|
|
request: requestOptions
|
|
});
|
|
}
|
|
octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;
|
|
return octokitResponse;
|
|
}
|
|
async function getResponseData(response) {
|
|
const contentType = response.headers.get("content-type");
|
|
if (!contentType) {
|
|
return response.text().catch(() => "");
|
|
}
|
|
const mimetype = safeParse(contentType);
|
|
if (isJSONResponse(mimetype)) {
|
|
let text = "";
|
|
try {
|
|
text = await response.text();
|
|
return JSON.parse(text);
|
|
} catch (err) {
|
|
return text;
|
|
}
|
|
} else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") {
|
|
return response.text().catch(() => "");
|
|
} else {
|
|
return response.arrayBuffer().catch(() => new ArrayBuffer(0));
|
|
}
|
|
}
|
|
function isJSONResponse(mimetype) {
|
|
return mimetype.type === "application/json" || mimetype.type === "application/scim+json";
|
|
}
|
|
function toErrorMessage(data) {
|
|
if (typeof data === "string") {
|
|
return data;
|
|
}
|
|
if (data instanceof ArrayBuffer) {
|
|
return "Unknown error";
|
|
}
|
|
if ("message" in data) {
|
|
const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : "";
|
|
return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`;
|
|
}
|
|
return `Unknown error: ${JSON.stringify(data)}`;
|
|
}
|
|
|
|
// pkg/dist-src/with-defaults.js
|
|
function withDefaults(oldEndpoint, newDefaults) {
|
|
const endpoint2 = oldEndpoint.defaults(newDefaults);
|
|
const newApi = function(route, parameters) {
|
|
const endpointOptions = endpoint2.merge(route, parameters);
|
|
if (!endpointOptions.request || !endpointOptions.request.hook) {
|
|
return fetchWrapper(endpoint2.parse(endpointOptions));
|
|
}
|
|
const request2 = (route2, parameters2) => {
|
|
return fetchWrapper(
|
|
endpoint2.parse(endpoint2.merge(route2, parameters2))
|
|
);
|
|
};
|
|
Object.assign(request2, {
|
|
endpoint: endpoint2,
|
|
defaults: withDefaults.bind(null, endpoint2)
|
|
});
|
|
return endpointOptions.request.hook(request2, endpointOptions);
|
|
};
|
|
return Object.assign(newApi, {
|
|
endpoint: endpoint2,
|
|
defaults: withDefaults.bind(null, endpoint2)
|
|
});
|
|
}
|
|
|
|
// pkg/dist-src/index.js
|
|
var request = withDefaults(endpoint, defaults_default);
|
|
export {
|
|
request
|
|
};
|