UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

64 lines 9.18 kB
import { noop } from '../core/public-api'; import { TOKEN_INFO_API, TOKEN_REFRESH_API } from './constants'; import { readStorageToken, writeStorageToken } from './storage-token'; export function createAuthorizedFetchInit(init = {}) { const headers = new Headers(init.headers); const idToken = readStorageToken(); if (idToken && !headers.has('Authorization')) { headers.set('Authorization', `Bearer ${idToken}`); } return { ...init, credentials: init.credentials ?? 'same-origin', headers, }; } export function fetchTokenApi(input, init) { return fetch(input, createAuthorizedFetchInit(init)); } export async function fetchAuthorizedResource(input, init) { const response = await fetch(input, createAuthorizedFetchInit(init)); if (response.status !== 401) { return response; } const { refreshAuthorizationToken, logout } = await import('./authorization'); const refreshed = await refreshAuthorizationToken().catch(() => null); if (!refreshed) { await logout(true); return new Promise(noop); } return fetch(input, createAuthorizedFetchInit(init)); } export async function requestTokenInfo() { const response = await fetchTokenApi(TOKEN_INFO_API); if (response.ok) { return response.json(); } if (response.status === 401) { return null; } throw createResponseError(response, 'Failed to fetch token info'); } export async function requestTokenRefresh() { const response = await fetchTokenApi(TOKEN_REFRESH_API); if (response.ok) { const tokenResponse = await response.json(); if (tokenResponse.id_token) { writeStorageToken(tokenResponse.id_token); } return tokenResponse; } if (!response.ok) { return null; } throw createResponseError(response, 'Failed to refresh token'); } function createResponseError(response, message) { const error = new Error(`${message}: ${response.status} ${response.statusText}`); Object.assign(error, { status: response.status, statusText: response.statusText, }); return error; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2F1dGhvcml6YXRpb24vdG9rZW4tY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBNEJ0RSxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBb0IsRUFBRTtJQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUVuQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU87UUFDTCxHQUFHLElBQUk7UUFDUCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxhQUFhO1FBQzlDLE9BQU87S0FDYyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQXdCLEVBQUUsSUFBa0I7SUFDeEUsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLEtBQXdCLEVBQ3hCLElBQWtCO0lBRWxCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXJFLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUUsTUFBTSxTQUFTLEdBQUcsTUFBTSx5QkFBeUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0RSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixPQUFPLElBQUksT0FBTyxDQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0I7SUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckQsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEIsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLG1CQUFtQixDQUFDLFFBQVEsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQjtJQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRXhELElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sYUFBYSxHQUFrQixNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUzRCxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sbUJBQW1CLENBQUMsUUFBUSxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsUUFBa0IsRUFBRSxPQUFlO0lBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUNyQixHQUFHLE9BQU8sS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FDeEQsQ0FBQztJQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ25CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN2QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7S0FDaEMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IFRPS0VOX0lORk9fQVBJLCBUT0tFTl9SRUZSRVNIX0FQSSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHJlYWRTdG9yYWdlVG9rZW4sIHdyaXRlU3RvcmFnZVRva2VuIH0gZnJvbSAnLi9zdG9yYWdlLXRva2VuJztcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50SW5mbyB7XG4gIGlzcz86IHN0cmluZztcbiAgc3ViPzogc3RyaW5nO1xuICBhdWQ/OiBzdHJpbmc7XG4gIGV4cD86IG51bWJlcjtcbiAgaWF0PzogbnVtYmVyO1xuICBhenA/OiBzdHJpbmc7XG4gIGF0X2hhc2g/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBlbWFpbF92ZXJpZmllZD86IHRydWU7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHRva2VuPzogc3RyaW5nO1xuICBleHQ/OiB7XG4gICAgaXNfYWRtaW4/OiBib29sZWFuO1xuICAgIGNvbm5faWQ/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICB0b2tlbl9zdG9yYWdlOiBzdHJpbmc7XG4gIHRva2VuX3R5cGU6IHN0cmluZztcbiAgZXhwaXJlX2F0OiBzdHJpbmc7XG4gIGlzc3VlZF9hdDogc3RyaW5nO1xuICBpZF90b2tlbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUF1dGhvcml6ZWRGZXRjaEluaXQoaW5pdDogUmVxdWVzdEluaXQgPSB7fSkge1xuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5pdC5oZWFkZXJzKTtcbiAgY29uc3QgaWRUb2tlbiA9IHJlYWRTdG9yYWdlVG9rZW4oKTtcblxuICBpZiAoaWRUb2tlbiAmJiAhaGVhZGVycy5oYXMoJ0F1dGhvcml6YXRpb24nKSkge1xuICAgIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke2lkVG9rZW59YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmluaXQsXG4gICAgY3JlZGVudGlhbHM6IGluaXQuY3JlZGVudGlhbHMgPz8gJ3NhbWUtb3JpZ2luJyxcbiAgICBoZWFkZXJzLFxuICB9IHNhdGlzZmllcyBSZXF1ZXN0SW5pdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoVG9rZW5BcGkoaW5wdXQ6IFJlcXVlc3RJbmZvIHwgVVJMLCBpbml0PzogUmVxdWVzdEluaXQpIHtcbiAgcmV0dXJuIGZldGNoKGlucHV0LCBjcmVhdGVBdXRob3JpemVkRmV0Y2hJbml0KGluaXQpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXV0aG9yaXplZFJlc291cmNlKFxuICBpbnB1dDogUmVxdWVzdEluZm8gfCBVUkwsXG4gIGluaXQ/OiBSZXF1ZXN0SW5pdCxcbikge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGlucHV0LCBjcmVhdGVBdXRob3JpemVkRmV0Y2hJbml0KGluaXQpKTtcblxuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSA0MDEpIHtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBjb25zdCB7IHJlZnJlc2hBdXRob3JpemF0aW9uVG9rZW4sIGxvZ291dCB9ID0gYXdhaXQgaW1wb3J0KCcuL2F1dGhvcml6YXRpb24nKTtcbiAgY29uc3QgcmVmcmVzaGVkID0gYXdhaXQgcmVmcmVzaEF1dGhvcml6YXRpb25Ub2tlbigpLmNhdGNoKCgpID0+IG51bGwpO1xuXG4gIGlmICghcmVmcmVzaGVkKSB7XG4gICAgYXdhaXQgbG9nb3V0KHRydWUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxuZXZlcj4obm9vcCk7XG4gIH1cblxuICByZXR1cm4gZmV0Y2goaW5wdXQsIGNyZWF0ZUF1dGhvcml6ZWRGZXRjaEluaXQoaW5pdCkpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFRva2VuSW5mbygpOiBQcm9taXNlPEFjY291bnRJbmZvIHwgbnVsbD4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoVG9rZW5BcGkoVE9LRU5fSU5GT19BUEkpO1xuXG4gIGlmIChyZXNwb25zZS5vaykge1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gIH1cblxuICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRocm93IGNyZWF0ZVJlc3BvbnNlRXJyb3IocmVzcG9uc2UsICdGYWlsZWQgdG8gZmV0Y2ggdG9rZW4gaW5mbycpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFRva2VuUmVmcmVzaCgpOiBQcm9taXNlPFRva2VuUmVzcG9uc2UgfCBudWxsPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hUb2tlbkFwaShUT0tFTl9SRUZSRVNIX0FQSSk7XG5cbiAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgY29uc3QgdG9rZW5SZXNwb25zZTogVG9rZW5SZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgIGlmICh0b2tlblJlc3BvbnNlLmlkX3Rva2VuKSB7XG4gICAgICB3cml0ZVN0b3JhZ2VUb2tlbih0b2tlblJlc3BvbnNlLmlkX3Rva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9rZW5SZXNwb25zZTtcbiAgfVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRocm93IGNyZWF0ZVJlc3BvbnNlRXJyb3IocmVzcG9uc2UsICdGYWlsZWQgdG8gcmVmcmVzaCB0b2tlbicpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXNwb25zZUVycm9yKHJlc3BvbnNlOiBSZXNwb25zZSwgbWVzc2FnZTogc3RyaW5nKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgIGAke21lc3NhZ2V9OiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICk7XG5cbiAgT2JqZWN0LmFzc2lnbihlcnJvciwge1xuICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gIH0pO1xuXG4gIHJldHVybiBlcnJvcjtcbn1cbiJdfQ==