UNPKG

@apollo-orbit/angular

Version:

A fully-featured GraphQL client for Angular with modular state management.

52 lines 8.64 kB
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