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 }) }) }