@veloceapps/sdk 11.0.0-0 → 11.0.0-1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. package/cms/cms.actions.d.ts +0 -12
  2. package/cms/vendor-map.d.ts +1 -4
  3. package/esm2020/cms/cms.actions.mjs +1 -17
  4. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
  5. package/esm2020/cms/vendor-map.mjs +2 -3
  6. package/esm2020/core/services/flow-info.service.mjs +1 -3
  7. package/esm2020/src/flow.component.mjs +4 -5
  8. package/esm2020/src/flow.module.mjs +5 -10
  9. package/esm2020/src/services/flow-dialog.service.mjs +1 -30
  10. package/fesm2015/veloceapps-sdk-cms.mjs +4 -23
  11. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  12. package/fesm2015/veloceapps-sdk-core.mjs +0 -2
  13. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  14. package/fesm2015/veloceapps-sdk.mjs +57 -248
  15. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  16. package/fesm2020/veloceapps-sdk-cms.mjs +4 -23
  17. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  18. package/fesm2020/veloceapps-sdk-core.mjs +0 -2
  19. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  20. package/fesm2020/veloceapps-sdk.mjs +57 -248
  21. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  22. package/package.json +1 -1
  23. package/src/flow.module.d.ts +2 -3
  24. package/src/services/flow-dialog.service.d.ts +0 -4
  25. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +0 -129
  26. package/esm2020/src/components/doc-gen/doc-gen.module.mjs +0 -19
  27. package/esm2020/src/services/doc-gen.service.mjs +0 -34
  28. package/src/components/doc-gen/doc-gen.component.d.ts +0 -26
  29. package/src/components/doc-gen/doc-gen.module.d.ts +0 -9
  30. package/src/services/doc-gen.service.d.ts +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/helpers.ts","../../../../libs/sdk/core/types/flow-customization.types.ts","../../../../libs/sdk/core/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/runtime.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/services/context.service.ts","../../../../libs/sdk/core/services/flow-info.service.ts","../../../../libs/sdk/core/services/quote-draft.service.ts","../../../../libs/sdk/core/services/flow-state.service.ts","../../../../libs/sdk/core/utils/line-item.utils.ts","../../../../libs/sdk/core/utils/line-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-update.service.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.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/runtime-context.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-runtime.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-state.service.ts","../../../../libs/sdk/core/modules/configuration/configuration.module.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 {\n Attribute,\n ConfigurationContext,\n ConfigurationContextMode,\n ConfigurationRequest,\n LineItem,\n UIDefinitionProps,\n UUID,\n} from '@veloceapps/core';\nimport { RuntimeContext } from '../../types';\nimport { GuidedSellingSubmitData, NewConfigurationProps } from './types/configuration.types';\n\nexport const getDefaultLineItem = (\n context: RuntimeContext,\n uiDefinitionProperties: UIDefinitionProps,\n qty = 1,\n): LineItem => {\n const id = UUID.UUID();\n const attributes: Attribute[] = [];\n const lineItems: LineItem[] = [];\n\n return {\n id,\n type: uiDefinitionProperties.rootType ?? '',\n cfgStatus: 'Default',\n actionCode: 'ADD',\n qty,\n attributes,\n lineItems,\n productName: context.properties?.['displayName'] || context.productName,\n productId: context.productId ?? '',\n ...(uiDefinitionProperties.offeringId ? { offeringId: uiDefinitionProperties.offeringId } : {}),\n } as LineItem;\n};\n\nexport const getGuidedSellingConfigurationRequest = (\n data: GuidedSellingSubmitData,\n context: ConfigurationContext,\n): ConfigurationRequest => {\n const _context = { ...context };\n delete _context.configurationToken;\n\n const properties = { ...context.properties };\n delete properties['ConfigurationToken'];\n\n return {\n mode: 'SEARCH',\n step: 'START',\n attributeDomainMode: 'ALL',\n context: {\n ..._context,\n mode: ConfigurationContextMode.TEST,\n properties: {\n ...properties,\n ModelId: data.modelId,\n Name: 'Veloce Guided Selling',\n PricingEnabled: 'false',\n RuntimeMode: 'TEST',\n },\n },\n lineItem: {\n actionCode: 'ADD',\n cfgStatus: 'Default',\n id: UUID.UUID(),\n qty: 1,\n type: data.modelType,\n attributes: Object.entries(data.attributesMap).map(([name, value]) => ({\n name,\n value,\n cfgStatus: 'User',\n })),\n } as LineItem,\n };\n};\n\nexport const generateConfigurationLineItem = (props: NewConfigurationProps, qty = 1): LineItem => {\n const id = UUID.UUID();\n const attributes = Object.entries(props.attributesMap ?? {}).map(([name, value]) => ({\n name,\n value,\n cfgStatus: 'User',\n }));\n const lineItems: LineItem[] = [];\n\n return {\n id,\n type: props.product.typeName ?? '',\n cfgStatus: 'Default',\n actionCode: 'ADD',\n qty,\n attributes,\n lineItems,\n productName: props.product.name,\n productId: props.product.id ?? '',\n } as LineItem;\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 /**\n * @deprecated Use `getTemplateComponents` instead\n */\n getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n /**\n * @deprecated Use `getTemplateComponents` instead\n */\n getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n /**\n * @deprecated Use `getTemplateComponents` instead\n */\n getAssetsComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n getTemplates?(): Observable<UITemplate[]>;\n getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;\n\n getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;\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","import { ContextProperties, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\n\nexport enum RuntimeMode {\n TEST,\n PROD,\n}\n\nexport enum RuntimeOperation {\n INIT = 'INIT',\n UPDATE = 'UPDATE',\n}\n\nexport enum RuntimeStep {\n START = 'START',\n UPDATE = 'UPDATE',\n}\n\nexport interface InvocationContext {\n runtimeOperation?: RuntimeOperation;\n runtimeStep?: RuntimeStep;\n}\n\nexport interface RuntimeContext {\n modelId: string;\n runtimeMode: RuntimeMode;\n runtimeModel: RuntimeModel;\n uiDefinitionContainer?: UIDefinitionContainer;\n productId?: string;\n productName?: string;\n productType?: string;\n properties?: ContextProperties;\n offeringId?: string;\n offeringInstanceId?: string;\n invocationContext?: InvocationContext;\n}\n","export const UI_DEFINITION_VERSION = 3;\n","import { Injectable } from '@angular/core';\nimport { ContextApiService } from '@veloceapps/api';\nimport { ConfigurationContext, ConfigurationContextMode } from '@veloceapps/core';\nimport { merge } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class ContextService {\n private context = new BehaviorSubject<ConfigurationContext | null>(null);\n\n constructor(private contextApiService: ContextApiService) {}\n\n public get isInitialized(): boolean {\n return Boolean(this.context.value);\n }\n\n public get isInitialized$(): Observable<boolean> {\n return this.context.pipe(map(Boolean));\n }\n\n public get mode(): ConfigurationContextMode | undefined {\n return this.resolve().properties['#mode'];\n }\n\n public get isEditMode$(): Observable<boolean> {\n return this.resolve$().pipe(map(() => this.isEditMode));\n }\n\n public get isEditMode(): boolean {\n const context = this.resolve();\n\n if (context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n return true;\n }\n\n if (context.properties['#mode'] === ConfigurationContextMode.QUOTE) {\n return context.properties.Status === 'Draft';\n }\n\n return false;\n }\n\n public resolve(): ConfigurationContext {\n if (!this.context.value) {\n throw new Error('Context is not initialized yet!');\n }\n\n return { ...this.context.value };\n }\n\n public resolve$(): Observable<ConfigurationContext> {\n return this.context.pipe(filter((ctx): ctx is ConfigurationContext => Boolean(ctx)));\n }\n\n public create(headerId: string, mode: ConfigurationContextMode): Observable<ConfigurationContext> {\n return this.contextApiService.getContext(headerId, mode).pipe(\n tap(context => this.context.next(merge(new ConfigurationContext(headerId, mode), context))),\n map(() => this.resolve() as ConfigurationContext),\n );\n }\n\n public initTestMode(): Observable<ConfigurationContext> {\n return this.create('TestId', ConfigurationContextMode.TEST).pipe(\n map(context => {\n return this.update({\n properties: {\n ...context.properties,\n RuntimeMode: ConfigurationContextMode.TEST,\n StartDate: new Date().toISOString().substring(0, 10),\n standalone: 'true',\n },\n });\n }),\n );\n }\n\n public update(partialContext: Partial<ConfigurationContext>): ConfigurationContext {\n const originalContext = this.resolve();\n\n const updatedContext: ConfigurationContext = {\n ...originalContext,\n ...(partialContext as ConfigurationContext),\n properties: {\n ...originalContext.properties,\n ...partialContext.properties,\n },\n };\n\n this.context.next(updatedContext);\n\n return updatedContext;\n }\n\n public set(context: ConfigurationContext): ConfigurationContext {\n const originalContext = this.resolve();\n\n const updatedContext: ConfigurationContext = {\n ...originalContext,\n ...context,\n };\n\n this.context.next(updatedContext);\n\n return updatedContext;\n }\n\n public delete(): void {\n this.context.next(null);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { FlowsApiService, UITemplatesApiService } from '@veloceapps/api';\nimport { Flow, FlowTemplatesMap, UITemplate, UITemplateType } from '@veloceapps/core';\nimport { BehaviorSubject, catchError, forkJoin, map, noop, Observable, of, switchMap, tap, throwError } from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../types';\n\n@Injectable()\nexport class FlowInfoService {\n public flow$: Observable<Flow | null>;\n public params?: Params;\n public templates: { [key in UITemplateType]?: UITemplate } = {};\n\n public get flow(): Flow | null {\n return this.flowSubj$.value;\n }\n public set flow(value: Flow | null) {\n this.flowSubj$.next(value);\n }\n\n public get isLegacy(): boolean {\n return !!this.flow && this.flow?.properties.stateful == null;\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\n constructor(\n private flowsApiService: FlowsApiService,\n private templatesApiService: UITemplatesApiService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.flow$ = this.flowSubj$.asObservable();\n }\n\n public init$(flowId: string, routeQueryParams: Params): Observable<void> {\n return this.flowsApiService.getFlow(flowId).pipe(\n switchMap(flow => this.initFlowTemplates$(flow).pipe(map(() => flow))),\n tap(flow => {\n this.params = { ...routeQueryParams, ...flow.properties.queryParams };\n this.flowSubj$.next(flow);\n }),\n map(noop),\n catchError(e => {\n this.flowSubj$.next(null);\n return throwError(() => e);\n }),\n );\n }\n\n public cleanup(): void {\n this.flowSubj$.next(null);\n this.params = undefined;\n this.templates = {};\n }\n\n private initFlowTemplates$(flow: Flow): Observable<void> {\n return forkJoin([\n this.templatesApiService.fetchTemplates$(),\n this.customizationService?.getTemplates?.() ?? of([]),\n ]).pipe(\n map(([templates, localTemplates]) => {\n Object.entries({ ...this.defaultTemplates, ...flow.properties.templates }).forEach(([key, name]) => {\n const type = this.remapTemplateName(key);\n\n if (type) {\n this.templates[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 }\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 'docGen':\n return UITemplateType.DOCGEN;\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","import { Injectable } from '@angular/core';\nimport { AccountApiService, QuoteApiService } from '@veloceapps/api';\nimport { AccountAssetsState, ConfigurationContextMode, LineItem, PriceSummary, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, isEqual } from 'lodash';\nimport { BehaviorSubject, combineLatest, noop, Observable, of, zip } from 'rxjs';\nimport { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';\nimport { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\n\n@Injectable()\nexport class QuoteDraftService {\n private quoteSubj$ = new BehaviorSubject<QuoteDraft | null>(null);\n private assetsSubj$ = new BehaviorSubject<AccountAssetsState | null>(null);\n private resetSubj$ = new BehaviorSubject<boolean>(true);\n private isInitializedSubj$ = new BehaviorSubject<boolean>(false);\n private initialCurrentState: LineItem[] = [];\n private _hasUnsavedChanges = false;\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 public set isInitialized(value: boolean) {\n if (this.isInitialized !== value) {\n this.isInitializedSubj$.next(value);\n }\n }\n\n public get hasUnsavedChanges(): boolean {\n return this._hasUnsavedChanges;\n }\n public set hasUnsavedChanges(value: boolean) {\n this._hasUnsavedChanges = value;\n\n if (!this._hasUnsavedChanges) {\n this.initialCurrentState = this.quoteDraft?.currentState ?? [];\n }\n }\n\n public get hasProducts$(): Observable<boolean> {\n return this.quoteSubj$.pipe(map(() => this.hasProducts));\n }\n public get hasProducts(): boolean {\n return Boolean(this.quoteSubj$.value?.currentState.length);\n }\n\n public get hasAssets$(): Observable<boolean> {\n return this.assetsSubj$.pipe(map(() => this.hasAssets));\n }\n public get hasAssets(): boolean {\n return Boolean(this.assetsSubj$.value?.currentState.length);\n }\n\n public get assetsState(): AccountAssetsState | null {\n return this.assetsSubj$.value;\n }\n\n public reset$ = this.resetSubj$.asObservable();\n\n constructor(\n private context: ContextService,\n private flowInfoService: FlowInfoService,\n private accountApiService: AccountApiService,\n private quoteApiService: QuoteApiService,\n ) {\n this.isInitializedSubj$\n .pipe(\n filter(isInitialized => isInitialized),\n switchMap(() => this.quoteSubj$.asObservable()),\n skip(1),\n tap(quote => this.markAsUpdated(quote)),\n )\n .subscribe();\n }\n\n public reset(): void {\n this.resetSubj$.next(true);\n this.quoteSubj$.next(null);\n this.assetsSubj$.next(null);\n this.isInitialized = false;\n this.hasUnsavedChanges = false;\n }\n\n public init(headerId: string, params: Dictionary<string>): Observable<void> {\n const ctx = this.context.resolve();\n const isAccountMode = this.context.mode === ConfigurationContextMode.ACCOUNT;\n const accountId = isAccountMode ? headerId : ctx.properties.AccountId;\n\n return zip(\n accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null),\n isAccountMode\n ? of(QuoteDraft.emptyQuote(ConfigurationContextMode.ACCOUNT))\n : this.quoteApiService.getQuoteState(headerId, params),\n ).pipe(\n tap(([assets, quote]) => {\n if (assets) {\n this.assetsSubj$.next(assets);\n }\n\n this.quoteSubj$.next(quote);\n if (assets && isAccountMode) {\n this.context.update(assets.context);\n } else {\n this.context.update(quote.context);\n }\n }),\n map(() => noop()),\n take(1),\n );\n }\n\n public finalizeInit(): void {\n this.isInitialized = true;\n this.hasUnsavedChanges = false;\n }\n\n public setCurrentLineItemState(lineItems: LineItem[]): void {\n const quoteDraft = this.quoteSubj$.value;\n\n if (!quoteDraft) {\n return;\n }\n\n this.quoteSubj$.next({\n ...quoteDraft,\n currentState: lineItems,\n });\n }\n\n public updateQuoteDraft(update: Partial<QuoteDraft>): void {\n const quoteDraft = this.quoteSubj$.value;\n\n if (!quoteDraft) {\n return;\n }\n\n if (update.context) {\n this.context.set(update.context);\n }\n\n this.quoteSubj$.next({\n ...quoteDraft,\n ...update,\n });\n }\n\n public updateByPriceSummary(priceSummary: PriceSummary): void {\n const quoteDraft = this.quoteSubj$.value;\n\n if (!quoteDraft) {\n return;\n }\n\n const updatedCurrentState = this.currentState.map(lineItem => {\n const updated = priceSummary.lineItems.find(li => li.id === lineItem.id);\n return updated ?? lineItem;\n });\n\n this.quoteSubj$.next({\n ...quoteDraft,\n currentState: updatedCurrentState,\n totalPrices: priceSummary.totalPrices,\n approvalItems: priceSummary.approvalItems,\n });\n }\n\n public setAssetsState(assetsState: AccountAssetsState): void {\n this.assetsSubj$.next(assetsState);\n }\n\n public get quoteDraft$(): Observable<QuoteDraft> {\n return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(\n map(() => this.quoteDraft),\n filter((quote): quote is QuoteDraft => Boolean(quote)),\n shareReplay(),\n );\n }\n\n public get quoteDraft(): QuoteDraft | null {\n const quote = this.quoteSubj$.value;\n\n if (!quote) {\n return null;\n }\n\n return {\n ...quote,\n context: this.context.resolve(),\n };\n }\n\n public get currentState$(): Observable<LineItem[]> {\n return this.quoteDraft$.pipe(map(quote => quote.currentState));\n }\n\n public get currentState(): LineItem[] {\n return this.quoteDraft?.currentState ?? [];\n }\n\n public get isStandalone(): boolean {\n return this.flowInfoService.flow?.properties.standalone ?? false;\n }\n\n public get isStandalone$(): Observable<boolean> {\n return this.flowInfoService.flow$.pipe(map(() => this.isStandalone));\n }\n\n public getInitialCurrentState(): LineItem[] {\n return this.initialCurrentState;\n }\n\n public isEditMode$(): Observable<boolean> {\n return this.context.resolve$().pipe(map(() => this.isEditMode()));\n }\n\n public isEditMode(): boolean {\n const context = this.context.resolve();\n\n if (context.mode === ConfigurationContextMode.ACCOUNT) {\n return true;\n }\n\n if (context.mode === ConfigurationContextMode.QUOTE) {\n return context.properties.Status === 'Draft';\n }\n\n return false;\n }\n\n private markAsUpdated(quote: QuoteDraft | null): void {\n if (quote?.context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n this.hasUnsavedChanges = !!quote && !quote.currentState.every(li => li.actionCode === 'EXIST');\n } else {\n this.hasUnsavedChanges = !isEqual(this.initialCurrentState, quote?.currentState);\n }\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n Charge,\n CompiledPricePlan,\n ConfigurationContext,\n ConfigurationContextMode,\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n ConfigurationProcessorTypes,\n EntityUtil,\n Flow,\n FlowState,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n MetricRule,\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 shareReplay,\n Subject,\n switchMap,\n take,\n takeUntil,\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 { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\nimport { QuoteDraftService } from './quote-draft.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 public charges$: Observable<Dictionary<Charge>>;\n public pricePlans$: Observable<Dictionary<CompiledPricePlan>>;\n public activeMetrics$: Observable<MetricRule[]>;\n public isPriceListLocked$: Observable<boolean>;\n\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 contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private flowInfoService: FlowInfoService,\n private flowConfiguration: FlowConfigurationService,\n private processorsApiService: ConfigurationProcessorsApiService,\n private flowStateApiService: FlowStateApiService,\n private quoteApiService: QuoteApiService,\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 QuoteDraft changes and call executeRequest so that\n all subscriptions get their updates according to updated QuoteDraft\n */\n this.isInitialized$()\n .pipe(\n filter(Boolean),\n filter(() => !this.getFlowSafe().properties.stateful),\n switchMap(() => this.flowConfiguration.updated$),\n switchMap(() => this.executeRequest$({}, true)),\n )\n .subscribe();\n\n this.charges$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.charges));\n } else {\n return this.subscribe$<Dictionary<Charge>>(UITemplateType.FLOW_ENGINE, 'CHARGES', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : {})));\n }\n }),\n shareReplay(1),\n );\n this.charges$.subscribe();\n\n this.pricePlans$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.pricePlans));\n } else {\n return this.subscribe$<Dictionary<CompiledPricePlan>>(UITemplateType.FLOW_ENGINE, 'PRICE_PLANS', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : {})));\n }\n }),\n shareReplay(1),\n );\n this.pricePlans$.subscribe();\n\n this.activeMetrics$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.activeMetrics));\n } else {\n return this.subscribe$<MetricRule[]>(UITemplateType.FLOW_ENGINE, 'ACTIVE_METRICS', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : [])));\n }\n }),\n shareReplay(1),\n );\n this.activeMetrics$.subscribe();\n\n this.isPriceListLocked$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return of(false);\n } else {\n return this.subscribe$<boolean>(UITemplateType.FLOW_ENGINE, 'IS_PRICE_LIST_LOCKED', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : false)));\n }\n }),\n shareReplay(1),\n );\n this.isPriceListLocked$.subscribe();\n }\n\n public init$(): Observable<void> {\n return this.initProcessors$().pipe(\n switchMap(() => {\n if (this.getFlowSafe().properties.stateful) {\n return this.initStateful$();\n } else {\n return this.initStateless$();\n }\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$.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.getFlowSafe().properties.stateful\n ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n : this.quoteDraftService.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.quoteDraftService.isInitialized$]).pipe(\n map(values => values.some(Boolean)),\n );\n }\n\n public isInitialized(): boolean {\n return Boolean(this.stateId$.value) || this.quoteDraftService.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<{ quoteId: string }> {\n if (this.getFlowSafe().properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.save(this.stateId$.value).pipe(\n tap(() => {\n Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n this.trackedStatefulChangesMap.set(key, false);\n });\n }),\n );\n }\n } else {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (quoteDraft) {\n return this.quoteApiService.upsertQuote(quoteDraft).pipe(\n tap(({ versionId }) => {\n this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n }),\n );\n }\n }\n\n return of({ quoteId: '' });\n }\n\n public submit$(): Observable<{ quoteId: string }> {\n if (this.getFlowSafe().properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.submit(this.stateId$.value);\n }\n } else {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (quoteDraft) {\n return this.quoteApiService.submitQuote(quoteDraft).pipe(\n tap(({ versionId }) => {\n this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n }),\n );\n }\n }\n\n return of({ quoteId: '' });\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.getFlowSafe().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 // Subscriptions\n this.subscribe$<ConfigurationContext>(UITemplateType.FLOW_ENGINE, 'CONTEXT', null, { cold: true })\n .pipe(\n tap(response => {\n if (response.success) {\n this.contextService.update(response.result);\n }\n }),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\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 const request = this.getDefaultExecutionRequestDTO();\n\n return this.flowStateApiService\n .init({\n quoteId: this.contextService.resolve().headerId,\n params: this.flowInfoService.params ?? {},\n actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n selectors: { ...selectors, ...request.selectors },\n actions: request.actions,\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 const { headerId } = this.contextService.resolve();\n return this.quoteDraftService.init(headerId, this.flowInfoService.params ?? {}).pipe(\n tap(() => {\n const assets = this.quoteDraftService.assetsState;\n if (assets) {\n this.flowStore = { ...this.flowStore, assets };\n }\n }),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return of(null);\n }\n return this.executeRequest$(this.getDefaultExecutionRequestDTO());\n }),\n switchMap(() => this.calculate$()),\n tap(() => this.quoteDraftService.finalizeInit()),\n map(noop),\n );\n }\n\n private calculate$(): Observable<void> {\n const flowState = this.quoteDraftService.quoteDraft;\n if (!flowState) {\n return of(undefined);\n }\n\n /*\n Don't execute procedures when:\n * Initializing a standalone product configuration UI, as procedure is execute in /price call\n * Initializing an empty account (account with no assets)\n */\n const isEmptyAccountMode =\n this.contextService.mode === ConfigurationContextMode.ACCOUNT &&\n !this.quoteDraftService.hasProducts &&\n !this.quoteDraftService.hasAssets &&\n !this.quoteDraftService.quoteDraft?.initialState.length;\n\n if (this.quoteDraftService.isStandalone || isEmptyAccountMode) {\n return of(undefined);\n }\n\n return this.flowConfiguration.calculate$(flowState);\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 if (!request.actions?.length || !this.isInitialized()) {\n return of(undefined);\n } else {\n return this.calculate$();\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 if (!this.quoteDraftService.quoteDraft || !request.actions?.length) {\n return;\n }\n\n let flowState = this.quoteDraftService.quoteDraft;\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.quoteDraftService.updateQuoteDraft(flowState);\n }\n\n private executeStatelessSelectors(request: FlowStateExecutionRequestDTO): FlowStateExecutionResult {\n if (!this.quoteDraftService.quoteDraft) {\n throw 'QuoteDraft is not initialized';\n }\n\n const flowState = this.quoteDraftService.quoteDraft;\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 getFlowSafe(): Flow {\n if (!this.flowInfoService.flow) {\n throw 'Flow is not defined';\n }\n\n return this.flowInfoService.flow;\n }\n\n private initProcessors$(): Observable<void> {\n const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n const flow = this.getFlowSafe();\n\n if (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 getDefaultExecutionRequestDTO(): FlowStateExecutionRequestDTO {\n const request: FlowStateExecutionRequestDTO = {\n actions: [],\n selectors: {},\n };\n\n if (this.getFlowSafe().properties.standalone) {\n return request;\n }\n\n const flowEngineTemplateId = this.getOwnerIdByScope(UITemplateType.FLOW_ENGINE);\n\n request.actions?.push({\n apiName: 'UPDATE_CONTEXT_PROPERTIES',\n ownerId: flowEngineTemplateId,\n inputData: this.contextService.resolve().properties,\n });\n\n return request;\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 { Attribute, LineItem, NewAttribute, PortDomain, UUID } from '@veloceapps/core';\nimport { Dictionary, entries, flatten, map, sortBy } from 'lodash';\n\nexport const findLineItem = (id: string, lineItems: LineItem[]): LineItem | undefined => {\n return findLineItemWithComparator(lineItems, (li: LineItem) => li.id === id);\n};\n\nexport const findLineItemWithComparator = (\n lineItems: LineItem[],\n comparator: (li: LineItem) => boolean,\n): LineItem | undefined => {\n let currentLevel = lineItems;\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.lineItems));\n }\n\n return;\n};\n\nexport const insertLineItem = (lineItem: LineItem, parentId: string, toInsert: LineItem): LineItem => {\n const insertData = lineItem.id === parentId ? [toInsert] : [];\n return {\n ...lineItem,\n lineItems: [\n ...insertData,\n ...lineItem.lineItems.map(li => {\n return insertLineItem(li, parentId, toInsert);\n }),\n ],\n };\n};\n\nexport const removeLineItem = (lineItem: LineItem, idToRemove: string): LineItem => {\n return {\n ...lineItem,\n lineItems: lineItem.lineItems\n .map(li => {\n if (li.id === idToRemove) {\n return;\n } else if (li.lineItems.length) {\n return removeLineItem(li, idToRemove);\n }\n return li;\n })\n .filter(r => !!r) as LineItem[],\n };\n};\n\nexport const replaceLineItem = (\n lineItem: LineItem,\n replaceTo: LineItem,\n skipCardinalityCalculation: boolean = false,\n): LineItem => {\n if (lineItem.id === replaceTo.id) {\n if (!skipCardinalityCalculation) {\n return { ...recalculateCardinalityVariables(lineItem, replaceTo) };\n } else {\n return { ...replaceTo };\n }\n }\n\n return {\n ...lineItem,\n lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),\n };\n};\n\nconst collectCardinalityComputations = (portDomains: Dictionary<PortDomain>): Map<string, boolean> => {\n const cardinalityComputations = new Map<string, boolean>();\n entries(portDomains).forEach(([key, portDomain]) => {\n cardinalityComputations.set(key, portDomain.properties['cardinalityComputation'] === 'true');\n });\n return cardinalityComputations;\n};\n\nconst calculateCardinalityVariables = (\n lineItems: LineItem[],\n cardinalityComputations: Map<string, boolean>,\n): Map<string, number> => {\n const cardVars = new Map<string, number>();\n lineItems\n .filter(({ port, type }) => !!port && !!type)\n .forEach(li => {\n if (cardinalityComputations.get(`${li.port}`)) {\n const cardinalityVariableName = `#CV-${li.type}@${li.port}`;\n cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);\n }\n });\n return cardVars;\n};\n\nconst cardinalityRegexp = new RegExp('#CV-[a-zA-Z0-9_]+@(?<portName>[a-zA-Z0-9_]+)');\n\nexport const recalculateCardinalityVariables = (original: LineItem, updated: LineItem): LineItem => {\n const cardinalityComputations = collectCardinalityComputations(updated.portDomains ?? original.portDomains ?? {});\n const cardinalityVariables = calculateCardinalityVariables(updated.lineItems, cardinalityComputations);\n const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems, cardinalityComputations);\n\n originalCardinalityVariables.forEach((value, key) => {\n const execArray = cardinalityRegexp.exec(key);\n const portName = execArray?.groups?.['portName'];\n if (!portName || cardinalityComputations.get(portName)) {\n if (cardinalityVariables.get(key) === value) {\n // no need to update cardinality if no changes\n cardinalityVariables.delete(key);\n } else if (!cardinalityVariables.has(key)) {\n // remove last item from port\n cardinalityVariables.set(key, 0);\n }\n }\n });\n\n return {\n ...updated,\n attributes: upsertAttributes(\n updated.attributes,\n [...cardinalityVariables].map(([name, value]) => ({ name, value, cfgStatus: 'Changed' })),\n ),\n };\n};\n\nexport const mapAttributes = (attributes: Attribute[]): Dictionary<any> => {\n return attributes.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});\n};\n\nexport const getAttributes = (attributes: Attribute[], names: string[] = []): Attribute[] => {\n const filtered = attributes.filter(({ name }) => names.includes(name));\n return sortBy(filtered, [({ name }): number => names.indexOf(name)]);\n};\n\nexport const upsertAttributes = (originalAttributes: Attribute[], attributesToUpsert: NewAttribute[]): Attribute[] => {\n return attributesToUpsert.reduce((acc, { name, value }) => {\n const [origAttr] = getAttributes(acc, [name]);\n return [\n ...acc.filter(attr => attr.name !== name),\n { ...(origAttr ?? { name, type: '' }), cfgStatus: origAttr ? 'Changed' : 'User', value },\n ];\n }, originalAttributes);\n};\n\nexport const patchAttributes = (\n rootLineItem: LineItem,\n id: string,\n attrs: NewAttribute[],\n skipCardinalityCalculation: boolean = false,\n): LineItem => {\n const lineItem = findLineItem(id, [rootLineItem]);\n\n if (!lineItem) {\n return rootLineItem;\n }\n\n const attributes = upsertAttributes(lineItem.attributes, attrs);\n return replaceLineItem(rootLineItem, { ...lineItem, attributes }, skipCardinalityCalculation);\n};\n\nexport const getAttributeValue = (attributes: Attribute[], name: string): any =>\n attributes.find(attr => attr.name === name)?.value;\n\nexport const generateLineItem = (\n port: string,\n type: string,\n parentId: string,\n attributes: NewAttribute[] = [],\n lineItems: LineItem[] = [],\n): LineItem => {\n return {\n id: UUID.UUID(),\n port,\n type,\n actionCode: 'ADD',\n cfgStatus: 'New',\n attributes: attributes.map(({ name, value }) => ({ cfgStatus: 'User', name, value })),\n lineItems,\n parentId,\n qty: 1,\n } as LineItem;\n};\n\nexport const getRecommendedPrices = (portDomain: PortDomain, type: string): { net: number; list: number } => {\n const domainType = portDomain.domainTypes.find(({ name }) => name === type);\n\n const [net, list] = domainType?.recommendedPrices\n ?.filter(({ chargeMethod }) => chargeMethod === 'ONE_TIME')\n .reduce(\n (acc, rp) => {\n const [netPrice, listPrice] = acc;\n return [netPrice + rp.netPrice, listPrice + rp.listPrice];\n },\n [0, 0],\n ) ?? [0, 0];\n\n return { net, list };\n};\n\nexport const getOriginParent = (lineItems: LineItem[], currentLineItem: LineItem): LineItem | undefined => {\n let target: LineItem | undefined = currentLineItem;\n while (target && target.rampInstanceId) {\n target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);\n }\n return target;\n};\n\nexport const assetPredicateFn = (lineItem: LineItem, assetId?: string): boolean => {\n if (!assetId) {\n return false;\n }\n\n return lineItem.assetId === assetId || lineItem.openOrderLineItemId === assetId;\n};\n\nexport const multiplyLineItems = (lineItem: LineItem, qty: number, split: boolean): LineItem[] => {\n if (split) {\n const unifyIds = (lineItem: LineItem): LineItem => ({\n ...lineItem,\n id: UUID.UUID(),\n lineItems: lineItem.lineItems.map(unifyIds),\n });\n\n return map(new Array(qty), () => unifyIds(lineItem));\n } else {\n return [\n {\n ...lineItem,\n qty: qty,\n },\n ];\n }\n};\n\nexport const isTechnicalAttribute = (name: string): boolean => {\n return name.startsWith('#') || name.startsWith('$');\n};\n\nexport const filterOutTechnicalAttributes = <T extends { name: string }>(attributes: T[]): T[] => {\n return attributes.filter(({ name }) => !isTechnicalAttribute(name));\n};\n","import { LineItem, NewAttribute } from '@veloceapps/core';\nimport { insertLineItem, patchAttributes, removeLineItem, replaceLineItem } from './line-item.utils';\n\nexport class LineItemWorker {\n public li: LineItem;\n\n constructor(src: LineItem) {\n this.li = { ...src };\n }\n\n public insert(parentId: string, toInsert: LineItem): LineItemWorker {\n return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));\n }\n\n public remove(id: string): LineItemWorker {\n return new LineItemWorker(removeLineItem(this.li, id));\n }\n\n public replace(toReplace: LineItem, skipCardinalityCalculation: boolean = false): LineItemWorker {\n return new LineItemWorker(replaceLineItem(this.li, toReplace, skipCardinalityCalculation));\n }\n\n public patchAttribute(\n attrs: NewAttribute[],\n id?: string,\n skipCardinalityCalculation: boolean = false,\n ): LineItemWorker {\n return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs, skipCardinalityCalculation));\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 { Injectable } from '@angular/core';\nimport { Charge, ChargeGroupUtils, LineItem } from '@veloceapps/core';\nimport { Dictionary, flatten } from 'lodash';\nimport moment from 'moment';\nimport { LineItemWorker } from '../../../utils';\nimport { FlowUpdateParams } from '../types/update.types';\n\n@Injectable()\nexport class FlowUpdateService {\n public update(rootLineItems: LineItem[], updates: FlowUpdateParams[], charges?: Dictionary<Charge>): void {\n let remainingUpdates = [...updates];\n let currentLevel = rootLineItems;\n\n while (currentLevel.length && remainingUpdates.length) {\n currentLevel.forEach(li => {\n const unhandledUpdates: FlowUpdateParams[] = [];\n\n remainingUpdates.forEach(update => {\n let updated = false;\n\n switch (update.dataType) {\n case 'LINEITEM':\n updated = this.applyLineItemUpdate(li, update, charges);\n break;\n case 'CHARGE':\n updated = this.applyChargeUpdate(li, update);\n break;\n case 'GROUP_CHARGE':\n updated = this.applyChargeGroupUpdate(li, update);\n break;\n default:\n // Unknown dataType. Do not try to handle it anymore\n updated = true;\n }\n\n if (!updated) {\n unhandledUpdates.push(update);\n }\n });\n\n remainingUpdates = unhandledUpdates;\n });\n\n currentLevel = flatten(currentLevel.map(parent => parent.lineItems));\n }\n }\n\n public delete(lineItems: LineItem[], id: string): LineItem[] {\n const idsToRemove: string[] = [id];\n const topLevelLineItem = lineItems.find(li => li.id === id);\n\n if (topLevelLineItem) {\n // find term-related line items (which are only top level)\n // expired term line items won't be deleted\n let foundTermLineItem: LineItem | undefined = topLevelLineItem;\n\n while (foundTermLineItem) {\n foundTermLineItem = lineItems.find(li => foundTermLineItem && li.rampInstanceId === foundTermLineItem.id);\n if (foundTermLineItem) {\n idsToRemove.push(foundTermLineItem.id);\n }\n }\n }\n\n const filtered = lineItems.filter(lineItem => !idsToRemove.includes(lineItem.id));\n return filtered.map(lineItem => new LineItemWorker(lineItem).remove(id).li);\n }\n\n private applyLineItemUpdate(lineItem: LineItem, update: FlowUpdateParams, charges?: Dictionary<Charge>): boolean {\n if (lineItem.id !== update.id) {\n return false;\n }\n\n switch (update.attributeType) {\n case 'QTY':\n lineItem.qty = update.newValue;\n break;\n case 'EFFECTIVE_START_DATE':\n lineItem.properties['StartDate'] = moment(update.newValue).format('YYYY-MM-DD');\n break;\n case 'END_DATE':\n lineItem.properties['EndDate'] = moment(update.newValue).format('YYYY-MM-DD');\n break;\n case 'PRICE_ADJUSTMENT':\n {\n const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n if (charge) {\n charge.priceAdjustment = update.newValue;\n }\n }\n break;\n case 'LIST_PRICE_ADJUSTMENT':\n case 'MARGIN_ADJUSTMENT':\n {\n const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n if (charge) {\n charge.listPriceAdjustment = update.newValue;\n }\n }\n break;\n case 'COST_ADJUSTMENT':\n {\n const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n if (charge) {\n charge.costAdjustment = update.newValue;\n }\n }\n break;\n default:\n throw new Error(`Not suppored AttributeType for LineItem update: ${update.attributeType}`);\n }\n\n return true;\n }\n\n private applyChargeUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n const foundCharge = lineItem.chargeItems.find(({ id }) => id === update.id);\n if (!foundCharge) {\n return false;\n }\n\n if (update.attributeType === 'PRICE_ADJUSTMENT') {\n foundCharge.priceAdjustment = update.newValue;\n } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n foundCharge.listPriceAdjustment = update.newValue;\n } else {\n throw new Error(`Not suppored AttributeType for Charge Item update: ${update.attributeType}`);\n }\n\n return true;\n }\n\n private applyChargeGroupUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n const foundChargeGroup = ChargeGroupUtils.findChargeGroupById(update.id, lineItem);\n if (!foundChargeGroup) {\n return false;\n }\n\n if (update.attributeType === 'PRICE_ADJUSTMENT') {\n foundChargeGroup.priceAdjustment = update.newValue;\n } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n foundChargeGroup.listPriceAdjustment = update.newValue;\n } else {\n throw new Error(`Not suppored AttributeType for Charge Group Item update: ${update.attributeType}`);\n }\n\n return true;\n }\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 { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { ConfirmationComponent, ConfirmationConfig, ToastType } from '@veloceapps/components';\nimport {\n Charge,\n CompiledPricePlan,\n ConfigurationContext,\n ConfigurationMode,\n ConfigurationRequest,\n ConfigurationTranslatorUtils,\n ConfigurePrice,\n extractErrorDetails,\n LineItem,\n NewAttribute,\n PatchLineItemOptions,\n RuntimeModel,\n UIDefinitionProps,\n VlWindow,\n} from '@veloceapps/core';\nimport { cloneDeep, Dictionary, transform } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BehaviorSubject, Observable, shareReplay, throwError } from 'rxjs';\nimport { catchError, finalize, first, map, switchMap, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { RuntimeSettingsService } from '../../../services/runtime-settings.service';\nimport { RuntimeContext, RuntimeStep } from '../../../types';\nimport { assetPredicateFn } from '../../../utils';\nimport { LineItemWorker } from '../../../utils/line-item.worker';\nimport { getDefaultLineItem, getGuidedSellingConfigurationRequest } from '../helpers';\nimport { ExternalConfigurationProps, GuidedSellingSubmitData } from '../types/configuration.types';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\n\ndeclare const window: VlWindow;\n\n@Injectable()\nexport class ConfigurationService {\n private mode = ConfigurationMode.SEARCH;\n private configurableRamp: LineItem | undefined;\n\n private configurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n private previousConfigurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n private isLoadingSubj$ = new BehaviorSubject(false);\n\n public isLoading$ = this.isLoadingSubj$.asObservable();\n public hasUnsavedChanges = false;\n\n constructor(\n private quoteDraftService: QuoteDraftService,\n private runtimeService: ConfigurationRuntimeService,\n private contextService: ContextService,\n private configurationApiService: ConfigurationApiService,\n private messageService: MessageService,\n private dialogService: DialogService,\n private runtimeSettings: RuntimeSettingsService,\n ) {}\n\n public reset(): void {\n this.hasUnsavedChanges = false;\n this.runtimeService.reset();\n\n this.configurableRamp = undefined;\n this.configurationState.next(null);\n this.previousConfigurationState.next(null);\n }\n\n public patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem> {\n const source = this.getSnapshot();\n if (!source) {\n return throwError(() => new Error(`Source LineItem not found`));\n }\n\n const skipCardinalityCalculation =\n options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';\n\n this.configurableRamp = new LineItemWorker(source).replace(lineItem, skipCardinalityCalculation).li;\n\n return this.configure().pipe(\n catchError(error => {\n console.error(error);\n\n if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n // bounce back if configuration call has failed\n const prevState = this.configurationState.value;\n this.configurationState.next(prevState ? { ...prevState } : null);\n\n return throwError(() => error);\n }),\n tap(() => {\n if (!this.hasUnsavedChanges) {\n this.hasUnsavedChanges = true;\n }\n }),\n );\n }\n\n public patch(lineItem: LineItem, options?: PatchLineItemOptions): void {\n this.patch$(lineItem, options).subscribe();\n }\n\n public setConfigurableRamp(lineItem: LineItem): void {\n this.configurableRamp = lineItem;\n }\n\n public get(): Observable<LineItem | undefined> {\n return this.configurationState.pipe(\n map(state => state?.lineItem),\n shareReplay(),\n );\n }\n\n public getSnapshot(): LineItem | undefined {\n return this.configurationState.value?.lineItem ? { ...this.configurationState.value?.lineItem } : undefined;\n }\n\n public getRuntimeModel(): RuntimeModel {\n const runtimeModel = this.runtimeService.runtimeModel;\n if (!runtimeModel) {\n throw new Error('Runtime model not initialized');\n }\n\n return runtimeModel;\n }\n\n public getRuntimeContext(): RuntimeContext {\n const runtimeContext = this.runtimeService.runtimeContext;\n if (!runtimeContext) {\n throw new Error('Runtime context not initialized');\n }\n\n return runtimeContext;\n }\n\n public get state$(): Observable<ConfigurePrice | null> {\n return this.configurationState.asObservable();\n }\n\n public get stateSnapshot(): ConfigurePrice | null {\n return this.configurationState.value;\n }\n\n public get previousStateSnapshot(): ConfigurePrice | null {\n return this.previousConfigurationState.value;\n }\n\n public get contextSnapshot(): ConfigurationContext {\n return this.contextService.resolve();\n }\n\n public get context$(): Observable<ConfigurationContext> {\n return this.contextService.resolve$();\n }\n\n public get charges$(): Observable<Dictionary<Charge>> {\n return this.configurationState.pipe(map(state => state?.charges ?? {}));\n }\n\n public get chargesSnapshot(): Dictionary<Charge> {\n return this.configurationState.value?.charges ?? {};\n }\n\n public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n return this.configurationState.pipe(map(state => state?.pricePlans ?? {}));\n }\n\n public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n return this.configurationState.value?.pricePlans ?? {};\n }\n\n public get procedureContext$(): Observable<Dictionary<unknown>> {\n return this.configurationState.pipe(map(state => state?.procedureContext ?? {}));\n }\n\n public get procedureContextSnapshot(): Dictionary<unknown> {\n return this.configurationState.value?.procedureContext ?? {};\n }\n\n public configure(): Observable<LineItem> {\n return this.configureRequest$(this.generateRequest());\n }\n\n public configureRequest$(configurationRequest: ConfigurationRequest): Observable<LineItem> {\n const runtimeContext = this.getRuntimeContext();\n const runtimeModel = this.getRuntimeModel();\n const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;\n const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;\n const customPriceApi = this.runtimeSettings.getConfigurationSettings()['CUSTOM_PRICE_API'];\n\n this.isLoadingSubj$.next(true);\n\n const configure$ =\n pricingEnabled && customPriceApi\n ? this.configurationApiService.customConfigurePrice({ url: customPriceApi, configurationRequest, runtimeModel })\n : this.configurationApiService.configureLineItem({\n configurationRequest,\n runtimeModel,\n pricingEnabled,\n });\n\n return configure$.pipe(\n tap(result => {\n this.contextService.update(result.context);\n this.configurationState.next(result);\n this.previousConfigurationState.next(cloneDeep(result));\n\n if (result.deletedLineItems?.length) {\n this.showInactiveProductsConfirmation();\n }\n\n this.configurableRamp = result.lineItem;\n }),\n map(({ lineItem }) => lineItem),\n catchError(error =>\n throwError(() => {\n const resetState = this.previousConfigurationState.value;\n if (resetState) {\n this.previousConfigurationState.next(cloneDeep(resetState));\n this.configurationState.next(resetState);\n }\n if (error.error) {\n return extractErrorDetails(error.error).join('. ');\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<LineItem> {\n return this.runtimeService\n .init({ productId: props.productId, defaultQty: props.qty, attributesMap: props.attributesMap })\n .pipe(\n switchMap(() => this.configure()),\n first(),\n catchError(error => {\n this.messageService.add({ severity: ToastType.error, summary: error });\n throw error;\n }),\n finalize(() => this.reset()),\n );\n }\n\n public configureGuidedSelling$(data: GuidedSellingSubmitData): Observable<ConfigurePrice> {\n return this.configurationApiService\n .configureLineItem({\n configurationRequest: getGuidedSellingConfigurationRequest(data, this.contextService.resolve()),\n })\n .pipe(\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n this.messageService.add({ severity: ToastType.error, summary: error.error.message || error.error });\n }\n throw error;\n }),\n );\n }\n\n public generateRequest(lightMode: boolean = true): ConfigurationRequest {\n const lineItem = this.generateLineItem();\n\n let request: ConfigurationRequest = {\n lineItem,\n mode: this.mode,\n step: !this.configurationState.value?.lineItem ? RuntimeStep.START : RuntimeStep.UPDATE,\n attributeDomainMode: 'ALL',\n context: this.contextService.resolve(),\n lineItems: this.quoteDraftService.quoteDraft?.currentState || [],\n asset: this.getAsset(),\n };\n\n if (lightMode) {\n request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);\n }\n\n return request;\n }\n\n public generateLineItem(): LineItem {\n const runtimeContext = this.getRuntimeContext();\n const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n let lineItem = this.configurableRamp;\n if (!lineItem) {\n const { initializationProps } = this.runtimeService ?? {};\n\n lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);\n\n // Set default attributes\n if (initializationProps?.attributesMap) {\n const attributes = transform(\n initializationProps?.attributesMap,\n (acc: NewAttribute[], value, name) => acc.push({ name, value }),\n [],\n );\n\n lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;\n }\n }\n\n return lineItem;\n }\n\n public getAsset(): LineItem | undefined {\n const lineItem = this.configurableRamp;\n if (!lineItem) {\n return;\n }\n\n const assetId = lineItem.assetId ?? lineItem.openOrderLineItemId;\n return this.quoteDraftService.assetsState?.initialState.find(li => assetPredicateFn(li, assetId));\n }\n\n private getUIDefinitionProperties(): UIDefinitionProps {\n return {\n ...(this.getRuntimeContext().uiDefinitionContainer?.source.properties ?? {}),\n ...(this.runtimeService.uiDefinitionProperties ?? {}),\n };\n }\n\n private showInactiveProductsConfirmation(): void {\n const confirmationConfig: ConfirmationConfig = {\n title: ' ',\n description: 'This quote contains inactive products. Do you want to remove them?',\n primaryButtonLabel: 'Remove products',\n secondaryButtonLabel: 'Back to Quote',\n };\n\n this.dialogService\n .open(ConfirmationComponent, {\n dismissableMask: false,\n closeOnEscape: false,\n closable: false,\n showHeader: true,\n header: `Inactive Products in Quote`,\n width: '440px',\n data: { confirmationConfig },\n })\n .onClose.subscribe(result => {\n if (!result) {\n const context = this.contextService.resolve();\n window['VELO_BACK_FN'].apply(null, [context.headerId]);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api';\nimport { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';\nimport { cloneDeep, Dictionary } from 'lodash';\nimport { catchError, map, noop, Observable, of, shareReplay, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { multiplyLineItems } from '../../../utils/line-item.utils';\nimport { ExternalConfigurationProps } from '../../configuration';\nimport { ConfigurationService } from '../../configuration/services/configuration.service';\nimport { FlowUpdateParams } from '../types/update.types';\nimport { FlowUpdateService } from './flow-update.service';\nimport { FlowInfoService } from '../../../services';\n\n@Injectable()\nexport class FlowConfigurationService {\n /**\n * An event being fired when QuoteDraft was updated\n */\n public updated$: Observable<void>;\n\n private updatedSubj$ = new Subject<void>();\n\n constructor(\n private proceduresApiService: ProceduresApiService,\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private updateService: FlowUpdateService,\n private configurationService: ConfigurationService,\n private flowInfoService: FlowInfoService,\n ) {\n this.updated$ = this.updatedSubj$.asObservable();\n }\n\n public calculate$(quoteDraft: QuoteDraft): Observable<void> {\n return this.extendedApply$(quoteDraft).pipe(\n tap(result => {\n // sort the result current state based on the quote draft initial state\n const initialStateIds = quoteDraft.initialState.map(lineItem => lineItem.integrationId);\n result.currentState = result.currentState\n .slice()\n .sort((a, b) => initialStateIds.indexOf(a.integrationId) - initialStateIds.indexOf(b.integrationId));\n this.quoteDraftService.updateQuoteDraft(result);\n }),\n map(noop),\n );\n }\n\n public calculate(quoteDraft: QuoteDraft): void {\n this.calculate$(quoteDraft).subscribe();\n }\n\n public update$(updates: FlowUpdateParams[]): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n return of([]).pipe(\n map(() => {\n const updatedState = cloneDeep(quoteDraft.currentState);\n this.updateService.update(updatedState, updates, quoteDraft.charges);\n return updatedState;\n }),\n switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public update(updates: FlowUpdateParams[]): void {\n this.update$(updates).subscribe();\n }\n\n public revert$(lineItemId: string): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const initialCurrentState = this.quoteDraftService.getInitialCurrentState();\n const currentState = this.quoteDraftService.currentState;\n\n const currentLineItemIndex = currentState.findIndex(({ id }) => id === lineItemId);\n const currentLineItem = currentState[currentLineItemIndex];\n\n const initialLineItem = initialCurrentState.find(\n ({ integrationId }) => integrationId === currentLineItem?.integrationId,\n );\n\n if (!quoteDraft || !currentLineItem || !initialLineItem) {\n return of(null);\n }\n\n const updatedState = cloneDeep(currentState);\n updatedState.splice(currentLineItemIndex, 1, initialLineItem);\n\n return of([]).pipe(\n tap(() => {\n this.quoteDraftService.setCurrentLineItemState(updatedState);\n }),\n switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public revert(lineItemId: string): void {\n this.revert$(lineItemId).subscribe();\n }\n\n public delete$(ids: string[]): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const currentState = this.quoteDraftService.currentState;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n return of([]).pipe(\n map(() => ids.reduce((result, id) => this.updateService.delete(result, id), currentState)),\n switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\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 public addTerm$(term: LineItem): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n const updatedState = [...quoteDraft.currentState, term];\n\n return of([]).pipe(\n switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public addToCart$(props: ExternalConfigurationProps): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n return this.configurationService.configureExternal$(props).pipe(\n map(lineItem => {\n const model = this.configurationService.getRuntimeModel();\n const split = model?.types.find(type => type.name === lineItem.type)?.split ?? false;\n const lineItems = multiplyLineItems(lineItem, props.qty ?? 1, split);\n\n return [...quoteDraft.currentState, ...lineItems];\n }),\n switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public get(): Observable<LineItem[]> {\n return this.quoteDraftService.quoteDraft$.pipe(\n map(() => this.quoteDraftService.currentState),\n shareReplay(),\n );\n }\n\n public getSnapshot(): LineItem[] {\n return this.quoteDraftService?.currentState.slice() ?? [];\n }\n\n public get charges$(): Observable<Dictionary<Charge>> {\n return this.quoteDraftService.quoteDraft$.pipe(map(({ charges }) => charges));\n }\n\n public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n return this.quoteDraftService.quoteDraft$.pipe(map(({ pricePlans }) => pricePlans));\n }\n\n public get activeMetrics$(): Observable<MetricRule[]> {\n return this.quoteDraftService.quoteDraft$.pipe(map(({ activeMetrics }) => activeMetrics));\n }\n\n public get chargesSnapshot(): Dictionary<Charge> {\n return this.quoteDraftService.quoteDraft?.charges ?? {};\n }\n\n public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n return this.quoteDraftService.quoteDraft?.pricePlans ?? {};\n }\n\n public get activeMetricsSnapshot(): MetricRule[] {\n return this.quoteDraftService.quoteDraft?.activeMetrics ?? [];\n }\n\n public get contextSnapshot(): ConfigurationContext {\n return this.contextService.resolve();\n }\n\n public get context$(): Observable<ConfigurationContext> {\n return this.contextService.resolve$();\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 quoteDraft = this.quoteDraftService.quoteDraft;\n if (quoteDraft) {\n this.quoteDraftService.updateQuoteDraft(quoteDraft);\n this.updatedSubj$.next();\n }\n\n return throwError(() => error);\n }),\n );\n };\n }\n\n private extendedApply$(quoteDraft: QuoteDraft): Observable<QuoteDraft> {\n const request = { ...quoteDraft };\n const procedureName = this.flowInfoService.flow?.properties.procedureName;\n if (procedureName) {\n request.procedureName = procedureName;\n }\n return this.proceduresApiService.apply$(request);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport { FlowUpdateService } from './services/flow-update.service';\n\n@NgModule({\n imports: [ApiModule],\n providers: [FlowConfigurationService, FlowUpdateService],\n})\nexport class FlowConfigurationModule {}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { BehaviorSubject, map, noop, Observable, of, switchMap, tap } from 'rxjs';\nimport { generateConfigurationLineItem, NewConfigurationProps } from '../modules/configuration';\nimport { FlowConfigurationService } from '../modules/flow-configuration';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\n\n@Injectable()\nexport class FlowStateConfigurationService {\n private configurationStateId$ = new BehaviorSubject<string | null>(null);\n\n constructor(\n private flowInfoService: FlowInfoService,\n private flowConfigurationService: FlowConfigurationService,\n private flowStateApiService: FlowStateApiService,\n private flowStateService: FlowStateService,\n ) {}\n\n public get configurationStateId(): string | null {\n return this.configurationStateId$.value;\n }\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 const lineItem = generateConfigurationLineItem(props, props.qty);\n request$ = this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(\n tap(r => this.configurationStateId$.next(r.stateId)),\n switchMap(() => {\n if (!this.configurationStateId) {\n return of();\n }\n return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(\n tap(() => this.configurationStateId$.next(null)),\n map(noop),\n );\n }),\n );\n }\n } else {\n request$ = this.flowConfigurationService.addToCart$(props).pipe(map(noop));\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 clear(): 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 { ConfigurationApiService } from '@veloceapps/api';\nimport { isNotLegacyUIDefinition, RuntimeData, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\n\n@Injectable()\nexport class RuntimeContextService {\n constructor(private configurationApiService: ConfigurationApiService) {}\n\n public getRuntimeContext(productId: string, offeringId?: string): Observable<RuntimeContext> {\n return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(\n map(runtimeData => {\n const uiDefinitionContainer = this.getUIDefinitionContainer(runtimeData);\n const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);\n const { productName, properties } =\n Array.from(runtimeModel.components.values()).find(c => c.productId === productId) ?? {};\n\n const uiDefinitionProperties = uiDefinitionContainer?.source.properties;\n\n return {\n modelId: runtimeData.modelId,\n uiDefinitionContainer: uiDefinitionContainer,\n runtimeModel: runtimeModel,\n runtimeMode: RuntimeMode.PROD,\n productId: productId,\n productType: properties?.['displayName'] || productName,\n offeringId: offeringId,\n properties: {\n PricingEnabled: uiDefinitionProperties?.pricingEnabled ? 'true' : 'false',\n PriceListId: uiDefinitionProperties?.priceList,\n },\n } satisfies RuntimeContext;\n }),\n );\n }\n\n private getUIDefinitionContainer(runtimeData: RuntimeData): UIDefinitionContainer | undefined {\n const containers = runtimeData.uiDefinitions.filter(container => isNotLegacyUIDefinition(container.source));\n return containers.find(container => container.source.primary) ?? containers[0];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { RuntimeModel, SalesforceIdUtils, UIDefinitionContainer, UIDefinitionProps } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\nimport { combineLatest, Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\nimport { RuntimeInitializationProps } from '../types/configuration-runtime.types';\nimport { RuntimeContextService } from './runtime-context.service';\n\n@Injectable()\nexport class ConfigurationRuntimeService {\n private _runtimeContext?: RuntimeContext;\n private _isInitialized = false;\n\n public initializationProps?: RuntimeInitializationProps;\n public uiDefinitionProperties: UIDefinitionProps = {};\n\n constructor(\n private apiService: ConfigurationApiService,\n private contextService: ContextService,\n private runtimeContextService: RuntimeContextService,\n ) {}\n\n public reset(): void {\n this._isInitialized = false;\n this._runtimeContext = undefined;\n this.initializationProps = undefined;\n this.uiDefinitionProperties = {};\n }\n\n public initTestMode(uiDefinitionContainer: UIDefinitionContainer): Observable<RuntimeContext> {\n this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n const uiDefinitionExternals = uiDefinitionContainer.source.externals ?? {};\n\n return combineLatest([\n this.apiService.getRuntimeDataByModelId(uiDefinitionContainer.modelId),\n this.contextService.initTestMode(),\n ]).pipe(\n first(),\n map(([runtimeData, context]) => {\n this.contextService.update({\n properties: {\n ...this.runtimeContext?.properties,\n ...context.properties,\n ModelId: uiDefinitionContainer.modelId,\n PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',\n PriceListId: this.uiDefinitionProperties.priceList,\n offeringId: this.uiDefinitionProperties.offeringId,\n ...uiDefinitionExternals,\n },\n });\n\n this._runtimeContext = {\n modelId: uiDefinitionContainer.modelId,\n runtimeModel: RuntimeModel.create(runtimeData.types, runtimeData.products),\n runtimeMode: RuntimeMode.TEST,\n uiDefinitionContainer,\n };\n\n return this._runtimeContext;\n }),\n tap(() => (this._isInitialized = true)),\n );\n }\n\n public init(props: RuntimeInitializationProps): Observable<RuntimeContext> {\n this.initializationProps = props;\n const context = this.contextService.resolve();\n\n return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(\n tap(runtimeContext => {\n this.uiDefinitionProperties = runtimeContext.uiDefinitionContainer?.source.properties ?? {};\n const { PriceListId } = context.properties ?? {};\n\n const mergeContext: RuntimeContext = {\n ...runtimeContext,\n properties: {\n ...runtimeContext.properties,\n ...context.properties,\n PricingEnabled: PriceListId ? 'true' : 'false',\n },\n };\n\n this.id15to18('AccountId', mergeContext.properties);\n this._runtimeContext = mergeContext;\n\n if (context.properties && this._runtimeContext.properties?.StartDate) {\n this.contextService.update({\n properties: {\n ...this._runtimeContext.properties,\n ...context.properties,\n },\n });\n }\n\n return this._runtimeContext;\n }),\n tap(() => (this._isInitialized = true)),\n );\n }\n\n public overrideUIDefinition(uiDefinitionContainer: UIDefinitionContainer): void {\n if (!this._runtimeContext) {\n return;\n }\n\n this._runtimeContext.uiDefinitionContainer = uiDefinitionContainer;\n this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n }\n\n private id15to18(propertyName: string, source?: Dictionary<any>): void {\n if (!source) {\n return;\n }\n\n const value = source[propertyName];\n\n if (typeof value === 'string' && value.length === 15) {\n source[propertyName] = SalesforceIdUtils.generateId18FromId15(value);\n }\n }\n\n public get isInitialized(): boolean {\n return this._isInitialized;\n }\n\n public get runtimeModel(): RuntimeModel | undefined {\n return this.runtimeContext?.runtimeModel;\n }\n\n public get runtimeContext(): RuntimeContext | undefined {\n return this._runtimeContext;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService, QuoteApiService, SaveQuoteResponse } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n ConfigurationRequest,\n ConfigurationTranslatorUtils,\n ConfigurePrice,\n EntityUtil,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n LineItem,\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, QuoteDraftService } from '../../../services';\nimport { FlowStateSubscriptionOptions } from '../../../types/flow-state.types';\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 quoteDraftService: QuoteDraftService,\n private toastService: ToastService,\n private flowStateService: FlowStateService,\n private flowInfoService: FlowInfoService,\n private flowConfigurationService: FlowConfigurationService,\n private flowStateApiService: FlowStateApiService,\n private quoteApiService: QuoteApiService,\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.initStateless$();\n }\n\n return request$.pipe(\n finalize(() => {\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 }\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(flow?: boolean): Observable<SaveQuoteResponse>;\n /**\n * @deprecated Will be removed in @veloceapps/sdk@9\n */\n public saveConfiguration(quoteId?: string, flow?: boolean): Observable<SaveQuoteResponse>;\n\n public saveConfiguration(first?: string | boolean, second?: boolean): Observable<SaveQuoteResponse> {\n const flow = typeof first === 'boolean' ? first : second;\n if (this.isStatefulConfiguration) {\n return this.flowStateApiService\n .saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '')\n .pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))));\n } else {\n if (!flow) {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (!quoteDraft) {\n return of({ quoteId: '' });\n }\n\n const rootLineItem = this.configurationService.getSnapshot();\n const asset = this.configurationService.getAsset();\n const currentState = rootLineItem ? [rootLineItem] : [];\n const initialState = asset ? [asset] : [];\n\n return this.quoteApiService.upsertQuote({ ...quoteDraft, currentState, initialState });\n } else {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const lineItem = this.configurationService.getSnapshot();\n\n if (!quoteDraft || !lineItem) {\n return of({ quoteId: '' });\n }\n\n const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);\n\n let currentState: LineItem[];\n if (isNewLineItem) {\n currentState = [...quoteDraft.currentState, lineItem];\n } else {\n currentState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));\n }\n\n const asset = this.configurationService.getAsset();\n const initialState = [...(this.quoteDraftService.quoteDraft?.initialState ?? [])];\n if (asset) {\n if (!initialState.some(li => li.id === asset.id)) {\n initialState.push(asset);\n }\n }\n\n return this.flowConfigurationService\n .calculate$({ ...quoteDraft, currentState, initialState })\n .pipe(map(() => ({ quoteId: '' })));\n }\n }\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.runtimeContext?.uiDefinitionContainer?.id ?? '';\n const lineItemId = this.configurationRuntimeService.runtimeContext?.properties?.lineItemId;\n if (!this.flowStateService.stateId) {\n return of(undefined);\n }\n\n const container = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer;\n\n const lineItem = this.configurationService.generateLineItem();\n\n let request$: Observable<FlowStateExecutionResult>;\n\n if (!lineItemId) {\n request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {\n lineItem,\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 lineItemId,\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 initStateless$(): Observable<void> {\n return this.configurationService.configure().pipe(map(() => undefined));\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 of(undefined).pipe(\n switchMap(() => {\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 let configurationRequest = this.configurationService.generateRequest(false);\n request.actions.forEach(action => {\n configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;\n });\n\n configurationRequest = ConfigurationTranslatorUtils.lightenConfigurationRequest(configurationRequest);\n\n return this.configurationService.configureRequest$(configurationRequest);\n }),\n map(() => {\n // Run selectors and apply them to the state\n const configurationState = this.configurationService.stateSnapshot;\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.previousStateSnapshot;\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.uiDefinitionProperties.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: ConfigurationRequest, processor: FlowStateExecutableDTO): ConfigurationRequest {\n const { actions } = this.configurationRuntimeService.runtimeContext?.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 ConfigurationRequest;\n }\n\n private executeSelectorScript(request: ConfigurePrice, processor: FlowStateExecutableDTO): unknown {\n const { selectors } = this.configurationRuntimeService.runtimeContext?.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: ConfigurationRequest | ConfigurePrice,\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: ConfigurePrice,\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';\nimport { RuntimeContextService } from './services/runtime-context.service';\n\n@NgModule({\n imports: [ConfirmationDialogModule, ApiModule],\n providers: [ConfigurationRuntimeService, RuntimeContextService, ConfigurationService, ConfigurationStateService],\n})\nexport class ConfigurationModule {}\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 { FlowConfigurationModule } from './modules';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport {\n ContextService,\n FlowInfoService,\n FlowStateConfigurationService,\n FlowStateService,\n IntegrationState,\n ProductImagesService,\n QuoteDraftService,\n RuntimeSettingsService,\n} from './services';\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 ContextService,\n FlowInfoService,\n QuoteDraftService,\n ProductImagesService,\n IntegrationState,\n FlowStateService,\n FlowStateConfigurationService,\n RuntimeSettingsService,\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":["map","tap","switchMap","i1.ContextService","i2.FlowInfoService","i3","filter","shareReplay","take","catchError","finalize","i1.QuoteDraftService","i2.ConfigurationRuntimeService","i3.ContextService","i4","i6","i7.RuntimeSettingsService","i2.ContextService","i3.QuoteDraftService","i4.FlowUpdateService","i5.ConfigurationService","i6.FlowInfoService","i1.FlowInfoService","i2.FlowConfigurationService","i4.FlowStateService","i3.RuntimeContextService","i1.ConfigurationRuntimeService","i2.ConfigurationService","i3.FlowStateService","i3.FlowInfoService","i5.FlowConfigurationService"],"mappings":"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"}
1
+ {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/helpers.ts","../../../../libs/sdk/core/types/flow-customization.types.ts","../../../../libs/sdk/core/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/runtime.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/services/context.service.ts","../../../../libs/sdk/core/services/flow-info.service.ts","../../../../libs/sdk/core/services/quote-draft.service.ts","../../../../libs/sdk/core/services/flow-state.service.ts","../../../../libs/sdk/core/utils/line-item.utils.ts","../../../../libs/sdk/core/utils/line-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-update.service.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.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/runtime-context.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-runtime.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-state.service.ts","../../../../libs/sdk/core/modules/configuration/configuration.module.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 {\n Attribute,\n ConfigurationContext,\n ConfigurationContextMode,\n ConfigurationRequest,\n LineItem,\n UIDefinitionProps,\n UUID,\n} from '@veloceapps/core';\nimport { RuntimeContext } from '../../types';\nimport { GuidedSellingSubmitData, NewConfigurationProps } from './types/configuration.types';\n\nexport const getDefaultLineItem = (\n context: RuntimeContext,\n uiDefinitionProperties: UIDefinitionProps,\n qty = 1,\n): LineItem => {\n const id = UUID.UUID();\n const attributes: Attribute[] = [];\n const lineItems: LineItem[] = [];\n\n return {\n id,\n type: uiDefinitionProperties.rootType ?? '',\n cfgStatus: 'Default',\n actionCode: 'ADD',\n qty,\n attributes,\n lineItems,\n productName: context.properties?.['displayName'] || context.productName,\n productId: context.productId ?? '',\n ...(uiDefinitionProperties.offeringId ? { offeringId: uiDefinitionProperties.offeringId } : {}),\n } as LineItem;\n};\n\nexport const getGuidedSellingConfigurationRequest = (\n data: GuidedSellingSubmitData,\n context: ConfigurationContext,\n): ConfigurationRequest => {\n const _context = { ...context };\n delete _context.configurationToken;\n\n const properties = { ...context.properties };\n delete properties['ConfigurationToken'];\n\n return {\n mode: 'SEARCH',\n step: 'START',\n attributeDomainMode: 'ALL',\n context: {\n ..._context,\n mode: ConfigurationContextMode.TEST,\n properties: {\n ...properties,\n ModelId: data.modelId,\n Name: 'Veloce Guided Selling',\n PricingEnabled: 'false',\n RuntimeMode: 'TEST',\n },\n },\n lineItem: {\n actionCode: 'ADD',\n cfgStatus: 'Default',\n id: UUID.UUID(),\n qty: 1,\n type: data.modelType,\n attributes: Object.entries(data.attributesMap).map(([name, value]) => ({\n name,\n value,\n cfgStatus: 'User',\n })),\n } as LineItem,\n };\n};\n\nexport const generateConfigurationLineItem = (props: NewConfigurationProps, qty = 1): LineItem => {\n const id = UUID.UUID();\n const attributes = Object.entries(props.attributesMap ?? {}).map(([name, value]) => ({\n name,\n value,\n cfgStatus: 'User',\n }));\n const lineItems: LineItem[] = [];\n\n return {\n id,\n type: props.product.typeName ?? '',\n cfgStatus: 'Default',\n actionCode: 'ADD',\n qty,\n attributes,\n lineItems,\n productName: props.product.name,\n productId: props.product.id ?? '',\n } as LineItem;\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 /**\n * @deprecated Use `getTemplateComponents` instead\n */\n getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n /**\n * @deprecated Use `getTemplateComponents` instead\n */\n getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n /**\n * @deprecated Use `getTemplateComponents` instead\n */\n getAssetsComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n getTemplates?(): Observable<UITemplate[]>;\n getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;\n\n getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;\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","import { ContextProperties, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\n\nexport enum RuntimeMode {\n TEST,\n PROD,\n}\n\nexport enum RuntimeOperation {\n INIT = 'INIT',\n UPDATE = 'UPDATE',\n}\n\nexport enum RuntimeStep {\n START = 'START',\n UPDATE = 'UPDATE',\n}\n\nexport interface InvocationContext {\n runtimeOperation?: RuntimeOperation;\n runtimeStep?: RuntimeStep;\n}\n\nexport interface RuntimeContext {\n modelId: string;\n runtimeMode: RuntimeMode;\n runtimeModel: RuntimeModel;\n uiDefinitionContainer?: UIDefinitionContainer;\n productId?: string;\n productName?: string;\n productType?: string;\n properties?: ContextProperties;\n offeringId?: string;\n offeringInstanceId?: string;\n invocationContext?: InvocationContext;\n}\n","export const UI_DEFINITION_VERSION = 3;\n","import { Injectable } from '@angular/core';\nimport { ContextApiService } from '@veloceapps/api';\nimport { ConfigurationContext, ConfigurationContextMode } from '@veloceapps/core';\nimport { merge } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class ContextService {\n private context = new BehaviorSubject<ConfigurationContext | null>(null);\n\n constructor(private contextApiService: ContextApiService) {}\n\n public get isInitialized(): boolean {\n return Boolean(this.context.value);\n }\n\n public get isInitialized$(): Observable<boolean> {\n return this.context.pipe(map(Boolean));\n }\n\n public get mode(): ConfigurationContextMode | undefined {\n return this.resolve().properties['#mode'];\n }\n\n public get isEditMode$(): Observable<boolean> {\n return this.resolve$().pipe(map(() => this.isEditMode));\n }\n\n public get isEditMode(): boolean {\n const context = this.resolve();\n\n if (context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n return true;\n }\n\n if (context.properties['#mode'] === ConfigurationContextMode.QUOTE) {\n return context.properties.Status === 'Draft';\n }\n\n return false;\n }\n\n public resolve(): ConfigurationContext {\n if (!this.context.value) {\n throw new Error('Context is not initialized yet!');\n }\n\n return { ...this.context.value };\n }\n\n public resolve$(): Observable<ConfigurationContext> {\n return this.context.pipe(filter((ctx): ctx is ConfigurationContext => Boolean(ctx)));\n }\n\n public create(headerId: string, mode: ConfigurationContextMode): Observable<ConfigurationContext> {\n return this.contextApiService.getContext(headerId, mode).pipe(\n tap(context => this.context.next(merge(new ConfigurationContext(headerId, mode), context))),\n map(() => this.resolve() as ConfigurationContext),\n );\n }\n\n public initTestMode(): Observable<ConfigurationContext> {\n return this.create('TestId', ConfigurationContextMode.TEST).pipe(\n map(context => {\n return this.update({\n properties: {\n ...context.properties,\n RuntimeMode: ConfigurationContextMode.TEST,\n StartDate: new Date().toISOString().substring(0, 10),\n standalone: 'true',\n },\n });\n }),\n );\n }\n\n public update(partialContext: Partial<ConfigurationContext>): ConfigurationContext {\n const originalContext = this.resolve();\n\n const updatedContext: ConfigurationContext = {\n ...originalContext,\n ...(partialContext as ConfigurationContext),\n properties: {\n ...originalContext.properties,\n ...partialContext.properties,\n },\n };\n\n this.context.next(updatedContext);\n\n return updatedContext;\n }\n\n public set(context: ConfigurationContext): ConfigurationContext {\n const originalContext = this.resolve();\n\n const updatedContext: ConfigurationContext = {\n ...originalContext,\n ...context,\n };\n\n this.context.next(updatedContext);\n\n return updatedContext;\n }\n\n public delete(): void {\n this.context.next(null);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { FlowsApiService, UITemplatesApiService } from '@veloceapps/api';\nimport { Flow, FlowTemplatesMap, UITemplate, UITemplateType } from '@veloceapps/core';\nimport { BehaviorSubject, catchError, forkJoin, map, noop, Observable, of, switchMap, tap, throwError } from 'rxjs';\nimport { FLOW_CUSTOMIZATION, FlowCustomization } from '../types';\n\n@Injectable()\nexport class FlowInfoService {\n public flow$: Observable<Flow | null>;\n public params?: Params;\n public templates: { [key in UITemplateType]?: UITemplate } = {};\n\n public get flow(): Flow | null {\n return this.flowSubj$.value;\n }\n public set flow(value: Flow | null) {\n this.flowSubj$.next(value);\n }\n\n public get isLegacy(): boolean {\n return !!this.flow && this.flow?.properties.stateful == null;\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\n constructor(\n private flowsApiService: FlowsApiService,\n private templatesApiService: UITemplatesApiService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.flow$ = this.flowSubj$.asObservable();\n }\n\n public init$(flowId: string, routeQueryParams: Params): Observable<void> {\n return this.flowsApiService.getFlow(flowId).pipe(\n switchMap(flow => this.initFlowTemplates$(flow).pipe(map(() => flow))),\n tap(flow => {\n this.params = { ...routeQueryParams, ...flow.properties.queryParams };\n this.flowSubj$.next(flow);\n }),\n map(noop),\n catchError(e => {\n this.flowSubj$.next(null);\n return throwError(() => e);\n }),\n );\n }\n\n public cleanup(): void {\n this.flowSubj$.next(null);\n this.params = undefined;\n this.templates = {};\n }\n\n private initFlowTemplates$(flow: Flow): Observable<void> {\n return forkJoin([\n this.templatesApiService.fetchTemplates$(),\n this.customizationService?.getTemplates?.() ?? of([]),\n ]).pipe(\n map(([templates, localTemplates]) => {\n Object.entries({ ...this.defaultTemplates, ...flow.properties.templates }).forEach(([key, name]) => {\n const type = this.remapTemplateName(key);\n\n if (type) {\n this.templates[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 }\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","import { Injectable } from '@angular/core';\nimport { AccountApiService, QuoteApiService } from '@veloceapps/api';\nimport { AccountAssetsState, ConfigurationContextMode, LineItem, PriceSummary, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, isEqual } from 'lodash';\nimport { BehaviorSubject, combineLatest, noop, Observable, of, zip } from 'rxjs';\nimport { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';\nimport { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\n\n@Injectable()\nexport class QuoteDraftService {\n private quoteSubj$ = new BehaviorSubject<QuoteDraft | null>(null);\n private assetsSubj$ = new BehaviorSubject<AccountAssetsState | null>(null);\n private resetSubj$ = new BehaviorSubject<boolean>(true);\n private isInitializedSubj$ = new BehaviorSubject<boolean>(false);\n private initialCurrentState: LineItem[] = [];\n private _hasUnsavedChanges = false;\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 public set isInitialized(value: boolean) {\n if (this.isInitialized !== value) {\n this.isInitializedSubj$.next(value);\n }\n }\n\n public get hasUnsavedChanges(): boolean {\n return this._hasUnsavedChanges;\n }\n public set hasUnsavedChanges(value: boolean) {\n this._hasUnsavedChanges = value;\n\n if (!this._hasUnsavedChanges) {\n this.initialCurrentState = this.quoteDraft?.currentState ?? [];\n }\n }\n\n public get hasProducts$(): Observable<boolean> {\n return this.quoteSubj$.pipe(map(() => this.hasProducts));\n }\n public get hasProducts(): boolean {\n return Boolean(this.quoteSubj$.value?.currentState.length);\n }\n\n public get hasAssets$(): Observable<boolean> {\n return this.assetsSubj$.pipe(map(() => this.hasAssets));\n }\n public get hasAssets(): boolean {\n return Boolean(this.assetsSubj$.value?.currentState.length);\n }\n\n public get assetsState(): AccountAssetsState | null {\n return this.assetsSubj$.value;\n }\n\n public reset$ = this.resetSubj$.asObservable();\n\n constructor(\n private context: ContextService,\n private flowInfoService: FlowInfoService,\n private accountApiService: AccountApiService,\n private quoteApiService: QuoteApiService,\n ) {\n this.isInitializedSubj$\n .pipe(\n filter(isInitialized => isInitialized),\n switchMap(() => this.quoteSubj$.asObservable()),\n skip(1),\n tap(quote => this.markAsUpdated(quote)),\n )\n .subscribe();\n }\n\n public reset(): void {\n this.resetSubj$.next(true);\n this.quoteSubj$.next(null);\n this.assetsSubj$.next(null);\n this.isInitialized = false;\n this.hasUnsavedChanges = false;\n }\n\n public init(headerId: string, params: Dictionary<string>): Observable<void> {\n const ctx = this.context.resolve();\n const isAccountMode = this.context.mode === ConfigurationContextMode.ACCOUNT;\n const accountId = isAccountMode ? headerId : ctx.properties.AccountId;\n\n return zip(\n accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null),\n isAccountMode\n ? of(QuoteDraft.emptyQuote(ConfigurationContextMode.ACCOUNT))\n : this.quoteApiService.getQuoteState(headerId, params),\n ).pipe(\n tap(([assets, quote]) => {\n if (assets) {\n this.assetsSubj$.next(assets);\n }\n\n this.quoteSubj$.next(quote);\n if (assets && isAccountMode) {\n this.context.update(assets.context);\n } else {\n this.context.update(quote.context);\n }\n }),\n map(() => noop()),\n take(1),\n );\n }\n\n public finalizeInit(): void {\n this.isInitialized = true;\n this.hasUnsavedChanges = false;\n }\n\n public setCurrentLineItemState(lineItems: LineItem[]): void {\n const quoteDraft = this.quoteSubj$.value;\n\n if (!quoteDraft) {\n return;\n }\n\n this.quoteSubj$.next({\n ...quoteDraft,\n currentState: lineItems,\n });\n }\n\n public updateQuoteDraft(update: Partial<QuoteDraft>): void {\n const quoteDraft = this.quoteSubj$.value;\n\n if (!quoteDraft) {\n return;\n }\n\n if (update.context) {\n this.context.set(update.context);\n }\n\n this.quoteSubj$.next({\n ...quoteDraft,\n ...update,\n });\n }\n\n public updateByPriceSummary(priceSummary: PriceSummary): void {\n const quoteDraft = this.quoteSubj$.value;\n\n if (!quoteDraft) {\n return;\n }\n\n const updatedCurrentState = this.currentState.map(lineItem => {\n const updated = priceSummary.lineItems.find(li => li.id === lineItem.id);\n return updated ?? lineItem;\n });\n\n this.quoteSubj$.next({\n ...quoteDraft,\n currentState: updatedCurrentState,\n totalPrices: priceSummary.totalPrices,\n approvalItems: priceSummary.approvalItems,\n });\n }\n\n public setAssetsState(assetsState: AccountAssetsState): void {\n this.assetsSubj$.next(assetsState);\n }\n\n public get quoteDraft$(): Observable<QuoteDraft> {\n return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(\n map(() => this.quoteDraft),\n filter((quote): quote is QuoteDraft => Boolean(quote)),\n shareReplay(),\n );\n }\n\n public get quoteDraft(): QuoteDraft | null {\n const quote = this.quoteSubj$.value;\n\n if (!quote) {\n return null;\n }\n\n return {\n ...quote,\n context: this.context.resolve(),\n };\n }\n\n public get currentState$(): Observable<LineItem[]> {\n return this.quoteDraft$.pipe(map(quote => quote.currentState));\n }\n\n public get currentState(): LineItem[] {\n return this.quoteDraft?.currentState ?? [];\n }\n\n public get isStandalone(): boolean {\n return this.flowInfoService.flow?.properties.standalone ?? false;\n }\n\n public get isStandalone$(): Observable<boolean> {\n return this.flowInfoService.flow$.pipe(map(() => this.isStandalone));\n }\n\n public getInitialCurrentState(): LineItem[] {\n return this.initialCurrentState;\n }\n\n public isEditMode$(): Observable<boolean> {\n return this.context.resolve$().pipe(map(() => this.isEditMode()));\n }\n\n public isEditMode(): boolean {\n const context = this.context.resolve();\n\n if (context.mode === ConfigurationContextMode.ACCOUNT) {\n return true;\n }\n\n if (context.mode === ConfigurationContextMode.QUOTE) {\n return context.properties.Status === 'Draft';\n }\n\n return false;\n }\n\n private markAsUpdated(quote: QuoteDraft | null): void {\n if (quote?.context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n this.hasUnsavedChanges = !!quote && !quote.currentState.every(li => li.actionCode === 'EXIST');\n } else {\n this.hasUnsavedChanges = !isEqual(this.initialCurrentState, quote?.currentState);\n }\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n Charge,\n CompiledPricePlan,\n ConfigurationContext,\n ConfigurationContextMode,\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n ConfigurationProcessorTypes,\n EntityUtil,\n Flow,\n FlowState,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n MetricRule,\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 shareReplay,\n Subject,\n switchMap,\n take,\n takeUntil,\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 { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\nimport { QuoteDraftService } from './quote-draft.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 public charges$: Observable<Dictionary<Charge>>;\n public pricePlans$: Observable<Dictionary<CompiledPricePlan>>;\n public activeMetrics$: Observable<MetricRule[]>;\n public isPriceListLocked$: Observable<boolean>;\n\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 contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private flowInfoService: FlowInfoService,\n private flowConfiguration: FlowConfigurationService,\n private processorsApiService: ConfigurationProcessorsApiService,\n private flowStateApiService: FlowStateApiService,\n private quoteApiService: QuoteApiService,\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 QuoteDraft changes and call executeRequest so that\n all subscriptions get their updates according to updated QuoteDraft\n */\n this.isInitialized$()\n .pipe(\n filter(Boolean),\n filter(() => !this.getFlowSafe().properties.stateful),\n switchMap(() => this.flowConfiguration.updated$),\n switchMap(() => this.executeRequest$({}, true)),\n )\n .subscribe();\n\n this.charges$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.charges));\n } else {\n return this.subscribe$<Dictionary<Charge>>(UITemplateType.FLOW_ENGINE, 'CHARGES', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : {})));\n }\n }),\n shareReplay(1),\n );\n this.charges$.subscribe();\n\n this.pricePlans$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.pricePlans));\n } else {\n return this.subscribe$<Dictionary<CompiledPricePlan>>(UITemplateType.FLOW_ENGINE, 'PRICE_PLANS', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : {})));\n }\n }),\n shareReplay(1),\n );\n this.pricePlans$.subscribe();\n\n this.activeMetrics$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.activeMetrics));\n } else {\n return this.subscribe$<MetricRule[]>(UITemplateType.FLOW_ENGINE, 'ACTIVE_METRICS', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : [])));\n }\n }),\n shareReplay(1),\n );\n this.activeMetrics$.subscribe();\n\n this.isPriceListLocked$ = this.flowInfoService.flow$.pipe(\n filter(isDefined),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return of(false);\n } else {\n return this.subscribe$<boolean>(UITemplateType.FLOW_ENGINE, 'IS_PRICE_LIST_LOCKED', null, {\n cold: true,\n }).pipe(map(response => (response.success ? response.result : false)));\n }\n }),\n shareReplay(1),\n );\n this.isPriceListLocked$.subscribe();\n }\n\n public init$(): Observable<void> {\n return this.initProcessors$().pipe(\n switchMap(() => {\n if (this.getFlowSafe().properties.stateful) {\n return this.initStateful$();\n } else {\n return this.initStateless$();\n }\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$.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.getFlowSafe().properties.stateful\n ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n : this.quoteDraftService.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.quoteDraftService.isInitialized$]).pipe(\n map(values => values.some(Boolean)),\n );\n }\n\n public isInitialized(): boolean {\n return Boolean(this.stateId$.value) || this.quoteDraftService.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<{ quoteId: string }> {\n if (this.getFlowSafe().properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.save(this.stateId$.value).pipe(\n tap(() => {\n Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n this.trackedStatefulChangesMap.set(key, false);\n });\n }),\n );\n }\n } else {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (quoteDraft) {\n return this.quoteApiService.upsertQuote(quoteDraft).pipe(\n tap(({ versionId }) => {\n this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n }),\n );\n }\n }\n\n return of({ quoteId: '' });\n }\n\n public submit$(): Observable<{ quoteId: string }> {\n if (this.getFlowSafe().properties.stateful) {\n if (this.stateId$.value) {\n return this.flowStateApiService.submit(this.stateId$.value);\n }\n } else {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (quoteDraft) {\n return this.quoteApiService.submitQuote(quoteDraft).pipe(\n tap(({ versionId }) => {\n this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n }),\n );\n }\n }\n\n return of({ quoteId: '' });\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.getFlowSafe().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 // Subscriptions\n this.subscribe$<ConfigurationContext>(UITemplateType.FLOW_ENGINE, 'CONTEXT', null, { cold: true })\n .pipe(\n tap(response => {\n if (response.success) {\n this.contextService.update(response.result);\n }\n }),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\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 const request = this.getDefaultExecutionRequestDTO();\n\n return this.flowStateApiService\n .init({\n quoteId: this.contextService.resolve().headerId,\n params: this.flowInfoService.params ?? {},\n actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n selectors: { ...selectors, ...request.selectors },\n actions: request.actions,\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 const { headerId } = this.contextService.resolve();\n return this.quoteDraftService.init(headerId, this.flowInfoService.params ?? {}).pipe(\n tap(() => {\n const assets = this.quoteDraftService.assetsState;\n if (assets) {\n this.flowStore = { ...this.flowStore, assets };\n }\n }),\n switchMap(() => {\n if (this.flowInfoService.isLegacy) {\n return of(null);\n }\n return this.executeRequest$(this.getDefaultExecutionRequestDTO());\n }),\n switchMap(() => this.calculate$()),\n tap(() => this.quoteDraftService.finalizeInit()),\n map(noop),\n );\n }\n\n private calculate$(): Observable<void> {\n const flowState = this.quoteDraftService.quoteDraft;\n if (!flowState) {\n return of(undefined);\n }\n\n /*\n Don't execute procedures when:\n * Initializing a standalone product configuration UI, as procedure is execute in /price call\n * Initializing an empty account (account with no assets)\n */\n const isEmptyAccountMode =\n this.contextService.mode === ConfigurationContextMode.ACCOUNT &&\n !this.quoteDraftService.hasProducts &&\n !this.quoteDraftService.hasAssets &&\n !this.quoteDraftService.quoteDraft?.initialState.length;\n\n if (this.quoteDraftService.isStandalone || isEmptyAccountMode) {\n return of(undefined);\n }\n\n return this.flowConfiguration.calculate$(flowState);\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 if (!request.actions?.length || !this.isInitialized()) {\n return of(undefined);\n } else {\n return this.calculate$();\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 if (!this.quoteDraftService.quoteDraft || !request.actions?.length) {\n return;\n }\n\n let flowState = this.quoteDraftService.quoteDraft;\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.quoteDraftService.updateQuoteDraft(flowState);\n }\n\n private executeStatelessSelectors(request: FlowStateExecutionRequestDTO): FlowStateExecutionResult {\n if (!this.quoteDraftService.quoteDraft) {\n throw 'QuoteDraft is not initialized';\n }\n\n const flowState = this.quoteDraftService.quoteDraft;\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 getFlowSafe(): Flow {\n if (!this.flowInfoService.flow) {\n throw 'Flow is not defined';\n }\n\n return this.flowInfoService.flow;\n }\n\n private initProcessors$(): Observable<void> {\n const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n const flow = this.getFlowSafe();\n\n if (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 getDefaultExecutionRequestDTO(): FlowStateExecutionRequestDTO {\n const request: FlowStateExecutionRequestDTO = {\n actions: [],\n selectors: {},\n };\n\n if (this.getFlowSafe().properties.standalone) {\n return request;\n }\n\n const flowEngineTemplateId = this.getOwnerIdByScope(UITemplateType.FLOW_ENGINE);\n\n request.actions?.push({\n apiName: 'UPDATE_CONTEXT_PROPERTIES',\n ownerId: flowEngineTemplateId,\n inputData: this.contextService.resolve().properties,\n });\n\n return request;\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 { Attribute, LineItem, NewAttribute, PortDomain, UUID } from '@veloceapps/core';\nimport { Dictionary, entries, flatten, map, sortBy } from 'lodash';\n\nexport const findLineItem = (id: string, lineItems: LineItem[]): LineItem | undefined => {\n return findLineItemWithComparator(lineItems, (li: LineItem) => li.id === id);\n};\n\nexport const findLineItemWithComparator = (\n lineItems: LineItem[],\n comparator: (li: LineItem) => boolean,\n): LineItem | undefined => {\n let currentLevel = lineItems;\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.lineItems));\n }\n\n return;\n};\n\nexport const insertLineItem = (lineItem: LineItem, parentId: string, toInsert: LineItem): LineItem => {\n const insertData = lineItem.id === parentId ? [toInsert] : [];\n return {\n ...lineItem,\n lineItems: [\n ...insertData,\n ...lineItem.lineItems.map(li => {\n return insertLineItem(li, parentId, toInsert);\n }),\n ],\n };\n};\n\nexport const removeLineItem = (lineItem: LineItem, idToRemove: string): LineItem => {\n return {\n ...lineItem,\n lineItems: lineItem.lineItems\n .map(li => {\n if (li.id === idToRemove) {\n return;\n } else if (li.lineItems.length) {\n return removeLineItem(li, idToRemove);\n }\n return li;\n })\n .filter(r => !!r) as LineItem[],\n };\n};\n\nexport const replaceLineItem = (\n lineItem: LineItem,\n replaceTo: LineItem,\n skipCardinalityCalculation: boolean = false,\n): LineItem => {\n if (lineItem.id === replaceTo.id) {\n if (!skipCardinalityCalculation) {\n return { ...recalculateCardinalityVariables(lineItem, replaceTo) };\n } else {\n return { ...replaceTo };\n }\n }\n\n return {\n ...lineItem,\n lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),\n };\n};\n\nconst collectCardinalityComputations = (portDomains: Dictionary<PortDomain>): Map<string, boolean> => {\n const cardinalityComputations = new Map<string, boolean>();\n entries(portDomains).forEach(([key, portDomain]) => {\n cardinalityComputations.set(key, portDomain.properties['cardinalityComputation'] === 'true');\n });\n return cardinalityComputations;\n};\n\nconst calculateCardinalityVariables = (\n lineItems: LineItem[],\n cardinalityComputations: Map<string, boolean>,\n): Map<string, number> => {\n const cardVars = new Map<string, number>();\n lineItems\n .filter(({ port, type }) => !!port && !!type)\n .forEach(li => {\n if (cardinalityComputations.get(`${li.port}`)) {\n const cardinalityVariableName = `#CV-${li.type}@${li.port}`;\n cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);\n }\n });\n return cardVars;\n};\n\nconst cardinalityRegexp = new RegExp('#CV-[a-zA-Z0-9_]+@(?<portName>[a-zA-Z0-9_]+)');\n\nexport const recalculateCardinalityVariables = (original: LineItem, updated: LineItem): LineItem => {\n const cardinalityComputations = collectCardinalityComputations(updated.portDomains ?? original.portDomains ?? {});\n const cardinalityVariables = calculateCardinalityVariables(updated.lineItems, cardinalityComputations);\n const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems, cardinalityComputations);\n\n originalCardinalityVariables.forEach((value, key) => {\n const execArray = cardinalityRegexp.exec(key);\n const portName = execArray?.groups?.['portName'];\n if (!portName || cardinalityComputations.get(portName)) {\n if (cardinalityVariables.get(key) === value) {\n // no need to update cardinality if no changes\n cardinalityVariables.delete(key);\n } else if (!cardinalityVariables.has(key)) {\n // remove last item from port\n cardinalityVariables.set(key, 0);\n }\n }\n });\n\n return {\n ...updated,\n attributes: upsertAttributes(\n updated.attributes,\n [...cardinalityVariables].map(([name, value]) => ({ name, value, cfgStatus: 'Changed' })),\n ),\n };\n};\n\nexport const mapAttributes = (attributes: Attribute[]): Dictionary<any> => {\n return attributes.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});\n};\n\nexport const getAttributes = (attributes: Attribute[], names: string[] = []): Attribute[] => {\n const filtered = attributes.filter(({ name }) => names.includes(name));\n return sortBy(filtered, [({ name }): number => names.indexOf(name)]);\n};\n\nexport const upsertAttributes = (originalAttributes: Attribute[], attributesToUpsert: NewAttribute[]): Attribute[] => {\n return attributesToUpsert.reduce((acc, { name, value }) => {\n const [origAttr] = getAttributes(acc, [name]);\n return [\n ...acc.filter(attr => attr.name !== name),\n { ...(origAttr ?? { name, type: '' }), cfgStatus: origAttr ? 'Changed' : 'User', value },\n ];\n }, originalAttributes);\n};\n\nexport const patchAttributes = (\n rootLineItem: LineItem,\n id: string,\n attrs: NewAttribute[],\n skipCardinalityCalculation: boolean = false,\n): LineItem => {\n const lineItem = findLineItem(id, [rootLineItem]);\n\n if (!lineItem) {\n return rootLineItem;\n }\n\n const attributes = upsertAttributes(lineItem.attributes, attrs);\n return replaceLineItem(rootLineItem, { ...lineItem, attributes }, skipCardinalityCalculation);\n};\n\nexport const getAttributeValue = (attributes: Attribute[], name: string): any =>\n attributes.find(attr => attr.name === name)?.value;\n\nexport const generateLineItem = (\n port: string,\n type: string,\n parentId: string,\n attributes: NewAttribute[] = [],\n lineItems: LineItem[] = [],\n): LineItem => {\n return {\n id: UUID.UUID(),\n port,\n type,\n actionCode: 'ADD',\n cfgStatus: 'New',\n attributes: attributes.map(({ name, value }) => ({ cfgStatus: 'User', name, value })),\n lineItems,\n parentId,\n qty: 1,\n } as LineItem;\n};\n\nexport const getRecommendedPrices = (portDomain: PortDomain, type: string): { net: number; list: number } => {\n const domainType = portDomain.domainTypes.find(({ name }) => name === type);\n\n const [net, list] = domainType?.recommendedPrices\n ?.filter(({ chargeMethod }) => chargeMethod === 'ONE_TIME')\n .reduce(\n (acc, rp) => {\n const [netPrice, listPrice] = acc;\n return [netPrice + rp.netPrice, listPrice + rp.listPrice];\n },\n [0, 0],\n ) ?? [0, 0];\n\n return { net, list };\n};\n\nexport const getOriginParent = (lineItems: LineItem[], currentLineItem: LineItem): LineItem | undefined => {\n let target: LineItem | undefined = currentLineItem;\n while (target && target.rampInstanceId) {\n target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);\n }\n return target;\n};\n\nexport const assetPredicateFn = (lineItem: LineItem, assetId?: string): boolean => {\n if (!assetId) {\n return false;\n }\n\n return lineItem.assetId === assetId || lineItem.openOrderLineItemId === assetId;\n};\n\nexport const multiplyLineItems = (lineItem: LineItem, qty: number, split: boolean): LineItem[] => {\n if (split) {\n const unifyIds = (lineItem: LineItem): LineItem => ({\n ...lineItem,\n id: UUID.UUID(),\n lineItems: lineItem.lineItems.map(unifyIds),\n });\n\n return map(new Array(qty), () => unifyIds(lineItem));\n } else {\n return [\n {\n ...lineItem,\n qty: qty,\n },\n ];\n }\n};\n\nexport const isTechnicalAttribute = (name: string): boolean => {\n return name.startsWith('#') || name.startsWith('$');\n};\n\nexport const filterOutTechnicalAttributes = <T extends { name: string }>(attributes: T[]): T[] => {\n return attributes.filter(({ name }) => !isTechnicalAttribute(name));\n};\n","import { LineItem, NewAttribute } from '@veloceapps/core';\nimport { insertLineItem, patchAttributes, removeLineItem, replaceLineItem } from './line-item.utils';\n\nexport class LineItemWorker {\n public li: LineItem;\n\n constructor(src: LineItem) {\n this.li = { ...src };\n }\n\n public insert(parentId: string, toInsert: LineItem): LineItemWorker {\n return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));\n }\n\n public remove(id: string): LineItemWorker {\n return new LineItemWorker(removeLineItem(this.li, id));\n }\n\n public replace(toReplace: LineItem, skipCardinalityCalculation: boolean = false): LineItemWorker {\n return new LineItemWorker(replaceLineItem(this.li, toReplace, skipCardinalityCalculation));\n }\n\n public patchAttribute(\n attrs: NewAttribute[],\n id?: string,\n skipCardinalityCalculation: boolean = false,\n ): LineItemWorker {\n return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs, skipCardinalityCalculation));\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 { Injectable } from '@angular/core';\nimport { Charge, ChargeGroupUtils, LineItem } from '@veloceapps/core';\nimport { Dictionary, flatten } from 'lodash';\nimport moment from 'moment';\nimport { LineItemWorker } from '../../../utils';\nimport { FlowUpdateParams } from '../types/update.types';\n\n@Injectable()\nexport class FlowUpdateService {\n public update(rootLineItems: LineItem[], updates: FlowUpdateParams[], charges?: Dictionary<Charge>): void {\n let remainingUpdates = [...updates];\n let currentLevel = rootLineItems;\n\n while (currentLevel.length && remainingUpdates.length) {\n currentLevel.forEach(li => {\n const unhandledUpdates: FlowUpdateParams[] = [];\n\n remainingUpdates.forEach(update => {\n let updated = false;\n\n switch (update.dataType) {\n case 'LINEITEM':\n updated = this.applyLineItemUpdate(li, update, charges);\n break;\n case 'CHARGE':\n updated = this.applyChargeUpdate(li, update);\n break;\n case 'GROUP_CHARGE':\n updated = this.applyChargeGroupUpdate(li, update);\n break;\n default:\n // Unknown dataType. Do not try to handle it anymore\n updated = true;\n }\n\n if (!updated) {\n unhandledUpdates.push(update);\n }\n });\n\n remainingUpdates = unhandledUpdates;\n });\n\n currentLevel = flatten(currentLevel.map(parent => parent.lineItems));\n }\n }\n\n public delete(lineItems: LineItem[], id: string): LineItem[] {\n const idsToRemove: string[] = [id];\n const topLevelLineItem = lineItems.find(li => li.id === id);\n\n if (topLevelLineItem) {\n // find term-related line items (which are only top level)\n // expired term line items won't be deleted\n let foundTermLineItem: LineItem | undefined = topLevelLineItem;\n\n while (foundTermLineItem) {\n foundTermLineItem = lineItems.find(li => foundTermLineItem && li.rampInstanceId === foundTermLineItem.id);\n if (foundTermLineItem) {\n idsToRemove.push(foundTermLineItem.id);\n }\n }\n }\n\n const filtered = lineItems.filter(lineItem => !idsToRemove.includes(lineItem.id));\n return filtered.map(lineItem => new LineItemWorker(lineItem).remove(id).li);\n }\n\n private applyLineItemUpdate(lineItem: LineItem, update: FlowUpdateParams, charges?: Dictionary<Charge>): boolean {\n if (lineItem.id !== update.id) {\n return false;\n }\n\n switch (update.attributeType) {\n case 'QTY':\n lineItem.qty = update.newValue;\n break;\n case 'EFFECTIVE_START_DATE':\n lineItem.properties['StartDate'] = moment(update.newValue).format('YYYY-MM-DD');\n break;\n case 'END_DATE':\n lineItem.properties['EndDate'] = moment(update.newValue).format('YYYY-MM-DD');\n break;\n case 'PRICE_ADJUSTMENT':\n {\n const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n if (charge) {\n charge.priceAdjustment = update.newValue;\n }\n }\n break;\n case 'LIST_PRICE_ADJUSTMENT':\n case 'MARGIN_ADJUSTMENT':\n {\n const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n if (charge) {\n charge.listPriceAdjustment = update.newValue;\n }\n }\n break;\n case 'COST_ADJUSTMENT':\n {\n const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n if (charge) {\n charge.costAdjustment = update.newValue;\n }\n }\n break;\n default:\n throw new Error(`Not suppored AttributeType for LineItem update: ${update.attributeType}`);\n }\n\n return true;\n }\n\n private applyChargeUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n const foundCharge = lineItem.chargeItems.find(({ id }) => id === update.id);\n if (!foundCharge) {\n return false;\n }\n\n if (update.attributeType === 'PRICE_ADJUSTMENT') {\n foundCharge.priceAdjustment = update.newValue;\n } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n foundCharge.listPriceAdjustment = update.newValue;\n } else {\n throw new Error(`Not suppored AttributeType for Charge Item update: ${update.attributeType}`);\n }\n\n return true;\n }\n\n private applyChargeGroupUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n const foundChargeGroup = ChargeGroupUtils.findChargeGroupById(update.id, lineItem);\n if (!foundChargeGroup) {\n return false;\n }\n\n if (update.attributeType === 'PRICE_ADJUSTMENT') {\n foundChargeGroup.priceAdjustment = update.newValue;\n } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n foundChargeGroup.listPriceAdjustment = update.newValue;\n } else {\n throw new Error(`Not suppored AttributeType for Charge Group Item update: ${update.attributeType}`);\n }\n\n return true;\n }\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 { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { ConfirmationComponent, ConfirmationConfig, ToastType } from '@veloceapps/components';\nimport {\n Charge,\n CompiledPricePlan,\n ConfigurationContext,\n ConfigurationMode,\n ConfigurationRequest,\n ConfigurationTranslatorUtils,\n ConfigurePrice,\n extractErrorDetails,\n LineItem,\n NewAttribute,\n PatchLineItemOptions,\n RuntimeModel,\n UIDefinitionProps,\n VlWindow,\n} from '@veloceapps/core';\nimport { cloneDeep, Dictionary, transform } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BehaviorSubject, Observable, shareReplay, throwError } from 'rxjs';\nimport { catchError, finalize, first, map, switchMap, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { RuntimeSettingsService } from '../../../services/runtime-settings.service';\nimport { RuntimeContext, RuntimeStep } from '../../../types';\nimport { assetPredicateFn } from '../../../utils';\nimport { LineItemWorker } from '../../../utils/line-item.worker';\nimport { getDefaultLineItem, getGuidedSellingConfigurationRequest } from '../helpers';\nimport { ExternalConfigurationProps, GuidedSellingSubmitData } from '../types/configuration.types';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\n\ndeclare const window: VlWindow;\n\n@Injectable()\nexport class ConfigurationService {\n private mode = ConfigurationMode.SEARCH;\n private configurableRamp: LineItem | undefined;\n\n private configurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n private previousConfigurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n private isLoadingSubj$ = new BehaviorSubject(false);\n\n public isLoading$ = this.isLoadingSubj$.asObservable();\n public hasUnsavedChanges = false;\n\n constructor(\n private quoteDraftService: QuoteDraftService,\n private runtimeService: ConfigurationRuntimeService,\n private contextService: ContextService,\n private configurationApiService: ConfigurationApiService,\n private messageService: MessageService,\n private dialogService: DialogService,\n private runtimeSettings: RuntimeSettingsService,\n ) {}\n\n public reset(): void {\n this.hasUnsavedChanges = false;\n this.runtimeService.reset();\n\n this.configurableRamp = undefined;\n this.configurationState.next(null);\n this.previousConfigurationState.next(null);\n }\n\n public patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem> {\n const source = this.getSnapshot();\n if (!source) {\n return throwError(() => new Error(`Source LineItem not found`));\n }\n\n const skipCardinalityCalculation =\n options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';\n\n this.configurableRamp = new LineItemWorker(source).replace(lineItem, skipCardinalityCalculation).li;\n\n return this.configure().pipe(\n catchError(error => {\n console.error(error);\n\n if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n // bounce back if configuration call has failed\n const prevState = this.configurationState.value;\n this.configurationState.next(prevState ? { ...prevState } : null);\n\n return throwError(() => error);\n }),\n tap(() => {\n if (!this.hasUnsavedChanges) {\n this.hasUnsavedChanges = true;\n }\n }),\n );\n }\n\n public patch(lineItem: LineItem, options?: PatchLineItemOptions): void {\n this.patch$(lineItem, options).subscribe();\n }\n\n public setConfigurableRamp(lineItem: LineItem): void {\n this.configurableRamp = lineItem;\n }\n\n public get(): Observable<LineItem | undefined> {\n return this.configurationState.pipe(\n map(state => state?.lineItem),\n shareReplay(),\n );\n }\n\n public getSnapshot(): LineItem | undefined {\n return this.configurationState.value?.lineItem ? { ...this.configurationState.value?.lineItem } : undefined;\n }\n\n public getRuntimeModel(): RuntimeModel {\n const runtimeModel = this.runtimeService.runtimeModel;\n if (!runtimeModel) {\n throw new Error('Runtime model not initialized');\n }\n\n return runtimeModel;\n }\n\n public getRuntimeContext(): RuntimeContext {\n const runtimeContext = this.runtimeService.runtimeContext;\n if (!runtimeContext) {\n throw new Error('Runtime context not initialized');\n }\n\n return runtimeContext;\n }\n\n public get state$(): Observable<ConfigurePrice | null> {\n return this.configurationState.asObservable();\n }\n\n public get stateSnapshot(): ConfigurePrice | null {\n return this.configurationState.value;\n }\n\n public get previousStateSnapshot(): ConfigurePrice | null {\n return this.previousConfigurationState.value;\n }\n\n public get contextSnapshot(): ConfigurationContext {\n return this.contextService.resolve();\n }\n\n public get context$(): Observable<ConfigurationContext> {\n return this.contextService.resolve$();\n }\n\n public get charges$(): Observable<Dictionary<Charge>> {\n return this.configurationState.pipe(map(state => state?.charges ?? {}));\n }\n\n public get chargesSnapshot(): Dictionary<Charge> {\n return this.configurationState.value?.charges ?? {};\n }\n\n public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n return this.configurationState.pipe(map(state => state?.pricePlans ?? {}));\n }\n\n public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n return this.configurationState.value?.pricePlans ?? {};\n }\n\n public get procedureContext$(): Observable<Dictionary<unknown>> {\n return this.configurationState.pipe(map(state => state?.procedureContext ?? {}));\n }\n\n public get procedureContextSnapshot(): Dictionary<unknown> {\n return this.configurationState.value?.procedureContext ?? {};\n }\n\n public configure(): Observable<LineItem> {\n return this.configureRequest$(this.generateRequest());\n }\n\n public configureRequest$(configurationRequest: ConfigurationRequest): Observable<LineItem> {\n const runtimeContext = this.getRuntimeContext();\n const runtimeModel = this.getRuntimeModel();\n const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;\n const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;\n const customPriceApi = this.runtimeSettings.getConfigurationSettings()['CUSTOM_PRICE_API'];\n\n this.isLoadingSubj$.next(true);\n\n const configure$ =\n pricingEnabled && customPriceApi\n ? this.configurationApiService.customConfigurePrice({ url: customPriceApi, configurationRequest, runtimeModel })\n : this.configurationApiService.configureLineItem({\n configurationRequest,\n runtimeModel,\n pricingEnabled,\n });\n\n return configure$.pipe(\n tap(result => {\n this.contextService.update(result.context);\n this.configurationState.next(result);\n this.previousConfigurationState.next(cloneDeep(result));\n\n if (result.deletedLineItems?.length) {\n this.showInactiveProductsConfirmation();\n }\n\n this.configurableRamp = result.lineItem;\n }),\n map(({ lineItem }) => lineItem),\n catchError(error =>\n throwError(() => {\n const resetState = this.previousConfigurationState.value;\n if (resetState) {\n this.previousConfigurationState.next(cloneDeep(resetState));\n this.configurationState.next(resetState);\n }\n if (error.error) {\n return extractErrorDetails(error.error).join('. ');\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<LineItem> {\n return this.runtimeService\n .init({ productId: props.productId, defaultQty: props.qty, attributesMap: props.attributesMap })\n .pipe(\n switchMap(() => this.configure()),\n first(),\n catchError(error => {\n this.messageService.add({ severity: ToastType.error, summary: error });\n throw error;\n }),\n finalize(() => this.reset()),\n );\n }\n\n public configureGuidedSelling$(data: GuidedSellingSubmitData): Observable<ConfigurePrice> {\n return this.configurationApiService\n .configureLineItem({\n configurationRequest: getGuidedSellingConfigurationRequest(data, this.contextService.resolve()),\n })\n .pipe(\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n this.messageService.add({ severity: ToastType.error, summary: error.error.message || error.error });\n }\n throw error;\n }),\n );\n }\n\n public generateRequest(lightMode: boolean = true): ConfigurationRequest {\n const lineItem = this.generateLineItem();\n\n let request: ConfigurationRequest = {\n lineItem,\n mode: this.mode,\n step: !this.configurationState.value?.lineItem ? RuntimeStep.START : RuntimeStep.UPDATE,\n attributeDomainMode: 'ALL',\n context: this.contextService.resolve(),\n lineItems: this.quoteDraftService.quoteDraft?.currentState || [],\n asset: this.getAsset(),\n };\n\n if (lightMode) {\n request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);\n }\n\n return request;\n }\n\n public generateLineItem(): LineItem {\n const runtimeContext = this.getRuntimeContext();\n const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n let lineItem = this.configurableRamp;\n if (!lineItem) {\n const { initializationProps } = this.runtimeService ?? {};\n\n lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);\n\n // Set default attributes\n if (initializationProps?.attributesMap) {\n const attributes = transform(\n initializationProps?.attributesMap,\n (acc: NewAttribute[], value, name) => acc.push({ name, value }),\n [],\n );\n\n lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;\n }\n }\n\n return lineItem;\n }\n\n public getAsset(): LineItem | undefined {\n const lineItem = this.configurableRamp;\n if (!lineItem) {\n return;\n }\n\n const assetId = lineItem.assetId ?? lineItem.openOrderLineItemId;\n return this.quoteDraftService.assetsState?.initialState.find(li => assetPredicateFn(li, assetId));\n }\n\n private getUIDefinitionProperties(): UIDefinitionProps {\n return {\n ...(this.getRuntimeContext().uiDefinitionContainer?.source.properties ?? {}),\n ...(this.runtimeService.uiDefinitionProperties ?? {}),\n };\n }\n\n private showInactiveProductsConfirmation(): void {\n const confirmationConfig: ConfirmationConfig = {\n title: ' ',\n description: 'This quote contains inactive products. Do you want to remove them?',\n primaryButtonLabel: 'Remove products',\n secondaryButtonLabel: 'Back to Quote',\n };\n\n this.dialogService\n .open(ConfirmationComponent, {\n dismissableMask: false,\n closeOnEscape: false,\n closable: false,\n showHeader: true,\n header: `Inactive Products in Quote`,\n width: '440px',\n data: { confirmationConfig },\n })\n .onClose.subscribe(result => {\n if (!result) {\n const context = this.contextService.resolve();\n window['VELO_BACK_FN'].apply(null, [context.headerId]);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api';\nimport { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';\nimport { cloneDeep, Dictionary } from 'lodash';\nimport { catchError, map, noop, Observable, of, shareReplay, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { multiplyLineItems } from '../../../utils/line-item.utils';\nimport { ExternalConfigurationProps } from '../../configuration';\nimport { ConfigurationService } from '../../configuration/services/configuration.service';\nimport { FlowUpdateParams } from '../types/update.types';\nimport { FlowUpdateService } from './flow-update.service';\nimport { FlowInfoService } from '../../../services';\n\n@Injectable()\nexport class FlowConfigurationService {\n /**\n * An event being fired when QuoteDraft was updated\n */\n public updated$: Observable<void>;\n\n private updatedSubj$ = new Subject<void>();\n\n constructor(\n private proceduresApiService: ProceduresApiService,\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private updateService: FlowUpdateService,\n private configurationService: ConfigurationService,\n private flowInfoService: FlowInfoService,\n ) {\n this.updated$ = this.updatedSubj$.asObservable();\n }\n\n public calculate$(quoteDraft: QuoteDraft): Observable<void> {\n return this.extendedApply$(quoteDraft).pipe(\n tap(result => {\n // sort the result current state based on the quote draft initial state\n const initialStateIds = quoteDraft.initialState.map(lineItem => lineItem.integrationId);\n result.currentState = result.currentState\n .slice()\n .sort((a, b) => initialStateIds.indexOf(a.integrationId) - initialStateIds.indexOf(b.integrationId));\n this.quoteDraftService.updateQuoteDraft(result);\n }),\n map(noop),\n );\n }\n\n public calculate(quoteDraft: QuoteDraft): void {\n this.calculate$(quoteDraft).subscribe();\n }\n\n public update$(updates: FlowUpdateParams[]): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n return of([]).pipe(\n map(() => {\n const updatedState = cloneDeep(quoteDraft.currentState);\n this.updateService.update(updatedState, updates, quoteDraft.charges);\n return updatedState;\n }),\n switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public update(updates: FlowUpdateParams[]): void {\n this.update$(updates).subscribe();\n }\n\n public revert$(lineItemId: string): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const initialCurrentState = this.quoteDraftService.getInitialCurrentState();\n const currentState = this.quoteDraftService.currentState;\n\n const currentLineItemIndex = currentState.findIndex(({ id }) => id === lineItemId);\n const currentLineItem = currentState[currentLineItemIndex];\n\n const initialLineItem = initialCurrentState.find(\n ({ integrationId }) => integrationId === currentLineItem?.integrationId,\n );\n\n if (!quoteDraft || !currentLineItem || !initialLineItem) {\n return of(null);\n }\n\n const updatedState = cloneDeep(currentState);\n updatedState.splice(currentLineItemIndex, 1, initialLineItem);\n\n return of([]).pipe(\n tap(() => {\n this.quoteDraftService.setCurrentLineItemState(updatedState);\n }),\n switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public revert(lineItemId: string): void {\n this.revert$(lineItemId).subscribe();\n }\n\n public delete$(ids: string[]): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const currentState = this.quoteDraftService.currentState;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n return of([]).pipe(\n map(() => ids.reduce((result, id) => this.updateService.delete(result, id), currentState)),\n switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\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 public addTerm$(term: LineItem): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n const updatedState = [...quoteDraft.currentState, term];\n\n return of([]).pipe(\n switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public addToCart$(props: ExternalConfigurationProps): Observable<QuoteDraft | null> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!quoteDraft) {\n return of(null);\n }\n\n return this.configurationService.configureExternal$(props).pipe(\n map(lineItem => {\n const model = this.configurationService.getRuntimeModel();\n const split = model?.types.find(type => type.name === lineItem.type)?.split ?? false;\n const lineItems = multiplyLineItems(lineItem, props.qty ?? 1, split);\n\n return [...quoteDraft.currentState, ...lineItems];\n }),\n switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n map(() => this.quoteDraftService.quoteDraft),\n tap(() => this.updatedSubj$.next()),\n this.handleErrorAndBounceBack(),\n );\n }\n\n public get(): Observable<LineItem[]> {\n return this.quoteDraftService.quoteDraft$.pipe(\n map(() => this.quoteDraftService.currentState),\n shareReplay(),\n );\n }\n\n public getSnapshot(): LineItem[] {\n return this.quoteDraftService?.currentState.slice() ?? [];\n }\n\n public get charges$(): Observable<Dictionary<Charge>> {\n return this.quoteDraftService.quoteDraft$.pipe(map(({ charges }) => charges));\n }\n\n public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n return this.quoteDraftService.quoteDraft$.pipe(map(({ pricePlans }) => pricePlans));\n }\n\n public get activeMetrics$(): Observable<MetricRule[]> {\n return this.quoteDraftService.quoteDraft$.pipe(map(({ activeMetrics }) => activeMetrics));\n }\n\n public get chargesSnapshot(): Dictionary<Charge> {\n return this.quoteDraftService.quoteDraft?.charges ?? {};\n }\n\n public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n return this.quoteDraftService.quoteDraft?.pricePlans ?? {};\n }\n\n public get activeMetricsSnapshot(): MetricRule[] {\n return this.quoteDraftService.quoteDraft?.activeMetrics ?? [];\n }\n\n public get contextSnapshot(): ConfigurationContext {\n return this.contextService.resolve();\n }\n\n public get context$(): Observable<ConfigurationContext> {\n return this.contextService.resolve$();\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 quoteDraft = this.quoteDraftService.quoteDraft;\n if (quoteDraft) {\n this.quoteDraftService.updateQuoteDraft(quoteDraft);\n this.updatedSubj$.next();\n }\n\n return throwError(() => error);\n }),\n );\n };\n }\n\n private extendedApply$(quoteDraft: QuoteDraft): Observable<QuoteDraft> {\n const request = { ...quoteDraft };\n const procedureName = this.flowInfoService.flow?.properties.procedureName;\n if (procedureName) {\n request.procedureName = procedureName;\n }\n return this.proceduresApiService.apply$(request);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport { FlowUpdateService } from './services/flow-update.service';\n\n@NgModule({\n imports: [ApiModule],\n providers: [FlowConfigurationService, FlowUpdateService],\n})\nexport class FlowConfigurationModule {}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { BehaviorSubject, map, noop, Observable, of, switchMap, tap } from 'rxjs';\nimport { generateConfigurationLineItem, NewConfigurationProps } from '../modules/configuration';\nimport { FlowConfigurationService } from '../modules/flow-configuration';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\n\n@Injectable()\nexport class FlowStateConfigurationService {\n private configurationStateId$ = new BehaviorSubject<string | null>(null);\n\n constructor(\n private flowInfoService: FlowInfoService,\n private flowConfigurationService: FlowConfigurationService,\n private flowStateApiService: FlowStateApiService,\n private flowStateService: FlowStateService,\n ) {}\n\n public get configurationStateId(): string | null {\n return this.configurationStateId$.value;\n }\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 const lineItem = generateConfigurationLineItem(props, props.qty);\n request$ = this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(\n tap(r => this.configurationStateId$.next(r.stateId)),\n switchMap(() => {\n if (!this.configurationStateId) {\n return of();\n }\n return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(\n tap(() => this.configurationStateId$.next(null)),\n map(noop),\n );\n }),\n );\n }\n } else {\n request$ = this.flowConfigurationService.addToCart$(props).pipe(map(noop));\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 clear(): 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 { ConfigurationApiService } from '@veloceapps/api';\nimport { isNotLegacyUIDefinition, RuntimeData, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\n\n@Injectable()\nexport class RuntimeContextService {\n constructor(private configurationApiService: ConfigurationApiService) {}\n\n public getRuntimeContext(productId: string, offeringId?: string): Observable<RuntimeContext> {\n return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(\n map(runtimeData => {\n const uiDefinitionContainer = this.getUIDefinitionContainer(runtimeData);\n const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);\n const { productName, properties } =\n Array.from(runtimeModel.components.values()).find(c => c.productId === productId) ?? {};\n\n const uiDefinitionProperties = uiDefinitionContainer?.source.properties;\n\n return {\n modelId: runtimeData.modelId,\n uiDefinitionContainer: uiDefinitionContainer,\n runtimeModel: runtimeModel,\n runtimeMode: RuntimeMode.PROD,\n productId: productId,\n productType: properties?.['displayName'] || productName,\n offeringId: offeringId,\n properties: {\n PricingEnabled: uiDefinitionProperties?.pricingEnabled ? 'true' : 'false',\n PriceListId: uiDefinitionProperties?.priceList,\n },\n } satisfies RuntimeContext;\n }),\n );\n }\n\n private getUIDefinitionContainer(runtimeData: RuntimeData): UIDefinitionContainer | undefined {\n const containers = runtimeData.uiDefinitions.filter(container => isNotLegacyUIDefinition(container.source));\n return containers.find(container => container.source.primary) ?? containers[0];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { RuntimeModel, SalesforceIdUtils, UIDefinitionContainer, UIDefinitionProps } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\nimport { combineLatest, Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\nimport { RuntimeInitializationProps } from '../types/configuration-runtime.types';\nimport { RuntimeContextService } from './runtime-context.service';\n\n@Injectable()\nexport class ConfigurationRuntimeService {\n private _runtimeContext?: RuntimeContext;\n private _isInitialized = false;\n\n public initializationProps?: RuntimeInitializationProps;\n public uiDefinitionProperties: UIDefinitionProps = {};\n\n constructor(\n private apiService: ConfigurationApiService,\n private contextService: ContextService,\n private runtimeContextService: RuntimeContextService,\n ) {}\n\n public reset(): void {\n this._isInitialized = false;\n this._runtimeContext = undefined;\n this.initializationProps = undefined;\n this.uiDefinitionProperties = {};\n }\n\n public initTestMode(uiDefinitionContainer: UIDefinitionContainer): Observable<RuntimeContext> {\n this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n const uiDefinitionExternals = uiDefinitionContainer.source.externals ?? {};\n\n return combineLatest([\n this.apiService.getRuntimeDataByModelId(uiDefinitionContainer.modelId),\n this.contextService.initTestMode(),\n ]).pipe(\n first(),\n map(([runtimeData, context]) => {\n this.contextService.update({\n properties: {\n ...this.runtimeContext?.properties,\n ...context.properties,\n ModelId: uiDefinitionContainer.modelId,\n PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',\n PriceListId: this.uiDefinitionProperties.priceList,\n offeringId: this.uiDefinitionProperties.offeringId,\n ...uiDefinitionExternals,\n },\n });\n\n this._runtimeContext = {\n modelId: uiDefinitionContainer.modelId,\n runtimeModel: RuntimeModel.create(runtimeData.types, runtimeData.products),\n runtimeMode: RuntimeMode.TEST,\n uiDefinitionContainer,\n };\n\n return this._runtimeContext;\n }),\n tap(() => (this._isInitialized = true)),\n );\n }\n\n public init(props: RuntimeInitializationProps): Observable<RuntimeContext> {\n this.initializationProps = props;\n const context = this.contextService.resolve();\n\n return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(\n tap(runtimeContext => {\n this.uiDefinitionProperties = runtimeContext.uiDefinitionContainer?.source.properties ?? {};\n const { PriceListId } = context.properties ?? {};\n\n const mergeContext: RuntimeContext = {\n ...runtimeContext,\n properties: {\n ...runtimeContext.properties,\n ...context.properties,\n PricingEnabled: PriceListId ? 'true' : 'false',\n },\n };\n\n this.id15to18('AccountId', mergeContext.properties);\n this._runtimeContext = mergeContext;\n\n if (context.properties && this._runtimeContext.properties?.StartDate) {\n this.contextService.update({\n properties: {\n ...this._runtimeContext.properties,\n ...context.properties,\n },\n });\n }\n\n return this._runtimeContext;\n }),\n tap(() => (this._isInitialized = true)),\n );\n }\n\n public overrideUIDefinition(uiDefinitionContainer: UIDefinitionContainer): void {\n if (!this._runtimeContext) {\n return;\n }\n\n this._runtimeContext.uiDefinitionContainer = uiDefinitionContainer;\n this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n }\n\n private id15to18(propertyName: string, source?: Dictionary<any>): void {\n if (!source) {\n return;\n }\n\n const value = source[propertyName];\n\n if (typeof value === 'string' && value.length === 15) {\n source[propertyName] = SalesforceIdUtils.generateId18FromId15(value);\n }\n }\n\n public get isInitialized(): boolean {\n return this._isInitialized;\n }\n\n public get runtimeModel(): RuntimeModel | undefined {\n return this.runtimeContext?.runtimeModel;\n }\n\n public get runtimeContext(): RuntimeContext | undefined {\n return this._runtimeContext;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService, QuoteApiService, SaveQuoteResponse } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationProcessor,\n ConfigurationProcessorScriptFn,\n ConfigurationRequest,\n ConfigurationTranslatorUtils,\n ConfigurePrice,\n EntityUtil,\n FlowStateExecutableDTO,\n FlowStateExecutionRequest,\n FlowStateExecutionRequestDTO,\n FlowStateExecutionResult,\n FlowStateSelectorResponse,\n isDefined,\n LineItem,\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, QuoteDraftService } from '../../../services';\nimport { FlowStateSubscriptionOptions } from '../../../types/flow-state.types';\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 quoteDraftService: QuoteDraftService,\n private toastService: ToastService,\n private flowStateService: FlowStateService,\n private flowInfoService: FlowInfoService,\n private flowConfigurationService: FlowConfigurationService,\n private flowStateApiService: FlowStateApiService,\n private quoteApiService: QuoteApiService,\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.initStateless$();\n }\n\n return request$.pipe(\n finalize(() => {\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 }\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(flow?: boolean): Observable<SaveQuoteResponse>;\n /**\n * @deprecated Will be removed in @veloceapps/sdk@9\n */\n public saveConfiguration(quoteId?: string, flow?: boolean): Observable<SaveQuoteResponse>;\n\n public saveConfiguration(first?: string | boolean, second?: boolean): Observable<SaveQuoteResponse> {\n const flow = typeof first === 'boolean' ? first : second;\n if (this.isStatefulConfiguration) {\n return this.flowStateApiService\n .saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '')\n .pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))));\n } else {\n if (!flow) {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (!quoteDraft) {\n return of({ quoteId: '' });\n }\n\n const rootLineItem = this.configurationService.getSnapshot();\n const asset = this.configurationService.getAsset();\n const currentState = rootLineItem ? [rootLineItem] : [];\n const initialState = asset ? [asset] : [];\n\n return this.quoteApiService.upsertQuote({ ...quoteDraft, currentState, initialState });\n } else {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const lineItem = this.configurationService.getSnapshot();\n\n if (!quoteDraft || !lineItem) {\n return of({ quoteId: '' });\n }\n\n const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);\n\n let currentState: LineItem[];\n if (isNewLineItem) {\n currentState = [...quoteDraft.currentState, lineItem];\n } else {\n currentState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));\n }\n\n const asset = this.configurationService.getAsset();\n const initialState = [...(this.quoteDraftService.quoteDraft?.initialState ?? [])];\n if (asset) {\n if (!initialState.some(li => li.id === asset.id)) {\n initialState.push(asset);\n }\n }\n\n return this.flowConfigurationService\n .calculate$({ ...quoteDraft, currentState, initialState })\n .pipe(map(() => ({ quoteId: '' })));\n }\n }\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.runtimeContext?.uiDefinitionContainer?.id ?? '';\n const lineItemId = this.configurationRuntimeService.runtimeContext?.properties?.lineItemId;\n if (!this.flowStateService.stateId) {\n return of(undefined);\n }\n\n const container = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer;\n\n const lineItem = this.configurationService.generateLineItem();\n\n let request$: Observable<FlowStateExecutionResult>;\n\n if (!lineItemId) {\n request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {\n lineItem,\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 lineItemId,\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 initStateless$(): Observable<void> {\n return this.configurationService.configure().pipe(map(() => undefined));\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 of(undefined).pipe(\n switchMap(() => {\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 let configurationRequest = this.configurationService.generateRequest(false);\n request.actions.forEach(action => {\n configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;\n });\n\n configurationRequest = ConfigurationTranslatorUtils.lightenConfigurationRequest(configurationRequest);\n\n return this.configurationService.configureRequest$(configurationRequest);\n }),\n map(() => {\n // Run selectors and apply them to the state\n const configurationState = this.configurationService.stateSnapshot;\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.previousStateSnapshot;\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.uiDefinitionProperties.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: ConfigurationRequest, processor: FlowStateExecutableDTO): ConfigurationRequest {\n const { actions } = this.configurationRuntimeService.runtimeContext?.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 ConfigurationRequest;\n }\n\n private executeSelectorScript(request: ConfigurePrice, processor: FlowStateExecutableDTO): unknown {\n const { selectors } = this.configurationRuntimeService.runtimeContext?.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: ConfigurationRequest | ConfigurePrice,\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: ConfigurePrice,\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';\nimport { RuntimeContextService } from './services/runtime-context.service';\n\n@NgModule({\n imports: [ConfirmationDialogModule, ApiModule],\n providers: [ConfigurationRuntimeService, RuntimeContextService, ConfigurationService, ConfigurationStateService],\n})\nexport class ConfigurationModule {}\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 { FlowConfigurationModule } from './modules';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport {\n ContextService,\n FlowInfoService,\n FlowStateConfigurationService,\n FlowStateService,\n IntegrationState,\n ProductImagesService,\n QuoteDraftService,\n RuntimeSettingsService,\n} from './services';\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 ContextService,\n FlowInfoService,\n QuoteDraftService,\n ProductImagesService,\n IntegrationState,\n FlowStateService,\n FlowStateConfigurationService,\n RuntimeSettingsService,\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":["map","tap","switchMap","i1.ContextService","i2.FlowInfoService","i3","filter","shareReplay","take","catchError","finalize","i1.QuoteDraftService","i2.ConfigurationRuntimeService","i3.ContextService","i4","i6","i7.RuntimeSettingsService","i2.ContextService","i3.QuoteDraftService","i4.FlowUpdateService","i5.ConfigurationService","i6.FlowInfoService","i1.FlowInfoService","i2.FlowConfigurationService","i4.FlowStateService","i3.RuntimeContextService","i1.ConfigurationRuntimeService","i2.ConfigurationService","i3.FlowStateService","i3.FlowInfoService","i5.FlowConfigurationService"],"mappings":"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"}