init
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
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;
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user