{"version":3,"file":"coopse.script.8843.156d0a21.chunk.js","mappings":"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","sources":["webpack:///./src/microApps/common/api/clients/directLoyaltyAxiosClient.ts","webpack:///./src/microApps/common/api/loyalty/externalLoyaltyApi.ts","webpack:///./src/microApps/common/flow/loyaltyFlow.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../../appConfig';\nimport axiosClientFactory from './clientFactory';\nimport type { CustomErrorInterceptor } from './localApiAxiosErrorInterceptors';\n\nexport type ApiLoyaltyException = {\n errorCode: number;\n status: string;\n};\nexport type ApiLoyaltyAutoCheckException = {\n detail: string;\n status: number;\n title: string;\n};\nexport type ApiLoyaltyMember20Exception = {\n title: string;\n status: number;\n detail: string;\n};\nexport type ApiHouseholdMemberException = {\n title: string;\n status: number;\n detail: string;\n error: string;\n};\n\nconst getDirectLoyaltyAxiosClient = <TApiError = unknown>(\n accessToken: string,\n errorInterceptors?: CustomErrorInterceptor<TApiError>[],\n): AxiosInstance => {\n const client = axiosClientFactory.createDirectApiClient(\n {\n baseURL: `${appConfig.coopSettings.serviceAccess.extApimUrl}loyalty/account`,\n params: {\n 'api-version': 'v1',\n },\n headers: {\n Accept: 'application/json',\n 'Ocp-Apim-Trace': 'true',\n 'Ocp-Apim-Subscription-Key':\n appConfig.coopSettings.serviceAccess.extApimSubscriptionKey,\n Authorization: accessToken ? `Bearer ${accessToken}` : undefined,\n },\n },\n errorInterceptors,\n );\n return client;\n};\n\nexport default getDirectLoyaltyAxiosClient;\n","/* eslint-disable @typescript-eslint/no-throw-literal */\nimport type {\n MonetaryTransactionHistory,\n TransactionHistoryApi,\n} from '../../../myCoop/myPoints/models';\nimport { createDefaultException } from '../../exceptions/exceptionUtils';\nimport type {\n ApiHouseholdMemberException,\n ApiLoyaltyAutoCheckException,\n ApiLoyaltyException,\n ApiLoyaltyMember20Exception,\n} from '../clients/directLoyaltyAxiosClient';\nimport getDirectLoyaltyAxiosClient from '../clients/directLoyaltyAxiosClient';\nimport getLocalApiAxiosClient from '../clients/localApiAxiosClient';\nimport type { CustomErrorInterceptor } from '../clients/localApiAxiosErrorInterceptors';\n\nexport const voucherApiUrl = '/voucher/automatic';\nexport const eligibleApiUrl = 'points/eligible';\nexport const previousPointsApiUrl = 'points/summary/previous';\n\n/**\n * Point that expires within the given number of months\n */\nconst getExpiringPoints = async (months: number, token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token).get<ExpiringPointsResponse[]>(\n `points/expiring/${months}`,\n {\n params: { 'api-version': 'v1' },\n },\n );\n return result.data;\n};\n\n/**\n * Household members, including self\n */\nconst getHouseholdMembers = async (token: string): Promise<HouseholdMember[]> => {\n const result =\n await getDirectLoyaltyAxiosClient(token).get<HouseholdResponse>('membership/household');\n return result.data?.members;\n};\n\n/**\n * Associations\n */\nconst getMembershipNames = async (token: string): Promise<MembershipNames> => {\n const response = await getDirectLoyaltyAxiosClient(token).get(`membership/associations/`);\n return response.data;\n};\n\n/**\n * Eligible for bonus - if user is ok to get and use bonus points\n */\nconst getEligibleForBonus = async (token: string): Promise<boolean> => {\n const result = await getDirectLoyaltyAxiosClient(token).get(eligibleApiUrl);\n return result.data?.eligibleForPoints || false;\n};\n\n/**\n * Total bonus\n */\nconst getPointBalance = async (token: string): Promise<ApiBonus> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/balance', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Previouss Monthly Bonus\n */\nconst getPreviousMonthBonus = async (token: string): Promise<ApiBonusGroup> => {\n const result = await getDirectLoyaltyAxiosClient(token).get(previousPointsApiUrl, {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Point matrix\n */\nconst getPointsMatrixStructureLevel = async (token: string): Promise<ApiPointsMatrix> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/matrix?levels=5', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Point summary / Current Month\n */\nconst getPointsSummary = async (token: string): Promise<ApiPointsSummary> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/summary/current', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\n/**\n * Get transaction history by dates\n */\nconst getTransactionsHistoryByDates = async (\n token: string,\n request: DateTransactionsRequest,\n): Promise<TransactionHistoryApi[]> => {\n try {\n const result = await getDirectLoyaltyAxiosClient(token, [\n transactionResponseInterceptor,\n ]).post('points/transactions', request, {\n params: { 'api-version': 'v3' },\n });\n return result.data || [];\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '204') {\n // If there is no transactions found, return empty array\n return [];\n }\n\n throw error;\n }\n};\n\n/**\n * Get transaction history for entire month\n */\nconst getMonthTransactionsHistory = async (\n token: string,\n request: TransactionsRequest,\n fromDate: Date,\n): Promise<TransactionHistoryApi[]> => {\n try {\n const fromYear = fromDate.getFullYear();\n const fromMonth = fromDate.getMonth() + 1;\n\n const result = await getDirectLoyaltyAxiosClient(token, [\n transactionResponseInterceptor,\n ]).post(`points/transactions/${fromYear}/${fromMonth}`, request, {\n params: { 'api-version': 'v3' },\n });\n\n return result.data || [];\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '204') {\n // If there is no transactions found, return empty array\n return [];\n }\n\n throw error;\n }\n};\n\n/**\n * Purchase history - Köphistorik\n */\nconst getMonthMonetaryTransactionsHistory = async (\n token: string,\n fromDate: Date,\n page?: number,\n size?: number,\n): Promise<MonetaryTransactionHistory[]> => {\n try {\n const fromYear = fromDate.getFullYear();\n const fromMonth = fromDate.getMonth() + 1;\n\n const result = await getDirectLoyaltyAxiosClient(token, [\n transactionResponseInterceptor,\n ]).get(`points/purchasehistory/${fromYear}/${fromMonth}`, {\n params: { 'api-version': 'v3', size: size ?? 5, page: page ?? 0 },\n });\n\n return result.data;\n } catch (error) {\n const err = error as { code?: string };\n if (err.code && err.code === '404') {\n // If there is no transactions found, return empty array\n return [];\n }\n\n throw error;\n }\n};\n\nconst getPointsSummaryYearly = async (token: string): Promise<ApiPointsSummary> => {\n const result = await getDirectLoyaltyAxiosClient(token).get('points/summary/yearly', {\n params: { 'api-version': 'v3' },\n });\n return result.data;\n};\n\nconst getVoucherDetails = async (id: string, token: string): Promise<VoucherDetailsResponse> => {\n const result = await getDirectLoyaltyAxiosClient(token).get(\n `/voucher/details/${encodeURI(id)}`,\n );\n return result.data;\n};\n\nconst purchaseOffer = async (\n offerId: number,\n specialCredentials: PurchaseOfferRequest,\n token: string,\n): Promise<PurchaseOfferResponse> => {\n const result = await getDirectLoyaltyAxiosClient(token, [\n purchaseOfferResponseInterceptor,\n ]).post(`/voucher/purchase/${offerId}`, specialCredentials);\n\n try {\n await getLocalApiAxiosClient().delete('/myPoints/cache');\n // eslint-disable-next-line no-empty\n } catch {}\n return result.data;\n};\n\nconst transactionResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyMember20Exception> = (\n response,\n) => {\n if (response.response.data?.status === 404) {\n return createDefaultException(\n response.response.data.title,\n response.response.data.status.toString(),\n );\n }\n\n return createDefaultException('Något gick fel när transaktionerna skulle hämtas', '500');\n};\n\nconst addMemberResponseInterceptor: CustomErrorInterceptor<ApiHouseholdMemberException> = (\n response,\n) => {\n let msg = null;\n\n if (response.response.data?.error) {\n switch (response.response.data.error) {\n case 'INVALID_INPUT_SSN':\n msg = 'Personnumret är felaktigt eller i fel format.';\n break;\n case 'INVALID_INPUT_AGE':\n msg = 'Personen är under 18 år.';\n break;\n case 'INVALID_INPUT_HOUSEHOLD':\n msg =\n 'Den här medlemmen existerar redan i ett hushåll. Vänligen kontakta kundtjänst.';\n break;\n case 'FORBIDDEN_NOT_OWNER':\n msg =\n 'Något blev fel. Hushållstrukturen är felaktig. Vänligen kontakta kundservice om felet kvarstår.';\n break;\n default:\n msg = 'Något blev fel.';\n break;\n }\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data?.error);\n }\n\n return createDefaultException('Något blev fel.');\n};\n\nconst purchaseOfferResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyException> = (\n response,\n) => {\n if (response.response.data?.errorCode) {\n let msg = null;\n\n switch (response.response.data.errorCode) {\n case 10:\n case 30:\n msg =\n 'Något gick fel när kundbilden skulle hämtas, vänligen kontakta kundservice. Felkod LMS_1030';\n break;\n case 20:\n msg =\n 'Poängvaran kunde inte hittas i systemet. Vänligen kontakta kundservice. Felkod LMS_20';\n break;\n case 40:\n msg = 'Ej tillräckligt med poäng för att ta poängvaran.';\n break;\n case 50:\n case 60:\n msg =\n 'Koderna för den här poängvaran är tillfälligt slut, vänligen försök igen senare.';\n break;\n case 70:\n msg =\n 'Något gick fel med sas-växlilngen, vänligen kontakta kundservice. Felkod SAS_70';\n break;\n case 190:\n msg = 'Något gick fel med växlingen, vänligen försök igen senare. Felkod SAS_190';\n break;\n case 80:\n msg = 'Max antal köp av denna poängvara är redan uppnådd.';\n break;\n case 90:\n msg =\n 'Något gick fel med växlingen. Se över ditt Nordic Choice konto. Felkod NORDIC_90';\n break;\n case 130:\n case 200:\n msg =\n 'Något gick fel med växlingen, vänligen försök igen senare. Felkod NORDIC_130';\n break;\n case 100:\n msg = 'Kvitto på uttaget kunde inte skickas.';\n break;\n case 110:\n msg = 'Något gick fel, vänligen försök igen senare. Felkod ADOB_110';\n break;\n case 120:\n case 140:\n case 150:\n case 170:\n case 180:\n case 210:\n case 220:\n case 230:\n case 240:\n msg = 'Något gick fel, vänligen försök igen senare. Felkod LMS_120';\n break;\n default:\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.errorCode.toString());\n }\n }\n\n if (response.response.data?.status) {\n let msg = null;\n\n switch (response.response.status) {\n case 400:\n msg = 'Felaktiga uppgifter.';\n break;\n case 404:\n msg = 'Produkten finns för tillfället inte på lager.';\n break;\n case 504:\n msg = 'Tjänsten kunde inte nås för tillfället. Försök igen senare.';\n break;\n default:\n msg = 'Något gick fel, vänligen försök igen senare.';\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.errorCode.toString());\n }\n }\n\n return null;\n};\n\nconst getAutoVoucherStatus = async (token: string): Promise<AutoVoucherStatusResponse> => {\n const result = await getDirectLoyaltyAxiosClient(token, [autoStatusResponseInterceptor]).get(\n voucherApiUrl,\n );\n\n return result.data;\n};\n\nconst autoStatusResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyAutoCheckException> = (\n response,\n) => {\n if (response.response.data?.status) {\n let msg = null;\n\n switch (response.response.data.status) {\n case 400:\n msg = 'Felaktiga uppgifter';\n break;\n case 401:\n msg = 'Accessproblem.';\n break;\n case 404:\n msg = 'Autocheck är avstängd'; // THIS IS OK, NOT AN ERROR\n break;\n case 504:\n msg = 'Tjänsten kunde inte nås för tillfället.';\n break;\n default:\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.status.toString());\n }\n }\n\n return null;\n};\n\nconst activateAutoVoucher = async (token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token, [toggleCheckResponseInterceptor]).post(\n voucherApiUrl,\n );\n return result.data;\n};\n\nconst deactivateAutoVoucher = async (token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token, [\n toggleCheckResponseInterceptor,\n ]).delete(voucherApiUrl);\n return result.data;\n};\n\nconst toggleCheckResponseInterceptor: CustomErrorInterceptor<ApiLoyaltyAutoCheckException> = (\n response,\n) => {\n if (response.response.data?.status) {\n let msg = null;\n\n switch (response.response.data.status) {\n case 400:\n msg = 'Felaktiga uppgifter';\n break;\n case 401:\n msg = 'Accessproblem.';\n break;\n case 403:\n msg = 'Accessproblem (bankid).';\n break;\n case 404:\n case 504:\n msg = 'Tjänsten kunde inte nås för tillfället.';\n break;\n default:\n break;\n }\n\n if (msg) {\n return createDefaultException(msg, response.response.data.status.toString());\n }\n }\n\n return null;\n};\n\nconst getConnectedCards = async (token: string) => {\n const result = await getDirectLoyaltyAxiosClient(token).get<CardResponse[]>(\n 'membership/connected-cards',\n );\n return result.data;\n};\n\nconst deleteConnectedCard = async (id: string, token: string) => {\n await getDirectLoyaltyAxiosClient(token).delete(`membership/connected-cards/${id}`);\n return true;\n};\n\n/**\n * Add household member\n * (Order extracard)\n */\nconst addHouseholdMember = async (personalNumber: string, token: string) => {\n const request: AddHouseholdMemberRequest = { socialSecurityNumber: personalNumber };\n await getDirectLoyaltyAxiosClient(token, [addMemberResponseInterceptor]).post(\n 'membership/household',\n request,\n {\n params: { 'api-version': 'v1' },\n },\n );\n\n return true;\n};\n\nexport interface AutoVoucherStatusResponse {\n // householdmmid: number;\n mmid: number;\n // lastPurchasedVoucherValue: number;\n // createdAt: Date;\n // updatedAt: Date;\n}\n\nexport interface AutoVoucherStatus {\n status: 'On' | 'Off';\n}\nexport interface ApiBonusGroup {\n pointEarnings: number;\n monetaryEarnings: number;\n}\n\nexport interface ApiBonus {\n points: number;\n monetaryWorth: number;\n}\n\nexport interface ApiAutoCheckStatus {\n mmid: number;\n}\n\nexport const externalLoyaltyApi = {\n getExpiringPoints,\n getVoucherDetails,\n getPreviousMonthBonus,\n getPointsMatrixStructureLevel,\n getPointsSummary,\n getPointsSummaryYearly,\n getTransactionsHistoryByDates,\n getMonthTransactionsHistory,\n getMonthMonetaryTransactionsHistory,\n getPointBalance,\n purchaseOffer,\n getHouseholdMembers,\n getMembershipNames,\n getEligibleForBonus,\n getAutoVoucherStatus,\n activateAutoVoucher,\n deactivateAutoVoucher,\n getConnectedCards,\n deleteConnectedCard,\n addHouseholdMember,\n};\n","import type { TransactionHistory, TransactionHistoryApi } from '../../myCoop/myPoints/models';\nimport { getAuthToken } from '../api/auth/getAuthToken';\nimport { externalLoyaltyApi } from '../api/loyalty/externalLoyaltyApi';\n\nconst getExpiringPoints = async (months: number) => {\n const identity = await getAuthToken();\n return externalLoyaltyApi.getExpiringPoints(months, identity.token);\n};\n\nconst getEligibleForBonus = async () => {\n const identity = await getAuthToken();\n const result = await externalLoyaltyApi.getEligibleForBonus(identity.token);\n return result;\n};\n\nconst getHouseholdMembers = async () => {\n const identity = await getAuthToken();\n const details = await externalLoyaltyApi.getHouseholdMembers(identity.token);\n return details;\n};\n\nconst getPointBalance = async () => {\n const identity = await getAuthToken();\n const pointBalance = await externalLoyaltyApi.getPointBalance(identity.token);\n return pointBalance;\n};\n\nconst getPreviousMonthBonus = async () => {\n const identity = await getAuthToken();\n const previousMonthBonus = await externalLoyaltyApi.getPreviousMonthBonus(identity.token);\n return previousMonthBonus;\n};\n\nconst getPointsMatrixStructureLevel = async () => {\n const identity = await getAuthToken();\n const pointsMatrixStructureLevel = await externalLoyaltyApi.getPointsMatrixStructureLevel(\n identity.token,\n );\n return pointsMatrixStructureLevel;\n};\n\nconst getPointsSummary = async () => {\n const identity = await getAuthToken();\n const pointsSummary = await externalLoyaltyApi.getPointsSummary(identity.token);\n return pointsSummary;\n};\n\nconst getPointTypeTranslated = (pointType: number) => {\n if (pointType === 1) {\n return 'CoopStorePointsEarned';\n }\n if (pointType === 2) {\n return 'PaymentPointsInternal';\n }\n if (pointType === 3) {\n return 'CampaignPoints';\n }\n if (pointType === 4) {\n return 'GamificationPoints';\n }\n if (pointType === 5) {\n return 'PartnerPoints';\n }\n if (pointType === 6) {\n return 'ManualPoints';\n }\n if (pointType === 7) {\n return 'HouseholdChangeMerge';\n }\n if (pointType === 8) {\n return 'CoopStorePointsSpent';\n }\n if (pointType === 9) {\n return 'PartnerPointsSpent';\n }\n if (pointType === 10) {\n return 'ExpirePoints';\n }\n if (pointType === 11) {\n return 'HouseholdChangeSplit';\n }\n if (pointType === 12) {\n return 'PaymentPointsExternal';\n }\n if (pointType === 13) {\n return 'ExchangePoints';\n }\n if (pointType === 14) {\n return 'CoopXtraPoints';\n }\n\n return 'NotSet';\n};\n\n// Poänguttag\nconst getPointWithdrawalTransactionsHistory = async (\n fromDate: Date,\n toDate?: Date,\n page?: number,\n size?: number,\n) => {\n const identity = await getAuthToken();\n\n if (toDate) {\n const request: DateTransactionsRequest = {\n from: fromDate,\n to: toDate,\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_USAGES',\n };\n\n const history: TransactionHistory[] = (\n await externalLoyaltyApi.getTransactionsHistoryByDates(identity.token, request)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return history;\n }\n\n const request: TransactionsRequest = {\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_USAGES',\n };\n const monthTrans: TransactionHistory[] = (\n await externalLoyaltyApi.getMonthTransactionsHistory(identity.token, request, fromDate)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return monthTrans;\n};\n\nconst getPointTransactionsHistory = async (\n fromDate: Date,\n toDate?: Date,\n page?: number,\n size?: number,\n) => {\n const identity = await getAuthToken();\n if (toDate) {\n const request: DateTransactionsRequest = {\n from: fromDate,\n to: toDate,\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_PURCHASE_HISTORY',\n };\n const history: TransactionHistory[] = (\n await externalLoyaltyApi.getTransactionsHistoryByDates(identity.token, request)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return history;\n }\n\n // If no toDate, then this current month\n const request: TransactionsRequest = {\n page: page ?? 0,\n size: size ?? 5,\n filter: 'POINT_PURCHASE_HISTORY',\n };\n const history: TransactionHistory[] = (\n await externalLoyaltyApi.getMonthTransactionsHistory(identity.token, request, fromDate)\n ).map((trans: TransactionHistoryApi) => {\n return {\n ...trans,\n pointTypeTranslated: getPointTypeTranslated(trans.pointType),\n };\n });\n\n return history;\n};\n\n// Köphistorik\nconst getMonetaryPurchaseTransactionsHistory = async (\n fromDate: Date,\n page?: number,\n size?: number,\n) => {\n const identity = await getAuthToken();\n return externalLoyaltyApi.getMonthMonetaryTransactionsHistory(\n identity.token,\n fromDate,\n page,\n size,\n );\n};\n\nconst getPointsSummaryYearly = async () => {\n const identity = await getAuthToken();\n const pointsSummaryYearly = await externalLoyaltyApi.getPointsSummaryYearly(identity.token);\n return pointsSummaryYearly;\n};\n\nconst cachedVouchers: { [key: string]: VoucherDetailsResponse } = {};\n\nconst getVoucherDetails = async (id: string) => {\n if (cachedVouchers[id]) {\n return cachedVouchers[id];\n }\n\n const identity = await getAuthToken();\n const voucher = await externalLoyaltyApi.getVoucherDetails(id, identity.token);\n cachedVouchers[id] = voucher;\n return voucher;\n};\n\nconst purchaseOffer = async (offerId: number, specialCredentials: PurchaseOfferRequest) => {\n const identity = await getAuthToken();\n const offer = await externalLoyaltyApi.purchaseOffer(\n offerId,\n specialCredentials,\n identity.token,\n );\n return offer;\n};\n\nconst autoVoucherStatus = async () => {\n const identity = await getAuthToken();\n // If voucher has mmid, then it is on\n const voucherResult = await externalLoyaltyApi.getAutoVoucherStatus(identity.token);\n return voucherResult?.mmid !== 0 ? 'On' : 'Off';\n};\n\nconst activateAutoVoucher = async () => {\n const identity = await getAuthToken();\n await externalLoyaltyApi.activateAutoVoucher(identity.token);\n return true;\n};\n\nconst deactivateAutoVoucher = async () => {\n const identity = await getAuthToken();\n await externalLoyaltyApi.deactivateAutoVoucher(identity.token);\n return true;\n};\n\nconst getConnectedCards = async () => {\n const identity = await getAuthToken();\n const cards = await externalLoyaltyApi.getConnectedCards(identity.token);\n if (cards === null) {\n return [];\n }\n return cards;\n};\n\nconst deleteConnectedCard = async (id: string) => {\n const identity = await getAuthToken();\n const success = await externalLoyaltyApi.deleteConnectedCard(id, identity.token);\n return success;\n};\n\nconst addHouseholdMember = async (personalNumber: string) => {\n const identity = await getAuthToken();\n const success = await externalLoyaltyApi.addHouseholdMember(personalNumber, identity.token);\n return success;\n};\n\nconst getMembershipNames = async () => {\n const identity = await getAuthToken();\n const membershipNames = await externalLoyaltyApi.getMembershipNames(identity.token);\n return membershipNames?.associations;\n};\n\nconst pointshopFlow = {\n getExpiringPoints,\n getEligibleForBonus,\n getHouseholdMembers,\n getPointBalance,\n getPreviousMonthBonus,\n getPointsMatrixStructureLevel,\n getPointsSummary,\n getPointsSummaryYearly,\n getPointWithdrawalTransactionsHistory,\n getPointTransactionsHistory,\n getMonetaryPurchaseTransactionsHistory,\n getVoucherDetails,\n purchaseOffer,\n autoVoucherStatus,\n activateAutoVoucher,\n deactivateAutoVoucher,\n getConnectedCards,\n deleteConnectedCard,\n addHouseholdMember,\n getMembershipNames,\n};\n\nexport default pointshopFlow;\n"],"names":["accessToken","errorInterceptors","createDirectApiClient","baseURL","appConfig","coopSettings","serviceAccess","extApimUrl","params","headers","Accept","extApimSubscriptionKey","Authorization","undefined","voucherApiUrl","transactionResponseInterceptor","response","data","status","title","toString","addMemberResponseInterceptor","msg","error","purchaseOfferResponseInterceptor","errorCode","autoStatusResponseInterceptor","toggleCheckResponseInterceptor","externalLoyaltyApi","token","request","post","err","code","fromDate","fromYear","getFullYear","fromMonth","getMonth","getPointTypeTranslated","pointType","cachedVouchers","getExpiringPoints","months","identity","getAuthToken","get","getEligibleForBonus","eligibleForPoints","getHouseholdMembers","members","getPointBalance","getPreviousMonthBonus","getPointsMatrixStructureLevel","getPointsSummary","getPointsSummaryYearly","getPointWithdrawalTransactionsHistory","toDate","page","size","from","to","filter","map","trans","pointTypeTranslated","getPointTransactionsHistory","getMonetaryPurchaseTransactionsHistory","getVoucherDetails","id","voucher","encodeURI","purchaseOffer","offerId","specialCredentials","result","delete","autoVoucherStatus","voucherResult","mmid","activateAutoVoucher","deactivateAutoVoucher","getConnectedCards","cards","deleteConnectedCard","addHouseholdMember","personalNumber","socialSecurityNumber","getMembershipNames","membershipNames","associations"],"sourceRoot":""}