@veloceapps/sdk 11.0.0-25 → 11.0.0-27

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/services/configuration-runtime.service.ts","../../../../libs/sdk/core/utils/transaction-item.utils.ts","../../../../libs/sdk/core/utils/transaction-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/types/flow-customization.types.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/services/flow-info.service.ts","../../../../libs/sdk/core/services/sales-transaction.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/services/flow-state.service.ts","../../../../libs/sdk/core/services/flow-state-configuration.service.ts","../../../../libs/sdk/core/services/integration.state.ts","../../../../libs/sdk/core/services/product-images.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-state.service.ts","../../../../libs/sdk/core/modules/configuration/configuration.module.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.ts","../../../../libs/sdk/core/services/catalog-products.service.ts","../../../../libs/sdk/core/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/core.module.ts","../../../../libs/sdk/core/directives/primeng-calendar.directive.ts","../../../../libs/sdk/core/directives/directives.module.ts","../../../../libs/sdk/core/pipes/date.pipe.ts","../../../../libs/sdk/core/pipes/number.pipe.ts","../../../../libs/sdk/core/pipes/price.pipe.ts","../../../../libs/sdk/core/pipes/action-code.pipe.ts","../../../../libs/sdk/core/pipes/pipes.module.ts","../../../../libs/sdk/core/veloceapps-sdk-core.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { UIDefinitionContainer, UIDefinitionProps } from '@veloceapps/core';\n\n@Injectable()\nexport class ConfigurationRuntimeService {\n public uiDefinitionContainer: UIDefinitionContainer | null = null;\n\n public get uiDefinitionProps(): UIDefinitionProps {\n return this.uiDefinitionContainer?.source.properties ?? {};\n }\n\n public reset(): void {\n this.uiDefinitionContainer = null;\n }\n}\n","import { isDefined, SalesTransactionItem, UUID } from '@veloceapps/core';\nimport { flatten } from 'lodash';\n\nexport const findTransactionItem = (id: string, items: SalesTransactionItem[]): SalesTransactionItem | undefined => {\n return findTransactionItemWithComparator(items, (ti: SalesTransactionItem) => ti.id === id);\n};\n\nexport const findTransactionItemWithComparator = (\n items: SalesTransactionItem[],\n comparator: (ti: SalesTransactionItem) => boolean,\n): SalesTransactionItem | undefined => {\n let currentLevel = items;\n\n while (currentLevel.length) {\n const found = currentLevel.find(comparator);\n\n if (found) {\n return found;\n }\n\n currentLevel = flatten(currentLevel.map(parent => parent.children));\n }\n\n return;\n};\n\nexport const insertTransactionItem = (\n item: SalesTransactionItem,\n parentId: string,\n toInsert: SalesTransactionItem,\n): SalesTransactionItem => {\n const insertData = item.id === parentId ? [toInsert] : [];\n\n return {\n ...item,\n children: [\n ...insertData,\n ...item.children.map(ti => {\n return insertTransactionItem(ti, parentId, toInsert);\n }),\n ],\n };\n};\n\nexport const removeTransactionItem = (item: SalesTransactionItem, idToRemove: string): SalesTransactionItem => {\n return {\n ...item,\n children: item.children\n .map(ti => {\n if (ti.id === idToRemove) {\n return;\n } else if (ti.children.length) {\n return removeTransactionItem(ti, idToRemove);\n }\n\n return ti;\n })\n .filter(isDefined),\n };\n};\n\nexport const replaceTransactionItem = (\n item: SalesTransactionItem,\n replaceTo: SalesTransactionItem,\n): SalesTransactionItem => {\n if (item.id === replaceTo.id) {\n return { ...replaceTo };\n }\n\n return {\n ...item,\n children: item.children.map(ti => replaceTransactionItem(ti, replaceTo)),\n };\n};\n\nexport const generateTransactionItem = (productId: string): SalesTransactionItem => {\n return {\n id: UUID.UUID(),\n productId,\n } as SalesTransactionItem;\n};\n","import { SalesTransactionItem } from '@veloceapps/core';\nimport { insertTransactionItem, removeTransactionItem, replaceTransactionItem } from './transaction-item.utils';\n\nexport class TransactionItemWorker {\n public ti: SalesTransactionItem;\n\n constructor(src: SalesTransactionItem) {\n this.ti = { ...src };\n }\n\n public insert(parentId: string, toInsert: SalesTransactionItem): TransactionItemWorker {\n return new TransactionItemWorker(insertTransactionItem(this.ti, parentId, toInsert));\n }\n\n public remove(id: string): TransactionItemWorker {\n return new TransactionItemWorker(removeTransactionItem(this.ti, id));\n }\n\n public replace(toReplace: SalesTransactionItem): TransactionItemWorker {\n return new TransactionItemWorker(replaceTransactionItem(this.ti, toReplace));\n }\n}\n","import { UIDefinition, UIDefinitionMetadata } from '@veloceapps/core';\nimport { omit } from 'lodash';\n\nexport function extractMetadata(uiDefinition: UIDefinition): UIDefinitionMetadata {\n return omit<UIDefinition, keyof Omit<UIDefinition, keyof UIDefinitionMetadata>>(uiDefinition, [\n 'children',\n 'pages',\n 'components',\n ]);\n}\n","import { InjectionToken } from '@angular/core';\nimport {\n ConfigurationProcessor,\n TemplateComponentWithAttachments,\n UIDefinitionContainer,\n UITemplate,\n} from '@veloceapps/core';\nimport { Observable } from 'rxjs';\n\nexport const FLOW_CUSTOMIZATION = new InjectionToken<FlowCustomization>('FLOW_CUSTOMIZATION');\n\nexport interface FlowCustomization {\n getUiDefinition?(productId: string): Observable<UIDefinitionContainer | null>;\n\n getTemplates?(): Observable<UITemplate[]>;\n getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;\n\n getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport {\n ConfigurationSettings,\n DEFAULT_ACTION_CODE_LABELS,\n DEFAULT_CURRENCY_ISO_CODE,\n DEFAULT_CURRENCY_SYMBOL,\n DEFAULT_DATE_FORMAT,\n DEFAULT_DECIMALS_COUNT,\n DEFAULT_DECIMAL_SEPARATOR,\n DEFAULT_THOUSANDS_SEPARATOR,\n Flow,\n getSupportedDateFormats,\n parseJsonSafely,\n RuntimeConfigurationSettings,\n RuntimeCurrencySettings,\n ShoppingCartSetting,\n ShoppingCartSettings,\n validateDateFormat,\n} from '@veloceapps/core';\nimport { Dictionary, uniqBy } from 'lodash';\nimport { BehaviorSubject, map, Observable, tap } from 'rxjs';\nimport { FormattingSettings } from '../types';\n\n@Injectable()\nexport class RuntimeSettingsService {\n private configurationSettings$ = new BehaviorSubject<RuntimeConfigurationSettings>({});\n private currencySettings$ = new BehaviorSubject<RuntimeCurrencySettings>({\n iso: DEFAULT_CURRENCY_ISO_CODE,\n symbol: DEFAULT_CURRENCY_SYMBOL,\n });\n private formattingSettings!: FormattingSettings;\n private shoppingCartSettings$ = new BehaviorSubject<ShoppingCartSetting[]>([]);\n\n constructor(private configurationSettingsApiService: ConfigurationSettingsApiService) {}\n\n public create(): Observable<void> {\n return this.configurationSettingsApiService.fetchSettings().pipe(\n map(settings => this.parseConfigurationSettings(settings)),\n tap(configurationSettings => {\n this.configurationSettings$.next(configurationSettings);\n this.addShoppingCartSettings(configurationSettings['shopping-cart'] ?? []);\n this.formattingSettings = this.getFormattingSettings();\n }),\n map(() => undefined),\n );\n }\n\n public initCurrency(iso?: string): void {\n if (iso) {\n const symbol = this.getCurrencySymbol('en-US', iso);\n this.currencySettings$.next({ iso, symbol });\n if (this.formattingSettings) {\n this.formattingSettings.currencySymbol = symbol;\n }\n }\n }\n\n public getFormattingSettings(): FormattingSettings {\n if (this.formattingSettings) {\n return this.formattingSettings;\n }\n\n const shoppingCartSettings = this.getConfigurationSettings()['shopping-cart']?.reduce((acc, setting) => {\n return { ...acc, [setting.id]: setting.properties };\n }, {} as ShoppingCartSettings);\n const currencySettings = this.getCurrencySettings();\n const dateFormat =\n (validateDateFormat(shoppingCartSettings?.DATE_FORMAT ?? '') && shoppingCartSettings?.DATE_FORMAT) ||\n DEFAULT_DATE_FORMAT;\n const decimalSeparator = shoppingCartSettings?.DECIMAL_SEPARATOR;\n const thousandsSeparator = shoppingCartSettings?.THOUSANDS_SEPARATOR;\n // the number of decimal places can be 0\n const priceScale = shoppingCartSettings?.PRICE_SCALE;\n const decimalsCount =\n priceScale !== null && priceScale !== '' && !isNaN(Number(priceScale)) && Number(priceScale) >= 0\n ? Number(priceScale)\n : DEFAULT_DECIMALS_COUNT;\n\n const actionCodeSettings = shoppingCartSettings?.STATUS_LABEL;\n\n return {\n currencySymbol: currencySettings.symbol,\n dateFormats: getSupportedDateFormats(dateFormat),\n decimalsCount,\n decimalSeparator:\n decimalSeparator !== undefined && ['.', ','].includes(decimalSeparator)\n ? decimalSeparator\n : DEFAULT_DECIMAL_SEPARATOR,\n // thousands separator can be a blank value, so it can also be null\n thousandsSeparator:\n thousandsSeparator !== undefined && ['.', ',', '', null].includes(thousandsSeparator)\n ? thousandsSeparator || ''\n : DEFAULT_THOUSANDS_SEPARATOR,\n actionCodeLabels: actionCodeSettings?.length\n ? actionCodeSettings.reduce(\n (result, setting) => ({ ...result, [setting.status_label]: setting.custom_label }),\n {},\n )\n : DEFAULT_ACTION_CODE_LABELS,\n };\n }\n\n public getConfigurationSettings(): RuntimeConfigurationSettings {\n return this.configurationSettings$.value;\n }\n\n public getShoppingCartSettings(): ShoppingCartSetting[] {\n return this.shoppingCartSettings$.value;\n }\n\n public getCurrencySettings(): RuntimeCurrencySettings {\n return this.currencySettings$.value;\n }\n\n private parseConfigurationSettings(settings: ConfigurationSettings[]): RuntimeConfigurationSettings {\n return settings.reduce((acc: RuntimeConfigurationSettings, setting) => {\n switch (setting.key) {\n case 'shopping-cart':\n acc['shopping-cart'] = parseJsonSafely<ShoppingCartSetting[]>(setting.value, []);\n break;\n case 'navigation':\n acc.navigation = parseJsonSafely<Dictionary<boolean>>(setting.value, {});\n break;\n case 'flows':\n acc.flows = parseJsonSafely<Flow[]>(setting.value, []);\n break;\n default:\n acc[setting.key] = setting.value;\n }\n\n return acc;\n }, {});\n }\n\n private getCurrencySymbol = (locale: string, currency: string) => {\n return (0)\n .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })\n .replace(/\\d/g, '')\n .trim();\n };\n\n public addShoppingCartSettings(settings: ShoppingCartSetting[]) {\n // uniqBy removes items with the biggest index\n const newSettings = uniqBy([...settings, ...this.shoppingCartSettings$.value], 'id');\n this.shoppingCartSettings$.next(newSettings);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { UITemplatesApiService } from '@veloceapps/api/v2';\nimport {\n Flow,\n FlowContext,\n FlowContextMode,\n FlowTemplatesMap,\n SalesforceIdUtils,\n UITemplate,\n UITemplateType,\n} from '@veloceapps/core';\nimport { BehaviorSubject, forkJoin, map, Observable, of, switchMap } from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../types/flow-customization.types';\nimport { RuntimeSettingsService } from './runtime-settings.service';\n\n@Injectable()\nexport class FlowInfoService {\n public flow$: Observable<Flow | null>;\n public templates$: Observable<{ [key in UITemplateType]?: UITemplate }>;\n\n public get flow(): Flow {\n if (!this.flowSubj$.value) {\n throw new Error(`Flow not initialized yet`);\n }\n\n return this.flowSubj$.value;\n }\n\n public get isFlowInitialized(): boolean {\n return Boolean(this.flowSubj$.value);\n }\n\n public get context(): FlowContext {\n if (!this.contextSubj$.value) {\n throw new Error('Context is not initialized yet!');\n }\n\n return { ...this.contextSubj$.value };\n }\n\n public get templates() {\n return this.templatesSubj$.value;\n }\n\n public get isFlowEngineInitialized$(): Observable<boolean> {\n return this.templates$.pipe(map(v => Boolean(v.FLOW_ENGINE)));\n }\n\n public get isStateful(): boolean {\n return !!this.flow?.properties.stateful;\n }\n\n private readonly defaultTemplates = {\n flowEngine: 'Flow Engine',\n };\n private flowSubj$ = new BehaviorSubject<Flow | null>(null);\n private templatesSubj$ = new BehaviorSubject<{ [key in UITemplateType]?: UITemplate }>({});\n private contextSubj$ = new BehaviorSubject<FlowContext | null>(null);\n\n constructor(\n private runtimeSettingsService: RuntimeSettingsService,\n private templatesApiService: UITemplatesApiService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.flow$ = this.flowSubj$.asObservable();\n this.templates$ = this.templatesSubj$.asObservable();\n }\n\n public reset(): void {\n this.flowSubj$.next(null);\n this.templatesSubj$.next({});\n this.contextSubj$.next(null);\n }\n\n public init$(flowId: string, routeQueryParams: Params): Observable<void> {\n return this.initFlow$(flowId, routeQueryParams).pipe(switchMap(() => this.initFlowTemplates$()));\n }\n\n public updateContext(update: Partial<FlowContext>): void {\n this.contextSubj$.next({\n ...this.context,\n ...update,\n });\n }\n\n private initFlow$(flowId: string, routeQueryParams: Params): Observable<void> {\n const flow = this.runtimeSettingsService.getConfigurationSettings()['flows']?.find(({ id }) => flowId === id);\n if (!flow) {\n this.flowSubj$.next(null);\n throw new Error(`Flow with flowId=${flowId} is not defined`);\n }\n\n const headerId = routeQueryParams['headerId'];\n if (typeof headerId !== 'string') {\n throw new Error(`Please provide 'headerId'`);\n }\n\n const mode = this.getFlowContextMode(headerId);\n\n // Restrict if mode is not defined\n if (mode == null) {\n throw new Error('Mode is undefined');\n }\n\n this.contextSubj$.next({\n ...flow.properties.queryParams,\n ...routeQueryParams,\n mode,\n } as FlowContext);\n\n this.flowSubj$.next(flow);\n return of(undefined);\n }\n\n private initFlowTemplates$(): Observable<void> {\n return forkJoin([\n this.templatesApiService.fetchTemplates$(),\n this.customizationService?.getTemplates?.() ?? of([]),\n ]).pipe(\n map(([templates, localTemplates]) => {\n const newValue: { [key in UITemplateType]?: UITemplate } = {};\n Object.entries({ ...this.defaultTemplates, ...(this.flow?.properties.templates ?? {}) }).forEach(\n ([key, name]) => {\n const type = this.remapTemplateName(key);\n\n if (type) {\n newValue[type] =\n localTemplates.find(template => template.name === name && template.type === type) ??\n templates.find(template => template.name === name && template.type === type);\n }\n },\n );\n\n this.templatesSubj$.next(newValue);\n }),\n );\n }\n\n private remapTemplateName(templateType: string): UITemplateType | undefined {\n switch (templateType as keyof typeof this.defaultTemplates) {\n case 'flowEngine':\n return UITemplateType.FLOW_ENGINE;\n default:\n break;\n }\n\n switch (templateType as keyof FlowTemplatesMap) {\n case 'assets':\n case 'shoppingCart':\n // No separate Assets template at the moment\n return UITemplateType.SHOPPING_CART;\n case 'catalog':\n return UITemplateType.CATALOG;\n case 'guidedSelling':\n return UITemplateType.GUIDED_SELLING;\n case 'flowHeader':\n return UITemplateType.FLOW_HEADER;\n default:\n break;\n }\n\n return undefined;\n }\n\n private getFlowContextMode(headerId: string): FlowContextMode | undefined {\n const objectName = SalesforceIdUtils.getSfObjectNameById(headerId);\n if (!objectName) {\n return;\n }\n\n return objectName.toUpperCase() as FlowContextMode;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SalesTransactionApiService } from '@veloceapps/api/v2';\nimport { isDefined, SalesTransaction, SalesTransactionItem } from '@veloceapps/core';\nimport { BehaviorSubject, filter, map, Observable, tap } from 'rxjs';\nimport { FlowInfoService } from './flow-info.service';\n\n@Injectable()\nexport class SalesTransactionService {\n private stateSubj$ = new BehaviorSubject<SalesTransaction | null>(null);\n private isInitializedSubj$ = new BehaviorSubject<boolean>(false);\n private hasUnsavedChangesSubj$ = new BehaviorSubject<boolean>(false);\n private initialState: SalesTransactionItem[] = [];\n\n public hasUnsavedChanges$ = this.hasUnsavedChangesSubj$.asObservable();\n public state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));\n\n public get isInitialized$(): Observable<boolean> {\n return this.isInitializedSubj$.asObservable();\n }\n public get isInitialized(): boolean {\n return this.isInitializedSubj$.getValue();\n }\n\n public set hasUnsavedChanges(value: boolean) {\n this.hasUnsavedChangesSubj$.next(value);\n\n if (!this.hasUnsavedChanges) {\n this.initialState = this.state?.salesTransactionItems ?? [];\n }\n }\n public get hasUnsavedChanges(): boolean {\n return this.hasUnsavedChangesSubj$.getValue();\n }\n\n public get state(): SalesTransaction | null {\n return this.stateSubj$.getValue();\n }\n\n public get hasAssets(): boolean {\n return Boolean(this.state?.assets.length);\n }\n\n public get hasProducts(): boolean {\n return Boolean(this.state?.salesTransactionItems.length);\n }\n\n constructor(\n private flowInfoService: FlowInfoService,\n private salesTransactionApiService: SalesTransactionApiService,\n ) {}\n\n public init(headerId: string, params: Record<string, string>): Observable<SalesTransaction> {\n return this.salesTransactionApiService.getState(headerId, params).pipe(\n tap(res => this.stateSubj$.next(res.salesTransaction)),\n map(res => res.salesTransaction),\n );\n }\n\n public finalizeInit(): void {\n this.isInitializedSubj$.next(true);\n this.hasUnsavedChanges = false;\n }\n\n public reset(): void {\n this.stateSubj$.next(null);\n this.isInitializedSubj$.next(false);\n this.hasUnsavedChangesSubj$.next(false);\n }\n\n public getInitialState(): SalesTransactionItem[] {\n return this.initialState;\n }\n\n public setState(state: SalesTransaction): void {\n this.stateSubj$.next(state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api/v2';\nimport { SalesTransaction } from '@veloceapps/core';\nimport { cloneDeep } from 'lodash';\nimport { catchError, map, noop, Observable, of, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { SalesTransactionService } from '../../../services/sales-transaction.service';\n\n@Injectable()\nexport class FlowConfigurationService {\n public updated$: Observable<void>;\n\n private updatedSubj$ = new Subject<void>();\n\n constructor(\n private proceduresApiService: ProceduresApiService,\n private salesTransactionService: SalesTransactionService,\n ) {\n this.updated$ = this.updatedSubj$.asObservable();\n }\n\n public calculate$(state: SalesTransaction): Observable<void> {\n return this.proceduresApiService.apply$({ salesTransaction: state }).pipe(\n tap(result => this.salesTransactionService.setState(result.salesTransaction)),\n map(noop),\n );\n }\n\n public calculate(state: SalesTransaction): void {\n this.calculate$(state).subscribe();\n }\n\n public revert$(transactionItemId: string): Observable<SalesTransaction | null> {\n const state = this.salesTransactionService.state;\n const initialState = this.salesTransactionService.getInitialState();\n const currentState = state?.salesTransactionItems ?? [];\n\n const currentItemIndex = currentState.findIndex(({ id }) => id === transactionItemId);\n const currentItem = currentState[currentItemIndex];\n\n const initialItem = initialState.find(({ integrationId }) => integrationId === currentItem?.integrationId);\n\n if (!state || !currentItem || !initialItem) {\n return of(null);\n }\n\n const updatedState = cloneDeep(currentState);\n updatedState.splice(currentItemIndex, 1, initialItem);\n\n return of([]).pipe(\n tap(() => {\n this.salesTransactionService.setState({ ...state, salesTransactionItems: updatedState });\n }),\n switchMap(() => this.calculate$({ ...state, salesTransactionItems: updatedState })),\n map(() => this.salesTransactionService.state),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public revert(transactionItemId: string): void {\n this.revert$(transactionItemId).subscribe();\n }\n\n public delete$(ids: string[]): Observable<SalesTransaction | null> {\n const state = this.salesTransactionService.state;\n if (!state) {\n return of(null);\n }\n\n return of([]).pipe(\n map(() => state.salesTransactionItems.filter(({ id }) => !ids.includes(id))),\n switchMap(updatedState => this.calculate$({ ...state, salesTransactionItems: updatedState })),\n map(() => this.salesTransactionService.state),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public delete(ids: string[]): void {\n this.delete$(ids).subscribe();\n }\n\n private handleErrorAndBounceBack() {\n return <T>(source$: Observable<T>): Observable<T> => {\n return source$.pipe(\n catchError(error => {\n console.error(error);\n\n // bounce back if configuration call has failed\n const state = this.salesTransactionService.state;\n if (state) {\n this.salesTransactionService.setState(state);\n this.updatedSubj$.next();\n }\n\n return throwError(() => error);\n }),\n );\n };\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { ConfigurationProcessorsApiService, SalesTransactionApiService } from '@veloceapps/api/v2';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n ConfigurationProcessorTypes,\n EntityUtil,\n FlowState,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n UITemplateType,\n UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary, flatten, isEqual } from 'lodash';\nimport {\n BehaviorSubject,\n buffer,\n catchError,\n combineLatest,\n debounceTime,\n filter,\n finalize,\n forkJoin,\n map,\n noop,\n Observable,\n of,\n share,\n Subject,\n switchMap,\n take,\n tap,\n throwError,\n} from 'rxjs';\nimport { FlowConfigurationService } from '../modules';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../types/flow-customization.types';\nimport { FlowStateSubscriptionOptions, FlowStore } from '../types/flow-state.types';\nimport { FlowInfoService } from './flow-info.service';\nimport { SalesTransactionService } from './sales-transaction.service';\n\ntype ProcessorsMap = Partial<{\n [ownerId: string]: {\n [apiName: string]: ConfigurationProcessor;\n };\n}>;\n\ntype Subscription = {\n request: FlowStateExecutionRequestDTO;\n data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class FlowStateService {\n private readonly NOT_INITIALIZED = Symbol();\n private readonly EXECUTION_BUFFER_TIME = 100;\n\n private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n private stateId$ = new BehaviorSubject<string | null>(null);\n private initialStatefulData: Dictionary<unknown> = {};\n private trackedStatefulChangesMap: Map<string, boolean> = new Map();\n private processors: ProcessorsMap = {};\n private subscriptions: Record<string, Subscription> = {};\n private flowStore: FlowStore = {};\n\n private executionInProgress$ = new BehaviorSubject(false);\n private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n\n private cleanup$ = new Subject<void>();\n\n constructor(\n private flowConfiguration: FlowConfigurationService,\n private flowInfoService: FlowInfoService,\n private flowStateApiService: FlowStateApiService,\n private processorsApiService: ConfigurationProcessorsApiService,\n private salesTransactionApiService: SalesTransactionApiService,\n private salesTransactionService: SalesTransactionService,\n private toastService: ToastService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.statefulExecutionRequest$ = this.initBufferedRequest$();\n\n /*\n In stateless mode watch State changes and call executeRequest so that\n all subscriptions get their updates according to updated State\n */\n this.isInitialized$()\n .pipe(\n filter(Boolean),\n filter(() => !this.flowInfoService.flow.properties.stateful),\n switchMap(() => this.flowConfiguration.updated$),\n switchMap(() => this.executeRequest$({}, true)),\n )\n .subscribe();\n }\n\n public init$(): Observable<void> {\n if (this.flowInfoService.flow.properties.stateful) {\n return this.initProcessors$().pipe(switchMap(() => this.initStateful$()));\n } else {\n return forkJoin([this.initStateless$(), this.initProcessors$()]).pipe(map(noop));\n }\n }\n\n public reset(): void {\n Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n this.subscriptions = {};\n\n if (this.stateId$.value) {\n this.flowStateApiService.cancel(this.stateId$.value).subscribe();\n this.stateId$.next(null);\n }\n\n this.processors = {};\n this.flowStore = {};\n this.cleanup$.next();\n }\n\n public get hasUnsavedChanges(): boolean {\n return this.flowInfoService.flow.properties.stateful\n ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n : this.salesTransactionService.hasUnsavedChanges;\n }\n\n public get stateId(): string | null {\n return this.stateId$.value;\n }\n\n public get isExecutionInProgress$() {\n return this.executionInProgress$.asObservable();\n }\n\n public isInitialized$(): Observable<boolean> {\n return combineLatest([this.stateId$, this.salesTransactionService.isInitialized$]).pipe(\n map(values => values.some(Boolean)),\n );\n }\n\n public isInitialized(): boolean {\n return Boolean(this.stateId$.value) || this.salesTransactionService.isInitialized;\n }\n\n public execute$(\n scope: UITemplateType,\n exec: FlowStateExecutionRequest,\n ): Observable<FlowStateExecutionResult['selectors']> {\n const request = this.execToRequest(scope, exec);\n\n return this.executeRequest$(request).pipe(\n map(result => {\n // Keep only requested results\n const actualSelectors = Object.entries(result.selectors).reduce(\n (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n if (exec.selectors?.[requestId]) {\n trunk[requestId] = result;\n }\n return trunk;\n },\n {},\n );\n\n return actualSelectors;\n }),\n );\n }\n\n public dispatch$(scope: UITemplateType, action: string, inputData?: unknown): Observable<void> {\n const exec: FlowStateExecutionRequest = {\n actions: [{ name: action, inputData }],\n };\n const request = this.execToRequest(scope, exec);\n\n return this.executeRequest$(request).pipe(map(noop));\n }\n\n public select$<Response = unknown>(\n scope: UITemplateType,\n selectorName: string,\n inputData?: unknown,\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = this.generateRequestId(scope, selectorName, inputData);\n const request = this.execToRequest(scope, {\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n return this.executeRequest$(request).pipe(\n map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n );\n }\n\n public subscribe$<Response = unknown>(\n scope: UITemplateType,\n selectorName: string,\n inputData?: unknown,\n options?: FlowStateSubscriptionOptions,\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = this.generateRequestId(scope, selectorName, inputData);\n\n let subscription = this.subscriptions[requestId];\n\n if (!subscription) {\n const request = this.execToRequest(scope, {\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n subscription = {\n request,\n data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n };\n\n this.subscriptions[requestId] = subscription;\n\n if (options?.trackedChanges) {\n this.trackedStatefulChangesMap.set(requestId, false);\n }\n\n if (!options?.cold) {\n this.executeRequest$(request).subscribe();\n }\n }\n\n return subscription.data$.pipe(\n filter(data => data != this.NOT_INITIALIZED),\n map(data => data as FlowStateSelectorResponse<Response>),\n finalize(() => {\n if (!this.subscriptions[requestId]?.data$.observed) {\n delete this.subscriptions[requestId];\n }\n }),\n );\n }\n\n public save$(): Observable<{ id: string }> {\n if (this.flowInfoService.flow.properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.save(this.stateId$.value).pipe(\n map(({ quoteId }) => ({ id: quoteId })),\n tap(() => {\n Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n this.trackedStatefulChangesMap.set(key, false);\n });\n }),\n );\n }\n } else {\n const state = this.salesTransactionService.state;\n if (state) {\n return this.salesTransactionApiService.upsert(state);\n }\n }\n\n return of({ id: '' });\n }\n\n public submit$(): Observable<{ id: string }> {\n if (this.flowInfoService.flow.properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.submit(this.stateId$.value).pipe(map(({ quoteId }) => ({ id: quoteId })));\n }\n } else {\n const state = this.salesTransactionService.state;\n if (state) {\n return this.salesTransactionApiService.submit(state);\n }\n }\n\n return of({ id: '' });\n }\n\n public getFlowStore(): Record<string, unknown> {\n return this.flowStore;\n }\n\n private getOwnerIdByScope(scope: UITemplateType): string {\n const ownerId = this.flowInfoService.templates[scope]?.id;\n if (!ownerId) {\n throw `OwnerId is not found for scope ${scope}`;\n }\n\n return ownerId;\n }\n\n private getScopeByOwnerId(id: string): UITemplateType | undefined {\n for (const template of Object.values(this.flowInfoService.templates)) {\n if (template.id === id) {\n return template.type;\n }\n }\n\n return;\n }\n\n private execToRequest(scope: UITemplateType, exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n const ownerId = this.getOwnerIdByScope(scope);\n\n return {\n actions: exec.actions?.map(action => ({ apiName: action.name, ownerId, inputData: action.inputData ?? {} })),\n selectors:\n exec.selectors &&\n Object.entries(exec.selectors).reduce(\n (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n ...trunk,\n [key]: { apiName: selector.name, ownerId, inputData: selector.inputData ?? {} },\n }),\n {},\n ),\n };\n }\n\n public executeRequest$(\n request: FlowStateExecutionRequestDTO,\n forceSubscriptions: boolean = false,\n ): Observable<FlowStateExecutionResult> {\n const fullRequest = cloneDeep(request);\n if (fullRequest.actions?.length || forceSubscriptions) {\n for (const subscription of Object.values(this.subscriptions)) {\n fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n }\n }\n\n const execution$ = this.flowInfoService.flow.properties.stateful\n ? this.executeStateful$(fullRequest)\n : this.executeStateless$(fullRequest);\n\n return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n }\n\n private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n if (!selectorResult.success) {\n this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n }\n\n const subscription$ = this.subscriptions[requestId]?.data$;\n if (subscription$ && subscription$.value !== selectorResult) {\n this.checkStatefulChanges(requestId, selectorResult);\n subscription$.next(selectorResult);\n }\n });\n }\n\n private initStateful$(): Observable<void> {\n const processorsList = flatten(Object.values(this.processors).map(ownerMap => Object.values(ownerMap ?? {})));\n const processors = processorsList.length ? processorsList : undefined;\n const selectors = Object.values(this.subscriptions)\n .map(({ request }) => request.selectors)\n .filter(isDefined)\n .reduce((trunk, selectors) => ({ ...trunk, ...selectors }), {});\n\n return this.flowStateApiService\n .init({\n quoteId: this.flowInfoService.context.headerId,\n params: this.flowInfoService.context,\n actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n selectors: selectors,\n })\n .pipe(\n map(({ stateId, selectors }) => {\n this.handleSelectorsResponse(selectors);\n this.stateId$.next(stateId);\n }),\n );\n }\n\n private initBufferedRequest$() {\n return this.statefulRequestStream$.pipe(\n buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n switchMap(requests => {\n if (!this.stateId$.value) {\n throw 'Stateful session is not initialized';\n }\n\n // merge buffered requests\n const request: FlowStateExecutionRequestDTO = {\n actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n selectors: requests\n .map(({ selectors }) => selectors)\n .filter(isDefined)\n .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n };\n\n this.executionInProgress$.next(true);\n return this.flowStateApiService.execute(this.stateId$.value, request);\n }),\n tap(({ stateId }) => this.stateId$.next(stateId)),\n share(),\n tap(() => this.executionInProgress$.next(false)),\n catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }),\n );\n }\n\n private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n return this.executionInProgress$.pipe(\n filter(inProgress => !inProgress),\n take(1),\n switchMap(() =>\n // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n combineLatest([\n this.statefulExecutionRequest$,\n of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n ]),\n ),\n map(([response]) => response),\n take(1),\n );\n }\n\n private initStateless$(): Observable<void> {\n return this.salesTransactionService.init(this.flowInfoService.context.headerId, this.flowInfoService.context).pipe(\n tap(() => {\n const assets = this.salesTransactionService.state?.assets;\n if (assets) {\n this.flowStore = { ...this.flowStore, assets };\n }\n }),\n switchMap(state => this.flowConfiguration.calculate$(state)),\n tap(() => this.salesTransactionService.finalizeInit()),\n map(noop),\n );\n }\n\n private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n this.executionInProgress$.next(true);\n\n return of(undefined).pipe(\n tap(() => this.executeStatelessActions(request)),\n switchMap(() => {\n /*\n Skip price calculation in case\n 1. No actions in the request\n 2. Initialization process execution (state not initialized yet)\n */\n const { state } = this.salesTransactionService;\n if (!state || !request.actions?.length || !this.isInitialized()) {\n return of(undefined);\n } else {\n return this.flowConfiguration.calculate$(state);\n }\n }),\n map(() => this.executeStatelessSelectors(request)),\n tap(() => this.executionInProgress$.next(false)),\n catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }),\n );\n }\n\n private executeStatelessActions(request: FlowStateExecutionRequestDTO): void {\n const state = this.salesTransactionService.state;\n if (!state || !request.actions?.length) {\n return;\n }\n\n let flowState = state;\n request.actions.forEach(action => {\n try {\n flowState = this.executeActionScript(flowState, action) ?? flowState;\n } catch (e) {\n console.error(e);\n this.toastService.add({ severity: ToastType.error, summary: String(e) });\n throw e;\n }\n });\n\n this.salesTransactionService.setState(flowState);\n }\n\n private executeStatelessSelectors(request: FlowStateExecutionRequestDTO): FlowStateExecutionResult {\n if (!this.salesTransactionService.state) {\n throw 'State is not initialized';\n }\n\n const flowState = this.salesTransactionService.state;\n return EntityUtil.entries(request.selectors ?? {}).reduce(\n (result: FlowStateExecutionResult, [key, selector]) => {\n try {\n result.selectors[key] = {\n success: true,\n result: this.executeSelectorScript(flowState, selector),\n };\n } catch (e) {\n console.error(e);\n result.selectors[key] = {\n success: false,\n errorMessage: String(e),\n };\n }\n\n return result;\n },\n { stateId: '', selectors: {} },\n );\n }\n\n private initProcessors$(): Observable<void> {\n const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n if (this.flowInfoService.flow.properties.stateful && !hasOverrides) {\n // Skip initialization as backend will take processors from SF\n return of(undefined);\n }\n\n const owners$ = Object.values(this.flowInfoService.templates)\n .map(template => {\n if (!template) {\n return;\n }\n\n const localProcessors$ =\n this.customizationService?.getTemplateConfigurationProcessors?.(template.name) ?? of(null);\n\n return localProcessors$.pipe(\n switchMap(processors =>\n processors ? of(processors) : this.processorsApiService.fetchConfigurationProcessors$(template.id),\n ),\n tap(processors => {\n const processorsMap = processors.reduce((acc: Record<string, ConfigurationProcessor>, p) => {\n acc[p.apiName] = p;\n return acc;\n }, {});\n\n this.processors[template.id] = processorsMap;\n }),\n );\n })\n .filter(isDefined);\n\n if (!owners$.length) {\n return of(undefined);\n }\n\n return forkJoin(owners$).pipe(map(noop));\n }\n\n private executeActionScript(request: FlowState, executable: FlowStateExecutableDTO): FlowState | null {\n const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n if (!configurationProcessor?.script) {\n const scope = this.getScopeByOwnerId(executable.ownerId);\n const scopeText = scope ? ` in ${scope}` : '';\n throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, executable.inputData) as FlowState;\n }\n\n private executeSelectorScript(request: FlowState, executable: FlowStateExecutableDTO): unknown {\n const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n if (!configurationProcessor?.script) {\n const scope = this.getScopeByOwnerId(executable.ownerId);\n const scopeText = scope ? ` in ${scope}` : '';\n throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, executable.inputData);\n }\n\n private executeProcessorScript(\n request: FlowState,\n configurationProcessor: ConfigurationProcessor,\n inputData: unknown,\n ): unknown {\n const scope = this.getScopeByOwnerId(configurationProcessor.ownerId ?? '');\n let functionToExecute = this.executedFunctions[scope + configurationProcessor.apiName];\n\n if (!functionToExecute) {\n const script = `${configurationProcessor.script}\\nreturn transform;`;\n const sourceMap = `\\n//# sourceURL=${scope ? scope + '/' : ''}${configurationProcessor.apiName}.js`;\n functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n this.executedFunctions[scope + configurationProcessor.apiName] = functionToExecute;\n }\n\n return functionToExecute({\n request,\n inputData,\n flowStore: this.flowStore,\n });\n }\n\n private generateRequestId(scope: UITemplateType, selectorName: string, inputData?: unknown): string {\n const inputDataHash = UUID.hex(JSON.stringify(inputData) || '').slice(0, 8);\n return `${scope}/${selectorName}/${inputDataHash}`;\n }\n\n private checkStatefulChanges(requestId: string, selectorResult: unknown) {\n if (this.trackedStatefulChangesMap.has(requestId)) {\n if (!this.initialStatefulData[requestId]) {\n this.initialStatefulData[requestId] = selectorResult;\n }\n\n const hasChanges = !isEqual(this.initialStatefulData[requestId], selectorResult);\n this.trackedStatefulChangesMap.set(requestId, hasChanges);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { map, noop, Observable, of, switchMap } from 'rxjs';\nimport { NewConfigurationProps } from '../modules/configuration/types/configuration.types';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\n\n@Injectable()\nexport class FlowStateConfigurationService {\n constructor(private flowInfoService: FlowInfoService, private flowStateService: FlowStateService) {}\n\n public addToCart$(props: NewConfigurationProps): Observable<void> {\n let request$;\n const stateful = this.flowInfoService.flow?.properties.stateful;\n if (stateful) {\n const stateId = this.flowStateService.stateId;\n if (!stateId) {\n request$ = of();\n } else {\n // TODO: Implement\n request$ = of();\n }\n } else {\n // TODO: Implement\n request$ = of();\n }\n\n return request$.pipe(\n switchMap(() => this.flowStateService.executeRequest$({}, true)),\n map(noop),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, map, Observable, Subject } from 'rxjs';\nimport { IntegrationAction, IntegrationStateModel } from '../types/integration.types';\n\n@Injectable()\nexport class IntegrationState<S = IntegrationStateModel> {\n private readonly stateSubj$ = new BehaviorSubject<S>({} as S);\n private readonly action$ = new Subject<IntegrationAction>();\n\n public get state$(): Observable<S> {\n return this.stateSubj$.asObservable();\n }\n\n public get state(): S {\n return this.stateSubj$.getValue();\n }\n\n public patchState(update: Partial<S>): void {\n this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n }\n\n public dispatch(action: IntegrationAction): void {\n this.action$.next(action);\n }\n\n public listen$<P = any>(actionType: string): Observable<P> {\n return this.action$.pipe(\n filter(action => action.type === actionType),\n map(action => action.payload as P),\n );\n }\n\n public listenAll$<T extends IntegrationAction>(): Observable<T> {\n return this.action$.asObservable() as Observable<T>;\n }\n\n public reset(): void {\n this.stateSubj$.next({} as S);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProductApiService } from '@veloceapps/api';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, catchError, distinctUntilChanged, map, Observable, of, tap } from 'rxjs';\n\n@Injectable()\nexport class ProductImagesService {\n private imagesMap$ = new BehaviorSubject<Dictionary<string>>({});\n\n constructor(private productApiService: ProductApiService) {}\n\n public getImageUrl$(productId: string): Observable<string | null> {\n if (this.imagesMap$.value[productId] == null) {\n this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: '' });\n this.fetchProductImage(productId);\n }\n\n return this.imagesMap$.pipe(\n map(imagesMap => imagesMap[productId] ?? null),\n distinctUntilChanged(),\n );\n }\n\n private fetchProductImage(productId: string): void {\n this.productApiService\n .fetchImage$(productId)\n .pipe(\n map(file => URL.createObjectURL(file)),\n catchError(() => of('')),\n tap(url => this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: url })),\n )\n .subscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProcedureApplyRequest, ProceduresApiService } from '@veloceapps/api/v2';\nimport { extractErrorDetails, isDefined, SalesTransaction, SalesTransactionItem } from '@veloceapps/core';\nimport { cloneDeep } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, noop, Observable, of, throwError } from 'rxjs';\nimport { catchError, filter, finalize, map, tap } from 'rxjs/operators';\nimport { FlowInfoService, SalesTransactionService } from '../../../services';\nimport { TransactionItemWorker } from '../../../utils';\nimport { ExternalConfigurationProps, GuidedSellingSubmitData } from '../types/configuration.types';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\n\n@Injectable()\nexport class ConfigurationService {\n public isLoading$: Observable<boolean>;\n public hasUnsavedChanges = false;\n\n private configurationStateSubj$ = new BehaviorSubject<SalesTransaction | null>(null);\n private previousConfigurationStateSubj$ = new BehaviorSubject<SalesTransaction | null>(null);\n private isLoadingSubj$ = new BehaviorSubject(false);\n\n public get state$(): Observable<SalesTransaction> {\n return this.configurationStateSubj$.asObservable().pipe(filter(isDefined));\n }\n\n public get state(): SalesTransaction | null {\n return this.configurationStateSubj$.getValue();\n }\n\n public get previousState(): SalesTransaction | null {\n return this.previousConfigurationStateSubj$.getValue();\n }\n\n public get asset(): SalesTransactionItem | null {\n return this.state?.assets[0] ?? null;\n }\n\n public get root$(): Observable<SalesTransactionItem> {\n return this.state$.pipe(\n map(state => state.salesTransactionItems[0]),\n filter(isDefined),\n );\n }\n\n public get root(): SalesTransactionItem | null {\n return this.configurationStateSubj$.getValue()?.salesTransactionItems[0] ?? null;\n }\n\n constructor(\n private flowInfoService: FlowInfoService,\n private messageService: MessageService,\n private configurationRuntimeService: ConfigurationRuntimeService,\n private salesTransactionService: SalesTransactionService,\n private proceduresApiService: ProceduresApiService,\n ) {\n this.isLoading$ = this.isLoadingSubj$.asObservable();\n }\n\n public reset(): void {\n this.hasUnsavedChanges = false;\n\n this.configurationStateSubj$.next(null);\n this.previousConfigurationStateSubj$.next(null);\n }\n\n public init$(): Observable<void> {\n const { state } = this.salesTransactionService;\n const { productId, transactionItemId } = this.flowInfoService.context;\n\n if (!state) {\n return of(undefined);\n }\n\n let transactionItem = state?.salesTransactionItems.find(item => item.id === transactionItemId);\n if (!transactionItem) {\n transactionItem = state.salesTransactionItems.find(item => item.productId === productId);\n }\n\n const assetItem = transactionItem ? state?.assets.find(item => item.id === transactionItem?.assetId) : undefined;\n\n const configurationState: SalesTransaction = {\n ...state,\n salesTransactionItems: transactionItem ? [transactionItem] : [],\n assets: assetItem ? [assetItem] : [],\n };\n\n this.configurationStateSubj$.next(configurationState);\n this.previousConfigurationStateSubj$.next(configurationState);\n\n return of(undefined);\n }\n\n public patch$(transactionItem: SalesTransactionItem): Observable<void> {\n const { state, root } = this;\n\n if (!state) {\n return throwError(() => new Error(`Configuration State is not initialized`));\n }\n if (!root) {\n return throwError(() => new Error(`Root SalesTransactionItem not found`));\n }\n\n const newRoot = new TransactionItemWorker(root).replace(transactionItem).ti;\n const newSalesTransaction: SalesTransaction = {\n ...state,\n salesTransactionItems: [newRoot],\n };\n\n return this.configureRequest$(newSalesTransaction).pipe(\n catchError(error => {\n console.error(error);\n\n if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n return throwError(() => error);\n }),\n tap(() => {\n if (!this.hasUnsavedChanges) {\n this.hasUnsavedChanges = true;\n }\n }),\n map(noop),\n );\n }\n\n public patch(transactionItem: SalesTransactionItem): void {\n this.patch$(transactionItem).subscribe();\n }\n\n public configureRequest$(salesTransaction: SalesTransaction): Observable<SalesTransaction> {\n const request: ProcedureApplyRequest = {\n salesTransaction,\n };\n\n this.isLoadingSubj$.next(true);\n\n return this.proceduresApiService.apply$(request).pipe(\n tap(result => {\n const newState = result.salesTransaction;\n this.configurationStateSubj$.next(newState);\n this.previousConfigurationStateSubj$.next(cloneDeep(newState));\n }),\n map(response => response.salesTransaction),\n catchError(error =>\n throwError(() => {\n const resetState = this.previousConfigurationStateSubj$.getValue();\n if (resetState) {\n this.previousConfigurationStateSubj$.next(cloneDeep(resetState));\n this.configurationStateSubj$.next(resetState);\n }\n\n if (error.error) {\n return extractErrorDetails(error.error).join('. ');\n }\n\n return error.message || JSON.stringify(error);\n }),\n ),\n finalize(() => this.isLoadingSubj$.next(false)),\n );\n }\n\n public configureExternal$(props: ExternalConfigurationProps): Observable<SalesTransaction> {\n // TODO: implement\n throw new Error('Not implemented');\n }\n\n public configureGuidedSelling$(data: GuidedSellingSubmitData): Observable<SalesTransaction> {\n // TODO: implement\n throw new Error('Not implemented');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { SalesTransactionApiService, SalesTransactionUpsertResponse } from '@veloceapps/api/v2';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n EntityUtil,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n SalesTransaction,\n SalesTransactionItem,\n UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary } from 'lodash';\nimport {\n BehaviorSubject,\n buffer,\n catchError,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n Observable,\n of,\n share,\n shareReplay,\n Subject,\n switchMap,\n take,\n takeUntil,\n tap,\n throwError,\n} from 'rxjs';\nimport { FlowInfoService, FlowStateService, SalesTransactionService } from '../../../services';\nimport { FlowStateSubscriptionOptions } from '../../../types/flow-state.types';\nimport { generateTransactionItem } from '../../../utils';\nimport { FlowConfigurationService } from '../../flow-configuration';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\n\ntype StateSubscription = {\n request: FlowStateExecutionRequestDTO;\n data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class ConfigurationStateService {\n public isInitialized$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n public canceledConfiguration$: Subject<void> = new Subject<void>();\n\n private readonly NOT_INITIALIZED = Symbol();\n private readonly EXECUTION_BUFFER_TIME = 100;\n\n private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n private stateId: string | null = null;\n private ownerId = '';\n private subscriptions: Record<string, StateSubscription> = {};\n private configurationStore: Record<string, unknown> = {};\n\n private executionInProgress$ = new BehaviorSubject(false);\n private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n private statelessExecutionRequest$: Observable<FlowStateExecutionResult> | null = null;\n\n constructor(\n private configurationRuntimeService: ConfigurationRuntimeService,\n private configurationService: ConfigurationService,\n private flowStateService: FlowStateService,\n private flowInfoService: FlowInfoService,\n private flowConfigurationService: FlowConfigurationService,\n private flowStateApiService: FlowStateApiService,\n private salesTransactionService: SalesTransactionService,\n private salesTransactionApiService: SalesTransactionApiService,\n private toastService: ToastService,\n ) {\n this.statefulExecutionRequest$ = this.initBufferedRequest$();\n }\n\n public get isExecutionInProgress$() {\n return this.executionInProgress$.asObservable();\n }\n\n public init$(): Observable<void> {\n let request$;\n if (this.flowStateService.stateId && this.isStatefulConfiguration) {\n request$ = this.initStateful$();\n } else {\n request$ = this.configurationService.init$();\n }\n\n return request$.pipe(\n take(1),\n tap(() => {\n this.isInitialized$.next(true);\n this.canceledConfiguration$ = new Subject();\n }),\n );\n }\n\n public cleanup(): void {\n Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n this.subscriptions = {};\n\n if (this.stateId) {\n this.cancelConfiguration();\n }\n\n this.configurationStore = {};\n this.executedFunctions = {};\n this.configurationService.reset();\n this.configurationRuntimeService.reset();\n }\n\n public execute$(exec: FlowStateExecutionRequest): Observable<FlowStateExecutionResult['selectors']> {\n const request = this.execToRequest(exec);\n\n return this.executeRequest$(request).pipe(\n map(result => {\n // Keep only requested results\n const actualSelectors = Object.entries(result.selectors).reduce(\n (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n if (exec.selectors?.[requestId]) {\n trunk[requestId] = result;\n }\n return trunk;\n },\n {},\n );\n\n return actualSelectors;\n }),\n );\n }\n\n public dispatch$(actionName: string, inputData: unknown = {}): Observable<FlowStateExecutionResult> {\n const exec: FlowStateExecutionRequest = {\n actions: [{ name: actionName, inputData }],\n };\n const request = this.execToRequest(exec);\n\n const executionRequest$ = this.executeRequest$(request);\n\n if (this.isStatefulConfiguration) {\n return executionRequest$;\n }\n\n // prevent parallel configuration requests in stateless mode\n if (!this.statelessExecutionRequest$) {\n this.statelessExecutionRequest$ = executionRequest$.pipe(\n shareReplay(),\n take(1),\n finalize(() => (this.statelessExecutionRequest$ = null)),\n );\n }\n return this.statelessExecutionRequest$;\n }\n\n public select$<Response = unknown>(\n selectorName: string,\n inputData: unknown = {},\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = UUID.UUID();\n const request = this.execToRequest({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n return this.executeRequest$(request).pipe(\n map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n );\n }\n\n public subscribe$<Response = unknown>(\n selectorName: string,\n inputData: unknown = {},\n options?: FlowStateSubscriptionOptions,\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = UUID.UUID();\n\n let subscription = this.subscriptions[requestId];\n if (!subscription) {\n const request = this.execToRequest({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n subscription = {\n request,\n data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n };\n this.subscriptions[requestId] = subscription;\n\n if (!options?.cold) {\n this.executeRequest$(request).subscribe();\n }\n }\n\n return subscription.data$.pipe(\n filter(data => data != this.NOT_INITIALIZED),\n map(data => data as FlowStateSelectorResponse<Response>),\n distinctUntilChanged(),\n finalize(() => {\n if (!this.subscriptions[requestId]?.data$.observed) {\n delete this.subscriptions[requestId];\n }\n }),\n takeUntil(this.canceledConfiguration$),\n );\n }\n\n public saveConfiguration(): Observable<SalesTransactionUpsertResponse> {\n if (this.isStatefulConfiguration) {\n return this.flowStateApiService.saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '').pipe(\n switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))),\n map(r => ({ id: r.quoteId })),\n );\n }\n\n const state = this.salesTransactionService.state;\n if (!state) {\n return of({ id: '' });\n }\n\n const { standalone } = this.flowInfoService.flow.properties;\n if (standalone) {\n return this.salesTransactionApiService.upsert(state);\n }\n\n const salesTransaction = this.salesTransactionService.state;\n const configurationRoot = this.configurationService.root;\n if (!salesTransaction || !configurationRoot) {\n return of({ id: '' });\n }\n\n const isNewTransactionItem = salesTransaction.salesTransactionItems.every(li => li.id !== configurationRoot.id);\n\n let salesTransactionItems: SalesTransactionItem[];\n if (isNewTransactionItem) {\n salesTransactionItems = [...salesTransaction.salesTransactionItems, configurationRoot];\n } else {\n salesTransactionItems = salesTransaction.salesTransactionItems.map(ti =>\n ti.id === configurationRoot.id ? configurationRoot : ti,\n );\n }\n\n const newState: SalesTransaction = {\n ...salesTransaction,\n salesTransactionItems,\n };\n\n return this.flowConfigurationService.calculate$(newState).pipe(map(() => ({ id: '' })));\n }\n\n public cancelConfiguration(): Observable<void> {\n if (!this.isInitialized$.value) {\n return of(undefined);\n }\n\n this.canceledConfiguration$.next();\n this.canceledConfiguration$.complete();\n this.subscriptions = {};\n\n this.isInitialized$.next(false);\n if (!this.isInitialized$.value || !this.isStatefulConfiguration) {\n return of(undefined);\n }\n return this.flowStateApiService.cancelConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '');\n }\n\n private get isStatefulConfiguration(): boolean {\n return this.flowInfoService.flow?.properties.stateful ?? false;\n }\n\n private initStateful$(): Observable<void> {\n this.ownerId = this.configurationRuntimeService.uiDefinitionContainer?.id ?? '';\n const { productId, transactionItemId } = this.flowInfoService.context;\n if (!productId || !this.flowStateService.stateId) {\n return of(undefined);\n }\n\n const container = this.configurationRuntimeService.uiDefinitionContainer;\n\n let request$: Observable<FlowStateExecutionResult>;\n\n if (!transactionItemId) {\n request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {\n transactionItem: generateTransactionItem(productId),\n actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n });\n } else {\n request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {\n transactionItemId,\n actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n });\n }\n\n return request$.pipe(\n map(r => {\n this.stateId = r.stateId;\n return undefined;\n }),\n );\n }\n\n private execToRequest(exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n return {\n actions: exec.actions?.map(action => ({\n apiName: action.name,\n ownerId: this.ownerId,\n inputData: action.inputData ?? {},\n })),\n selectors:\n exec.selectors &&\n Object.entries(exec.selectors).reduce(\n (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n ...trunk,\n [key]: { apiName: selector.name, ownerId: this.ownerId, inputData: selector.inputData ?? {} },\n }),\n {},\n ),\n };\n }\n\n private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n if (!selectorResult.success) {\n this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n }\n\n const subscription$ = this.subscriptions[requestId]?.data$;\n if (subscription$) {\n subscription$.next(selectorResult);\n }\n });\n }\n\n private executeRequest$(\n req: FlowStateExecutionRequestDTO,\n forceSubscriptions?: boolean,\n ): Observable<FlowStateExecutionResult> {\n const fullRequest = cloneDeep(req);\n if (fullRequest.actions?.length || forceSubscriptions) {\n for (const subscription of Object.values(this.subscriptions)) {\n fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n }\n }\n\n let execution$;\n\n if (this.isStatefulConfiguration) {\n execution$ = this.executeStateful$(fullRequest);\n } else {\n execution$ = this.executeStateless$(fullRequest);\n }\n\n return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n }\n\n private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n this.executionInProgress$.next(true);\n\n return this.configurationService.state$.pipe(\n switchMap(state => {\n // Apply actions and execute configuration/price call\n // No need to run configuration if no actions in the request\n if (!request.actions?.length) {\n return of(undefined);\n }\n\n request.actions.forEach(action => {\n state = this.executeActionScript(state, action) ?? state;\n });\n\n return this.configurationService.configureRequest$(state);\n }),\n map(() => {\n // Run selectors and apply them to the state\n const configurationState = this.configurationService.state;\n if (!configurationState) {\n return { stateId: '', selectors: {} };\n }\n\n return this.runStatelessSelectors(request, configurationState);\n }),\n tap(() => this.executionInProgress$.next(false)),\n catchError(error => {\n const configurationState = this.configurationService.previousState;\n if (configurationState) {\n const selectorsResult = this.runStatelessSelectors(request, configurationState);\n this.handleSelectorsResponse(selectorsResult.selectors);\n }\n this.executionInProgress$.next(false);\n\n if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {\n this.toastService.add({ severity: ToastType.error, summary: String(error) });\n }\n\n return throwError(() => error);\n }),\n );\n }\n\n private initBufferedRequest$() {\n return this.statefulRequestStream$.pipe(\n buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n switchMap(requests => {\n if (!this.flowStateService.stateId || !this.stateId) {\n throw 'Stateful session is not initialized';\n }\n\n // merge buffered requests\n const request: FlowStateExecutionRequestDTO = {\n actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n selectors: requests\n .map(({ selectors }) => selectors)\n .filter(isDefined)\n .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n };\n\n this.executionInProgress$.next(true);\n return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request);\n }),\n tap(({ stateId }) => (this.stateId = stateId)),\n share(),\n tap(() => this.executionInProgress$.next(false)),\n catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }),\n );\n }\n\n private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n return this.executionInProgress$.pipe(\n filter(inProgress => !inProgress),\n take(1),\n switchMap(() =>\n // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n combineLatest([\n this.statefulExecutionRequest$,\n of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n ]),\n ),\n map(([response]) => response),\n take(1),\n );\n }\n\n private executeActionScript(request: SalesTransaction, processor: FlowStateExecutableDTO): SalesTransaction {\n const { actions } = this.configurationRuntimeService.uiDefinitionContainer ?? {};\n const configurationProcessor = actions?.find(action => action.apiName === processor.apiName);\n\n if (!configurationProcessor?.script) {\n throw `ConfigurationProcessor ${processor.apiName} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, processor.inputData) as SalesTransaction;\n }\n\n private executeSelectorScript(request: SalesTransaction, processor: FlowStateExecutableDTO): unknown {\n const { selectors } = this.configurationRuntimeService.uiDefinitionContainer ?? {};\n const configurationProcessor = selectors?.find(selector => selector.apiName === processor.apiName);\n\n if (!configurationProcessor?.script) {\n throw `ConfigurationProcessor ${processor.apiName} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, processor.inputData);\n }\n\n private executeProcessorScript(\n request: SalesTransaction,\n configurationProcessor: ConfigurationProcessor,\n inputData: unknown,\n ): unknown {\n let functionToExecute = this.executedFunctions[configurationProcessor.apiName];\n if (!functionToExecute) {\n const script = `${configurationProcessor.script}\\nreturn transform;`;\n const sourceMap = `\\n//# sourceURL=${configurationProcessor.apiName}.js`;\n functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n this.executedFunctions[configurationProcessor.apiName] = functionToExecute;\n }\n\n return functionToExecute({\n request,\n inputData,\n flowStore: this.flowStateService.getFlowStore(),\n configurationStore: this.configurationStore,\n });\n }\n\n private runStatelessSelectors(\n request: FlowStateExecutionRequestDTO,\n configurationState: SalesTransaction,\n ): FlowStateExecutionResult {\n return EntityUtil.entries(request.selectors ?? {}).reduce(\n (result: FlowStateExecutionResult, [key, selector]) => {\n try {\n result.selectors[key] = {\n success: true,\n result: this.executeSelectorScript(configurationState, selector),\n };\n } catch (e) {\n console.error(e);\n result.selectors[key] = {\n success: false,\n errorMessage: String(e),\n };\n }\n\n return result;\n },\n { stateId: '', selectors: {} },\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationStateService } from './services/configuration-state.service';\nimport { ConfigurationService } from './services/configuration.service';\n\n@NgModule({\n imports: [ConfirmationDialogModule, ApiModule],\n providers: [ConfigurationService, ConfigurationStateService, ConfigurationRuntimeService],\n})\nexport class ConfigurationModule {}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\n\n@NgModule({\n imports: [ApiModule],\n providers: [FlowConfigurationService],\n})\nexport class FlowConfigurationModule {}\n","import { Injectable } from '@angular/core';\nimport { CatalogProducts, isDefined } from '@veloceapps/core';\nimport { BehaviorSubject, filter } from 'rxjs';\n\n@Injectable()\nexport class CatalogProductsService {\n private stateSubj$ = new BehaviorSubject<CatalogProducts | null>(null);\n\n public state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));\n\n public get state(): CatalogProducts | null {\n return this.stateSubj$.getValue();\n }\n\n public reset(): void {\n this.stateSubj$.next(null);\n }\n\n public setState(state: CatalogProducts): void {\n this.stateSubj$.next(state);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Prettify, VlDateSettings } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\n\nexport const FORMATTING_SETTINGS_TOKEN = new InjectionToken<{\n getFormattingSettings: (...args: unknown[]) => FormattingSettings;\n}>('Summary of formatting settings for variant types of data, e.g. numbers, text, dates, etc');\n\nexport type FormattingSettings = Prettify<\n {\n currencySymbol: string;\n thousandsSeparator: string;\n decimalSeparator: string;\n decimalsCount: number;\n actionCodeLabels: Dictionary<string>;\n } & VlDateSettings\n>;\n","export const UI_DEFINITION_VERSION = 3;\n","import { NgModule } from '@angular/core';\nimport {\n DEFAULT_ACTION_CODE_LABELS,\n DEFAULT_CURRENCY_SYMBOL,\n DEFAULT_DATE_FORMAT,\n DEFAULT_DECIMALS_COUNT,\n DEFAULT_DECIMAL_SEPARATOR,\n DEFAULT_THOUSANDS_SEPARATOR,\n getSupportedDateFormats,\n} from '@veloceapps/core';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { FlowConfigurationModule } from './modules/flow-configuration/flow-configuration.module';\nimport {\n FlowInfoService,\n FlowStateService,\n IntegrationState,\n ProductImagesService,\n RuntimeSettingsService,\n SalesTransactionService,\n} from './services';\nimport { CatalogProductsService } from './services/catalog-products.service';\nimport { FlowStateConfigurationService } from './services/flow-state-configuration.service';\nimport { FormattingSettings, FORMATTING_SETTINGS_TOKEN } from './types';\n\nexport const DEFAULT_FORMATTING_SETTINGS: FormattingSettings = {\n currencySymbol: DEFAULT_CURRENCY_SYMBOL,\n decimalsCount: DEFAULT_DECIMALS_COUNT,\n dateFormats: getSupportedDateFormats(DEFAULT_DATE_FORMAT),\n decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,\n thousandsSeparator: DEFAULT_THOUSANDS_SEPARATOR,\n actionCodeLabels: DEFAULT_ACTION_CODE_LABELS,\n};\n\n@NgModule({\n imports: [ConfigurationModule, FlowConfigurationModule],\n providers: [\n FlowInfoService,\n ProductImagesService,\n IntegrationState,\n FlowStateService,\n FlowStateConfigurationService,\n RuntimeSettingsService,\n SalesTransactionService,\n CatalogProductsService,\n {\n provide: FORMATTING_SETTINGS_TOKEN,\n useExisting: RuntimeSettingsService,\n },\n ],\n})\nexport class SdkCoreModule {}\n","import { Directive, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { DEFAULT_DATE_FORMAT } from '@veloceapps/core';\nimport { Calendar } from 'primeng/calendar';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Directive({\n selector: '[vlCalendar]',\n})\nexport class CalendarDirective implements OnInit, OnDestroy {\n @Input()\n public set vlCalendar(calendar: Calendar) {\n this.calendar = calendar;\n }\n private calendar!: Calendar;\n\n private ngControl = inject(NgControl, { host: true, optional: true });\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public ngOnInit(): void {\n if (this.calendar) {\n this.calendar.dateFormat = this.formattingSettings?.dateFormats.primengFormat ?? DEFAULT_DATE_FORMAT;\n\n if (this.ngControl && this.ngControl.control) {\n const control = this.ngControl.control;\n control.setValue(control.value, { emitEvent: false });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarDirective } from './primeng-calendar.directive';\n\n@NgModule({\n declarations: [CalendarDirective],\n exports: [CalendarDirective],\n})\nexport class SdkDirectivesModule {}\n","import { DATE_PIPE_DEFAULT_OPTIONS, formatDate } from '@angular/common';\nimport { LOCALE_ID, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { DateType, FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlDate',\n})\nexport class DatePipe implements PipeTransform, OnDestroy {\n private locale = inject(LOCALE_ID);\n private defaultOptions = inject(DATE_PIPE_DEFAULT_OPTIONS, { optional: true });\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public transform(date: string | number | Date | undefined | null, type: DateType = 'date'): string {\n if (!date) {\n return '';\n }\n\n const dateFormat = this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT;\n\n const formatMap: { [key in DateType]: string } = {\n date: dateFormat,\n time: DEFAULT_TIME_FORMAT,\n datetime: `${dateFormat} ${DEFAULT_TIME_FORMAT}`,\n };\n\n try {\n return formatDate(date, formatMap[type], this.locale, this.defaultOptions?.timezone);\n } catch (error) {\n return new Date(date).toString();\n }\n }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlNumber',\n})\nexport class NumberPipe implements PipeTransform, OnDestroy {\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public transform(price: string | number): string {\n return formatNumber(\n price,\n this.formattingSettings?.thousandsSeparator,\n this.formattingSettings?.decimalSeparator,\n this.formattingSettings?.decimalsCount,\n );\n }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_CURRENCY_SYMBOL, formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlPrice',\n})\nexport class PricePipe implements PipeTransform, OnDestroy {\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public transform(price: string | number): string {\n if (price == null || price === '') {\n return '';\n }\n\n return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(\n price,\n this.formattingSettings?.thousandsSeparator,\n this.formattingSettings?.decimalSeparator,\n this.formattingSettings?.decimalsCount,\n )}`;\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlActionCode',\n})\nexport class ActionCodePipe implements PipeTransform {\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n\n public transform(actionCode: string): string {\n return this.formattingSettings?.actionCodeLabels[actionCode] ?? actionCode;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DatePipe } from './date.pipe';\nimport { NumberPipe } from './number.pipe';\nimport { PricePipe } from './price.pipe';\nimport { ActionCodePipe } from './action-code.pipe';\n\n@NgModule({\n declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n})\nexport class SdkPipesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FlowInfoService","i2","i1","i2.SalesTransactionService","i2.FlowStateService","filter","map","catchError","tap","finalize","i3.ConfigurationRuntimeService","i1.SalesTransactionService","i1.ConfigurationRuntimeService","i2.ConfigurationService","i3.FlowStateService","i3.FlowInfoService","i4.FlowConfigurationService","i5","i3.SalesTransactionService","i6","i7"],"mappings":"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"}
1
+ {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/services/configuration-runtime.service.ts","../../../../libs/sdk/core/utils/transaction-item.utils.ts","../../../../libs/sdk/core/utils/transaction-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/types/flow-customization.types.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/services/flow-info.service.ts","../../../../libs/sdk/core/services/sales-transaction.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/services/flow-state.service.ts","../../../../libs/sdk/core/services/flow-state-configuration.service.ts","../../../../libs/sdk/core/services/integration.state.ts","../../../../libs/sdk/core/services/product-images.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-state.service.ts","../../../../libs/sdk/core/modules/configuration/configuration.module.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.ts","../../../../libs/sdk/core/services/catalog-products.service.ts","../../../../libs/sdk/core/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/core.module.ts","../../../../libs/sdk/core/directives/primeng-calendar.directive.ts","../../../../libs/sdk/core/directives/directives.module.ts","../../../../libs/sdk/core/pipes/date.pipe.ts","../../../../libs/sdk/core/pipes/number.pipe.ts","../../../../libs/sdk/core/pipes/price.pipe.ts","../../../../libs/sdk/core/pipes/action-code.pipe.ts","../../../../libs/sdk/core/pipes/pipes.module.ts","../../../../libs/sdk/core/veloceapps-sdk-core.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { PCMApiService } from '@veloceapps/api';\nimport { PCMModel, UIDefinitionContainer, UIDefinitionProps } from '@veloceapps/core';\nimport { Observable, tap } from 'rxjs';\nimport { RuntimeInitializationProps } from '../types/configuration-runtime.types';\n\n@Injectable()\nexport class ConfigurationRuntimeService {\n public uiDefinitionContainer: UIDefinitionContainer | null = null;\n public initializationProps?: RuntimeInitializationProps;\n public pcmModel?: PCMModel;\n\n constructor(private pcmApiService: PCMApiService) {}\n\n public get uiDefinitionProps(): UIDefinitionProps {\n return this.uiDefinitionContainer?.source.properties ?? {};\n }\n\n public reset(): void {\n this.uiDefinitionContainer = null;\n this.initializationProps = undefined;\n this.pcmModel = undefined;\n }\n\n public init$(props: RuntimeInitializationProps): Observable<PCMModel> {\n this.initializationProps = props;\n\n return this.pcmApiService.fetchPCMByProductId(props.productId).pipe(tap(pcmModel => (this.pcmModel = pcmModel)));\n }\n}\n","import { isDefined, SalesTransactionItem, UUID } from '@veloceapps/core';\nimport { flatten } from 'lodash';\n\nexport const findTransactionItem = (id: string, items: SalesTransactionItem[]): SalesTransactionItem | undefined => {\n return findTransactionItemWithComparator(items, (ti: SalesTransactionItem) => ti.id === id);\n};\n\nexport const findTransactionItemWithComparator = (\n items: SalesTransactionItem[],\n comparator: (ti: SalesTransactionItem) => boolean,\n): SalesTransactionItem | undefined => {\n let currentLevel = items;\n\n while (currentLevel.length) {\n const found = currentLevel.find(comparator);\n\n if (found) {\n return found;\n }\n\n currentLevel = flatten(currentLevel.map(parent => parent.children));\n }\n\n return;\n};\n\nexport const insertTransactionItem = (\n item: SalesTransactionItem,\n parentId: string,\n toInsert: SalesTransactionItem,\n): SalesTransactionItem => {\n const insertData = item.id === parentId ? [toInsert] : [];\n\n return {\n ...item,\n children: [\n ...insertData,\n ...item.children.map(ti => {\n return insertTransactionItem(ti, parentId, toInsert);\n }),\n ],\n };\n};\n\nexport const removeTransactionItem = (item: SalesTransactionItem, idToRemove: string): SalesTransactionItem => {\n return {\n ...item,\n children: item.children\n .map(ti => {\n if (ti.id === idToRemove) {\n return;\n } else if (ti.children.length) {\n return removeTransactionItem(ti, idToRemove);\n }\n\n return ti;\n })\n .filter(isDefined),\n };\n};\n\nexport const replaceTransactionItem = (\n item: SalesTransactionItem,\n replaceTo: SalesTransactionItem,\n): SalesTransactionItem => {\n if (item.id === replaceTo.id) {\n return { ...replaceTo };\n }\n\n return {\n ...item,\n children: item.children.map(ti => replaceTransactionItem(ti, replaceTo)),\n };\n};\n\nexport const generateTransactionItem = (productId: string): SalesTransactionItem => {\n return {\n id: UUID.UUID(),\n productId,\n } as SalesTransactionItem;\n};\n","import { SalesTransactionItem } from '@veloceapps/core';\nimport { insertTransactionItem, removeTransactionItem, replaceTransactionItem } from './transaction-item.utils';\n\nexport class TransactionItemWorker {\n public ti: SalesTransactionItem;\n\n constructor(src: SalesTransactionItem) {\n this.ti = { ...src };\n }\n\n public insert(parentId: string, toInsert: SalesTransactionItem): TransactionItemWorker {\n return new TransactionItemWorker(insertTransactionItem(this.ti, parentId, toInsert));\n }\n\n public remove(id: string): TransactionItemWorker {\n return new TransactionItemWorker(removeTransactionItem(this.ti, id));\n }\n\n public replace(toReplace: SalesTransactionItem): TransactionItemWorker {\n return new TransactionItemWorker(replaceTransactionItem(this.ti, toReplace));\n }\n}\n","import { UIDefinition, UIDefinitionMetadata } from '@veloceapps/core';\nimport { omit } from 'lodash';\n\nexport function extractMetadata(uiDefinition: UIDefinition): UIDefinitionMetadata {\n return omit<UIDefinition, keyof Omit<UIDefinition, keyof UIDefinitionMetadata>>(uiDefinition, [\n 'children',\n 'pages',\n 'components',\n ]);\n}\n","import { InjectionToken } from '@angular/core';\nimport {\n ConfigurationProcessor,\n TemplateComponentWithAttachments,\n UIDefinitionContainer,\n UITemplate,\n} from '@veloceapps/core';\nimport { Observable } from 'rxjs';\n\nexport const FLOW_CUSTOMIZATION = new InjectionToken<FlowCustomization>('FLOW_CUSTOMIZATION');\n\nexport interface FlowCustomization {\n getUiDefinition?(productId: string): Observable<UIDefinitionContainer | null>;\n\n getTemplates?(): Observable<UITemplate[]>;\n getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;\n\n getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport {\n ConfigurationSettings,\n DEFAULT_ACTION_CODE_LABELS,\n DEFAULT_CURRENCY_ISO_CODE,\n DEFAULT_CURRENCY_SYMBOL,\n DEFAULT_DATE_FORMAT,\n DEFAULT_DECIMALS_COUNT,\n DEFAULT_DECIMAL_SEPARATOR,\n DEFAULT_THOUSANDS_SEPARATOR,\n Flow,\n getSupportedDateFormats,\n parseJsonSafely,\n RuntimeConfigurationSettings,\n RuntimeCurrencySettings,\n ShoppingCartSetting,\n ShoppingCartSettings,\n validateDateFormat,\n} from '@veloceapps/core';\nimport { Dictionary, uniqBy } from 'lodash';\nimport { BehaviorSubject, map, Observable, tap } from 'rxjs';\nimport { FormattingSettings } from '../types';\n\n@Injectable()\nexport class RuntimeSettingsService {\n private configurationSettings$ = new BehaviorSubject<RuntimeConfigurationSettings>({});\n private currencySettings$ = new BehaviorSubject<RuntimeCurrencySettings>({\n iso: DEFAULT_CURRENCY_ISO_CODE,\n symbol: DEFAULT_CURRENCY_SYMBOL,\n });\n private formattingSettings!: FormattingSettings;\n private shoppingCartSettings$ = new BehaviorSubject<ShoppingCartSetting[]>([]);\n\n constructor(private configurationSettingsApiService: ConfigurationSettingsApiService) {}\n\n public create(): Observable<void> {\n return this.configurationSettingsApiService.fetchSettings().pipe(\n map(settings => this.parseConfigurationSettings(settings)),\n tap(configurationSettings => {\n this.configurationSettings$.next(configurationSettings);\n this.addShoppingCartSettings(configurationSettings['shopping-cart'] ?? []);\n this.formattingSettings = this.getFormattingSettings();\n }),\n map(() => undefined),\n );\n }\n\n public initCurrency(iso?: string): void {\n if (iso) {\n const symbol = this.getCurrencySymbol('en-US', iso);\n this.currencySettings$.next({ iso, symbol });\n if (this.formattingSettings) {\n this.formattingSettings.currencySymbol = symbol;\n }\n }\n }\n\n public getFormattingSettings(): FormattingSettings {\n if (this.formattingSettings) {\n return this.formattingSettings;\n }\n\n const shoppingCartSettings = this.getConfigurationSettings()['shopping-cart']?.reduce((acc, setting) => {\n return { ...acc, [setting.id]: setting.properties };\n }, {} as ShoppingCartSettings);\n const currencySettings = this.getCurrencySettings();\n const dateFormat =\n (validateDateFormat(shoppingCartSettings?.DATE_FORMAT ?? '') && shoppingCartSettings?.DATE_FORMAT) ||\n DEFAULT_DATE_FORMAT;\n const decimalSeparator = shoppingCartSettings?.DECIMAL_SEPARATOR;\n const thousandsSeparator = shoppingCartSettings?.THOUSANDS_SEPARATOR;\n // the number of decimal places can be 0\n const priceScale = shoppingCartSettings?.PRICE_SCALE;\n const decimalsCount =\n priceScale !== null && priceScale !== '' && !isNaN(Number(priceScale)) && Number(priceScale) >= 0\n ? Number(priceScale)\n : DEFAULT_DECIMALS_COUNT;\n\n const actionCodeSettings = shoppingCartSettings?.STATUS_LABEL;\n\n return {\n currencySymbol: currencySettings.symbol,\n dateFormats: getSupportedDateFormats(dateFormat),\n decimalsCount,\n decimalSeparator:\n decimalSeparator !== undefined && ['.', ','].includes(decimalSeparator)\n ? decimalSeparator\n : DEFAULT_DECIMAL_SEPARATOR,\n // thousands separator can be a blank value, so it can also be null\n thousandsSeparator:\n thousandsSeparator !== undefined && ['.', ',', '', null].includes(thousandsSeparator)\n ? thousandsSeparator || ''\n : DEFAULT_THOUSANDS_SEPARATOR,\n actionCodeLabels: actionCodeSettings?.length\n ? actionCodeSettings.reduce(\n (result, setting) => ({ ...result, [setting.status_label]: setting.custom_label }),\n {},\n )\n : DEFAULT_ACTION_CODE_LABELS,\n };\n }\n\n public getConfigurationSettings(): RuntimeConfigurationSettings {\n return this.configurationSettings$.value;\n }\n\n public getShoppingCartSettings(): ShoppingCartSetting[] {\n return this.shoppingCartSettings$.value;\n }\n\n public getCurrencySettings(): RuntimeCurrencySettings {\n return this.currencySettings$.value;\n }\n\n private parseConfigurationSettings(settings: ConfigurationSettings[]): RuntimeConfigurationSettings {\n return settings.reduce((acc: RuntimeConfigurationSettings, setting) => {\n switch (setting.key) {\n case 'shopping-cart':\n acc['shopping-cart'] = parseJsonSafely<ShoppingCartSetting[]>(setting.value, []);\n break;\n case 'navigation':\n acc.navigation = parseJsonSafely<Dictionary<boolean>>(setting.value, {});\n break;\n case 'flows':\n acc.flows = parseJsonSafely<Flow[]>(setting.value, []);\n break;\n default:\n acc[setting.key] = setting.value;\n }\n\n return acc;\n }, {});\n }\n\n private getCurrencySymbol = (locale: string, currency: string) => {\n return (0)\n .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })\n .replace(/\\d/g, '')\n .trim();\n };\n\n public addShoppingCartSettings(settings: ShoppingCartSetting[]) {\n // uniqBy removes items with the biggest index\n const newSettings = uniqBy([...settings, ...this.shoppingCartSettings$.value], 'id');\n this.shoppingCartSettings$.next(newSettings);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { UITemplatesApiService } from '@veloceapps/api/v2';\nimport {\n Flow,\n FlowContext,\n FlowContextMode,\n FlowTemplatesMap,\n SalesforceIdUtils,\n UITemplate,\n UITemplateType,\n} from '@veloceapps/core';\nimport { BehaviorSubject, forkJoin, map, Observable, of, switchMap } from 'rxjs';\nimport { FLOW_CUSTOMIZATION, FlowCustomization } from '../types/flow-customization.types';\nimport { RuntimeSettingsService } from './runtime-settings.service';\n\n@Injectable()\nexport class FlowInfoService {\n public flow$: Observable<Flow | null>;\n public templates$: Observable<{ [key in UITemplateType]?: UITemplate }>;\n\n public get flow(): Flow {\n if (!this.flowSubj$.value) {\n throw new Error(`Flow not initialized yet`);\n }\n\n return this.flowSubj$.value;\n }\n\n public get isFlowInitialized(): boolean {\n return Boolean(this.flowSubj$.value);\n }\n\n public get context(): FlowContext {\n if (!this.contextSubj$.value) {\n throw new Error('Context is not initialized yet!');\n }\n\n return { ...this.contextSubj$.value };\n }\n\n public get templates() {\n return this.templatesSubj$.value;\n }\n\n public get isFlowEngineInitialized$(): Observable<boolean> {\n return this.templates$.pipe(map(v => Boolean(v.FLOW_ENGINE)));\n }\n\n public get isStateful(): boolean {\n return !!this.flow?.properties.stateful;\n }\n\n private readonly defaultTemplates = {\n flowEngine: 'Flow Engine',\n };\n private flowSubj$ = new BehaviorSubject<Flow | null>(null);\n private templatesSubj$ = new BehaviorSubject<{ [key in UITemplateType]?: UITemplate }>({});\n private contextSubj$ = new BehaviorSubject<FlowContext | null>(null);\n\n constructor(\n private runtimeSettingsService: RuntimeSettingsService,\n private templatesApiService: UITemplatesApiService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.flow$ = this.flowSubj$.asObservable();\n this.templates$ = this.templatesSubj$.asObservable();\n }\n\n public reset(): void {\n this.flowSubj$.next(null);\n this.templatesSubj$.next({});\n this.contextSubj$.next(null);\n }\n\n public init$(flowId: string, routeQueryParams: Params): Observable<void> {\n return this.initFlow$(flowId, routeQueryParams).pipe(switchMap(() => this.initFlowTemplates$()));\n }\n\n public initTestFlow$(productId: string): Observable<void> {\n this.contextSubj$.next({\n mode: 'QUOTE',\n headerId: '0Q0-test-quote-id',\n productId,\n });\n\n this.flowSubj$.next({\n id: 'preview-flow-id',\n properties: { entryPath: '/product', queryParams: {} },\n version: 2,\n });\n return of(undefined);\n }\n\n public updateContext(update: Partial<FlowContext>): void {\n this.contextSubj$.next({\n ...this.context,\n ...update,\n });\n }\n\n private initFlow$(flowId: string, routeQueryParams: Params): Observable<void> {\n const flow = this.runtimeSettingsService.getConfigurationSettings()['flows']?.find(({ id }) => flowId === id);\n if (!flow) {\n this.flowSubj$.next(null);\n throw new Error(`Flow with flowId=${flowId} is not defined`);\n }\n\n const headerId = routeQueryParams['headerId'];\n if (typeof headerId !== 'string') {\n throw new Error(`Please provide 'headerId'`);\n }\n\n const mode = this.getFlowContextMode(headerId);\n\n // Restrict if mode is not defined\n if (mode == null) {\n throw new Error('Mode is undefined');\n }\n\n this.contextSubj$.next({\n ...flow.properties.queryParams,\n ...routeQueryParams,\n mode,\n } as FlowContext);\n\n this.flowSubj$.next(flow);\n return of(undefined);\n }\n\n private initFlowTemplates$(): Observable<void> {\n return forkJoin([\n this.templatesApiService.fetchTemplates$(),\n this.customizationService?.getTemplates?.() ?? of([]),\n ]).pipe(\n map(([templates, localTemplates]) => {\n const newValue: { [key in UITemplateType]?: UITemplate } = {};\n Object.entries({ ...this.defaultTemplates, ...(this.flow?.properties.templates ?? {}) }).forEach(\n ([key, name]) => {\n const type = this.remapTemplateName(key);\n\n if (type) {\n newValue[type] =\n localTemplates.find(template => template.name === name && template.type === type) ??\n templates.find(template => template.name === name && template.type === type);\n }\n },\n );\n\n this.templatesSubj$.next(newValue);\n }),\n );\n }\n\n private remapTemplateName(templateType: string): UITemplateType | undefined {\n switch (templateType as keyof typeof this.defaultTemplates) {\n case 'flowEngine':\n return UITemplateType.FLOW_ENGINE;\n default:\n break;\n }\n\n switch (templateType as keyof FlowTemplatesMap) {\n case 'assets':\n case 'shoppingCart':\n // No separate Assets template at the moment\n return UITemplateType.SHOPPING_CART;\n case 'catalog':\n return UITemplateType.CATALOG;\n case 'guidedSelling':\n return UITemplateType.GUIDED_SELLING;\n case 'flowHeader':\n return UITemplateType.FLOW_HEADER;\n default:\n break;\n }\n\n return undefined;\n }\n\n private getFlowContextMode(headerId: string): FlowContextMode | undefined {\n const objectName = SalesforceIdUtils.getSfObjectNameById(headerId);\n if (!objectName) {\n return;\n }\n\n return objectName.toUpperCase() as FlowContextMode;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SalesTransactionApiService } from '@veloceapps/api/v2';\nimport { isDefined, SalesTransaction, SalesTransactionItem } from '@veloceapps/core';\nimport { BehaviorSubject, filter, map, Observable, tap } from 'rxjs';\nimport { FlowInfoService } from './flow-info.service';\n\n@Injectable()\nexport class SalesTransactionService {\n private stateSubj$ = new BehaviorSubject<SalesTransaction | null>(null);\n private isInitializedSubj$ = new BehaviorSubject<boolean>(false);\n private hasUnsavedChangesSubj$ = new BehaviorSubject<boolean>(false);\n private initialState: SalesTransactionItem[] = [];\n\n public hasUnsavedChanges$ = this.hasUnsavedChangesSubj$.asObservable();\n public state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));\n\n public get isInitialized$(): Observable<boolean> {\n return this.isInitializedSubj$.asObservable();\n }\n public get isInitialized(): boolean {\n return this.isInitializedSubj$.getValue();\n }\n\n public set hasUnsavedChanges(value: boolean) {\n this.hasUnsavedChangesSubj$.next(value);\n\n if (!this.hasUnsavedChanges) {\n this.initialState = this.state?.salesTransactionItems ?? [];\n }\n }\n public get hasUnsavedChanges(): boolean {\n return this.hasUnsavedChangesSubj$.getValue();\n }\n\n public get state(): SalesTransaction | null {\n return this.stateSubj$.getValue();\n }\n\n public get hasProducts(): boolean {\n return Boolean(this.state?.salesTransactionItems.length);\n }\n\n constructor(\n private flowInfoService: FlowInfoService,\n private salesTransactionApiService: SalesTransactionApiService,\n ) {}\n\n public init(headerId: string, params: Record<string, string>): Observable<SalesTransaction> {\n return this.salesTransactionApiService.getState(headerId, params).pipe(\n tap(res => this.stateSubj$.next(res.salesTransaction)),\n map(res => res.salesTransaction),\n );\n }\n\n public finalizeInit(): void {\n this.isInitializedSubj$.next(true);\n this.hasUnsavedChanges = false;\n }\n\n public reset(): void {\n this.stateSubj$.next(null);\n this.isInitializedSubj$.next(false);\n this.hasUnsavedChangesSubj$.next(false);\n }\n\n public getInitialState(): SalesTransactionItem[] {\n return this.initialState;\n }\n\n public setState(state: SalesTransaction): void {\n this.stateSubj$.next(state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api/v2';\nimport { SalesTransaction } from '@veloceapps/core';\nimport { cloneDeep } from 'lodash';\nimport { catchError, map, noop, Observable, of, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { SalesTransactionService } from '../../../services/sales-transaction.service';\n\n@Injectable()\nexport class FlowConfigurationService {\n public updated$: Observable<void>;\n\n private updatedSubj$ = new Subject<void>();\n\n constructor(\n private proceduresApiService: ProceduresApiService,\n private salesTransactionService: SalesTransactionService,\n ) {\n this.updated$ = this.updatedSubj$.asObservable();\n }\n\n public calculate$(state: SalesTransaction): Observable<void> {\n return this.proceduresApiService.apply$({ salesTransaction: state }).pipe(\n tap(result => this.salesTransactionService.setState(result.salesTransaction)),\n map(noop),\n );\n }\n\n public calculate(state: SalesTransaction): void {\n this.calculate$(state).subscribe();\n }\n\n public revert$(transactionItemId: string): Observable<SalesTransaction | null> {\n const state = this.salesTransactionService.state;\n const initialState = this.salesTransactionService.getInitialState();\n const currentState = state?.salesTransactionItems ?? [];\n\n const currentItemIndex = currentState.findIndex(({ id }) => id === transactionItemId);\n const currentItem = currentState[currentItemIndex];\n\n const initialItem = initialState.find(({ integrationId }) => integrationId === currentItem?.integrationId);\n\n if (!state || !currentItem || !initialItem) {\n return of(null);\n }\n\n const updatedState = cloneDeep(currentState);\n updatedState.splice(currentItemIndex, 1, initialItem);\n\n return of([]).pipe(\n tap(() => {\n this.salesTransactionService.setState({ ...state, salesTransactionItems: updatedState });\n }),\n switchMap(() => this.calculate$({ ...state, salesTransactionItems: updatedState })),\n map(() => this.salesTransactionService.state),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public revert(transactionItemId: string): void {\n this.revert$(transactionItemId).subscribe();\n }\n\n public delete$(ids: string[]): Observable<SalesTransaction | null> {\n const state = this.salesTransactionService.state;\n if (!state) {\n return of(null);\n }\n\n return of([]).pipe(\n map(() => state.salesTransactionItems.filter(({ id }) => !ids.includes(id))),\n switchMap(updatedState => this.calculate$({ ...state, salesTransactionItems: updatedState })),\n map(() => this.salesTransactionService.state),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public delete(ids: string[]): void {\n this.delete$(ids).subscribe();\n }\n\n private handleErrorAndBounceBack() {\n return <T>(source$: Observable<T>): Observable<T> => {\n return source$.pipe(\n catchError(error => {\n console.error(error);\n\n // bounce back if configuration call has failed\n const state = this.salesTransactionService.state;\n if (state) {\n this.salesTransactionService.setState(state);\n this.updatedSubj$.next();\n }\n\n return throwError(() => error);\n }),\n );\n };\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { ConfigurationProcessorsApiService, SalesTransactionApiService } from '@veloceapps/api/v2';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n ConfigurationProcessorTypes,\n EntityUtil,\n FlowState,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n UITemplateType,\n UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary, flatten, isEqual } from 'lodash';\nimport {\n BehaviorSubject,\n buffer,\n catchError,\n combineLatest,\n debounceTime,\n filter,\n finalize,\n forkJoin,\n map,\n noop,\n Observable,\n of,\n share,\n Subject,\n switchMap,\n take,\n tap,\n throwError,\n} from 'rxjs';\nimport { FlowConfigurationService } from '../modules';\nimport { FLOW_CUSTOMIZATION, FlowCustomization } from '../types/flow-customization.types';\nimport { FlowStateSubscriptionOptions, FlowStore } from '../types/flow-state.types';\nimport { FlowInfoService } from './flow-info.service';\nimport { SalesTransactionService } from './sales-transaction.service';\n\ntype ProcessorsMap = Partial<{\n [ownerId: string]: {\n [apiName: string]: ConfigurationProcessor;\n };\n}>;\n\ntype Subscription = {\n request: FlowStateExecutionRequestDTO;\n data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class FlowStateService {\n private readonly NOT_INITIALIZED = Symbol();\n private readonly EXECUTION_BUFFER_TIME = 100;\n\n private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n private stateId$ = new BehaviorSubject<string | null>(null);\n private initialStatefulData: Dictionary<unknown> = {};\n private trackedStatefulChangesMap: Map<string, boolean> = new Map();\n private processors: ProcessorsMap = {};\n private subscriptions: Record<string, Subscription> = {};\n private flowStore: FlowStore = {};\n\n private executionInProgress$ = new BehaviorSubject(false);\n private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n\n private cleanup$ = new Subject<void>();\n\n constructor(\n private flowConfiguration: FlowConfigurationService,\n private flowInfoService: FlowInfoService,\n private flowStateApiService: FlowStateApiService,\n private processorsApiService: ConfigurationProcessorsApiService,\n private salesTransactionApiService: SalesTransactionApiService,\n private salesTransactionService: SalesTransactionService,\n private toastService: ToastService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.statefulExecutionRequest$ = this.initBufferedRequest$();\n\n /*\n In stateless mode watch State changes and call executeRequest so that\n all subscriptions get their updates according to updated State\n */\n this.isInitialized$()\n .pipe(\n filter(Boolean),\n filter(() => !this.flowInfoService.flow.properties.stateful),\n switchMap(() => this.flowConfiguration.updated$),\n switchMap(() => this.executeRequest$({}, true)),\n )\n .subscribe();\n }\n\n public init$(): Observable<void> {\n if (this.flowInfoService.flow.properties.stateful) {\n return this.initProcessors$().pipe(switchMap(() => this.initStateful$()));\n } else {\n return forkJoin([this.initStateless$(), this.initProcessors$()]).pipe(map(noop));\n }\n }\n\n public reset(): void {\n Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n this.subscriptions = {};\n\n if (this.stateId$.value) {\n this.flowStateApiService.cancel(this.stateId$.value).subscribe();\n this.stateId$.next(null);\n }\n\n this.processors = {};\n this.flowStore = {};\n this.cleanup$.next();\n }\n\n public get hasUnsavedChanges(): boolean {\n return this.flowInfoService.flow.properties.stateful\n ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n : this.salesTransactionService.hasUnsavedChanges;\n }\n\n public get stateId(): string | null {\n return this.stateId$.value;\n }\n\n public get isExecutionInProgress$() {\n return this.executionInProgress$.asObservable();\n }\n\n public isInitialized$(): Observable<boolean> {\n return combineLatest([this.stateId$, this.salesTransactionService.isInitialized$]).pipe(\n map(values => values.some(Boolean)),\n );\n }\n\n public isInitialized(): boolean {\n return Boolean(this.stateId$.value) || this.salesTransactionService.isInitialized;\n }\n\n public execute$(\n scope: UITemplateType,\n exec: FlowStateExecutionRequest,\n ): Observable<FlowStateExecutionResult['selectors']> {\n const request = this.execToRequest(scope, exec);\n\n return this.executeRequest$(request).pipe(\n map(result => {\n // Keep only requested results\n const actualSelectors = Object.entries(result.selectors).reduce(\n (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n if (exec.selectors?.[requestId]) {\n trunk[requestId] = result;\n }\n return trunk;\n },\n {},\n );\n\n return actualSelectors;\n }),\n );\n }\n\n public dispatch$(scope: UITemplateType, action: string, inputData?: unknown): Observable<void> {\n const exec: FlowStateExecutionRequest = {\n actions: [{ name: action, inputData }],\n };\n const request = this.execToRequest(scope, exec);\n\n return this.executeRequest$(request).pipe(map(noop));\n }\n\n public select$<Response = unknown>(\n scope: UITemplateType,\n selectorName: string,\n inputData?: unknown,\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = this.generateRequestId(scope, selectorName, inputData);\n const request = this.execToRequest(scope, {\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n return this.executeRequest$(request).pipe(\n map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n );\n }\n\n public subscribe$<Response = unknown>(\n scope: UITemplateType,\n selectorName: string,\n inputData?: unknown,\n options?: FlowStateSubscriptionOptions,\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = this.generateRequestId(scope, selectorName, inputData);\n\n let subscription = this.subscriptions[requestId];\n\n if (!subscription) {\n const request = this.execToRequest(scope, {\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n subscription = {\n request,\n data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n };\n\n this.subscriptions[requestId] = subscription;\n\n if (options?.trackedChanges) {\n this.trackedStatefulChangesMap.set(requestId, false);\n }\n\n if (!options?.cold) {\n this.executeRequest$(request).subscribe();\n }\n }\n\n return subscription.data$.pipe(\n filter(data => data != this.NOT_INITIALIZED),\n map(data => data as FlowStateSelectorResponse<Response>),\n finalize(() => {\n if (!this.subscriptions[requestId]?.data$.observed) {\n delete this.subscriptions[requestId];\n }\n }),\n );\n }\n\n public save$(): Observable<{ id: string }> {\n if (this.flowInfoService.flow.properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.save(this.stateId$.value).pipe(\n map(({ quoteId }) => ({ id: quoteId })),\n tap(() => {\n Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n this.trackedStatefulChangesMap.set(key, false);\n });\n }),\n );\n }\n } else {\n const state = this.salesTransactionService.state;\n if (state) {\n return this.salesTransactionApiService.upsert(state);\n }\n }\n\n return of({ id: '' });\n }\n\n public submit$(): Observable<{ id: string }> {\n if (this.flowInfoService.flow.properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.submit(this.stateId$.value).pipe(map(({ quoteId }) => ({ id: quoteId })));\n }\n } else {\n const state = this.salesTransactionService.state;\n if (state) {\n return this.salesTransactionApiService.submit(state);\n }\n }\n\n return of({ id: '' });\n }\n\n public getFlowStore(): Record<string, unknown> {\n return this.flowStore;\n }\n\n private getOwnerIdByScope(scope: UITemplateType): string {\n const ownerId = this.flowInfoService.templates[scope]?.id;\n if (!ownerId) {\n throw `OwnerId is not found for scope ${scope}`;\n }\n\n return ownerId;\n }\n\n private getScopeByOwnerId(id: string): UITemplateType | undefined {\n for (const template of Object.values(this.flowInfoService.templates)) {\n if (template.id === id) {\n return template.type;\n }\n }\n\n return;\n }\n\n private execToRequest(scope: UITemplateType, exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n const ownerId = this.getOwnerIdByScope(scope);\n\n return {\n actions: exec.actions?.map(action => ({ apiName: action.name, ownerId, inputData: action.inputData ?? {} })),\n selectors:\n exec.selectors &&\n Object.entries(exec.selectors).reduce(\n (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n ...trunk,\n [key]: { apiName: selector.name, ownerId, inputData: selector.inputData ?? {} },\n }),\n {},\n ),\n };\n }\n\n public executeRequest$(\n request: FlowStateExecutionRequestDTO,\n forceSubscriptions: boolean = false,\n ): Observable<FlowStateExecutionResult> {\n const fullRequest = cloneDeep(request);\n if (fullRequest.actions?.length || forceSubscriptions) {\n for (const subscription of Object.values(this.subscriptions)) {\n fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n }\n }\n\n const execution$ = this.flowInfoService.flow.properties.stateful\n ? this.executeStateful$(fullRequest)\n : this.executeStateless$(fullRequest);\n\n return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n }\n\n private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n if (!selectorResult.success) {\n this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n }\n\n const subscription$ = this.subscriptions[requestId]?.data$;\n if (subscription$ && subscription$.value !== selectorResult) {\n this.checkStatefulChanges(requestId, selectorResult);\n subscription$.next(selectorResult);\n }\n });\n }\n\n private initStateful$(): Observable<void> {\n const processorsList = flatten(Object.values(this.processors).map(ownerMap => Object.values(ownerMap ?? {})));\n const processors = processorsList.length ? processorsList : undefined;\n const selectors = Object.values(this.subscriptions)\n .map(({ request }) => request.selectors)\n .filter(isDefined)\n .reduce((trunk, selectors) => ({ ...trunk, ...selectors }), {});\n\n return this.flowStateApiService\n .init({\n quoteId: this.flowInfoService.context.headerId,\n params: this.flowInfoService.context,\n actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n selectors: selectors,\n })\n .pipe(\n map(({ stateId, selectors }) => {\n this.handleSelectorsResponse(selectors);\n this.stateId$.next(stateId);\n }),\n );\n }\n\n private initBufferedRequest$() {\n return this.statefulRequestStream$.pipe(\n buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n switchMap(requests => {\n if (!this.stateId$.value) {\n throw 'Stateful session is not initialized';\n }\n\n // merge buffered requests\n const request: FlowStateExecutionRequestDTO = {\n actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n selectors: requests\n .map(({ selectors }) => selectors)\n .filter(isDefined)\n .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n };\n\n this.executionInProgress$.next(true);\n return this.flowStateApiService.execute(this.stateId$.value, request);\n }),\n tap(({ stateId }) => this.stateId$.next(stateId)),\n share(),\n tap(() => this.executionInProgress$.next(false)),\n catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }),\n );\n }\n\n private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n return this.executionInProgress$.pipe(\n filter(inProgress => !inProgress),\n take(1),\n switchMap(() =>\n // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n combineLatest([\n this.statefulExecutionRequest$,\n of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n ]),\n ),\n map(([response]) => response),\n take(1),\n );\n }\n\n private initStateless$(): Observable<void> {\n return this.salesTransactionService.init(this.flowInfoService.context.headerId, this.flowInfoService.context).pipe(\n switchMap(state => this.flowConfiguration.calculate$(state)),\n tap(() => this.salesTransactionService.finalizeInit()),\n map(noop),\n );\n }\n\n private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n this.executionInProgress$.next(true);\n\n return of(undefined).pipe(\n tap(() => this.executeStatelessActions(request)),\n switchMap(() => {\n /*\n Skip price calculation in case\n 1. No actions in the request\n 2. Initialization process execution (state not initialized yet)\n */\n const { state } = this.salesTransactionService;\n if (!state || !request.actions?.length || !this.isInitialized()) {\n return of(undefined);\n } else {\n return this.flowConfiguration.calculate$(state);\n }\n }),\n map(() => this.executeStatelessSelectors(request)),\n tap(() => this.executionInProgress$.next(false)),\n catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }),\n );\n }\n\n private executeStatelessActions(request: FlowStateExecutionRequestDTO): void {\n const state = this.salesTransactionService.state;\n if (!state || !request.actions?.length) {\n return;\n }\n\n let flowState = state;\n request.actions.forEach(action => {\n try {\n flowState = this.executeActionScript(flowState, action) ?? flowState;\n } catch (e) {\n console.error(e);\n this.toastService.add({ severity: ToastType.error, summary: String(e) });\n throw e;\n }\n });\n\n this.salesTransactionService.setState(flowState);\n }\n\n private executeStatelessSelectors(request: FlowStateExecutionRequestDTO): FlowStateExecutionResult {\n if (!this.salesTransactionService.state) {\n throw 'State is not initialized';\n }\n\n const flowState = this.salesTransactionService.state;\n return EntityUtil.entries(request.selectors ?? {}).reduce(\n (result: FlowStateExecutionResult, [key, selector]) => {\n try {\n result.selectors[key] = {\n success: true,\n result: this.executeSelectorScript(flowState, selector),\n };\n } catch (e) {\n console.error(e);\n result.selectors[key] = {\n success: false,\n errorMessage: String(e),\n };\n }\n\n return result;\n },\n { stateId: '', selectors: {} },\n );\n }\n\n private initProcessors$(): Observable<void> {\n const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n if (this.flowInfoService.flow.properties.stateful && !hasOverrides) {\n // Skip initialization as backend will take processors from SF\n return of(undefined);\n }\n\n const owners$ = Object.values(this.flowInfoService.templates)\n .map(template => {\n if (!template) {\n return;\n }\n\n const localProcessors$ =\n this.customizationService?.getTemplateConfigurationProcessors?.(template.name) ?? of(null);\n\n return localProcessors$.pipe(\n switchMap(processors =>\n processors ? of(processors) : this.processorsApiService.fetchConfigurationProcessors$(template.id),\n ),\n tap(processors => {\n const processorsMap = processors.reduce((acc: Record<string, ConfigurationProcessor>, p) => {\n acc[p.apiName] = p;\n return acc;\n }, {});\n\n this.processors[template.id] = processorsMap;\n }),\n );\n })\n .filter(isDefined);\n\n if (!owners$.length) {\n return of(undefined);\n }\n\n return forkJoin(owners$).pipe(map(noop));\n }\n\n private executeActionScript(request: FlowState, executable: FlowStateExecutableDTO): FlowState | null {\n const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n if (!configurationProcessor?.script) {\n const scope = this.getScopeByOwnerId(executable.ownerId);\n const scopeText = scope ? ` in ${scope}` : '';\n throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, executable.inputData) as FlowState;\n }\n\n private executeSelectorScript(request: FlowState, executable: FlowStateExecutableDTO): unknown {\n const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n if (!configurationProcessor?.script) {\n const scope = this.getScopeByOwnerId(executable.ownerId);\n const scopeText = scope ? ` in ${scope}` : '';\n throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, executable.inputData);\n }\n\n private executeProcessorScript(\n request: FlowState,\n configurationProcessor: ConfigurationProcessor,\n inputData: unknown,\n ): unknown {\n const scope = this.getScopeByOwnerId(configurationProcessor.ownerId ?? '');\n let functionToExecute = this.executedFunctions[scope + configurationProcessor.apiName];\n\n if (!functionToExecute) {\n const script = `${configurationProcessor.script}\\nreturn transform;`;\n const sourceMap = `\\n//# sourceURL=${scope ? scope + '/' : ''}${configurationProcessor.apiName}.js`;\n functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n this.executedFunctions[scope + configurationProcessor.apiName] = functionToExecute;\n }\n\n return functionToExecute({\n request,\n inputData,\n flowStore: this.flowStore,\n });\n }\n\n private generateRequestId(scope: UITemplateType, selectorName: string, inputData?: unknown): string {\n const inputDataHash = UUID.hex(JSON.stringify(inputData) || '').slice(0, 8);\n return `${scope}/${selectorName}/${inputDataHash}`;\n }\n\n private checkStatefulChanges(requestId: string, selectorResult: unknown) {\n if (this.trackedStatefulChangesMap.has(requestId)) {\n if (!this.initialStatefulData[requestId]) {\n this.initialStatefulData[requestId] = selectorResult;\n }\n\n const hasChanges = !isEqual(this.initialStatefulData[requestId], selectorResult);\n this.trackedStatefulChangesMap.set(requestId, hasChanges);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { map, noop, Observable, of, switchMap } from 'rxjs';\nimport { NewConfigurationProps } from '../modules/configuration/types/configuration.types';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\n\n@Injectable()\nexport class FlowStateConfigurationService {\n constructor(private flowInfoService: FlowInfoService, private flowStateService: FlowStateService) {}\n\n public addToCart$(props: NewConfigurationProps): Observable<void> {\n let request$;\n const stateful = this.flowInfoService.flow?.properties.stateful;\n if (stateful) {\n const stateId = this.flowStateService.stateId;\n if (!stateId) {\n request$ = of();\n } else {\n // TODO: Implement\n request$ = of();\n }\n } else {\n // TODO: Implement\n request$ = of();\n }\n\n return request$.pipe(\n switchMap(() => this.flowStateService.executeRequest$({}, true)),\n map(noop),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, map, Observable, Subject } from 'rxjs';\nimport { IntegrationAction, IntegrationStateModel } from '../types/integration.types';\n\n@Injectable()\nexport class IntegrationState<S = IntegrationStateModel> {\n private readonly stateSubj$ = new BehaviorSubject<S>({} as S);\n private readonly action$ = new Subject<IntegrationAction>();\n\n public get state$(): Observable<S> {\n return this.stateSubj$.asObservable();\n }\n\n public get state(): S {\n return this.stateSubj$.getValue();\n }\n\n public patchState(update: Partial<S>): void {\n this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n }\n\n public dispatch(action: IntegrationAction): void {\n this.action$.next(action);\n }\n\n public listen$<P = any>(actionType: string): Observable<P> {\n return this.action$.pipe(\n filter(action => action.type === actionType),\n map(action => action.payload as P),\n );\n }\n\n public listenAll$<T extends IntegrationAction>(): Observable<T> {\n return this.action$.asObservable() as Observable<T>;\n }\n\n public reset(): void {\n this.stateSubj$.next({} as S);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProductApiService } from '@veloceapps/api';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, catchError, distinctUntilChanged, map, Observable, of, tap } from 'rxjs';\n\n@Injectable()\nexport class ProductImagesService {\n private imagesMap$ = new BehaviorSubject<Dictionary<string>>({});\n\n constructor(private productApiService: ProductApiService) {}\n\n public getImageUrl$(productId: string): Observable<string | null> {\n if (this.imagesMap$.value[productId] == null) {\n this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: '' });\n this.fetchProductImage(productId);\n }\n\n return this.imagesMap$.pipe(\n map(imagesMap => imagesMap[productId] ?? null),\n distinctUntilChanged(),\n );\n }\n\n private fetchProductImage(productId: string): void {\n this.productApiService\n .fetchImage$(productId)\n .pipe(\n map(file => URL.createObjectURL(file)),\n catchError(() => of('')),\n tap(url => this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: url })),\n )\n .subscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProcedureApplyRequest, ProceduresApiService } from '@veloceapps/api/v2';\nimport { extractErrorDetails, isDefined, PCMModel, SalesTransaction, SalesTransactionItem } from '@veloceapps/core';\nimport { cloneDeep } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, noop, Observable, of, throwError } from 'rxjs';\nimport { catchError, filter, finalize, map, tap } from 'rxjs/operators';\nimport { FlowInfoService, SalesTransactionService } from '../../../services';\nimport { generateTransactionItem, TransactionItemWorker } from '../../../utils';\nimport { ExternalConfigurationProps, GuidedSellingSubmitData } from '../types/configuration.types';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\n\n@Injectable()\nexport class ConfigurationService {\n public isLoading$: Observable<boolean>;\n public hasUnsavedChanges = false;\n\n private configurationStateSubj$ = new BehaviorSubject<SalesTransaction | null>(null);\n private previousConfigurationStateSubj$ = new BehaviorSubject<SalesTransaction | null>(null);\n private isLoadingSubj$ = new BehaviorSubject(false);\n\n public get state$(): Observable<SalesTransaction> {\n return this.configurationStateSubj$.asObservable().pipe(filter(isDefined));\n }\n\n public get state(): SalesTransaction | null {\n return this.configurationStateSubj$.getValue();\n }\n\n public get previousState(): SalesTransaction | null {\n return this.previousConfigurationStateSubj$.getValue();\n }\n\n public get root$(): Observable<SalesTransactionItem> {\n return this.state$.pipe(\n map(state => state.salesTransactionItems[0]),\n filter(isDefined),\n );\n }\n\n public get root(): SalesTransactionItem | null {\n return this.configurationStateSubj$.getValue()?.salesTransactionItems[0] ?? null;\n }\n\n constructor(\n private flowInfoService: FlowInfoService,\n private messageService: MessageService,\n private configurationRuntimeService: ConfigurationRuntimeService,\n private salesTransactionService: SalesTransactionService,\n private proceduresApiService: ProceduresApiService,\n ) {\n this.isLoading$ = this.isLoadingSubj$.asObservable();\n }\n\n public reset(): void {\n this.hasUnsavedChanges = false;\n\n this.configurationStateSubj$.next(null);\n this.previousConfigurationStateSubj$.next(null);\n }\n\n public init$(): Observable<void> {\n const { state } = this.salesTransactionService;\n const { productId, transactionItemId } = this.flowInfoService.context;\n\n if (!state) {\n return of(undefined);\n }\n\n let transactionItem = state?.salesTransactionItems.find(item => item.id === transactionItemId);\n if (!transactionItem && productId) {\n transactionItem =\n state.salesTransactionItems.find(item => item.productId === productId) ?? generateTransactionItem(productId);\n }\n\n const configurationState: SalesTransaction = {\n ...state,\n salesTransactionItems: transactionItem ? [transactionItem] : [],\n };\n\n this.configurationStateSubj$.next(configurationState);\n this.previousConfigurationStateSubj$.next(configurationState);\n\n return of(undefined);\n }\n\n public patch$(transactionItem: SalesTransactionItem): Observable<void> {\n const { state, root } = this;\n\n if (!state) {\n return throwError(() => new Error(`Configuration State is not initialized`));\n }\n if (!root) {\n return throwError(() => new Error(`Root SalesTransactionItem not found`));\n }\n\n const newRoot = new TransactionItemWorker(root).replace(transactionItem).ti;\n const newSalesTransaction: SalesTransaction = {\n ...state,\n salesTransactionItems: [newRoot],\n };\n\n return this.configureRequest$(newSalesTransaction).pipe(\n catchError(error => {\n console.error(error);\n\n if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n return throwError(() => error);\n }),\n tap(() => {\n if (!this.hasUnsavedChanges) {\n this.hasUnsavedChanges = true;\n }\n }),\n map(noop),\n );\n }\n\n public patch(transactionItem: SalesTransactionItem): void {\n this.patch$(transactionItem).subscribe();\n }\n\n public configureRequest$(salesTransaction: SalesTransaction): Observable<SalesTransaction> {\n const request: ProcedureApplyRequest = {\n salesTransaction,\n };\n\n this.isLoadingSubj$.next(true);\n\n return this.proceduresApiService.apply$(request).pipe(\n tap(result => {\n const newState = result.salesTransaction;\n this.configurationStateSubj$.next(newState);\n this.previousConfigurationStateSubj$.next(cloneDeep(newState));\n }),\n map(response => response.salesTransaction),\n catchError(error =>\n throwError(() => {\n const resetState = this.previousConfigurationStateSubj$.getValue();\n if (resetState) {\n this.previousConfigurationStateSubj$.next(cloneDeep(resetState));\n this.configurationStateSubj$.next(resetState);\n }\n\n if (error.error) {\n return extractErrorDetails(error.error).join('. ');\n }\n\n return error.message || JSON.stringify(error);\n }),\n ),\n finalize(() => this.isLoadingSubj$.next(false)),\n );\n }\n\n public configureExternal$(props: ExternalConfigurationProps): Observable<SalesTransaction> {\n // TODO: implement\n throw new Error('Not implemented');\n }\n\n public configureGuidedSelling$(data: GuidedSellingSubmitData): Observable<SalesTransaction> {\n // TODO: implement\n throw new Error('Not implemented');\n }\n\n public getPCMModel(): PCMModel {\n const pcmModel = this.configurationRuntimeService.pcmModel;\n if (!pcmModel) {\n throw new Error('PCM model not initialized');\n }\n\n return pcmModel;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { SalesTransactionApiService, SalesTransactionUpsertResponse } from '@veloceapps/api/v2';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n EntityUtil,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n SalesTransaction,\n SalesTransactionItem,\n UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary } from 'lodash';\nimport {\n BehaviorSubject,\n buffer,\n catchError,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n Observable,\n of,\n share,\n shareReplay,\n Subject,\n switchMap,\n take,\n takeUntil,\n tap,\n throwError,\n} from 'rxjs';\nimport { FlowInfoService, FlowStateService, SalesTransactionService } from '../../../services';\nimport { FlowStateSubscriptionOptions } from '../../../types/flow-state.types';\nimport { generateTransactionItem } from '../../../utils';\nimport { FlowConfigurationService } from '../../flow-configuration';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\n\ntype StateSubscription = {\n request: FlowStateExecutionRequestDTO;\n data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class ConfigurationStateService {\n public isInitialized$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n public canceledConfiguration$: Subject<void> = new Subject<void>();\n\n private readonly NOT_INITIALIZED = Symbol();\n private readonly EXECUTION_BUFFER_TIME = 100;\n\n private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n private stateId: string | null = null;\n private ownerId = '';\n private subscriptions: Record<string, StateSubscription> = {};\n private configurationStore: Record<string, unknown> = {};\n\n private executionInProgress$ = new BehaviorSubject(false);\n private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n private statelessExecutionRequest$: Observable<FlowStateExecutionResult> | null = null;\n\n constructor(\n private configurationRuntimeService: ConfigurationRuntimeService,\n private configurationService: ConfigurationService,\n private flowStateService: FlowStateService,\n private flowInfoService: FlowInfoService,\n private flowConfigurationService: FlowConfigurationService,\n private flowStateApiService: FlowStateApiService,\n private salesTransactionService: SalesTransactionService,\n private salesTransactionApiService: SalesTransactionApiService,\n private toastService: ToastService,\n ) {\n this.statefulExecutionRequest$ = this.initBufferedRequest$();\n }\n\n public get isExecutionInProgress$() {\n return this.executionInProgress$.asObservable();\n }\n\n public init$(): Observable<void> {\n let request$;\n if (this.flowStateService.stateId && this.isStatefulConfiguration) {\n request$ = this.initStateful$();\n } else {\n request$ = this.configurationService.init$();\n }\n\n return request$.pipe(\n take(1),\n tap(() => {\n this.isInitialized$.next(true);\n this.canceledConfiguration$ = new Subject();\n }),\n );\n }\n\n public cleanup(): void {\n Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n this.subscriptions = {};\n\n if (this.stateId) {\n this.cancelConfiguration();\n }\n\n this.configurationStore = {};\n this.executedFunctions = {};\n this.configurationService.reset();\n this.configurationRuntimeService.reset();\n }\n\n public execute$(exec: FlowStateExecutionRequest): Observable<FlowStateExecutionResult['selectors']> {\n const request = this.execToRequest(exec);\n\n return this.executeRequest$(request).pipe(\n map(result => {\n // Keep only requested results\n const actualSelectors = Object.entries(result.selectors).reduce(\n (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n if (exec.selectors?.[requestId]) {\n trunk[requestId] = result;\n }\n return trunk;\n },\n {},\n );\n\n return actualSelectors;\n }),\n );\n }\n\n public dispatch$(actionName: string, inputData: unknown = {}): Observable<FlowStateExecutionResult> {\n const exec: FlowStateExecutionRequest = {\n actions: [{ name: actionName, inputData }],\n };\n const request = this.execToRequest(exec);\n\n const executionRequest$ = this.executeRequest$(request);\n\n if (this.isStatefulConfiguration) {\n return executionRequest$;\n }\n\n // prevent parallel configuration requests in stateless mode\n if (!this.statelessExecutionRequest$) {\n this.statelessExecutionRequest$ = executionRequest$.pipe(\n shareReplay(),\n take(1),\n finalize(() => (this.statelessExecutionRequest$ = null)),\n );\n }\n return this.statelessExecutionRequest$;\n }\n\n public select$<Response = unknown>(\n selectorName: string,\n inputData: unknown = {},\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = UUID.UUID();\n const request = this.execToRequest({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n return this.executeRequest$(request).pipe(\n map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n );\n }\n\n public subscribe$<Response = unknown>(\n selectorName: string,\n inputData: unknown = {},\n options?: FlowStateSubscriptionOptions,\n ): Observable<FlowStateSelectorResponse<Response>> {\n const requestId = UUID.UUID();\n\n let subscription = this.subscriptions[requestId];\n if (!subscription) {\n const request = this.execToRequest({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n });\n\n subscription = {\n request,\n data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n };\n this.subscriptions[requestId] = subscription;\n\n if (!options?.cold) {\n this.executeRequest$(request).subscribe();\n }\n }\n\n return subscription.data$.pipe(\n filter(data => data != this.NOT_INITIALIZED),\n map(data => data as FlowStateSelectorResponse<Response>),\n distinctUntilChanged(),\n finalize(() => {\n if (!this.subscriptions[requestId]?.data$.observed) {\n delete this.subscriptions[requestId];\n }\n }),\n takeUntil(this.canceledConfiguration$),\n );\n }\n\n public saveConfiguration(): Observable<SalesTransactionUpsertResponse> {\n if (this.isStatefulConfiguration) {\n return this.flowStateApiService.saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '').pipe(\n switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))),\n map(r => ({ id: r.quoteId })),\n );\n }\n\n const state = this.salesTransactionService.state;\n if (!state) {\n return of({ id: '' });\n }\n\n const { standalone } = this.flowInfoService.flow.properties;\n if (standalone) {\n return this.salesTransactionApiService.upsert(state);\n }\n\n const salesTransaction = this.salesTransactionService.state;\n const configurationRoot = this.configurationService.root;\n if (!salesTransaction || !configurationRoot) {\n return of({ id: '' });\n }\n\n const isNewTransactionItem = salesTransaction.salesTransactionItems.every(li => li.id !== configurationRoot.id);\n\n let salesTransactionItems: SalesTransactionItem[];\n if (isNewTransactionItem) {\n salesTransactionItems = [...salesTransaction.salesTransactionItems, configurationRoot];\n } else {\n salesTransactionItems = salesTransaction.salesTransactionItems.map(ti =>\n ti.id === configurationRoot.id ? configurationRoot : ti,\n );\n }\n\n const newState: SalesTransaction = {\n ...salesTransaction,\n salesTransactionItems,\n };\n\n return this.flowConfigurationService.calculate$(newState).pipe(map(() => ({ id: '' })));\n }\n\n public cancelConfiguration(): Observable<void> {\n if (!this.isInitialized$.value) {\n return of(undefined);\n }\n\n this.canceledConfiguration$.next();\n this.canceledConfiguration$.complete();\n this.subscriptions = {};\n\n this.isInitialized$.next(false);\n if (!this.isInitialized$.value || !this.isStatefulConfiguration) {\n return of(undefined);\n }\n return this.flowStateApiService.cancelConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '');\n }\n\n private get isStatefulConfiguration(): boolean {\n return this.flowInfoService.flow?.properties.stateful ?? false;\n }\n\n private initStateful$(): Observable<void> {\n this.ownerId = this.configurationRuntimeService.uiDefinitionContainer?.id ?? '';\n const { productId, transactionItemId } = this.flowInfoService.context;\n if (!productId || !this.flowStateService.stateId) {\n return of(undefined);\n }\n\n const container = this.configurationRuntimeService.uiDefinitionContainer;\n\n let request$: Observable<FlowStateExecutionResult>;\n\n if (!transactionItemId) {\n request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {\n transactionItem: generateTransactionItem(productId),\n actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n });\n } else {\n request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {\n transactionItemId,\n actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n });\n }\n\n return request$.pipe(\n map(r => {\n this.stateId = r.stateId;\n return undefined;\n }),\n );\n }\n\n private execToRequest(exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n return {\n actions: exec.actions?.map(action => ({\n apiName: action.name,\n ownerId: this.ownerId,\n inputData: action.inputData ?? {},\n })),\n selectors:\n exec.selectors &&\n Object.entries(exec.selectors).reduce(\n (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n ...trunk,\n [key]: { apiName: selector.name, ownerId: this.ownerId, inputData: selector.inputData ?? {} },\n }),\n {},\n ),\n };\n }\n\n private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n if (!selectorResult.success) {\n this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n }\n\n const subscription$ = this.subscriptions[requestId]?.data$;\n if (subscription$) {\n subscription$.next(selectorResult);\n }\n });\n }\n\n private executeRequest$(\n req: FlowStateExecutionRequestDTO,\n forceSubscriptions?: boolean,\n ): Observable<FlowStateExecutionResult> {\n const fullRequest = cloneDeep(req);\n if (fullRequest.actions?.length || forceSubscriptions) {\n for (const subscription of Object.values(this.subscriptions)) {\n fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n }\n }\n\n let execution$;\n\n if (this.isStatefulConfiguration) {\n execution$ = this.executeStateful$(fullRequest);\n } else {\n execution$ = this.executeStateless$(fullRequest);\n }\n\n return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n }\n\n private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n this.executionInProgress$.next(true);\n\n return this.configurationService.state$.pipe(\n switchMap(state => {\n // Apply actions and execute configuration/price call\n // No need to run configuration if no actions in the request\n if (!request.actions?.length) {\n return of(undefined);\n }\n\n request.actions.forEach(action => {\n state = this.executeActionScript(state, action) ?? state;\n });\n\n return this.configurationService.configureRequest$(state);\n }),\n map(() => {\n // Run selectors and apply them to the state\n const configurationState = this.configurationService.state;\n if (!configurationState) {\n return { stateId: '', selectors: {} };\n }\n\n return this.runStatelessSelectors(request, configurationState);\n }),\n tap(() => this.executionInProgress$.next(false)),\n catchError(error => {\n const configurationState = this.configurationService.previousState;\n if (configurationState) {\n const selectorsResult = this.runStatelessSelectors(request, configurationState);\n this.handleSelectorsResponse(selectorsResult.selectors);\n }\n this.executionInProgress$.next(false);\n\n if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {\n this.toastService.add({ severity: ToastType.error, summary: String(error) });\n }\n\n return throwError(() => error);\n }),\n );\n }\n\n private initBufferedRequest$() {\n return this.statefulRequestStream$.pipe(\n buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n switchMap(requests => {\n if (!this.flowStateService.stateId || !this.stateId) {\n throw 'Stateful session is not initialized';\n }\n\n // merge buffered requests\n const request: FlowStateExecutionRequestDTO = {\n actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n selectors: requests\n .map(({ selectors }) => selectors)\n .filter(isDefined)\n .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n };\n\n this.executionInProgress$.next(true);\n return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request);\n }),\n tap(({ stateId }) => (this.stateId = stateId)),\n share(),\n tap(() => this.executionInProgress$.next(false)),\n catchError(e => {\n this.executionInProgress$.next(false);\n return throwError(() => e);\n }),\n );\n }\n\n private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n return this.executionInProgress$.pipe(\n filter(inProgress => !inProgress),\n take(1),\n switchMap(() =>\n // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n combineLatest([\n this.statefulExecutionRequest$,\n of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n ]),\n ),\n map(([response]) => response),\n take(1),\n );\n }\n\n private executeActionScript(request: SalesTransaction, processor: FlowStateExecutableDTO): SalesTransaction {\n const { actions } = this.configurationRuntimeService.uiDefinitionContainer ?? {};\n const configurationProcessor = actions?.find(action => action.apiName === processor.apiName);\n\n if (!configurationProcessor?.script) {\n throw `ConfigurationProcessor ${processor.apiName} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, processor.inputData) as SalesTransaction;\n }\n\n private executeSelectorScript(request: SalesTransaction, processor: FlowStateExecutableDTO): unknown {\n const { selectors } = this.configurationRuntimeService.uiDefinitionContainer ?? {};\n const configurationProcessor = selectors?.find(selector => selector.apiName === processor.apiName);\n\n if (!configurationProcessor?.script) {\n throw `ConfigurationProcessor ${processor.apiName} not found`;\n }\n\n return this.executeProcessorScript(request, configurationProcessor, processor.inputData);\n }\n\n private executeProcessorScript(\n request: SalesTransaction,\n configurationProcessor: ConfigurationProcessor,\n inputData: unknown,\n ): unknown {\n let functionToExecute = this.executedFunctions[configurationProcessor.apiName];\n if (!functionToExecute) {\n const script = `${configurationProcessor.script}\\nreturn transform;`;\n const sourceMap = `\\n//# sourceURL=${configurationProcessor.apiName}.js`;\n functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n this.executedFunctions[configurationProcessor.apiName] = functionToExecute;\n }\n\n return functionToExecute({\n request,\n inputData,\n flowStore: this.flowStateService.getFlowStore(),\n configurationStore: this.configurationStore,\n });\n }\n\n private runStatelessSelectors(\n request: FlowStateExecutionRequestDTO,\n configurationState: SalesTransaction,\n ): FlowStateExecutionResult {\n return EntityUtil.entries(request.selectors ?? {}).reduce(\n (result: FlowStateExecutionResult, [key, selector]) => {\n try {\n result.selectors[key] = {\n success: true,\n result: this.executeSelectorScript(configurationState, selector),\n };\n } catch (e) {\n console.error(e);\n result.selectors[key] = {\n success: false,\n errorMessage: String(e),\n };\n }\n\n return result;\n },\n { stateId: '', selectors: {} },\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationStateService } from './services/configuration-state.service';\nimport { ConfigurationService } from './services/configuration.service';\n\n@NgModule({\n imports: [ConfirmationDialogModule, ApiModule],\n providers: [ConfigurationService, ConfigurationStateService, ConfigurationRuntimeService],\n})\nexport class ConfigurationModule {}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\n\n@NgModule({\n imports: [ApiModule],\n providers: [FlowConfigurationService],\n})\nexport class FlowConfigurationModule {}\n","import { Injectable } from '@angular/core';\nimport { CatalogProducts, isDefined } from '@veloceapps/core';\nimport { BehaviorSubject, filter } from 'rxjs';\n\n@Injectable()\nexport class CatalogProductsService {\n private stateSubj$ = new BehaviorSubject<CatalogProducts | null>(null);\n\n public state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));\n\n public get state(): CatalogProducts | null {\n return this.stateSubj$.getValue();\n }\n\n public reset(): void {\n this.stateSubj$.next(null);\n }\n\n public setState(state: CatalogProducts): void {\n this.stateSubj$.next(state);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Prettify, VlDateSettings } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\n\nexport const FORMATTING_SETTINGS_TOKEN = new InjectionToken<{\n getFormattingSettings: (...args: unknown[]) => FormattingSettings;\n}>('Summary of formatting settings for variant types of data, e.g. numbers, text, dates, etc');\n\nexport type FormattingSettings = Prettify<\n {\n currencySymbol: string;\n thousandsSeparator: string;\n decimalSeparator: string;\n decimalsCount: number;\n actionCodeLabels: Dictionary<string>;\n } & VlDateSettings\n>;\n","export const UI_DEFINITION_VERSION = 3;\n","import { NgModule } from '@angular/core';\nimport {\n DEFAULT_ACTION_CODE_LABELS,\n DEFAULT_CURRENCY_SYMBOL,\n DEFAULT_DATE_FORMAT,\n DEFAULT_DECIMALS_COUNT,\n DEFAULT_DECIMAL_SEPARATOR,\n DEFAULT_THOUSANDS_SEPARATOR,\n getSupportedDateFormats,\n} from '@veloceapps/core';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { FlowConfigurationModule } from './modules/flow-configuration/flow-configuration.module';\nimport {\n FlowInfoService,\n FlowStateService,\n IntegrationState,\n ProductImagesService,\n RuntimeSettingsService,\n SalesTransactionService,\n} from './services';\nimport { CatalogProductsService } from './services/catalog-products.service';\nimport { FlowStateConfigurationService } from './services/flow-state-configuration.service';\nimport { FormattingSettings, FORMATTING_SETTINGS_TOKEN } from './types';\n\nexport const DEFAULT_FORMATTING_SETTINGS: FormattingSettings = {\n currencySymbol: DEFAULT_CURRENCY_SYMBOL,\n decimalsCount: DEFAULT_DECIMALS_COUNT,\n dateFormats: getSupportedDateFormats(DEFAULT_DATE_FORMAT),\n decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,\n thousandsSeparator: DEFAULT_THOUSANDS_SEPARATOR,\n actionCodeLabels: DEFAULT_ACTION_CODE_LABELS,\n};\n\n@NgModule({\n imports: [ConfigurationModule, FlowConfigurationModule],\n providers: [\n FlowInfoService,\n ProductImagesService,\n IntegrationState,\n FlowStateService,\n FlowStateConfigurationService,\n RuntimeSettingsService,\n SalesTransactionService,\n CatalogProductsService,\n {\n provide: FORMATTING_SETTINGS_TOKEN,\n useExisting: RuntimeSettingsService,\n },\n ],\n})\nexport class SdkCoreModule {}\n","import { Directive, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { DEFAULT_DATE_FORMAT } from '@veloceapps/core';\nimport { Calendar } from 'primeng/calendar';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Directive({\n selector: '[vlCalendar]',\n})\nexport class CalendarDirective implements OnInit, OnDestroy {\n @Input()\n public set vlCalendar(calendar: Calendar) {\n this.calendar = calendar;\n }\n private calendar!: Calendar;\n\n private ngControl = inject(NgControl, { host: true, optional: true });\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public ngOnInit(): void {\n if (this.calendar) {\n this.calendar.dateFormat = this.formattingSettings?.dateFormats.primengFormat ?? DEFAULT_DATE_FORMAT;\n\n if (this.ngControl && this.ngControl.control) {\n const control = this.ngControl.control;\n control.setValue(control.value, { emitEvent: false });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarDirective } from './primeng-calendar.directive';\n\n@NgModule({\n declarations: [CalendarDirective],\n exports: [CalendarDirective],\n})\nexport class SdkDirectivesModule {}\n","import { DATE_PIPE_DEFAULT_OPTIONS, formatDate } from '@angular/common';\nimport { LOCALE_ID, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { DateType, FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlDate',\n})\nexport class DatePipe implements PipeTransform, OnDestroy {\n private locale = inject(LOCALE_ID);\n private defaultOptions = inject(DATE_PIPE_DEFAULT_OPTIONS, { optional: true });\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public transform(date: string | number | Date | undefined | null, type: DateType = 'date'): string {\n if (!date) {\n return '';\n }\n\n const dateFormat = this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT;\n\n const formatMap: { [key in DateType]: string } = {\n date: dateFormat,\n time: DEFAULT_TIME_FORMAT,\n datetime: `${dateFormat} ${DEFAULT_TIME_FORMAT}`,\n };\n\n try {\n return formatDate(date, formatMap[type], this.locale, this.defaultOptions?.timezone);\n } catch (error) {\n return new Date(date).toString();\n }\n }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlNumber',\n})\nexport class NumberPipe implements PipeTransform, OnDestroy {\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public transform(price: string | number): string {\n return formatNumber(\n price,\n this.formattingSettings?.thousandsSeparator,\n this.formattingSettings?.decimalSeparator,\n this.formattingSettings?.decimalsCount,\n );\n }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_CURRENCY_SYMBOL, formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlPrice',\n})\nexport class PricePipe implements PipeTransform, OnDestroy {\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n private destroy$ = new Subject<void>();\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public transform(price: string | number): string {\n if (price == null || price === '') {\n return '';\n }\n\n return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(\n price,\n this.formattingSettings?.thousandsSeparator,\n this.formattingSettings?.decimalSeparator,\n this.formattingSettings?.decimalsCount,\n )}`;\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n name: 'vlActionCode',\n})\nexport class ActionCodePipe implements PipeTransform {\n private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n\n public transform(actionCode: string): string {\n return this.formattingSettings?.actionCodeLabels[actionCode] ?? actionCode;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DatePipe } from './date.pipe';\nimport { NumberPipe } from './number.pipe';\nimport { PricePipe } from './price.pipe';\nimport { ActionCodePipe } from './action-code.pipe';\n\n@NgModule({\n declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n})\nexport class SdkPipesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FlowInfoService","i2","i1","i2.SalesTransactionService","i2.FlowStateService","filter","map","catchError","tap","finalize","i3.ConfigurationRuntimeService","i1.SalesTransactionService","i1.ConfigurationRuntimeService","i2.ConfigurationService","i3.FlowStateService","i3.FlowInfoService","i4.FlowConfigurationService","i5","i3.SalesTransactionService","i6","i7"],"mappings":"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"}