182 lines
12 KiB
JavaScript
182 lines
12 KiB
JavaScript
function createBackgroundApplication(overrides = {}) {
|
|
const environment = {
|
|
fetch: globalThis.fetch,
|
|
browser: globalThis.browser,
|
|
chrome: globalThis.chrome,
|
|
setTimeout: globalThis.setTimeout,
|
|
...overrides
|
|
};
|
|
const messageTypes = createMessageTypes();
|
|
const timeEntries = createTimeEntries({ dates: createTimeDates(), fetchJson: (...args) => httpBackgroundJson.fetchJson(...args), getResourceUser: message => fusionSrCreate.getResourceUser(message), saveHeaders: url => srRequestHeaders.timeEntriesHeaders(url) });
|
|
const spaCurrentUser = createSpaCurrentUser({ fetchJson: (...args) => httpBackgroundJson.fetchJson(...args) });
|
|
const requestCurrentUser = () => spaCurrentUser.requestCurrentUser();
|
|
const contracts = createBackgroundContracts();
|
|
const productsCacheState = createProductsCacheState();
|
|
const authConsumerSession = createAuthConsumerSession({
|
|
CUSTOMER_TOKEN_MAX_ATTEMPTS: contracts.CUSTOMER_TOKEN_MAX_ATTEMPTS,
|
|
CUSTOMER_TOKEN_RETRY_BASE_DELAY_MS: contracts.CUSTOMER_TOKEN_RETRY_BASE_DELAY_MS,
|
|
CUSTOMER_TOKEN_RETRY_MAX_DELAY_MS: contracts.CUSTOMER_TOKEN_RETRY_MAX_DELAY_MS,
|
|
CUSTOMER_TOKEN_SERVICE_URL: contracts.CUSTOMER_TOKEN_SERVICE_URL,
|
|
CUSTOMER_TOKEN_SESSION_URL: contracts.CUSTOMER_TOKEN_SESSION_URL,
|
|
extractTokenServiceAuthorization: (...args) => authSpaCredentials.extractTokenServiceAuthorization(...args),
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
|
supportsFirefoxCookieStoreTabs: (...args) => platformBackgroundApi.supportsFirefoxCookieStoreTabs(...args),
|
|
tabsCreate: (...args) => platformBackgroundApi.tabsCreate(...args),
|
|
tabsRemove: (...args) => platformBackgroundApi.tabsRemove(...args),
|
|
wait: (...args) => platformBackgroundApi.wait(...args)
|
|
});
|
|
const authSpaCredentials = createAuthSpaCredentials({
|
|
findNestedObject: (...args) => spaResponseShapes.findNestedObject(...args)
|
|
});
|
|
const spaAccounts = createSpaAccounts({
|
|
ACCOUNT_PLANS_PAYLOAD: contracts.ACCOUNT_PLANS_PAYLOAD,
|
|
ACCOUNT_PLANS_URL: contracts.ACCOUNT_PLANS_URL,
|
|
ACCOUNT_SUMMARY_URL: contracts.ACCOUNT_SUMMARY_URL,
|
|
extractAccountPlans: (...args) => spaResponseShapes.extractAccountPlans(...args),
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
|
findAccountPlanId: (...args) => spaResponseShapes.findAccountPlanId(...args),
|
|
normalizeMessageAuthorization: (...args) => authSpaCredentials.normalizeMessageAuthorization(...args)
|
|
});
|
|
const spaInstallBase = createSpaInstallBase({
|
|
ACCOUNT_SUMMARY_URL: contracts.ACCOUNT_SUMMARY_URL,
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
|
findNestedObject: (...args) => spaResponseShapes.findNestedObject(...args),
|
|
normalizeMessageAuthorization: (...args) => authSpaCredentials.normalizeMessageAuthorization(...args)
|
|
});
|
|
const spaCustomerServiceRequests = createSpaCustomerServiceRequests({
|
|
ACCOUNT_SUMMARY_URL: contracts.ACCOUNT_SUMMARY_URL,
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
|
findAccountPlanId: (...args) => spaResponseShapes.findAccountPlanId(...args),
|
|
normalizeMessageAuthorization: (...args) => authSpaCredentials.normalizeMessageAuthorization(...args)
|
|
});
|
|
const spaConsumption = createSpaConsumption({
|
|
CONSUMPTION_TREND_REQUESTS: contracts.CONSUMPTION_TREND_REQUESTS,
|
|
CONSUMPTION_TREND_URL: contracts.CONSUMPTION_TREND_URL,
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
|
normalizeMessageAuthorization: (...args) => authSpaCredentials.normalizeMessageAuthorization(...args)
|
|
});
|
|
const spaResponseShapes = createSpaResponseShapes();
|
|
const httpBackgroundJson = createHttpBackgroundJson({
|
|
observeResponseHeaders: (...args) => srRequestHeaders.observeResponseHeaders(...args),
|
|
previewDebugBody: createDebugBodyPreview,
|
|
environment
|
|
});
|
|
const productsBackgroundJobs = createProductsBackgroundJobs({
|
|
messageTypes,
|
|
OPPTY_PRODUCTS_CONCURRENCY: contracts.OPPTY_PRODUCTS_CONCURRENCY,
|
|
getOpptyProducts: (...args) => productsCache.getOpptyProducts(...args),
|
|
normalizeCacheMaxAge: (...args) => productsCache.normalizeCacheMaxAge(...args),
|
|
tabsSendMessage: (...args) => platformBackgroundApi.tabsSendMessage(...args)
|
|
});
|
|
const productsCache = createProductsCache({
|
|
OPPTY_PRODUCTS_CACHE_KEY: contracts.OPPTY_PRODUCTS_CACHE_KEY,
|
|
fetchAllOpptyProducts: (...args) => fusionProducts.fetchAllOpptyProducts(...args),
|
|
productsCacheState,
|
|
storageLocalGet: (...args) => platformBackgroundApi.storageLocalGet(...args),
|
|
storageLocalSet: (...args) => platformBackgroundApi.storageLocalSet(...args)
|
|
});
|
|
const fusionProducts = createFusionProducts({
|
|
createBackgroundDebugEntry: (...args) => httpBackgroundJson.createBackgroundDebugEntry(...args),
|
|
completeBackgroundDebugEntry: (...args) => httpBackgroundJson.completeBackgroundDebugEntry(...args),
|
|
createDebugBody: (...args) => httpBackgroundJson.createDebugBody(...args),
|
|
headersToObject: (...args) => httpBackgroundJson.headersToObject(...args),
|
|
OPPTY_PRODUCTS_FIELDS: contracts.OPPTY_PRODUCTS_FIELDS,
|
|
OPPTY_PRODUCTS_MAX_PAGES: contracts.OPPTY_PRODUCTS_MAX_PAGES,
|
|
OPPTY_PRODUCTS_PAGE_LIMIT: contracts.OPPTY_PRODUCTS_PAGE_LIMIT,
|
|
ORACLE_DOMAIN: contracts.ORACLE_DOMAIN,
|
|
environment
|
|
});
|
|
const authXsrfRecovery = createAuthXsrfRecovery({
|
|
COOKIE_REFRESH_POLL_MS: contracts.COOKIE_REFRESH_POLL_MS,
|
|
COOKIE_REFRESH_TIMEOUT_MS: contracts.COOKIE_REFRESH_TIMEOUT_MS,
|
|
OPPORTUNITIES_LIST_URL: contracts.OPPORTUNITIES_LIST_URL,
|
|
getXsrfTokenCookie: (...args) => authXsrfCookies.getXsrfTokenCookie(...args),
|
|
supportsFirefoxCookieStoreTabs: (...args) => platformBackgroundApi.supportsFirefoxCookieStoreTabs(...args),
|
|
tabsCreate: (...args) => platformBackgroundApi.tabsCreate(...args),
|
|
tabsRemove: (...args) => platformBackgroundApi.tabsRemove(...args),
|
|
wait: (...args) => platformBackgroundApi.wait(...args)
|
|
});
|
|
const authXsrfCookies = createAuthXsrfCookies({
|
|
ORACLE_COOKIE_URLS: contracts.ORACLE_COOKIE_URLS,
|
|
ORACLE_DOMAIN: contracts.ORACLE_DOMAIN,
|
|
XSRF_COOKIE_NAME: contracts.XSRF_COOKIE_NAME,
|
|
XSRF_COOKIE_PREFIX: contracts.XSRF_COOKIE_PREFIX,
|
|
cookiesGet: (...args) => platformBackgroundApi.cookiesGet(...args),
|
|
cookiesGetAll: (...args) => platformBackgroundApi.cookiesGetAll(...args),
|
|
cookiesGetAllCookieStores: (...args) => platformBackgroundApi.cookiesGetAllCookieStores(...args),
|
|
removeUndefinedValues: (...args) => platformBackgroundApi.removeUndefinedValues(...args)
|
|
});
|
|
const platformBackgroundApi = createPlatformBackgroundApi({
|
|
runtimeApi: environment.browser || environment.chrome,
|
|
environment
|
|
});
|
|
const getXsrfTokenCookie = (...args) => authXsrfCookies.getXsrfTokenCookie(...args);
|
|
const refreshXsrfCookie = (...args) => authXsrfRecovery.refreshXsrfCookie(...args);
|
|
const requestAccountPlans = (...args) => spaAccounts.requestAccountPlans(...args);
|
|
const requestInstallBase = (...args) => spaInstallBase.requestInstallBase(...args);
|
|
const spaWorkloadActions = createSpaWorkloadActions({ fetchJson: (...args) => httpBackgroundJson.fetchJson(...args) });
|
|
const requestWlActions = (...args) => spaWorkloadActions.requestWlActions(...args);
|
|
const spaActionOptions = createSpaActionOptions({ fetchJson: (...args) => httpBackgroundJson.fetchJson(...args) });
|
|
const requestActionTeamMembers = (...args) => spaActionOptions.requestActionTeamMembers(...args);
|
|
const requestActionFindLookup = (...args) => spaActionOptions.requestActionFindLookup(...args);
|
|
const requestCustomerServiceRequest = (...args) => spaCustomerServiceRequests.requestCustomerServiceRequest(...args);
|
|
const requestConsumerTokenService = (...args) => authConsumerSession.requestConsumerTokenService(...args);
|
|
const requestConsumptionTrend = (...args) => spaConsumption.requestConsumptionTrend(...args);
|
|
const requestConsumptionPlanDetail = (...args) => spaConsumption.requestConsumptionPlanDetail(...args);
|
|
const requestRatecardByPlan = (...args) => spaConsumption.requestRatecardByPlan(...args);
|
|
const requestOpptyProducts = (...args) => productsBackgroundJobs.requestOpptyProducts(...args);
|
|
const runtimeApi = environment.browser || environment.chrome;
|
|
const srRequestHeaders = createSrRequestHeaders({ runtimeApi });
|
|
const fusionSrCreate = createFusionSrCreate({
|
|
runtimeApi,
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args),
|
|
tokenHeaders: (...args) => srRequestHeaders.tokenHeaders(...args),
|
|
internalServiceRequestHeaders: url => srRequestHeaders.internalServiceRequestHeaders(url),
|
|
previewTokenHeaders: url => srRequestHeaders.previewTokenHeaders(url)
|
|
});
|
|
const fusionSrDetails = createFusionSrDetails({
|
|
cookieChanges: runtimeApi?.cookies?.onChanged,
|
|
cookiesGetAll: (...args) => platformBackgroundApi.cookiesGetAll(...args),
|
|
tabsCreate: (...args) => platformBackgroundApi.tabsCreate(...args),
|
|
tabsRemove: (...args) => platformBackgroundApi.tabsRemove(...args),
|
|
supportsFirefoxCookieStoreTabs: () => platformBackgroundApi.supportsFirefoxCookieStoreTabs(),
|
|
wait: (...args) => platformBackgroundApi.wait(...args),
|
|
fetchJson: (...args) => httpBackgroundJson.fetchJson(...args)
|
|
});
|
|
function start() {
|
|
srRequestHeaders.start();
|
|
startBackgroundApplication({
|
|
invalidateResourceUser: () => fusionSrCreate.invalidateResourceUser(),
|
|
requestWeekDetails: message => timeEntries.requestWeekDetails(message),
|
|
requestTimeEntries: message => timeEntries.requestTimeEntries(message),
|
|
requestTimeEntriesSave: message => timeEntries.requestTimeEntriesSave(message),
|
|
requestTimeEntriesDelete: message => timeEntries.requestTimeEntriesDelete(message),
|
|
requestLookupTaskType: () => timeEntries.requestLookupTaskType(),
|
|
requestServiceRequestExpand: message => timeEntries.requestServiceRequestExpand(message),
|
|
requestResourceUser: message => fusionSrCreate.getResourceUser(message),
|
|
requestActiveServiceRequests: message => timeEntries.requestActiveServiceRequests(message),
|
|
requestLookupTypePlatform: () => fusionSrDetails.requestLookupTypePlatform(),
|
|
requestPostInternalServiceRequest: message => fusionSrCreate.requestPostInternalServiceRequest(message),
|
|
requestInternalSrServices: message => fusionSrDetails.requestInternalSrServices(message),
|
|
requestPostServiceRequest: message => fusionSrCreate.requestPostServiceRequest(message), prepareSrSession: sender => fusionSrDetails.prepareSession(sender), requestSrLookupWithSession: (...args) => fusionSrDetails.requestLookupWithSession(...args), messageTypes, requestSrLookupLanguage: () => fusionSrDetails.requestSrLookupLanguage(), requestSrLookupTechPlatform: () => fusionSrDetails.requestSrLookupTechPlatform(), requestSrLookupOpportunityBusiness: message => fusionSrDetails.requestSrLookupOpportunityBusiness(message), requestSrLookupPrimaryPillar: () => fusionSrDetails.requestSrLookupPrimaryPillar(), requestInternalServiceRequest: (message, sender) => fusionSrDetails.requestInternalServiceRequest(message, sender), requestMgmtAction: message => spaActionOptions.requestMgmtAction(message), invalidateProductsCache: () => productsCache.invalidate(), requestCurrentUser, getXsrfTokenCookie, refreshXsrfCookie, requestAccountPlans, requestInstallBase, requestCustomerServiceRequest, requestWlActions, requestActionTeamMembers, requestActionFindLookup, requestConsumerTokenService, requestConsumptionTrend, requestConsumptionPlanDetail, requestRatecardByPlan, requestOpptyProducts, runtimeApi });
|
|
}
|
|
return {
|
|
start, contracts,
|
|
productsCacheState,
|
|
authConsumerSession,
|
|
authSpaCredentials,
|
|
spaAccounts,
|
|
spaInstallBase,
|
|
spaCustomerServiceRequests,
|
|
spaConsumption,
|
|
spaResponseShapes,
|
|
httpBackgroundJson,
|
|
productsBackgroundJobs,
|
|
productsCache,
|
|
fusionProducts,
|
|
authXsrfRecovery,
|
|
authXsrfCookies,
|
|
platformBackgroundApi
|
|
};
|
|
}
|