@veloceapps/sdk 9.0.0-9 → 10.0.0-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/modules/configuration/services/configuration-state.service.d.ts +5 -3
- package/core/services/flow-info.service.d.ts +1 -1
- package/core/services/quote-draft.service.d.ts +3 -1
- package/esm2020/cms/components/preview/preview.component.mjs +3 -4
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +67 -37
- package/esm2020/core/modules/configuration/services/configuration.service.mjs +8 -3
- package/esm2020/core/services/flow-info.service.mjs +6 -8
- package/esm2020/core/services/quote-draft.service.mjs +13 -8
- package/esm2020/src/flow.component.mjs +4 -1
- package/esm2020/src/guards/flow.guard.mjs +2 -3
- package/esm2020/src/pages/product/product.component.mjs +2 -2
- package/fesm2015/veloceapps-sdk-cms.mjs +2 -4
- package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk-core.mjs +97 -54
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk.mjs +6 -3
- package/fesm2015/veloceapps-sdk.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-cms.mjs +2 -3
- package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +89 -52
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk.mjs +5 -3
- package/fesm2020/veloceapps-sdk.mjs.map +1 -1
- package/package.json +4 -4
- package/src/flow.component.d.ts +3 -1
@@ -1,11 +1,11 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { InjectionToken, Injectable, Optional, Inject, NgModule, inject, Directive, Input, LOCALE_ID, Pipe } from '@angular/core';
|
3
|
-
import { UUID, ConfigurationContextMode, ConfigurationContext, UITemplateType, QuoteDraft, isDefined, ConfigurationProcessorTypes, EntityUtil, ChargeGroupUtils, DEFAULT_CURRENCY_ISO_CODE, DEFAULT_CURRENCY_SYMBOL, validateDateFormat, DEFAULT_DATE_FORMAT, DEFAULT_DECIMALS_COUNT, getSupportedDateFormats, DEFAULT_DECIMAL_SEPARATOR, DEFAULT_THOUSANDS_SEPARATOR, DEFAULT_ACTION_CODE_LABELS, parseJsonSafely, ConfigurationMode, ConfigurationTranslatorUtils, RuntimeModel, isNotLegacyUIDefinition, SalesforceIdUtils, DEFAULT_TIME_FORMAT, formatNumber } from '@veloceapps/core';
|
4
|
-
import { BehaviorSubject, switchMap, map as map$1, tap as tap$1, noop, catchError, throwError,
|
3
|
+
import { UUID, ConfigurationContextMode, ConfigurationContext, UITemplateType, QuoteDraft, isDefined, ConfigurationProcessorTypes, EntityUtil, ChargeGroupUtils, DEFAULT_CURRENCY_ISO_CODE, DEFAULT_CURRENCY_SYMBOL, validateDateFormat, DEFAULT_DATE_FORMAT, DEFAULT_DECIMALS_COUNT, getSupportedDateFormats, DEFAULT_DECIMAL_SEPARATOR, DEFAULT_THOUSANDS_SEPARATOR, DEFAULT_ACTION_CODE_LABELS, parseJsonSafely, ConfigurationMode, extractErrorDetails, ConfigurationTranslatorUtils, RuntimeModel, isNotLegacyUIDefinition, SalesforceIdUtils, DEFAULT_TIME_FORMAT, formatNumber } from '@veloceapps/core';
|
4
|
+
import { BehaviorSubject, switchMap, map as map$1, tap as tap$1, noop, catchError, throwError, forkJoin, of, zip, combineLatest, Subject, filter as filter$1, shareReplay as shareReplay$1, finalize, takeUntil, buffer, debounceTime, share, take as take$1, distinctUntilChanged } from 'rxjs';
|
5
5
|
import { map, filter, tap, switchMap as switchMap$1, skip, take, shareReplay, catchError as catchError$1, finalize as finalize$1, first } from 'rxjs/operators';
|
6
6
|
import * as i1 from '@veloceapps/api';
|
7
7
|
import { ApiModule } from '@veloceapps/api';
|
8
|
-
import { merge,
|
8
|
+
import { merge, isEqual, cloneDeep, assign, flatten, entries, sortBy, map as map$2, omit, uniqBy, transform } from 'lodash';
|
9
9
|
import * as i6 from '@veloceapps/components';
|
10
10
|
import { ToastType, ConfirmationComponent, ConfirmationDialogModule } from '@veloceapps/components';
|
11
11
|
import moment from 'moment';
|
@@ -186,9 +186,11 @@ class FlowInfoService {
|
|
186
186
|
this.flowSubj$ = new BehaviorSubject(null);
|
187
187
|
this.flow$ = this.flowSubj$.asObservable();
|
188
188
|
}
|
189
|
-
init$(flowId,
|
190
|
-
this.
|
191
|
-
|
189
|
+
init$(flowId, routeQueryParams) {
|
190
|
+
return this.flowsApiService.getFlow(flowId).pipe(switchMap(flow => this.initFlowTemplates$(flow).pipe(map$1(() => flow))), tap$1(flow => {
|
191
|
+
this.params = Object.assign(Object.assign({}, routeQueryParams), flow.properties.queryParams);
|
192
|
+
this.flowSubj$.next(flow);
|
193
|
+
}), map$1(noop), catchError(e => {
|
192
194
|
this.flowSubj$.next(null);
|
193
195
|
return throwError(() => e);
|
194
196
|
}));
|
@@ -200,9 +202,6 @@ class FlowInfoService {
|
|
200
202
|
}
|
201
203
|
initFlowTemplates$(flow) {
|
202
204
|
var _a, _b, _c;
|
203
|
-
if (isEmpty(flow.properties.templates)) {
|
204
|
-
return of(undefined);
|
205
|
-
}
|
206
205
|
return forkJoin([
|
207
206
|
this.templatesApiService.fetchTemplates$(),
|
208
207
|
(_c = (_b = (_a = this.customizationService) === null || _a === void 0 ? void 0 : _a.getTemplates) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : of([]),
|
@@ -295,8 +294,9 @@ class QuoteDraftService {
|
|
295
294
|
get assetsState() {
|
296
295
|
return this.assetsSubj$.value;
|
297
296
|
}
|
298
|
-
constructor(context, accountApiService, quoteApiService) {
|
297
|
+
constructor(context, flowInfoService, accountApiService, quoteApiService) {
|
299
298
|
this.context = context;
|
299
|
+
this.flowInfoService = flowInfoService;
|
300
300
|
this.accountApiService = accountApiService;
|
301
301
|
this.quoteApiService = quoteApiService;
|
302
302
|
this.quoteSubj$ = new BehaviorSubject(null);
|
@@ -321,7 +321,9 @@ class QuoteDraftService {
|
|
321
321
|
const ctx = this.context.resolve();
|
322
322
|
const isAccountMode = this.context.mode === ConfigurationContextMode.ACCOUNT;
|
323
323
|
const accountId = isAccountMode ? headerId : ctx.properties.AccountId;
|
324
|
-
return zip(accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null), isAccountMode
|
324
|
+
return zip(accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null), isAccountMode
|
325
|
+
? of(QuoteDraft.emptyQuote(ConfigurationContextMode.ACCOUNT))
|
326
|
+
: this.quoteApiService.getQuoteState(headerId, params)).pipe(tap(([assets, quote]) => {
|
325
327
|
if (assets) {
|
326
328
|
this.assetsSubj$.next(assets);
|
327
329
|
}
|
@@ -387,10 +389,11 @@ class QuoteDraftService {
|
|
387
389
|
return (_b = (_a = this.quoteDraft) === null || _a === void 0 ? void 0 : _a.currentState) !== null && _b !== void 0 ? _b : [];
|
388
390
|
}
|
389
391
|
get isStandalone() {
|
390
|
-
|
392
|
+
var _a, _b;
|
393
|
+
return (_b = (_a = this.flowInfoService.flow) === null || _a === void 0 ? void 0 : _a.properties.standalone) !== null && _b !== void 0 ? _b : false;
|
391
394
|
}
|
392
395
|
get isStandalone$() {
|
393
|
-
return this.
|
396
|
+
return this.flowInfoService.flow$.pipe(map(() => this.isStandalone));
|
394
397
|
}
|
395
398
|
getInitialCurrentState() {
|
396
399
|
return this.initialCurrentState;
|
@@ -417,11 +420,11 @@ class QuoteDraftService {
|
|
417
420
|
}
|
418
421
|
}
|
419
422
|
}
|
420
|
-
QuoteDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, deps: [{ token: ContextService }, { token: i1.AccountApiService }, { token: i1.QuoteApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
423
|
+
QuoteDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, deps: [{ token: ContextService }, { token: FlowInfoService }, { token: i1.AccountApiService }, { token: i1.QuoteApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
421
424
|
QuoteDraftService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService });
|
422
425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuoteDraftService, decorators: [{
|
423
426
|
type: Injectable
|
424
|
-
}], ctorParameters: function () { return [{ type: ContextService }, { type: i1.AccountApiService }, { type: i1.QuoteApiService }]; } });
|
427
|
+
}], ctorParameters: function () { return [{ type: ContextService }, { type: FlowInfoService }, { type: i1.AccountApiService }, { type: i1.QuoteApiService }]; } });
|
425
428
|
|
426
429
|
class FlowStateService {
|
427
430
|
constructor(contextService, quoteDraftService, flowInfoService, flowConfiguration, processorsApiService, flowStateApiService, quoteApiService, toastService, customizationService) {
|
@@ -1532,7 +1535,12 @@ class ConfigurationService {
|
|
1532
1535
|
this.showInactiveProductsConfirmation();
|
1533
1536
|
}
|
1534
1537
|
this.configurableRamp = result.lineItem;
|
1535
|
-
}), map(({ lineItem }) => lineItem), catchError$1(error => throwError(() => {
|
1538
|
+
}), map(({ lineItem }) => lineItem), catchError$1(error => throwError(() => {
|
1539
|
+
if (error.error) {
|
1540
|
+
return extractErrorDetails(error.error).join('. ');
|
1541
|
+
}
|
1542
|
+
return error.message || JSON.stringify(error);
|
1543
|
+
})), finalize$1(() => this.isLoadingSubj$.next(false)));
|
1536
1544
|
}
|
1537
1545
|
configureExternal$(props) {
|
1538
1546
|
return this.runtimeService
|
@@ -2062,70 +2070,58 @@ class ConfigurationStateService {
|
|
2062
2070
|
this.executedFunctions = {};
|
2063
2071
|
this.configurationService.reset();
|
2064
2072
|
}
|
2065
|
-
execute$(
|
2066
|
-
|
2067
|
-
|
2068
|
-
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
|
2075
|
-
|
2076
|
-
|
2077
|
-
|
2078
|
-
execution$ = this.executeStateless$(fullRequest);
|
2079
|
-
}
|
2080
|
-
return execution$.pipe(tap$1(result => this.handleSelectorsResponse(result.selectors)));
|
2081
|
-
}
|
2082
|
-
handleSelectorsResponse(selectors) {
|
2083
|
-
Object.entries(selectors).forEach(([requestId, selectorResult]) => {
|
2084
|
-
var _a;
|
2085
|
-
if (!selectorResult.success) {
|
2086
|
-
this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });
|
2087
|
-
}
|
2088
|
-
const subscription$ = (_a = this.subscriptions[requestId]) === null || _a === void 0 ? void 0 : _a.data$;
|
2089
|
-
if (subscription$) {
|
2090
|
-
subscription$.next(selectorResult);
|
2091
|
-
}
|
2092
|
-
});
|
2073
|
+
execute$(exec) {
|
2074
|
+
const request = this.execToRequest(exec);
|
2075
|
+
return this.executeRequest$(request).pipe(map$1(result => {
|
2076
|
+
// Keep only requested results
|
2077
|
+
const actualSelectors = Object.entries(result.selectors).reduce((trunk, [requestId, result]) => {
|
2078
|
+
var _a;
|
2079
|
+
if ((_a = exec.selectors) === null || _a === void 0 ? void 0 : _a[requestId]) {
|
2080
|
+
trunk[requestId] = result;
|
2081
|
+
}
|
2082
|
+
return trunk;
|
2083
|
+
}, {});
|
2084
|
+
return actualSelectors;
|
2085
|
+
}));
|
2093
2086
|
}
|
2094
2087
|
dispatch$(actionName, inputData = {}) {
|
2095
|
-
|
2088
|
+
const exec = {
|
2089
|
+
actions: [{ name: actionName, inputData }],
|
2090
|
+
};
|
2091
|
+
const request = this.execToRequest(exec);
|
2092
|
+
return this.executeRequest$(request);
|
2096
2093
|
}
|
2097
2094
|
select$(selectorName, inputData = {}) {
|
2098
2095
|
const requestId = UUID.UUID();
|
2099
|
-
|
2096
|
+
const request = this.execToRequest({
|
2100
2097
|
selectors: {
|
2101
2098
|
[requestId]: {
|
2102
|
-
|
2099
|
+
name: selectorName,
|
2103
2100
|
inputData,
|
2104
|
-
ownerId: this.ownerId,
|
2105
2101
|
},
|
2106
2102
|
},
|
2107
|
-
})
|
2103
|
+
});
|
2104
|
+
return this.executeRequest$(request).pipe(map$1(response => response.selectors[requestId]));
|
2108
2105
|
}
|
2109
2106
|
subscribe$(selectorName, inputData = {}, options) {
|
2110
2107
|
const requestId = UUID.UUID();
|
2111
2108
|
let subscription = this.subscriptions[requestId];
|
2112
2109
|
if (!subscription) {
|
2113
|
-
const request = {
|
2110
|
+
const request = this.execToRequest({
|
2114
2111
|
selectors: {
|
2115
2112
|
[requestId]: {
|
2116
|
-
|
2113
|
+
name: selectorName,
|
2117
2114
|
inputData,
|
2118
|
-
ownerId: this.ownerId,
|
2119
2115
|
},
|
2120
2116
|
},
|
2121
|
-
};
|
2117
|
+
});
|
2122
2118
|
subscription = {
|
2123
2119
|
request,
|
2124
2120
|
data$: new BehaviorSubject(this.NOT_INITIALIZED),
|
2125
2121
|
};
|
2126
2122
|
this.subscriptions[requestId] = subscription;
|
2127
2123
|
if (!(options === null || options === void 0 ? void 0 : options.cold)) {
|
2128
|
-
this.
|
2124
|
+
this.executeRequest$(request).subscribe();
|
2129
2125
|
}
|
2130
2126
|
}
|
2131
2127
|
return subscription.data$.pipe(filter$1(data => data != this.NOT_INITIALIZED), map$1(data => data), distinctUntilChanged(), finalize(() => {
|
@@ -2232,6 +2228,53 @@ class ConfigurationStateService {
|
|
2232
2228
|
initStateless$() {
|
2233
2229
|
return this.configurationService.configure().pipe(map$1(() => undefined));
|
2234
2230
|
}
|
2231
|
+
execToRequest(exec) {
|
2232
|
+
var _a;
|
2233
|
+
return {
|
2234
|
+
actions: (_a = exec.actions) === null || _a === void 0 ? void 0 : _a.map(action => {
|
2235
|
+
var _a;
|
2236
|
+
return ({
|
2237
|
+
apiName: action.name,
|
2238
|
+
ownerId: this.ownerId,
|
2239
|
+
inputData: (_a = action.inputData) !== null && _a !== void 0 ? _a : {},
|
2240
|
+
});
|
2241
|
+
}),
|
2242
|
+
selectors: exec.selectors &&
|
2243
|
+
Object.entries(exec.selectors).reduce((trunk, [key, selector]) => {
|
2244
|
+
var _a;
|
2245
|
+
return (Object.assign(Object.assign({}, trunk), { [key]: { apiName: selector.name, ownerId: this.ownerId, inputData: (_a = selector.inputData) !== null && _a !== void 0 ? _a : {} } }));
|
2246
|
+
}, {}),
|
2247
|
+
};
|
2248
|
+
}
|
2249
|
+
handleSelectorsResponse(selectors) {
|
2250
|
+
Object.entries(selectors).forEach(([requestId, selectorResult]) => {
|
2251
|
+
var _a;
|
2252
|
+
if (!selectorResult.success) {
|
2253
|
+
this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });
|
2254
|
+
}
|
2255
|
+
const subscription$ = (_a = this.subscriptions[requestId]) === null || _a === void 0 ? void 0 : _a.data$;
|
2256
|
+
if (subscription$) {
|
2257
|
+
subscription$.next(selectorResult);
|
2258
|
+
}
|
2259
|
+
});
|
2260
|
+
}
|
2261
|
+
executeRequest$(req, forceSubscriptions) {
|
2262
|
+
var _a;
|
2263
|
+
const fullRequest = cloneDeep(req);
|
2264
|
+
if (((_a = fullRequest.actions) === null || _a === void 0 ? void 0 : _a.length) || forceSubscriptions) {
|
2265
|
+
for (const subscription of Object.values(this.subscriptions)) {
|
2266
|
+
fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);
|
2267
|
+
}
|
2268
|
+
}
|
2269
|
+
let execution$;
|
2270
|
+
if (this.isStatefulConfiguration) {
|
2271
|
+
execution$ = this.executeStateful$(fullRequest);
|
2272
|
+
}
|
2273
|
+
else {
|
2274
|
+
execution$ = this.executeStateless$(fullRequest);
|
2275
|
+
}
|
2276
|
+
return execution$.pipe(tap$1(result => this.handleSelectorsResponse(result.selectors)));
|
2277
|
+
}
|
2235
2278
|
executeStateless$(request) {
|
2236
2279
|
this.executionInProgress$.next(true);
|
2237
2280
|
return of(undefined).pipe(switchMap(() => {
|