conventional-changelog-action/node_modules/@octokit/rest/plugins/normalize-git-reference-res.../index.js

60 lines
1.4 KiB
JavaScript

module.exports = octokitRestNormalizeGitReferenceResponses;
const { RequestError } = require("@octokit/request-error");
function octokitRestNormalizeGitReferenceResponses(octokit) {
octokit.hook.wrap("request", (request, options) => {
const isGetOrListRefRequest = /\/repos\/:?\w+\/:?\w+\/git\/refs\/:?\w+/.test(
options.url
);
if (!isGetOrListRefRequest) {
return request(options);
}
const isGetRefRequest = "ref" in options;
return request(options)
.then(response => {
// request single reference
if (isGetRefRequest) {
if (Array.isArray(response.data)) {
throw new RequestError(
`More than one reference found for "${options.ref}"`,
404,
{
request: options
}
);
}
// ✅ received single reference
return response;
}
// request list of references
if (!Array.isArray(response.data)) {
response.data = [response.data];
}
return response;
})
.catch(error => {
if (isGetRefRequest) {
throw error;
}
if (error.status === 404) {
return {
status: 200,
headers: error.headers,
data: []
};
}
throw error;
});
});
}