@o3r/core 11.5.0-rc.0 → 11.6.0-prerelease.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/package.json +4 -4
- package/builders/app-version/index.js.map +0 -1
- package/builders/app-version/schema.js.map +0 -1
- package/builders/lib-build/index.js.map +0 -1
- package/builders/lib-build/schema.js.map +0 -1
- package/builders/multi-watcher/index.js.map +0 -1
- package/builders/multi-watcher/schema.js.map +0 -1
- package/builders/ngc/index.js.map +0 -1
- package/builders/ngc/schema.js.map +0 -1
- package/builders/pattern-replacement/index.js.map +0 -1
- package/builders/pattern-replacement/schema.js.map +0 -1
- package/builders/run-script/index.js.map +0 -1
- package/builders/run-script/schema.js.map +0 -1
- package/builders/utils.js.map +0 -1
- package/core/application/build-properties.js +0 -17
- package/core/application/build-properties.js.map +0 -1
- package/core/application/dgp.interfaces.js +0 -2
- package/core/application/dgp.interfaces.js.map +0 -1
- package/core/application/index.js +0 -4
- package/core/application/index.js.map +0 -1
- package/core/application/runtime.js +0 -2
- package/core/application/runtime.js.map +0 -1
- package/core/common/index.js +0 -3
- package/core/common/index.js.map +0 -1
- package/core/common/interface-utils.js +0 -2
- package/core/common/interface-utils.js.map +0 -1
- package/core/common/label-value.js +0 -2
- package/core/common/label-value.js.map +0 -1
- package/core/devkit/devtools.interface.js +0 -2
- package/core/devkit/devtools.interface.js.map +0 -1
- package/core/devkit/index.js +0 -2
- package/core/devkit/index.js.map +0 -1
- package/core/index.js +0 -7
- package/core/index.js.map +0 -1
- package/core/interfaces/configuration.js +0 -2
- package/core/interfaces/configuration.js.map +0 -1
- package/core/interfaces/context.js +0 -3
- package/core/interfaces/context.js.map +0 -1
- package/core/interfaces/index.js +0 -5
- package/core/interfaces/index.js.map +0 -1
- package/core/interfaces/item-identifier.js +0 -2
- package/core/interfaces/item-identifier.js.map +0 -1
- package/core/interfaces/translation.js +0 -2
- package/core/interfaces/translation.js.map +0 -1
- package/core/metadata/component.decorator.js +0 -18
- package/core/metadata/component.decorator.js.map +0 -1
- package/core/metadata/component.identifier.js +0 -9
- package/core/metadata/component.identifier.js.map +0 -1
- package/core/metadata/index.js +0 -4
- package/core/metadata/index.js.map +0 -1
- package/core/metadata/metadata.interface.js +0 -2
- package/core/metadata/metadata.interface.js.map +0 -1
- package/core/rules-engine/index.js +0 -2
- package/core/rules-engine/index.js.map +0 -1
- package/core/rules-engine/rules-engine.interfaces.js +0 -2
- package/core/rules-engine/rules-engine.interfaces.js.map +0 -1
- package/log/index.js +0 -2
- package/log/index.js.map +0 -1
- package/log/logger.js +0 -2
- package/log/logger.js.map +0 -1
- package/messages/common-message.interface.js +0 -2
- package/messages/common-message.interface.js.map +0 -1
- package/messages/index.js +0 -4
- package/messages/index.js.map +0 -1
- package/messages/message.helpers.js +0 -52
- package/messages/message.helpers.js.map +0 -1
- package/messages/message.interfaces.js +0 -5
- package/messages/message.interfaces.js.map +0 -1
- package/public_api.js +0 -6
- package/public_api.js.map +0 -1
- package/schematics/add-modules/index.js.map +0 -1
- package/schematics/add-modules/schema.js.map +0 -1
- package/schematics/component/container/index.js.map +0 -1
- package/schematics/component/container/schema.js.map +0 -1
- package/schematics/component/index.js.map +0 -1
- package/schematics/component/presenter/index.js.map +0 -1
- package/schematics/component/presenter/schema.js.map +0 -1
- package/schematics/component/schema.js.map +0 -1
- package/schematics/component/structures.types.js.map +0 -1
- package/schematics/context-to-component/index.js.map +0 -1
- package/schematics/context-to-component/schema.js.map +0 -1
- package/schematics/convert-component/index.js.map +0 -1
- package/schematics/convert-component/schema.js.map +0 -1
- package/schematics/ng-add/component-decorator/index.js.map +0 -1
- package/schematics/ng-add/index.js.map +0 -1
- package/schematics/ng-add/project-setup/index.js.map +0 -1
- package/schematics/ng-add/schema.js.map +0 -1
- package/schematics/ng-add/updates-for-v8/cms-adapters/update-builders-names.js.map +0 -1
- package/schematics/ng-add/updates-for-v8/generators/update-generators-names.js.map +0 -1
- package/schematics/ng-add/updates-for-v8/replaced-packages.js.map +0 -1
- package/schematics/ng-add/utils/index.js.map +0 -1
- package/schematics/ng-add/utils/linter/index.js.map +0 -1
- package/schematics/ng-add-create/index.js.map +0 -1
- package/schematics/ng-add-create/schema.js.map +0 -1
- package/schematics/ng-update/index.js.map +0 -1
- package/schematics/ng-update/v10.0/configuration.js.map +0 -1
- package/schematics/ng-update/v8.2/import-map.js.map +0 -1
- package/schematics/page/index.js.map +0 -1
- package/schematics/page/schema.js.map +0 -1
- package/schematics/renovate/index.js.map +0 -1
- package/schematics/renovate/schema.js.map +0 -1
- package/schematics/rule-factories/additional-modules/index.js.map +0 -1
- package/schematics/rule-factories/component/analytics.js.map +0 -1
- package/schematics/rule-factories/component/common.js.map +0 -1
- package/schematics/rule-factories/component/configuration.js.map +0 -1
- package/schematics/rule-factories/component/context.js.map +0 -1
- package/schematics/rule-factories/component/design-token.js.map +0 -1
- package/schematics/rule-factories/component/fixture.js.map +0 -1
- package/schematics/rule-factories/component/localization.js.map +0 -1
- package/schematics/rule-factories/component/rules-engine.js.map +0 -1
- package/schematics/rule-factories/component/theming.js.map +0 -1
- package/schematics/rule-factories/customization-environment/index.js.map +0 -1
- package/schematics/rule-factories/index.js.map +0 -1
- package/schematics/rule-factories/o3r-basic-updates/index.js.map +0 -1
- package/schematics/rule-factories/otter-environment/index.js.map +0 -1
- package/schematics/rule-factories/store/index.js.map +0 -1
- package/schematics/schematics-update/index.js.map +0 -1
- package/schematics/schematics-update/schema.js.map +0 -1
- package/schematics/service/index.js.map +0 -1
- package/schematics/service/schema.js.map +0 -1
- package/schematics/shared/presets/all.preset.js.map +0 -1
- package/schematics/shared/presets/basic.preset.js.map +0 -1
- package/schematics/shared/presets/cms.preset.js.map +0 -1
- package/schematics/shared/presets/external.preset.js.map +0 -1
- package/schematics/shared/presets/helpers.js.map +0 -1
- package/schematics/shared/presets/index.js.map +0 -1
- package/schematics/shared/presets/preset.interface.js.map +0 -1
- package/schematics/show-modules/index.js.map +0 -1
- package/schematics/show-modules/schema.js.map +0 -1
- package/schematics/store/common/helpers.js.map +0 -1
- package/schematics/store/common/schema.js.map +0 -1
- package/schematics/store/entity-async/index.js.map +0 -1
- package/schematics/store/entity-async/schema.js.map +0 -1
- package/schematics/store/entity-sync/index.js.map +0 -1
- package/schematics/store/entity-sync/schema.js.map +0 -1
- package/schematics/store/index.js.map +0 -1
- package/schematics/store/schema.js.map +0 -1
- package/schematics/store/simple-async/index.js.map +0 -1
- package/schematics/store/simple-async/schema.js.map +0 -1
- package/schematics/store/simple-sync/index.js.map +0 -1
- package/schematics/store/simple-sync/schema.js.map +0 -1
- package/schematics/store-action/index.js.map +0 -1
- package/schematics/store-action/schema.js.map +0 -1
- package/store/async/async-entity.adapter.js +0 -53
- package/store/async/async-entity.adapter.js.map +0 -1
- package/store/async/async.adapter.js +0 -93
- package/store/async/async.adapter.js.map +0 -1
- package/store/async/async.helpers.js +0 -25
- package/store/async/async.helpers.js.map +0 -1
- package/store/async/async.interfaces.js +0 -2
- package/store/async/async.interfaces.js.map +0 -1
- package/store/async/async.operators.js +0 -75
- package/store/async/async.operators.js.map +0 -1
- package/store/async/async.props.js +0 -11
- package/store/async/async.props.js.map +0 -1
- package/store/async/async.serializer.js +0 -34
- package/store/async/async.serializer.js.map +0 -1
- package/store/async/index.js +0 -8
- package/store/async/index.js.map +0 -1
- package/store/index.js +0 -3
- package/store/index.js.map +0 -1
- package/store/types.js +0 -11
- package/store/types.js.map +0 -1
- package/utils/debug/debug.helper.js +0 -20
- package/utils/debug/debug.helper.js.map +0 -1
- package/utils/deep-fill/deep-fill.js +0 -69
- package/utils/deep-fill/deep-fill.js.map +0 -1
- package/utils/index.js +0 -4
- package/utils/index.js.map +0 -1
- package/utils/rendering/rendering.helpers.js +0 -32
- package/utils/rendering/rendering.helpers.js.map +0 -1
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, EMPTY, from, identity, isObservable, merge, of } from 'rxjs';
|
|
2
|
-
import { catchError, delay, filter, finalize, pairwise, startWith, switchMap, tap } from 'rxjs/operators';
|
|
3
|
-
import { isIdentifiedCallAction } from './async.helpers';
|
|
4
|
-
/**
|
|
5
|
-
* Determine if the given parameter is a Promise
|
|
6
|
-
* @param object
|
|
7
|
-
*/
|
|
8
|
-
const isPromise = (object) => object && typeof object === 'object' && typeof object.then !== 'undefined';
|
|
9
|
-
/**
|
|
10
|
-
* Custom operator to use instead of SwitchMap with effects based on FromApi actions.
|
|
11
|
-
* It makes sure to emit an action when the inner subscription is unsubscribed in order to keep the store up-to-date with pending information.
|
|
12
|
-
* @param successHandler function that returns the action to emit in case the FromApi call is a success
|
|
13
|
-
* @param errorHandler function that returns the action to emit in case the FromApi call fails
|
|
14
|
-
* @param cancelRequestActionFactory function that returns the action to emit in case the FromApi action is 'cancelled' because a new action was received by the switchMap
|
|
15
|
-
*/
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
17
|
-
export function fromApiEffectSwitchMap(successHandler, errorHandler, cancelRequestActionFactory) {
|
|
18
|
-
const pendingRequestIdsContext = {};
|
|
19
|
-
return (source$) => source$.pipe(tap((action) => {
|
|
20
|
-
if (isIdentifiedCallAction(action)) {
|
|
21
|
-
pendingRequestIdsContext[action.requestId] = true;
|
|
22
|
-
}
|
|
23
|
-
}), startWith(undefined), pairwise(), switchMap(([previousAction, action]) => {
|
|
24
|
-
if (!action) {
|
|
25
|
-
return EMPTY;
|
|
26
|
-
}
|
|
27
|
-
const isPreviousActionStillRunning = isIdentifiedCallAction(previousAction) && pendingRequestIdsContext[previousAction.requestId];
|
|
28
|
-
const cleanStack = () => {
|
|
29
|
-
if (isIdentifiedCallAction(action)) {
|
|
30
|
-
delete pendingRequestIdsContext[action.requestId];
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
return from(action.call).pipe(tap(cleanStack), switchMap((result) => {
|
|
34
|
-
const success = successHandler(result, action);
|
|
35
|
-
return isObservable(success) ? success : (isPromise(success) ? success : of(success));
|
|
36
|
-
}), catchError((error) => {
|
|
37
|
-
cleanStack();
|
|
38
|
-
return errorHandler?.(error, action) || EMPTY;
|
|
39
|
-
}), isPreviousActionStillRunning && cancelRequestActionFactory ? startWith(cancelRequestActionFactory({ requestId: previousAction.requestId }, action)) : identity);
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* @param successHandler
|
|
44
|
-
* @param errorHandler
|
|
45
|
-
* @param cancelRequestActionFactory
|
|
46
|
-
* @param cleanUpTimer
|
|
47
|
-
*/
|
|
48
|
-
export function fromApiEffectSwitchMapById(successHandler, errorHandler, cancelRequestActionFactory, cleanUpTimer) {
|
|
49
|
-
const innerSourcesById = {};
|
|
50
|
-
return (source$) => {
|
|
51
|
-
return source$.pipe(filter((action) => {
|
|
52
|
-
if (!isIdentifiedCallAction(action) || !action.id) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
if (isIdentifiedCallAction(action) && innerSourcesById[action.id]) {
|
|
56
|
-
innerSourcesById[action.id][0].next(action);
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
return true;
|
|
60
|
-
}), switchMap((action) => {
|
|
61
|
-
const newIdSubject = new BehaviorSubject(action);
|
|
62
|
-
const newId$ = newIdSubject.pipe(fromApiEffectSwitchMap(successHandler, errorHandler, cancelRequestActionFactory));
|
|
63
|
-
innerSourcesById[action.id] = [newIdSubject, newId$];
|
|
64
|
-
if (cleanUpTimer !== undefined) {
|
|
65
|
-
newIdSubject.pipe(switchMap((myAction) => from(myAction.call).pipe(delay(cleanUpTimer), finalize(() => {
|
|
66
|
-
delete innerSourcesById[myAction.id];
|
|
67
|
-
newIdSubject.complete();
|
|
68
|
-
})))).subscribe();
|
|
69
|
-
}
|
|
70
|
-
const streams = Object.values(innerSourcesById).map(([_, obs]) => obs);
|
|
71
|
-
return merge(...streams);
|
|
72
|
-
}));
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=async.operators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async.operators.js","sourceRoot":"","sources":["../../../src/store/async/async.operators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { v4 } from 'uuid';
|
|
2
|
-
import { isAsyncRequest } from './async.helpers';
|
|
3
|
-
/**
|
|
4
|
-
* Returns a creator that makes sure that requestId is defined in the action's properties by generating one
|
|
5
|
-
* if needed.
|
|
6
|
-
*/
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
8
|
-
export const asyncProps = () => {
|
|
9
|
-
return (props) => isAsyncRequest(props) ? props : { ...props, requestId: v4() };
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=async.props.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async.props.js","sourceRoot":"","sources":["../../../src/store/async/async.props.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE/C;;;GAGG;AACH,wDAAwD;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAqD,EAAE;IAC/E,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAC,CAAC;AACnF,CAAC,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { asyncStoreItemAdapter } from './async.adapter';
|
|
2
|
-
/**
|
|
3
|
-
* Serializer for asynchronous store.
|
|
4
|
-
* @param state State of an asynchronous store to serialize
|
|
5
|
-
* @returns a plain json object to pass to json.stringify
|
|
6
|
-
*/
|
|
7
|
-
export function asyncSerializer(state) {
|
|
8
|
-
return asyncStoreItemAdapter.clearAsyncStoreItem(state);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Serializer for asynchronous entity store.
|
|
12
|
-
* @param state State of an asynchronous entity store to serialize
|
|
13
|
-
* @returns a plain json object to pass to json.stringify
|
|
14
|
-
*/
|
|
15
|
-
export function asyncEntitySerializer(state) {
|
|
16
|
-
const entities = state.ids.reduce((entitiesAcc, entityId) => {
|
|
17
|
-
entitiesAcc[entityId] = asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]);
|
|
18
|
-
return entitiesAcc;
|
|
19
|
-
}, {});
|
|
20
|
-
return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Serializer for asynchronous entity store with status.
|
|
24
|
-
* @param state State of an asynchronous entity store with status to serialize
|
|
25
|
-
* @returns a plain json object to pass to json.stringify
|
|
26
|
-
*/
|
|
27
|
-
export function asyncEntityWithStatusSerializer(state) {
|
|
28
|
-
const entities = state.ids.reduce((entitiesAcc, entityId) => {
|
|
29
|
-
entitiesAcc[entityId] = { ...asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]), status: {} };
|
|
30
|
-
return entitiesAcc;
|
|
31
|
-
}, {});
|
|
32
|
-
return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=async.serializer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async.serializer.js","sourceRoot":"","sources":["../../../src/store/async/async.serializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAA2B,KAAQ;IAChE,OAAO,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAyD,KAAQ;IACpG,MAAM,QAAQ,GAAI,KAAK,CAAC,GAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;QACxE,WAAW,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC,CAAC;QAC7F,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAA2B,CAAC,CAAC;IAEhC,OAAO,EAAE,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAA6G,KAAQ;IAClK,MAAM,QAAQ,GAAI,KAAK,CAAC,GAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;QACxE,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAChH,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAA2B,CAAC,CAAC;IAEhC,OAAO,EAAE,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3E,CAAC"}
|
package/store/async/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './async.helpers';
|
|
2
|
-
export * from './async.interfaces';
|
|
3
|
-
export * from './async.adapter';
|
|
4
|
-
export * from './async-entity.adapter';
|
|
5
|
-
export * from './async.props';
|
|
6
|
-
export * from './async.operators';
|
|
7
|
-
export * from './async.serializer';
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
package/store/async/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/async/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
package/store/index.js
DELETED
package/store/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
package/store/types.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export class StateSerializer {
|
|
2
|
-
constructor(serializer) {
|
|
3
|
-
this.reviver = (_, value) => value;
|
|
4
|
-
this.serialize = serializer.serialize || this.serialize;
|
|
5
|
-
this.deserialize = serializer.deserialize || this.deserialize;
|
|
6
|
-
this.reviver = serializer.reviver || this.reviver;
|
|
7
|
-
this.replacer = serializer.replacer || this.replacer;
|
|
8
|
-
this.initialState = serializer.initialState || this.initialState;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=types.js.map
|
package/store/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,eAAe;IAM1B,YAAY,UAAyB;QAQ9B,YAAO,GAAG,CAAC,CAAS,EAAE,KAAU,EAAO,EAAE,CAAC,KAAK,CAAC;QAPrD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;IACnE,CAAC;CAGF"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pad number
|
|
3
|
-
* @param val
|
|
4
|
-
* @param digits
|
|
5
|
-
*/
|
|
6
|
-
export function padNumber(val, digits = 2) {
|
|
7
|
-
const str = `${val}`;
|
|
8
|
-
return '0'.repeat(Math.max(0, digits - str.length)) + str;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Returns TRUE if bootstrap config environment is production FALSE otherwise
|
|
12
|
-
* @param dataset
|
|
13
|
-
* @returns TRUE if bootstrap config environment is production FALSE otherwise
|
|
14
|
-
*/
|
|
15
|
-
export function isProductionEnvironment(dataset) {
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
17
|
-
const bootstrapConfig = dataset.bootstrapconfig && JSON.parse(dataset.bootstrapconfig);
|
|
18
|
-
return bootstrapConfig?.environment === 'prod';
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=debug.helper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug.helper.js","sourceRoot":"","sources":["../../../src/utils/debug/debug.helper.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,MAAM,GAAG,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACrB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,mEAAmE;IACnE,MAAM,eAAe,GAAoB,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACxG,OAAO,eAAe,EAAE,WAAW,KAAK,MAAM,CAAC;AACjD,CAAC"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
const defaultConstruct = (data) => data;
|
|
2
|
-
const isDate = (data) => data instanceof Date && !isNaN(data);
|
|
3
|
-
/**
|
|
4
|
-
* Check if an object is not an array or a date
|
|
5
|
-
* @param obj
|
|
6
|
-
* @param additionalMappers
|
|
7
|
-
*/
|
|
8
|
-
export function isObject(obj, additionalMappers) {
|
|
9
|
-
return obj instanceof Object && !Array.isArray(obj) && !additionalMappers?.some((mapper) => mapper.condition(obj)) && !isDate(obj);
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Return a new reference of the given object
|
|
13
|
-
* @param obj
|
|
14
|
-
* @param additionalMappers
|
|
15
|
-
*/
|
|
16
|
-
export function immutablePrimitive(obj, additionalMappers) {
|
|
17
|
-
if (Array.isArray(obj)) {
|
|
18
|
-
return obj.slice();
|
|
19
|
-
}
|
|
20
|
-
const matchingPrimitive = additionalMappers?.find((mapper) => mapper.condition(obj));
|
|
21
|
-
const resolvedType = matchingPrimitive && ((matchingPrimitive.construct || defaultConstruct)(obj));
|
|
22
|
-
if (resolvedType !== undefined) {
|
|
23
|
-
return resolvedType;
|
|
24
|
-
}
|
|
25
|
-
if (isDate(obj)) {
|
|
26
|
-
return new Date(obj);
|
|
27
|
-
}
|
|
28
|
-
else if (obj instanceof Object) {
|
|
29
|
-
// eslint-disable-next-line no-use-before-define
|
|
30
|
-
return deepFill(obj, obj, additionalMappers);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return obj;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Deep fill of base object using source
|
|
38
|
-
* It will do a deep merge of the objects, overriding arrays
|
|
39
|
-
* All properties not present in source, but present in base, will remain
|
|
40
|
-
* @param base
|
|
41
|
-
* @param source
|
|
42
|
-
* @param additionalMappers Map of conditions of type mapper
|
|
43
|
-
*/
|
|
44
|
-
export function deepFill(base, source, additionalMappers) {
|
|
45
|
-
if (typeof source === 'undefined') {
|
|
46
|
-
return deepFill(base, base, additionalMappers);
|
|
47
|
-
}
|
|
48
|
-
if (!isObject(base, additionalMappers)) {
|
|
49
|
-
return immutablePrimitive(typeof source !== 'undefined' ? source : base, additionalMappers);
|
|
50
|
-
}
|
|
51
|
-
const newObj = { ...base };
|
|
52
|
-
for (const key in base) {
|
|
53
|
-
if (key in source && typeof base[key] === typeof source[key]) {
|
|
54
|
-
const keyOfSource = source[key];
|
|
55
|
-
newObj[key] = typeof keyOfSource === 'undefined' ? immutablePrimitive(base[key], additionalMappers) : deepFill(base[key], source[key], additionalMappers);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
newObj[key] = immutablePrimitive(base[key], additionalMappers);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// getting keys present in source and not present in base
|
|
62
|
-
for (const key in source) {
|
|
63
|
-
if (!(key in newObj)) {
|
|
64
|
-
newObj[key] = immutablePrimitive(source[key], additionalMappers);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return newObj;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=deep-fill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deep-fill.js","sourceRoot":"","sources":["../../../src/utils/deep-fill/deep-fill.ts"],"names":[],"mappings":"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"}
|
package/utils/index.js
DELETED
package/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { animationFrameScheduler, from, observeOn, of } from 'rxjs';
|
|
2
|
-
import { bufferCount, concatMap, delay, mergeMap, scan, tap } from 'rxjs/operators';
|
|
3
|
-
/**
|
|
4
|
-
* Buffers and emits data for lazy/progressive rendering of big lists
|
|
5
|
-
* That could solve issues with long-running tasks when trying to render an array
|
|
6
|
-
* of similar components.
|
|
7
|
-
* @param delayMs Delay between data emits
|
|
8
|
-
* @param concurrency Amount of elements that should be emitted at once
|
|
9
|
-
* @returns
|
|
10
|
-
*/
|
|
11
|
-
export function lazyArray(delayMs = 0, concurrency = 2) {
|
|
12
|
-
let isFirstEmission = true;
|
|
13
|
-
return (source$) => {
|
|
14
|
-
return source$.pipe(mergeMap((items) => {
|
|
15
|
-
if (!isFirstEmission) {
|
|
16
|
-
return of(items);
|
|
17
|
-
}
|
|
18
|
-
const items$ = from(items);
|
|
19
|
-
return items$.pipe(bufferCount(concurrency), concatMap((value, index) => {
|
|
20
|
-
return of(value).pipe(observeOn(animationFrameScheduler), delay(index * delayMs));
|
|
21
|
-
}), scan((acc, steps) => {
|
|
22
|
-
return [...acc, ...steps];
|
|
23
|
-
}, []), tap((scannedItems) => {
|
|
24
|
-
const scanDidComplete = scannedItems.length === items.length;
|
|
25
|
-
if (scanDidComplete) {
|
|
26
|
-
isFirstEmission = false;
|
|
27
|
-
}
|
|
28
|
-
}));
|
|
29
|
-
}));
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=rendering.helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.helpers.js","sourceRoot":"","sources":["../../../src/utils/rendering/rendering.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAc,SAAS,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAChF,OAAO,EACL,WAAW,EACX,SAAS,EACT,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,GAAG,EACJ,MAAM,gBAAgB,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAI,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC;IACvD,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,OAAwB,EAAE,EAAE;QAClC,OAAO,OAAO,CAAC,IAAI,CACjB,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO,MAAM,CAAC,IAAI,CAChB,WAAW,CAAC,WAAW,CAAC,EACxB,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACzB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CACnB,SAAS,CAAC,uBAAuB,CAAC,EAClC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CACvB,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;gBAC5B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;YAC5B,CAAC,EAAE,EAAE,CAAC,EACN,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE;gBACxB,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;gBAE7D,IAAI,eAAe,EAAE,CAAC;oBACpB,eAAe,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|