@apollo-orbit/angular
Version:
A fully-featured GraphQL client for Angular with modular state management.
52 lines • 8.64 kB
JavaScript
import { lastValueFrom, of } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
const normalizedHeaders = {
'accept': 'Accept',
'content-type': 'Content-Type'
};
export const makeFetch = (httpClient) => (url, { method, ...config }) => {
return lastValueFrom(httpClient.request(method, url, {
...config,
headers: normalizeHeaders(config.headers),
observe: 'response',
responseType: 'text',
reportProgress: false,
withCredentials: config.credentials === 'include'
}).pipe(map(response => getResponse(response)), catchError(error => of(getErrorResponse(error)))));
};
function getErrorResponse(errorResponse) {
const { error, name, message, ...rest } = errorResponse;
if (errorResponse.status <= 0)
throw new TypeError('Failed to fetch');
return getResponse({ body: error, ...rest });
}
function getResponse(response) {
if (typeof Response !== 'function') {
// node environment
const { ok, status, statusText, url, body } = response;
return { ok, status, statusText, url, text: () => Promise.resolve(body) };
}
else {
// browser environment
return new Response(response.body, { ...response, headers: mapHeaders(response.headers) });
}
}
function mapHeaders(headers) {
if (!headers)
return headers;
return headers.keys().reduce((acc, key) => ({ ...acc, [key]: headers.get(key) }), {});
}
// @apollo/client passes headers in a format that fails angular checks
function normalizeHeaders(headers) {
if (!headers)
return headers;
return Object
.keys(headers)
.reduce((acc, header) => {
const normalizedHeader = normalizedHeaders[header];
return normalizedHeader !== undefined
? { ...acc, [normalizedHeader]: headers[header] }
: { ...acc, [header]: headers[header] };
}, {});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mZXRjaC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtqRCxNQUFNLGlCQUFpQixHQUEyQztJQUM5RCxRQUFRLEVBQUUsUUFBUTtJQUNsQixjQUFjLEVBQUUsY0FBYztDQUNqQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQWMsRUFBcUIsRUFBRTtJQUN2SCxPQUFPLGFBQWEsQ0FDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQzVCLEdBQUcsTUFBTTtRQUNULE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3pDLE9BQU8sRUFBRSxVQUFVO1FBQ25CLFlBQVksRUFBRSxNQUFNO1FBQ3BCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGVBQWUsRUFBRSxNQUFNLENBQUMsV0FBVyxLQUFLLFNBQVM7S0FDcEQsQ0FBQyxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDdEMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbkQsQ0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsU0FBUyxnQkFBZ0IsQ0FBQyxhQUFnQztJQUN0RCxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUM7SUFDeEQsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUM7UUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEUsT0FBTyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUEwQixDQUFDLENBQUM7QUFDekUsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLFFBQThCO0lBQy9DLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDakMsbUJBQW1CO1FBQ25CLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQWMsQ0FBQztJQUMxRixDQUFDO1NBQU0sQ0FBQztRQUNKLHNCQUFzQjtRQUN0QixPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxPQUFnQztJQUNoRCxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDO0lBQzdCLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsU0FBUyxnQkFBZ0IsQ0FBQyxPQUEyQztJQUNqRSxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDO0lBRTdCLE9BQU8sTUFBTTtTQUNSLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDYixNQUFNLENBQ0gsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDWixNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sZ0JBQWdCLEtBQUssU0FBUztZQUNqQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pELENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQyxFQUNELEVBQUUsQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdHRwQ29uZmlnIH0gZnJvbSAnLi9odHRwQ29uZmlnJztcclxuXHJcbmV4cG9ydCB7IEh0dHBDb25maWcgfSBmcm9tICcuL2h0dHBDb25maWcnO1xyXG5cclxuY29uc3Qgbm9ybWFsaXplZEhlYWRlcnM6IHsgW2Zyb206IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9ID0ge1xyXG4gICAgJ2FjY2VwdCc6ICdBY2NlcHQnLFxyXG4gICAgJ2NvbnRlbnQtdHlwZSc6ICdDb250ZW50LVR5cGUnXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbWFrZUZldGNoID0gKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpID0+ICh1cmw6IHN0cmluZywgeyBtZXRob2QsIC4uLmNvbmZpZyB9OiBIdHRwQ29uZmlnKTogUHJvbWlzZTxSZXNwb25zZT4gPT4ge1xyXG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgaHR0cENsaWVudC5yZXF1ZXN0KG1ldGhvZCwgdXJsLCB7XHJcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICAgICAgaGVhZGVyczogbm9ybWFsaXplSGVhZGVycyhjb25maWcuaGVhZGVycyksXHJcbiAgICAgICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogY29uZmlnLmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZSdcclxuICAgICAgICB9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gZ2V0UmVzcG9uc2UocmVzcG9uc2UpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihnZXRFcnJvclJlc3BvbnNlKGVycm9yKSkpXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGdldEVycm9yUmVzcG9uc2UoZXJyb3JSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiBSZXNwb25zZSB7XHJcbiAgICBjb25zdCB7IGVycm9yLCBuYW1lLCBtZXNzYWdlLCAuLi5yZXN0IH0gPSBlcnJvclJlc3BvbnNlO1xyXG4gICAgaWYgKGVycm9yUmVzcG9uc2Uuc3RhdHVzIDw9IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCcpO1xyXG4gICAgcmV0dXJuIGdldFJlc3BvbnNlKHsgYm9keTogZXJyb3IsIC4uLnJlc3QgfSBhcyBIdHRwUmVzcG9uc2U8c3RyaW5nPik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFJlc3BvbnNlKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPik6IFJlc3BvbnNlIHtcclxuICAgIGlmICh0eXBlb2YgUmVzcG9uc2UgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAvLyBub2RlIGVudmlyb25tZW50XHJcbiAgICAgICAgY29uc3QgeyBvaywgc3RhdHVzLCBzdGF0dXNUZXh0LCB1cmwsIGJvZHkgfSA9IHJlc3BvbnNlO1xyXG4gICAgICAgIHJldHVybiB7IG9rLCBzdGF0dXMsIHN0YXR1c1RleHQsIHVybCwgdGV4dDogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGJvZHkpIH0gYXMgUmVzcG9uc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGJyb3dzZXIgZW52aXJvbm1lbnRcclxuICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHJlc3BvbnNlLmJvZHksIHsgLi4ucmVzcG9uc2UsIGhlYWRlcnM6IG1hcEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycykgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hcEhlYWRlcnMoaGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQpOiBIZWFkZXJzSW5pdCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWhlYWRlcnMpIHJldHVybiBoZWFkZXJzO1xyXG4gICAgcmV0dXJuIGhlYWRlcnMua2V5cygpLnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IGhlYWRlcnMuZ2V0KGtleSkgfSksIHt9KTtcclxufVxyXG5cclxuLy8gQGFwb2xsby9jbGllbnQgcGFzc2VzIGhlYWRlcnMgaW4gYSBmb3JtYXQgdGhhdCBmYWlscyBhbmd1bGFyIGNoZWNrc1xyXG5mdW5jdGlvbiBub3JtYWxpemVIZWFkZXJzKGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghaGVhZGVycykgcmV0dXJuIGhlYWRlcnM7XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdFxyXG4gICAgICAgIC5rZXlzKGhlYWRlcnMpXHJcbiAgICAgICAgLnJlZHVjZShcclxuICAgICAgICAgICAgKGFjYywgaGVhZGVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkSGVhZGVyID0gbm9ybWFsaXplZEhlYWRlcnNbaGVhZGVyXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkSGVhZGVyICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgICA/IHsgLi4uYWNjLCBbbm9ybWFsaXplZEhlYWRlcl06IGhlYWRlcnNbaGVhZGVyXSB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiB7IC4uLmFjYywgW2hlYWRlcl06IGhlYWRlcnNbaGVhZGVyXSB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7fSk7XHJcbn1cclxuIl19