{ "version": 3, "sources": ["apps/vendor-center-client/src/app/shared/to-camel-case/to-camel-case.ts", "apps/vendor-center-client/src/app/core/accounts-api/account.model.ts", "apps/vendor-center-client/src/app/core/accounts-api/activation.ts", "apps/vendor-center-client/src/app/core/accounts-api/accounts.api.service.ts", "apps/vendor-center-client/src/app/core/accounts.service.ts"], "sourcesContent": ["export function toCamelCase(s: string): string {\n return s.replace(/(_\\w)/g, (m) => {\n return m[1].toUpperCase();\n });\n}\n", "import { toCamelCase } from '../../shared/to-camel-case/to-camel-case';\nimport { AccountApiInterface, AccountNapDataApiInterface } from './account.api.interface';\n\nexport class AccountNapData {\n companyName: string;\n id: string;\n address: string;\n\n static fromApiModel(model: AccountNapDataApiInterface): AccountNapData {\n const accountNapData = new AccountNapData();\n for (const key in model) {\n if (Object.prototype.hasOwnProperty.call(model, key)) {\n accountNapData[toCamelCase(key)] = model[key];\n }\n }\n return accountNapData;\n }\n}\n\nexport class Account {\n id: string;\n partnerId: string;\n\n companyName: string;\n address: string;\n state: string;\n country: string;\n website: string;\n zip: string;\n created: Date;\n updated: Date;\n contactEmail: string;\n\n static fromApiModel(model: AccountApiInterface): Account {\n const account = new Account();\n for (const key in model) {\n if (Object.prototype.hasOwnProperty.call(model, key)) {\n account[toCamelCase(key)] = model[key];\n }\n }\n return account;\n }\n}\n", "export class AddonActivation {\n businessId: string;\n appId: string;\n addonId: string;\n activated: Date;\n deactivated: Date;\n lastUpdated: Date;\n\n constructor(data: any) {\n Object.assign(this, data);\n if (this.activated && !this.deactivated) {\n this.lastUpdated = this.activated;\n } else if (this.activated && this.deactivated) {\n this.lastUpdated = this.deactivated;\n }\n }\n}\n", "import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable, of as observableOf } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { AuthService } from '../auth/auth.service';\nimport { AccountListApiRequestInterface, AccountNapDataApiInterface } from './account.api.interface';\nimport { Account } from './account.model';\nimport { AddonActivation } from './activation';\n\nconst API_URL = '/api/v1/account/';\nconst AJAX_URL = '/ajax/account-group/';\n\ninterface ListAddonActivationsResponse {\n activations: AddonActivation[];\n}\n\n@Injectable()\nexport class AccountsApiService {\n private nextUrl: string;\n\n constructor(\n private httpClient: HttpClient,\n private auth: AuthService,\n @Inject('AccountsAPIHost') private AccountsAPIHost: string,\n ) {}\n\n public get hasMore(): boolean {\n return Boolean(this.nextUrl);\n }\n\n get BASE_URL(): string {\n return `${this.AccountsAPIHost}/accounts.v1.AccountsService`;\n }\n\n listAddonActivations(appId: string, accountId: string): Observable {\n const url = `${this.BASE_URL}/ListAddonActivations`;\n return this.httpClient\n .post(url, { appId: appId, businessId: accountId }, { withCredentials: true })\n .pipe(\n catchError((err) => {\n if (err.status === 404) {\n return [];\n }\n throw err;\n }),\n map((data) => {\n if (data && data.activations) {\n return data.activations.map((activation) => new AddonActivation(activation));\n }\n return [];\n }),\n );\n }\n\n fetchAccount(appId: string, accountId: string): Observable {\n const url = `${API_URL}${accountId}`;\n return this.call(url, appId).pipe(\n map((data) => {\n return Account.fromApiModel(data.data);\n }),\n );\n }\n\n fetch(appId: string, partnerId?: string): Observable {\n this.nextUrl = null;\n let url;\n if (partnerId) {\n url = `${API_URL}${partnerId}/`;\n } else url = API_URL;\n return this.call(url, appId).pipe(\n tap((data) => (this.nextUrl = data.next_url)),\n map((data) => this.extractData(data)),\n );\n }\n\n fetchNext(appId: string): Observable {\n if (!this.nextUrl) {\n throw new Error('No next URL set. There is either no more data, or you need to call fetch first.');\n }\n\n // Right now this API is always served on the same domain as the URL, so we strip the host\n // from the nextUrl using this little trick to keep localhost to test proxying working\n const parser = document.createElement('a');\n parser.href = this.nextUrl;\n const nextUrl = parser.pathname + parser.search;\n\n return this.call(nextUrl, appId).pipe(\n tap((data) => (this.nextUrl = data.next_url)),\n map((data) => this.extractData(data)),\n );\n }\n\n public accountGroupNapDataGetMulti(accountGroupIds: string[]): Observable {\n let params: string;\n if (accountGroupIds && accountGroupIds.length) {\n params = accountGroupIds.join(',');\n } else {\n return observableOf([]);\n }\n return this.httpClient.get(`${AJAX_URL}get-multi-nap-data`, {\n params: { account_group_ids: params },\n headers: { 'Content-Type': 'application/json' },\n withCredentials: true,\n });\n }\n\n private call(url: string, appId: string): Observable {\n return this.httpClient.get(url, {\n params: { appId: appId },\n withCredentials: true,\n });\n }\n\n private extractData(data: any): Account[] {\n const accounts = [];\n for (const account of data.data) {\n accounts.push(Account.fromApiModel(account));\n }\n return accounts;\n }\n}\n", "import { map, mergeMap, scan, shareReplay, tap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\n\nimport { AddonActivation } from './accounts-api/activation';\nimport { Account, AccountNapData } from './accounts-api/account.model';\nimport { AccountsApiService } from './accounts-api/accounts.api.service';\nimport { AccountNapDataApiInterface } from './accounts-api/account.api.interface';\n\ninterface AccountResponse {\n accounts: Account[];\n appId: string;\n}\n\n@Injectable()\nexport class AccountService {\n private appId: string;\n private partnerId: string;\n private accountsMap: Observable<{ [appId: string]: Account[] }>;\n private responses: Observable;\n private requests: ReplaySubject<{ appId: string; partnerId: string; isLoadMore: boolean }> = new ReplaySubject(1);\n\n private loading$$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(private accountsApiService: AccountsApiService) {\n this.responses = this.requests.pipe(\n mergeMap((request) => {\n this.loading$$.next(true);\n if (request.isLoadMore && this.hasMore) {\n return this.accountsApiService.fetchNext(request.appId).pipe(\n map((accounts) => {\n return { accounts: accounts, appId: request.appId } as AccountResponse;\n }),\n tap(() => this.loading$$.next(false)),\n );\n } else {\n return this.accountsApiService.fetch(request.appId, request.partnerId).pipe(\n map((accounts) => {\n return { accounts: accounts, appId: request.appId } as AccountResponse;\n }),\n tap(() => this.loading$$.next(false)),\n );\n }\n }),\n );\n\n this.accountsMap = this.responses.pipe(\n scan((currentMap, accountsResponse: AccountResponse) => {\n if (!accountsResponse || accountsResponse.accounts.length === 0) {\n return currentMap;\n }\n\n const appId = accountsResponse.appId;\n if (!currentMap[appId] || currentMap[appId].length === 0) {\n currentMap[appId] = accountsResponse.accounts;\n }\n\n // Replace any accounts that may already be in the list (we\n // refreshed them) exist.\n const accountMap = {};\n accountsResponse.accounts.forEach((account) => {\n accountMap[account.id] = account;\n });\n\n currentMap[appId] = currentMap[appId].map((account) => {\n if (accountMap[account.id]) {\n const replacementAccount = accountMap[account.id];\n delete accountMap[account.id];\n return replacementAccount;\n }\n return account;\n });\n\n // Add in additional accounts\n const additionalAccounts = Object.values(accountMap);\n currentMap[appId] = currentMap[appId].concat(additionalAccounts);\n\n return currentMap;\n }, {}),\n shareReplay(1),\n );\n }\n\n public get loading(): boolean {\n return this.loading$$.getValue();\n }\n\n public get loading$(): Observable {\n return this.loading$$.asObservable();\n }\n\n public get hasMore(): boolean {\n return this.accountsApiService.hasMore;\n }\n\n load(appId: string, partnerId?: string): Observable {\n const accounts = this.accountsMap.pipe(\n map((accountsMap) => {\n if (this.partnerId) {\n return accountsMap[this.appId]\n ? accountsMap[this.appId].filter((account) => account.partnerId === this.partnerId)\n : [];\n } else {\n return accountsMap[this.appId] || [];\n }\n }),\n );\n\n if (appId !== this.appId || partnerId !== this.partnerId) {\n this.appId = appId;\n this.partnerId = partnerId;\n this.requests.next({ appId: appId, partnerId: partnerId, isLoadMore: false });\n }\n\n return accounts;\n }\n\n loadMore(): void {\n this.requests.next({ appId: this.appId, partnerId: this.partnerId, isLoadMore: true });\n }\n\n getAccount(appId: string, accountId: string): Observable {\n return this.accountsApiService.fetchAccount(appId, accountId).pipe(shareReplay(1));\n }\n\n listActiveAddons(appId: string, accountId: string): Observable {\n const addonActivations = this.accountsApiService.listAddonActivations(appId, accountId);\n return addonActivations.pipe(\n map((activations) => activations.filter((activation) => !activation.deactivated)),\n shareReplay(1),\n );\n }\n\n getMulti(accountGroupIds: string[]): Observable {\n return this.accountsApiService\n .accountGroupNapDataGetMulti(accountGroupIds)\n .pipe(\n map((resp: AccountNapDataApiInterface[]) =>\n resp.map((napData: AccountNapDataApiInterface) => AccountNapData.fromApiModel(napData)),\n ),\n );\n }\n}\n"], "mappings": "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", "names": ["toCamelCase", "s", "replace", "m", "toUpperCase", "AccountNapData", "fromApiModel", "model", "accountNapData", "key", "Object", "prototype", "hasOwnProperty", "call", "toCamelCase", "Account", "account", "AddonActivation", "constructor", "data", "Object", "assign", "activated", "deactivated", "lastUpdated", "API_URL", "AJAX_URL", "AccountsApiService", "constructor", "httpClient", "auth", "AccountsAPIHost", "hasMore", "Boolean", "nextUrl", "BASE_URL", "listAddonActivations", "appId", "accountId", "url", "post", "businessId", "withCredentials", "pipe", "catchError", "err", "status", "map", "data", "activations", "activation", "AddonActivation", "fetchAccount", "call", "Account", "fromApiModel", "fetch", "partnerId", "tap", "next_url", "extractData", "fetchNext", "Error", "parser", "document", "createElement", "href", "pathname", "search", "accountGroupNapDataGetMulti", "accountGroupIds", "params", "length", "join", "observableOf", "get", "account_group_ids", "headers", "accounts", "account", "push", "\u0275\u0275inject", "HttpClient", "AuthService", "factory", "\u0275fac", "_AccountsApiService", "AccountService", "constructor", "accountsApiService", "requests", "ReplaySubject", "loading$$", "BehaviorSubject", "responses", "pipe", "mergeMap", "request", "next", "isLoadMore", "hasMore", "fetchNext", "appId", "map", "accounts", "tap", "fetch", "partnerId", "accountsMap", "scan", "currentMap", "accountsResponse", "length", "accountMap", "forEach", "account", "id", "replacementAccount", "additionalAccounts", "Object", "values", "concat", "shareReplay", "loading", "getValue", "loading$", "asObservable", "load", "filter", "loadMore", "getAccount", "accountId", "fetchAccount", "listActiveAddons", "listAddonActivations", "activations", "activation", "deactivated", "getMulti", "accountGroupIds", "accountGroupNapDataGetMulti", "resp", "napData", "AccountNapData", "fromApiModel", "\u0275\u0275inject", "AccountsApiService", "factory", "\u0275fac", "_AccountService"] }