function createAuthSalesCommon({ TOKEN_RELAY_URL, authSalesCommonState, requestTokenRelay }) { function requestTokenRelaySalesCommon() { if (authSalesCommonState.salesCommonToken && Date.now() < authSalesCommonState.salesCommonToken.expiresAt) { return Promise.resolve(authSalesCommonState.salesCommonToken.access_token); } if (authSalesCommonState.salesCommonTokenRequest) { return authSalesCommonState.salesCommonTokenRequest; } authSalesCommonState.salesCommonTokenRequest = requestTokenRelay({ name: "requestTokenRelaySalesCommon", url: `${TOKEN_RELAY_URL}?scopesfq=urn%3Aopc%3Aresource%3Afusion%3Aeeho%3Asales-common%2F`, includeExpiry: true }).then((token) => { authSalesCommonState.salesCommonToken = token; return token.access_token; }).finally(() => { authSalesCommonState.salesCommonTokenRequest = null; }); return authSalesCommonState.salesCommonTokenRequest; } function invalidateSalesCommonToken(rejectedToken) { if (authSalesCommonState.salesCommonToken && authSalesCommonState.salesCommonToken.access_token === rejectedToken) { authSalesCommonState.salesCommonToken = null; } } return { requestTokenRelaySalesCommon, invalidateSalesCommonToken }; }