@o3r/core 14.0.0-next.5 → 14.0.0-next.7
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/builders/utils.d.ts +1 -1
- package/builders/utils.js +1 -1
- package/fesm2022/o3r-core.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/package.json +4 -4
- package/schematics/rule-factories/additional-modules/index.d.ts +1 -1
- package/schematics/rule-factories/additional-modules/index.js +1 -1
- package/schematics/rule-factories/customization-environment/index.d.ts +1 -1
- package/schematics/rule-factories/customization-environment/index.js +1 -1
- package/schematics/rule-factories/otter-environment/index.d.ts +2 -2
- package/schematics/rule-factories/otter-environment/index.js +2 -2
- package/schematics/rule-factories/store/index.d.ts +1 -1
- package/schematics/rule-factories/store/index.js +1 -1
package/builders/utils.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { BuilderWrapper } from '@o3r/telemetry';
|
|
|
5
5
|
* This helper is not exposed in `@o3r/core`.
|
|
6
6
|
*
|
|
7
7
|
* Wrapper method of a builder to retrieve some metrics around the builder run
|
|
8
|
-
* if
|
|
8
|
+
* if `@o3r/telemetry` is installed
|
|
9
9
|
* @param builderFn
|
|
10
10
|
*/
|
|
11
11
|
export declare const createBuilderWithMetricsIfInstalled: BuilderWrapper;
|
package/builders/utils.js
CHANGED
|
@@ -8,7 +8,7 @@ const noopBuilderWrapper = (fn) => fn;
|
|
|
8
8
|
* This helper is not exposed in `@o3r/core`.
|
|
9
9
|
*
|
|
10
10
|
* Wrapper method of a builder to retrieve some metrics around the builder run
|
|
11
|
-
* if
|
|
11
|
+
* if `@o3r/telemetry` is installed
|
|
12
12
|
* @param builderFn
|
|
13
13
|
*/
|
|
14
14
|
const createBuilderWithMetricsIfInstalled = (builderFn) => async (opts, ctx) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"o3r-core.mjs","sources":["../../src/core/application/build-properties.ts","../../src/core/metadata/component-decorator.ts","../../src/core/metadata/component-identifier.ts","../../src/messages/message-interfaces.ts","../../src/messages/message-helpers.ts","../../src/store/async/async.adapter.ts","../../src/store/async/async-entity.adapter.ts","../../src/store/async/async.helpers.ts","../../src/store/async/async.operators.ts","../../src/store/async/async.props.ts","../../src/store/async/async.serializer.ts","../../src/store/types.ts","../../src/utils/debug/debug-helper.ts","../../src/utils/deep-fill/deep-fill.ts","../../src/utils/rendering/rendering-helpers.ts","../../src/o3r-core.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention -- exception for `BuildTimeProperties` */\n\n/**\n * Library build time properties\n */\nexport interface BuildTimeProperties {\n /**\n * True if the application in launch in debug mode\n */\n DEBUG_MODE: boolean;\n\n /**\n * True if the webStorage option is enabled\n */\n ENABLE_WEBSTORAGE: boolean;\n\n /**\n * Name of the current environment\n */\n ENVIRONMENT: string;\n\n /**\n * Boolean that can be used to activate API calls mocks for development or mock-up purpose.\n */\n USE_MOCKS: boolean;\n\n /**\n * Maximum size of the dev tool history\n */\n DEVTOOL_HISTORY_SIZE: number | undefined;\n\n /**\n * path to bundles in published folder\n */\n LOCALIZATION_BUNDLES_OUTPUT: string;\n\n /**\n * The name of the bundle generated with the default localization components keys\n */\n DEFAULT_LOC_BUNDLE_NAME: string;\n\n /**\n * Indicates the default server prefix to be used in case no dynamic is found\n */\n APP_BASE_HREF: string | undefined;\n\n /**\n * Version of the App based on the package.json\n */\n APP_VERSION: string;\n\n /**\n * Determine if the ghosting is activated on the app\n */\n ENABLE_GHOSTING: boolean;\n}\n\n/**\n * Library build time default properties\n */\nexport const DEFAULT_BUILD_PROPERTIES: Readonly<BuildTimeProperties> = {\n DEBUG_MODE: true,\n APP_BASE_HREF: '.',\n APP_VERSION: '0.0.0',\n DEFAULT_LOC_BUNDLE_NAME: '',\n DEVTOOL_HISTORY_SIZE: 20,\n ENABLE_GHOSTING: false,\n ENABLE_WEBSTORAGE: true,\n ENVIRONMENT: 'dev',\n LOCALIZATION_BUNDLES_OUTPUT: 'localizations/',\n USE_MOCKS: false\n} as const;\n","import type {\n Translation,\n} from '../interfaces';\n\n/** Type of component */\nexport type ComponentType = 'Block' | 'Page' | 'ExposedComponent' | 'Component';\n\n/**\n * Information about an Otter component to provide\n */\nexport interface OtterComponentInfoToProvide {\n /** Type of component */\n componentType: ComponentType;\n}\n\n/**\n * Information about an Otter component\n */\nexport interface OtterComponentInfo extends OtterComponentInfoToProvide {\n /** Configuration ID */\n configId?: string;\n /** Translation keys */\n translations?: Translation;\n /** Component Name */\n componentName: string;\n}\n\n/**\n * Private field where Otter component information are stored\n */\nexport const otterComponentInfoPropertyName = '__otter-info__';\n\n/**\n * Decorates an Angular component to provide Otter information\n * @param info Information to define the Otter component\n * @returns the component with the information\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase\nexport function O3rComponent(info: OtterComponentInfoToProvide) {\n return <T extends new (...args: any[]) => object>(constructor: T) => {\n const componentName = constructor.name;\n constructor.prototype[otterComponentInfoPropertyName] = { ...info, componentName };\n return constructor;\n };\n}\n","/**\n * Compute the name of the component with the library's name to generate unique component identifier used in metadata and different modules\n * @param componentName Name of the component to get the configuration\n * @param libraryName Name of the library the component is coming from\n */\nexport function computeItemIdentifier<C extends string, L extends string>(componentName: C, libraryName?: L): `${L extends string ? `${L}#` : ''}${C}` {\n return (libraryName ? libraryName + '#' : '') + componentName as `${L extends string ? `${L}#` : ''}${C}`;\n}\n","/** Type of a message exchanged within the Otter Framework */\nexport const otterMessageType = 'otter';\n\n/** Target of a message that should be handled by the application */\nexport const applicationMessageTarget = 'app';\n\nexport interface OtterMessageContent<DataType extends string = string> {\n /** Type of data */\n dataType: DataType;\n}\n\nexport interface OtterMessage<Content extends OtterMessageContent = OtterMessageContent, Target extends string | undefined = undefined | string> {\n /** Type of the message */\n type: typeof otterMessageType;\n\n /** Version of the message (default to the @o3r/core version ) */\n version?: string;\n\n /** Target of the message */\n to: Target;\n\n /** Message content */\n content: Content;\n}\n\n/** Type helper to retrieve the data types of a union of MessageContent */\nexport type MessageDataTypes<T extends OtterMessageContent> = T['dataType'];\n\n/** Type helper to filter the message that can be received by the application */\nexport type FilterMessageToApplication<T extends OtterMessage> = T extends { to: infer U } ? U extends (typeof applicationMessageTarget | undefined) ? T : never : never;\n\nexport type ContentMessageData<T extends OtterMessageContent> = T extends any\n ? Omit<T, 'dataType'>\n : never;\n","import {\n filter,\n map,\n Observable,\n} from 'rxjs';\nimport {\n applicationMessageTarget,\n ContentMessageData,\n FilterMessageToApplication,\n OtterMessage,\n OtterMessageContent,\n otterMessageType,\n} from './message-interfaces';\n\n/**\n * Determine if a message should be handle by the application\n * @param message Message to analyze\n */\nexport const isToAppOtterMessage = <T extends OtterMessage>(message?: T): message is FilterMessageToApplication<T & { to: 'app' }> => {\n return message?.to === applicationMessageTarget;\n};\n\n/**\n * Determine if a message is emitted by an Otter tool\n * @param message Message to analyze\n */\nexport const isOtterMessage = <T extends OtterMessageContent>(message: any): message is OtterMessage<T> => {\n return message?.type === otterMessageType;\n};\n\n/**\n * Send an Otter Message\n * @param dataType Type of the message\n * @param content content of the message\n * @param preStringify determine if the message should JSON.stringify before being send (will use the default mechanism otherwise)\n */\nexport const sendOtterMessage = <T extends OtterMessageContent>(dataType: T['dataType'], content: ContentMessageData<T>, preStringify = true) => {\n const message = {\n type: otterMessageType,\n content: {\n ...content,\n dataType\n }\n };\n return window.postMessage(preStringify ? JSON.stringify(message) : message, '*');\n};\n\nexport function filterMessageContent<T extends Event | MessageEvent>(): (source$: Observable<T>) => Observable<OtterMessageContent<string>>;\nexport function filterMessageContent<T extends Event | MessageEvent, S extends OtterMessageContent>(predicate: (message: any) => message is S): (source$: Observable<T>) => Observable<S>;\n/**\n * Filter the Otter message that should be handle by the application and returns it content\n * @param predicate condition to filter the message\n * @returns content of the message\n */\n\n/**\n * Operator to get only Otter messages that match the predicate\n * @param predicate\n */\nexport function filterMessageContent<T extends Event | MessageEvent, S extends OtterMessageContent>(predicate?: (message: any) => message is S):\n(source$: Observable<T>) => Observable<OtterMessageContent<string> | S> {\n return (source$: Observable<T>) => {\n const obs = source$.pipe(\n map((event) => {\n const data = (event as MessageEvent).data;\n return typeof data === 'string' ? JSON.parse(data) : data;\n }),\n filter(isOtterMessage),\n filter(isToAppOtterMessage),\n map((message) => message.content)\n );\n if (predicate) {\n return obs.pipe(filter(predicate));\n }\n return obs;\n };\n}\n","import {\n AsyncStoreItem,\n EntityStatus,\n RequestId,\n} from './async.interfaces';\n\n/**\n * Adapter to help manipulate AsyncStoreItems to register new request and update the status when they fail or resolve.\n */\nexport interface AsyncStoreItemAdapter {\n /**\n * Adds a request to an AsyncStoreItem.\n * If the item had a failure and no ongoing requests, sets it's failure status back to false\n * @param item\n * @param requestId\n */\n addRequest<T extends AsyncStoreItem>(item: T, requestId: string): T;\n\n /**\n * Updates an AsyncStoreItem when a request has resolved.\n * Removes it from its requestIds array.\n * If no requestId provided, the method returns the current status of the AsyncStoreItem\n * @param item\n * @param requestId\n */\n resolveRequest<T extends AsyncStoreItem>(item: T, requestId?: string): T;\n\n /**\n * Updates an AsyncStoreItem when a request has failed.\n * Removes it from its requestIds array and set its failure status.\n * @param item\n * @param requestId\n */\n failRequest<T extends AsyncStoreItem>(item: T, requestId?: string): T;\n\n /**\n * Add AsyncStoreItem properties (with initial values) to the given entity\n * @param entityItem\n * @returns Given item improved with AsyncStoreItem properties\n */\n initialize<T extends object>(entityItem: T): T & AsyncStoreItem;\n\n /**\n * Extract only AsyncStoreItem properties from the given entity\n * @param entityItem A model containing AsyncStoreItem properties\n * @returns Object containing only AsyncStoreItem properties\n */\n extractAsyncStoreItem<T extends AsyncStoreItem>(entityItem: T): AsyncStoreItem;\n\n /**\n * Clear AsyncStoreItem properties from the given entity\n * @param entityItem A model containing AsyncStoreItem properties\n */\n clearAsyncStoreItem<T extends AsyncStoreItem>(entityItem: T): T;\n\n /**\n * Merges an AsyncStoreItem collection into one item that gives an overall status.\n * @param items\n */\n merge(...items: (AsyncStoreItem | undefined)[]): AsyncStoreItem;\n\n /**\n * Add a request to the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n * @param requestId\n */\n entityStatusAddRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId: string): T;\n\n /**\n * Resolve a request on the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n * @param requestId\n */\n entityStatusResolveRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId?: string): T;\n\n /**\n * Fail a request to the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n * @param requestId\n */\n entityStatusFailRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId?: string): T;\n\n /**\n * Reset the failure status of the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n */\n entityStatusResetFailure<T extends EntityStatus<T>>(status: T, subResource: keyof T): T;\n\n /**\n * Reset the failure status of the given AsyncStoreItem to false\n * @param entityItem\n * @returns AsyncStoreItem with the updated failure status\n */\n resetFailureStatus<T extends AsyncStoreItem>(entityItem: T): T;\n\n /**\n * Set the pending status of the given AsyncStoreItem to true\n * @param entityItem\n * @returns AsyncStoreItem with the updated pending status\n */\n setLoadingStatus<T extends AsyncStoreItem>(entityItem: T): T;\n}\n\nexport const asyncStoreItemAdapter: AsyncStoreItemAdapter = {\n addRequest: (item, requestId) => {\n return {\n ...item,\n requestIds: [...item.requestIds, requestId],\n isFailure: item.requestIds.length === 0 ? false : item.isFailure,\n isPending: true\n };\n },\n\n failRequest: (item, requestId) => {\n const requestIds = requestId ? item.requestIds.filter((id) => id !== requestId) : item.requestIds;\n return {\n ...item,\n isFailure: true,\n isPending: requestIds.length > 0,\n requestIds\n };\n },\n\n resolveRequest: (item, requestId) => {\n const requestIds = requestId ? item.requestIds.filter((id) => id !== requestId) : item.requestIds;\n return {\n ...item,\n requestIds,\n isPending: requestIds.length > 0\n };\n },\n\n initialize: (entityItem) => {\n return {\n ...entityItem,\n requestIds: [] as RequestId[]\n };\n },\n\n extractAsyncStoreItem: (entityItem) => {\n return {\n requestIds: [...entityItem.requestIds],\n isFailure: entityItem.isFailure,\n isPending: entityItem.isPending\n };\n },\n\n clearAsyncStoreItem: <T extends AsyncStoreItem>(entityItem: T) => {\n const { isPending, isFailure, ...newResponse }: T = { ...entityItem, requestIds: [] };\n return newResponse as T;\n },\n\n merge: (...items) => {\n return items.reduce<AsyncStoreItem>((mergedItem, item) => item\n ? {\n requestIds: [...mergedItem.requestIds, ...item.requestIds],\n isFailure: mergedItem.isFailure || item.isFailure,\n isPending: mergedItem.isPending || item.isPending\n }\n : mergedItem, asyncStoreItemAdapter.initialize({}));\n },\n\n entityStatusAddRequest: (status, subResource, requestId) => {\n const currentSubStatus: AsyncStoreItem = status[subResource] || asyncStoreItemAdapter.initialize({});\n return {\n ...status,\n [subResource]: asyncStoreItemAdapter.addRequest(currentSubStatus, requestId)\n };\n },\n\n entityStatusResolveRequest: (status, subResource, requestId) => {\n const currentSubStatus = status[subResource];\n return {\n ...status,\n [subResource]: currentSubStatus ? asyncStoreItemAdapter.resolveRequest(currentSubStatus, requestId) : { requestIds: [] as RequestId[] }\n };\n },\n\n entityStatusFailRequest: (status, subResource, requestId) => {\n const currentSubStatus = status[subResource];\n return {\n ...status,\n [subResource]: currentSubStatus ? asyncStoreItemAdapter.failRequest(currentSubStatus, requestId) : { requestIds: [] as RequestId[], isFailure: true }\n };\n },\n\n entityStatusResetFailure: (status, subResource) => {\n const currentSubStatus = status[subResource];\n return {\n ...status,\n [subResource]: currentSubStatus ? asyncStoreItemAdapter.resetFailureStatus(currentSubStatus) : { requestIds: [] as RequestId[] }\n };\n },\n\n resetFailureStatus: (entityItem) => {\n return {\n ...entityItem,\n isFailure: false\n };\n },\n\n setLoadingStatus: (entityItem) => {\n return {\n ...entityItem,\n isPending: true\n };\n }\n};\n","import type {\n EntityAdapter,\n EntityState,\n Update,\n} from '@ngrx/entity';\nimport {\n asyncStoreItemAdapter,\n} from './async.adapter';\nimport {\n AsyncStoreItem,\n EntityWithoutAsyncStoreItem,\n} from './async.interfaces';\n\n/** Adapter for Asynchronous Entity Store */\nexport interface EntityAsyncRequestAdapter<T extends AsyncStoreItem> extends EntityAdapter<T> {\n\n /**\n * Updates the AsyncStoreItem properties of each entity matching an id from the list of given ids, when a request has failed.\n * @param state Actual state\n * @param ids Ids of the entity to be updated with AsyncStoreItem properties\n * @param requestId Id of request which has failed\n */\n failRequestMany<V extends EntityState<T> & AsyncStoreItem>(state: V, ids?: (string | number)[], requestId?: string): V;\n\n /**\n * Adds AsyncStoreItem property to the global store, or the entity if it already exists, when a request is triggered.\n * @param state Actual state\n * @param id Id of the entity to update\n * @param requestId Id of the request which is triggered\n */\n addRequestOne<V extends EntityState<T> & AsyncStoreItem>(state: V, id: string | number | null | undefined, requestId: string): V;\n\n /**\n * Adds AsyncStoreItem properties for each entity matching the given ids, when a request is triggered\n * @param state Actual state\n * @param ids Ids of the entity to be updated with AsyncStoreItem properties\n * @param requestId Id of request which is triggered\n */\n addRequestMany<V extends EntityState<T>>(state: V, ids: (string | number)[], requestId: string): V;\n\n /**\n * Updates the state with the given entity. Update the global or the current entity's status if it exists.\n * @param state Actual state\n * @param entity Payload item;\n * @param requestId Id of request which has resolved if any\n */\n resolveRequestOne<V extends EntityState<T> & AsyncStoreItem>(state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<'id', string | number>, requestId?: string): V;\n\n /**\n * Updates the state with the given entity. Update the global or the current entity's status if it exists.\n * @param state Actual state\n * @param entity Payload item;\n * @param requestId Id of request which has resolved if any\n * @param idProperty Property of the entity containing its unique identifier\n */\n resolveRequestOne<V extends EntityState<T> & AsyncStoreItem, W extends keyof T>(state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<W, string | number>, requestId?: string, idProperty?: W): V;\n\n /**\n * Updates the state with the given entities. Updates also AsyncStoreItem properties of each entity, when a request is resolved.\n * @param state Actual state\n * @param entities Payload items;\n * @param requestId Id of request which has resolved if any\n */\n resolveRequestMany<V extends EntityState<T>>(state: V, entities: (Partial<T> & Record<'id', string | number>)[], requestId?: string): V;\n\n /**\n * Updates the state with the given entities. Updates also AsyncStoreItem properties of each entity, when a request is resolved.\n * @param state Actual state\n * @param entities Payload items;\n * @param requestId Id of request which has resolved if any\n * @param idProperty Property of the entity containing its unique identifier\n */\n resolveRequestMany<V extends EntityState<T>, W extends keyof T>(state: V, entities: (Partial<T> & Record<W, string | number>)[], requestId?: string, idProperty?: W): V;\n}\n\n/**\n * Create an Asynchronous Request Entity Adapter\n * @param adapter Entity Adapter\n */\nexport function createEntityAsyncRequestAdapter<T extends AsyncStoreItem>(adapter: EntityAdapter<T>): EntityAsyncRequestAdapter<T> {\n const addRequestOne: <V extends EntityState<T> & AsyncStoreItem>(state: V, id: string | number | null | undefined, requestId: string) => V = (state, id, requestId) => {\n const currentEntity = typeof id !== 'undefined' && id !== null && state.entities[id];\n if (currentEntity) {\n const changes = asyncStoreItemAdapter.addRequest(asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity), requestId);\n return adapter.updateOne({ id, changes } as Update<T>, state);\n }\n return asyncStoreItemAdapter.addRequest(state, requestId);\n };\n\n const addRequestMany: <V extends EntityState<T>>(state: V, ids: (string | number)[], requestId: string) => V = <V extends EntityState<T>>(state: V, ids: (string | number)[], requestId: string): V =>\n adapter.updateMany(ids.filter((id) => !!state.entities[id]).map((id) => ({\n id,\n changes: asyncStoreItemAdapter.addRequest(asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[id]!), requestId)\n } as Update<T>)\n ), state);\n\n const resolveRequestOne: <V extends EntityState<T> & AsyncStoreItem, W extends keyof T | 'id' = 'id'>\n (state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<W, string | number>, requestId?: string, idProperty?: W) => V = <V extends EntityState<T> & AsyncStoreItem, W extends keyof T | 'id'>\n (state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<W, string | number>, requestId?: string, idProperty: W = 'id' as W): V => {\n const currentEntity = state.entities[entity[idProperty]];\n const newEntity = currentEntity\n ? asyncStoreItemAdapter.resolveRequest({ ...entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity) }, requestId)\n : asyncStoreItemAdapter.initialize(entity);\n state = asyncStoreItemAdapter.resolveRequest(state, requestId);\n return adapter.upsertOne(newEntity as T, state);\n };\n\n const resolveRequestMany: <V extends EntityState<T>, W extends keyof T | 'id' = 'id'>\n (state: V, entities: (Partial<T> & Record<W, string | number>)[], requestId?: string, idProperty?: W) => V = <V extends EntityState<T>, W extends keyof T | 'id'>\n (state: V, entities: (Partial<T> & Record<W, string | number>)[], requestId?: string, idProperty: W = 'id' as W): V =>\n adapter.updateMany(\n entities.filter((entity) => !!state.entities[entity[idProperty]]).map((entity) => {\n const model = { ...entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[entity[idProperty]]!) };\n return { id: entity[idProperty], changes: asyncStoreItemAdapter.resolveRequest(model, requestId) } as Update<T>;\n }\n ), state);\n\n const failRequestMany: <V extends EntityState<T> & AsyncStoreItem>\n (state: V, ids?: (string | number)[], requestId?: string) => V = <V extends EntityState<T> & AsyncStoreItem>\n (state: V, ids: (string | number)[] = [], requestId?: string): V => {\n if (ids.length > 0 && !ids.some((id) => state.entities[id] === undefined)) {\n return adapter.updateMany(ids.map((id) => ({\n id,\n changes: asyncStoreItemAdapter.failRequest(asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[id]!), requestId)\n } as Update<T>)\n ), state);\n }\n return asyncStoreItemAdapter.failRequest(state, requestId);\n };\n\n return {\n ...adapter,\n failRequestMany,\n addRequestOne,\n addRequestMany,\n resolveRequestOne,\n resolveRequestMany\n };\n}\n","import {\n AsyncRequest,\n FromApiActionPayload,\n} from './async.interfaces';\n\n/**\n * Determine if the action is an AsyncRequest action\n * @param action Redux Action\n */\nexport function isCallAction<T = any>(action?: any): action is FromApiActionPayload<T> {\n if (!action) {\n return false;\n }\n\n return !!action.call && action.call instanceof Promise;\n}\n\n/**\n * Determine if the action is an AsyncRequest action with a Request ID\n * @param action Redux Action\n */\nexport function isIdentifiedCallAction<T = any>(action?: any): action is FromApiActionPayload<T> & AsyncRequest {\n return isCallAction(action) && typeof action.requestId !== 'undefined';\n}\n\n/**\n * Determine if the given item implements the AsyncRequest interface\n * @param item\n */\nexport function isAsyncRequest<T>(item: any): item is T & AsyncRequest {\n return typeof item.requestId !== 'undefined';\n}\n","import {\n Action,\n} from '@ngrx/store';\nimport {\n BehaviorSubject,\n EMPTY,\n from,\n identity,\n isObservable,\n merge,\n Observable,\n of,\n OperatorFunction,\n Subject,\n} from 'rxjs';\nimport {\n catchError,\n delay,\n filter,\n finalize,\n pairwise,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport {\n isIdentifiedCallAction,\n} from './async.helpers';\nimport {\n AsyncRequest,\n ExtractFromApiActionPayloadType,\n FromApiActionPayload,\n} from './async.interfaces';\n\n/**\n * Determine if the given parameter is a Promise\n * @param object\n */\nconst isPromise = <U>(object: U | Promise<U>): object is Promise<U> => object && typeof object === 'object' && typeof (object as any).then !== 'undefined';\n\n/**\n * Custom operator to use instead of SwitchMap with effects based on FromApi actions.\n * 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.\n * @param successHandler function that returns the action to emit in case the FromApi call is a success\n * @param errorHandler function that returns the action to emit in case the FromApi call fails\n * @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\n */\nexport function fromApiEffectSwitchMap<T extends FromApiActionPayload<any>, S extends ExtractFromApiActionPayloadType<T>, U extends Action, V extends Action, W extends Action>(\n successHandler: (result: S, action: T) => U | Observable<U> | Promise<U>,\n errorHandler?: (error: any, action: T) => Observable<V>,\n cancelRequestActionFactory?: (props: AsyncRequest, action: T) => W): OperatorFunction<T, U | V | W> {\n const pendingRequestIdsContext: Record<string, boolean> = {};\n\n return (source$) => source$.pipe(\n tap((action) => {\n if (isIdentifiedCallAction(action)) {\n pendingRequestIdsContext[action.requestId] = true;\n }\n }),\n startWith(undefined),\n pairwise(),\n switchMap(([previousAction, action]) => {\n if (!action) {\n return EMPTY;\n }\n const isPreviousActionStillRunning = isIdentifiedCallAction(previousAction) && pendingRequestIdsContext[previousAction.requestId];\n const cleanStack = () => {\n if (isIdentifiedCallAction(action)) {\n delete pendingRequestIdsContext[action.requestId];\n }\n };\n return from(action.call).pipe(\n tap(cleanStack),\n switchMap((result) => {\n const success = successHandler(result, action);\n return isObservable(success) ? success : (isPromise(success) ? success : of(success));\n }),\n catchError((error) => {\n cleanStack();\n return errorHandler?.(error, action) || EMPTY;\n }),\n isPreviousActionStillRunning && cancelRequestActionFactory ? startWith(cancelRequestActionFactory({ requestId: previousAction.requestId }, action)) : identity\n );\n })\n );\n}\n\n/**\n * Same as {@link fromApiEffectSwitchMap}, instead one inner subscription is kept by id.\n * @param successHandler\n * @param errorHandler\n * @param cancelRequestActionFactory\n * @param cleanUpTimer\n */\nexport function fromApiEffectSwitchMapById<T extends FromApiActionPayload<any> & { id: string },\n S extends ExtractFromApiActionPayloadType<T>,\n U extends Action,\n V extends Action,\n W extends Action>(\n successHandler: (result: S, action: T) => U | Observable<U> | Promise<U>,\n errorHandler?: (error: any, action: T) => Observable<V>,\n cancelRequestActionFactory?: (props: AsyncRequest, action: T) => W,\n cleanUpTimer?: number\n): OperatorFunction<T, U | V | W> {\n const innerSourcesById: Record<string, [Subject<any>, Observable<any>]> = {};\n return (source$: Observable<T>) => {\n return source$.pipe(\n filter((action: T) => {\n if (!isIdentifiedCallAction(action) || !action.id) {\n return false;\n }\n if (isIdentifiedCallAction(action) && innerSourcesById[action.id]) {\n innerSourcesById[action.id][0].next(action);\n return false;\n }\n return true;\n }),\n switchMap((action: T) => {\n const newIdSubject = new BehaviorSubject(action);\n const newId$ = newIdSubject.pipe(\n fromApiEffectSwitchMap(\n successHandler,\n errorHandler,\n cancelRequestActionFactory\n )\n );\n innerSourcesById[action.id] = [newIdSubject, newId$];\n if (cleanUpTimer !== undefined) {\n newIdSubject.pipe(\n switchMap((myAction) => from(myAction.call).pipe(\n delay(cleanUpTimer),\n finalize(() => {\n delete innerSourcesById[myAction.id];\n newIdSubject.complete();\n })\n ))\n ).subscribe();\n }\n const streams = Object.values(innerSourcesById).map(([_, obs]) => obs);\n return merge(...streams);\n })\n );\n };\n}\n","import {\n v4,\n} from 'uuid';\nimport {\n isAsyncRequest,\n} from './async.helpers';\nimport {\n AsyncRequest,\n} from './async.interfaces';\n\n/**\n * Returns a creator that makes sure that requestId is defined in the action's properties by generating one\n * if needed.\n */\nexport const asyncProps = <P extends object>(): (props: P) => P & AsyncRequest => {\n return (props: P) => isAsyncRequest(props) ? props : { ...props, requestId: v4() };\n};\n","import type {\n EntityState,\n} from '@ngrx/entity';\nimport {\n asyncStoreItemAdapter,\n} from './async.adapter';\nimport {\n AsyncStoreItem,\n EntityStatus,\n} from './async.interfaces';\n\n/**\n * Serializer for asynchronous store.\n * @param state State of an asynchronous store to serialize\n * @returns a plain json object to pass to json.stringify\n */\nexport function asyncSerializer<T extends AsyncStoreItem>(state: T) {\n return asyncStoreItemAdapter.clearAsyncStoreItem(state);\n}\n\n/**\n * Serializer for asynchronous entity store.\n * @param state State of an asynchronous entity store to serialize\n * @returns a plain json object to pass to json.stringify\n */\nexport function asyncEntitySerializer<T extends AsyncStoreItem & EntityState<AsyncStoreItem>>(state: T) {\n const entities = (state.ids as string[]).reduce((entitiesAcc, entityId) => {\n entitiesAcc[entityId] = asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]!);\n return entitiesAcc;\n }, {} as typeof state.entities);\n\n return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };\n}\n\n/**\n * Serializer for asynchronous entity store with status.\n * @param state State of an asynchronous entity store with status to serialize\n * @returns a plain json object to pass to json.stringify\n */\nexport function asyncEntityWithStatusSerializer<T extends AsyncStoreItem & EntityState<AsyncStoreItem & { status: EntityStatus<T['entities']['status']> }>>(state: T) {\n const entities = (state.ids as string[]).reduce((entitiesAcc, entityId) => {\n entitiesAcc[entityId] = { ...asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]!), status: {} };\n return entitiesAcc;\n }, {} as typeof state.entities);\n\n return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };\n}\n","/**\n * Object that define how to serialize a specific state\n */\nexport interface Serializer<T> {\n serialize?: (obj: T) => any;\n deserialize?: (data?: any) => T;\n reviver?: (key: string, value: any) => any;\n replacer?: (key: string, value: any) => any;\n initialState?: T;\n}\n\nexport class StateSerializer<T> implements Serializer<T> {\n public serialize?: (obj: T) => any;\n public deserialize?: (data?: any) => T;\n public replacer?: (key: string, value: any) => any;\n public initialState?: T;\n\n constructor(serializer: Serializer<T>) {\n this.serialize = serializer.serialize || this.serialize;\n this.deserialize = serializer.deserialize || this.deserialize;\n this.reviver = serializer.reviver || this.reviver;\n this.replacer = serializer.replacer || this.replacer;\n this.initialState = serializer.initialState || this.initialState;\n }\n\n public reviver = (_: string, value: any): any => value;\n}\n\nexport interface LocalStateModel {\n /**\n * Temporary ID of the model in the dictionary\n */\n tid: string;\n}\n\n/**\n * Adds an `id` to the given type\n */\nexport type Idfy<T> = T & { id: string | number };\n\n/**\n * Payload to update actions\n */\nexport interface UpdateActionPayload<T> {\n stateDetails: Partial<T>;\n}\n\n/**\n * Payload to set actions\n */\nexport interface SetActionPayload<T> {\n stateDetails: T;\n}\n\n/**\n * Payload to set state actions\n */\nexport interface SetStateActionPayload<T> {\n state: T;\n}\n/**\n * Payload to fail actions\n */\nexport interface FailActionPayload<T> {\n error?: T;\n}\n\nexport type Keep<T, K extends keyof T> = Partial<T> & Pick<T, K>;\n\n/** Payload to update entities actions */\nexport interface UpdateEntitiesActionPayload<T, K extends keyof T> {\n entities: Keep<T, K>[];\n}\n\n/** Payload to update entities actions with a field ID */\nexport interface UpdateEntitiesActionPayloadWithId<T extends { id: string | number }> {\n entities: Keep<T, 'id'>[];\n}\n\n/** Payload to update entities actions */\nexport interface UpdateEntityActionPayload<T, K extends keyof T> {\n entity: Keep<T, K>;\n}\n\n/** Payload to update entities actions with a field ID */\nexport interface UpdateEntityActionPayloadWithId<T extends { id: string | number }> {\n entity: Keep<T, 'id'>;\n}\n\n/** Payload to set entities and upsert entities actions */\nexport interface SetEntitiesActionPayload<T> {\n entities: T[];\n}\n\n/** Payload to set entity and upsert entity actions */\nexport interface SetEntityActionPayload<T> {\n entity: T;\n}\n\n/** Payload to fail entities actions */\nexport interface FailEntitiesActionPayload<T> extends FailActionPayload<T> {\n ids?: (string | number)[];\n}\n\n/**\n * Payload to clear the store in case of failure\n */\nexport interface ClearOnFailurePayload {\n /** Clear store on failure */\n clearOnFailure?: boolean;\n}\n","import type {\n BootstrapConfig,\n Dataset,\n} from '../../core/application/dgp-interfaces';\n\n/**\n * Pad number\n * @param val\n * @param digits\n */\nexport function padNumber(val: number, digits = 2): string {\n const str = `${val}`;\n return '0'.repeat(Math.max(0, digits - str.length)) + str;\n}\n\n/**\n * Returns TRUE if bootstrap config environment is production FALSE otherwise\n * @param dataset\n * @returns TRUE if bootstrap config environment is production FALSE otherwise\n */\nexport function isProductionEnvironment(dataset: Dataset): boolean {\n const bootstrapConfig: BootstrapConfig = dataset.bootstrapconfig && JSON.parse(dataset.bootstrapconfig);\n return bootstrapConfig?.environment === 'prod';\n}\n","/** Reviver Mapper to detect and create object on deepFill */\nexport interface PrimitiveReviverMapper<T = any> {\n /** Condition to fill to be determine as */\n condition: (data: any) => boolean;\n\n /**\n * Construct the primitive type if needed\n * @param data to be constructed\n * @default {@see defaultConstruct}\n */\n construct?: (data: any) => T;\n}\n\nconst defaultConstruct = (data: any) => data;\n\nconst isDate = (data: any) => data instanceof Date && !Number.isNaN(data as any);\n\n/**\n * Check if an object is not an array or a date\n * @param obj\n * @param additionalMappers\n */\nexport function isObject(obj: any, additionalMappers?: PrimitiveReviverMapper[]) {\n return obj instanceof Object && !Array.isArray(obj) && !additionalMappers?.some((mapper) => mapper.condition(obj)) && !isDate(obj);\n}\n\n/**\n * Return a new reference of the given object\n * @param obj\n * @param additionalMappers\n */\nexport function immutablePrimitive(obj: any, additionalMappers?: PrimitiveReviverMapper[]) {\n if (Array.isArray(obj)) {\n return obj.slice();\n }\n\n const matchingPrimitive = additionalMappers?.find((mapper) => mapper.condition(obj));\n const resolvedType = matchingPrimitive && ((matchingPrimitive.construct || defaultConstruct)(obj));\n if (resolvedType !== undefined) {\n return resolvedType;\n }\n if (isDate(obj)) {\n return new Date(obj);\n } else if (obj instanceof Object) {\n return deepFill(obj, obj, additionalMappers);\n } else {\n return obj;\n }\n}\n\n/**\n * Deep fill of base object using source\n * It will do a deep merge of the objects, overriding arrays\n * All properties not present in source, but present in base, will remain\n * @param base\n * @param source\n * @param additionalMappers Map of conditions of type mapper\n */\nexport function deepFill<T extends { [x: string]: any }>(base: T, source?: { [x: string]: any }, additionalMappers?: PrimitiveReviverMapper[]): T {\n if (typeof source === 'undefined') {\n return deepFill(base, base, additionalMappers);\n }\n if (!isObject(base, additionalMappers)) {\n return immutablePrimitive(typeof source === 'undefined' ? base : source, additionalMappers);\n }\n const newObj = { ...base };\n for (const key in base) {\n if (source[key] === null) {\n newObj[key] = immutablePrimitive(null, additionalMappers);\n } else if (key in source && typeof base[key] === typeof source[key]) {\n const keyOfSource = source[key];\n newObj[key] = typeof keyOfSource === 'undefined' ? immutablePrimitive(base[key], additionalMappers) : deepFill(base[key], keyOfSource, additionalMappers);\n } else {\n newObj[key] = immutablePrimitive(base[key], additionalMappers);\n }\n }\n\n // getting keys present in source and not present in base\n for (const key in source) {\n if (!(key in newObj)) {\n newObj[key as keyof T] = immutablePrimitive(source[key], additionalMappers);\n }\n }\n return newObj;\n}\n","import {\n animationFrameScheduler,\n from,\n Observable,\n observeOn,\n of,\n} from 'rxjs';\nimport {\n bufferCount,\n concatMap,\n delay,\n mergeMap,\n scan,\n tap,\n} from 'rxjs/operators';\n\n/**\n * Buffers and emits data for lazy/progressive rendering of big lists\n * That could solve issues with long-running tasks when trying to render an array\n * of similar components.\n * @param delayMs Delay between data emits\n * @param concurrency Amount of elements that should be emitted at once\n */\nexport function lazyArray<T>(delayMs = 0, concurrency = 2) {\n let isFirstEmission = true;\n return (source$: Observable<T[]>) => {\n return source$.pipe(\n mergeMap((items) => {\n if (!isFirstEmission) {\n return of(items);\n }\n\n const items$ = from(items);\n\n return items$.pipe(\n bufferCount(concurrency),\n concatMap((value, index) => {\n return of(value).pipe(\n observeOn(animationFrameScheduler),\n delay(index * delayMs)\n );\n }),\n scan((acc: T[], steps: T[]) => {\n return [...acc, ...steps];\n }, []),\n tap((scannedItems: T[]) => {\n const scanDidComplete = scannedItems.length === items.length;\n\n if (scanDidComplete) {\n isFirstEmission = false;\n }\n })\n );\n })\n );\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"o3r-core.mjs","sources":["../../src/core/application/build-properties.ts","../../src/core/metadata/component-decorator.ts","../../src/core/metadata/component-identifier.ts","../../src/messages/message-interfaces.ts","../../src/messages/message-helpers.ts","../../src/store/async/async.adapter.ts","../../src/store/async/async-entity.adapter.ts","../../src/store/async/async.helpers.ts","../../src/store/async/async.operators.ts","../../src/store/async/async.props.ts","../../src/store/async/async.serializer.ts","../../src/store/types.ts","../../src/utils/debug/debug-helper.ts","../../src/utils/deep-fill/deep-fill.ts","../../src/utils/rendering/rendering-helpers.ts","../../src/o3r-core.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention -- exception for `BuildTimeProperties` */\n\n/**\n * Library build time properties\n */\nexport interface BuildTimeProperties {\n /**\n * True if the application in launch in debug mode\n */\n DEBUG_MODE: boolean;\n\n /**\n * True if the webStorage option is enabled\n */\n ENABLE_WEBSTORAGE: boolean;\n\n /**\n * Name of the current environment\n */\n ENVIRONMENT: string;\n\n /**\n * Boolean that can be used to activate API calls mocks for development or mock-up purpose.\n */\n USE_MOCKS: boolean;\n\n /**\n * Maximum size of the dev tool history\n */\n DEVTOOL_HISTORY_SIZE: number | undefined;\n\n /**\n * path to bundles in published folder\n */\n LOCALIZATION_BUNDLES_OUTPUT: string;\n\n /**\n * The name of the bundle generated with the default localization components keys\n */\n DEFAULT_LOC_BUNDLE_NAME: string;\n\n /**\n * Indicates the default server prefix to be used in case no dynamic is found\n */\n APP_BASE_HREF: string | undefined;\n\n /**\n * Version of the App based on the package.json\n */\n APP_VERSION: string;\n\n /**\n * Determine if the ghosting is activated on the app\n */\n ENABLE_GHOSTING: boolean;\n}\n\n/**\n * Library build time default properties\n */\nexport const DEFAULT_BUILD_PROPERTIES: Readonly<BuildTimeProperties> = {\n DEBUG_MODE: true,\n APP_BASE_HREF: '.',\n APP_VERSION: '0.0.0',\n DEFAULT_LOC_BUNDLE_NAME: '',\n DEVTOOL_HISTORY_SIZE: 20,\n ENABLE_GHOSTING: false,\n ENABLE_WEBSTORAGE: true,\n ENVIRONMENT: 'dev',\n LOCALIZATION_BUNDLES_OUTPUT: 'localizations/',\n USE_MOCKS: false\n} as const;\n","import type {\n Translation,\n} from '../interfaces';\n\n/** Type of component */\nexport type ComponentType = 'Block' | 'Page' | 'ExposedComponent' | 'Component';\n\n/**\n * Information about an Otter component to provide\n */\nexport interface OtterComponentInfoToProvide {\n /** Type of component */\n componentType: ComponentType;\n}\n\n/**\n * Information about an Otter component\n */\nexport interface OtterComponentInfo extends OtterComponentInfoToProvide {\n /** Configuration ID */\n configId?: string;\n /** Translation keys */\n translations?: Translation;\n /** Component Name */\n componentName: string;\n}\n\n/**\n * Private field where Otter component information are stored\n */\nexport const otterComponentInfoPropertyName = '__otter-info__';\n\n/**\n * Decorates an Angular component to provide Otter information\n * @param info Information to define the Otter component\n * @returns the component with the information\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase\nexport function O3rComponent(info: OtterComponentInfoToProvide) {\n return <T extends new (...args: any[]) => object>(constructor: T) => {\n const componentName = constructor.name;\n constructor.prototype[otterComponentInfoPropertyName] = { ...info, componentName };\n return constructor;\n };\n}\n","/**\n * Compute the name of the component with the library's name to generate unique component identifier used in metadata and different modules\n * @param componentName Name of the component to get the configuration\n * @param libraryName Name of the library the component is coming from\n */\nexport function computeItemIdentifier<C extends string, L extends string>(componentName: C, libraryName?: L): `${L extends string ? `${L}#` : ''}${C}` {\n return (libraryName ? libraryName + '#' : '') + componentName as `${L extends string ? `${L}#` : ''}${C}`;\n}\n","/** Type of a message exchanged within the Otter Framework */\nexport const otterMessageType = 'otter';\n\n/** Target of a message that should be handled by the application */\nexport const applicationMessageTarget = 'app';\n\nexport interface OtterMessageContent<DataType extends string = string> {\n /** Type of data */\n dataType: DataType;\n}\n\nexport interface OtterMessage<Content extends OtterMessageContent = OtterMessageContent, Target extends string | undefined = undefined | string> {\n /** Type of the message */\n type: typeof otterMessageType;\n\n /** Version of the message (default to the `@o3r/core` version ) */\n version?: string;\n\n /** Target of the message */\n to: Target;\n\n /** Message content */\n content: Content;\n}\n\n/** Type helper to retrieve the data types of a union of MessageContent */\nexport type MessageDataTypes<T extends OtterMessageContent> = T['dataType'];\n\n/** Type helper to filter the message that can be received by the application */\nexport type FilterMessageToApplication<T extends OtterMessage> = T extends { to: infer U } ? U extends (typeof applicationMessageTarget | undefined) ? T : never : never;\n\nexport type ContentMessageData<T extends OtterMessageContent> = T extends any\n ? Omit<T, 'dataType'>\n : never;\n","import {\n filter,\n map,\n Observable,\n} from 'rxjs';\nimport {\n applicationMessageTarget,\n ContentMessageData,\n FilterMessageToApplication,\n OtterMessage,\n OtterMessageContent,\n otterMessageType,\n} from './message-interfaces';\n\n/**\n * Determine if a message should be handle by the application\n * @param message Message to analyze\n */\nexport const isToAppOtterMessage = <T extends OtterMessage>(message?: T): message is FilterMessageToApplication<T & { to: 'app' }> => {\n return message?.to === applicationMessageTarget;\n};\n\n/**\n * Determine if a message is emitted by an Otter tool\n * @param message Message to analyze\n */\nexport const isOtterMessage = <T extends OtterMessageContent>(message: any): message is OtterMessage<T> => {\n return message?.type === otterMessageType;\n};\n\n/**\n * Send an Otter Message\n * @param dataType Type of the message\n * @param content content of the message\n * @param preStringify determine if the message should JSON.stringify before being send (will use the default mechanism otherwise)\n */\nexport const sendOtterMessage = <T extends OtterMessageContent>(dataType: T['dataType'], content: ContentMessageData<T>, preStringify = true) => {\n const message = {\n type: otterMessageType,\n content: {\n ...content,\n dataType\n }\n };\n return window.postMessage(preStringify ? JSON.stringify(message) : message, '*');\n};\n\nexport function filterMessageContent<T extends Event | MessageEvent>(): (source$: Observable<T>) => Observable<OtterMessageContent<string>>;\nexport function filterMessageContent<T extends Event | MessageEvent, S extends OtterMessageContent>(predicate: (message: any) => message is S): (source$: Observable<T>) => Observable<S>;\n/**\n * Filter the Otter message that should be handle by the application and returns it content\n * @param predicate condition to filter the message\n * @returns content of the message\n */\n\n/**\n * Operator to get only Otter messages that match the predicate\n * @param predicate\n */\nexport function filterMessageContent<T extends Event | MessageEvent, S extends OtterMessageContent>(predicate?: (message: any) => message is S):\n(source$: Observable<T>) => Observable<OtterMessageContent<string> | S> {\n return (source$: Observable<T>) => {\n const obs = source$.pipe(\n map((event) => {\n const data = (event as MessageEvent).data;\n return typeof data === 'string' ? JSON.parse(data) : data;\n }),\n filter(isOtterMessage),\n filter(isToAppOtterMessage),\n map((message) => message.content)\n );\n if (predicate) {\n return obs.pipe(filter(predicate));\n }\n return obs;\n };\n}\n","import {\n AsyncStoreItem,\n EntityStatus,\n RequestId,\n} from './async.interfaces';\n\n/**\n * Adapter to help manipulate AsyncStoreItems to register new request and update the status when they fail or resolve.\n */\nexport interface AsyncStoreItemAdapter {\n /**\n * Adds a request to an AsyncStoreItem.\n * If the item had a failure and no ongoing requests, sets it's failure status back to false\n * @param item\n * @param requestId\n */\n addRequest<T extends AsyncStoreItem>(item: T, requestId: string): T;\n\n /**\n * Updates an AsyncStoreItem when a request has resolved.\n * Removes it from its requestIds array.\n * If no requestId provided, the method returns the current status of the AsyncStoreItem\n * @param item\n * @param requestId\n */\n resolveRequest<T extends AsyncStoreItem>(item: T, requestId?: string): T;\n\n /**\n * Updates an AsyncStoreItem when a request has failed.\n * Removes it from its requestIds array and set its failure status.\n * @param item\n * @param requestId\n */\n failRequest<T extends AsyncStoreItem>(item: T, requestId?: string): T;\n\n /**\n * Add AsyncStoreItem properties (with initial values) to the given entity\n * @param entityItem\n * @returns Given item improved with AsyncStoreItem properties\n */\n initialize<T extends object>(entityItem: T): T & AsyncStoreItem;\n\n /**\n * Extract only AsyncStoreItem properties from the given entity\n * @param entityItem A model containing AsyncStoreItem properties\n * @returns Object containing only AsyncStoreItem properties\n */\n extractAsyncStoreItem<T extends AsyncStoreItem>(entityItem: T): AsyncStoreItem;\n\n /**\n * Clear AsyncStoreItem properties from the given entity\n * @param entityItem A model containing AsyncStoreItem properties\n */\n clearAsyncStoreItem<T extends AsyncStoreItem>(entityItem: T): T;\n\n /**\n * Merges an AsyncStoreItem collection into one item that gives an overall status.\n * @param items\n */\n merge(...items: (AsyncStoreItem | undefined)[]): AsyncStoreItem;\n\n /**\n * Add a request to the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n * @param requestId\n */\n entityStatusAddRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId: string): T;\n\n /**\n * Resolve a request on the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n * @param requestId\n */\n entityStatusResolveRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId?: string): T;\n\n /**\n * Fail a request to the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n * @param requestId\n */\n entityStatusFailRequest<T extends EntityStatus<T>>(status: T, subResource: keyof T, requestId?: string): T;\n\n /**\n * Reset the failure status of the given subResource of an EntityStatus object\n * @param status\n * @param subResource\n */\n entityStatusResetFailure<T extends EntityStatus<T>>(status: T, subResource: keyof T): T;\n\n /**\n * Reset the failure status of the given AsyncStoreItem to false\n * @param entityItem\n * @returns AsyncStoreItem with the updated failure status\n */\n resetFailureStatus<T extends AsyncStoreItem>(entityItem: T): T;\n\n /**\n * Set the pending status of the given AsyncStoreItem to true\n * @param entityItem\n * @returns AsyncStoreItem with the updated pending status\n */\n setLoadingStatus<T extends AsyncStoreItem>(entityItem: T): T;\n}\n\nexport const asyncStoreItemAdapter: AsyncStoreItemAdapter = {\n addRequest: (item, requestId) => {\n return {\n ...item,\n requestIds: [...item.requestIds, requestId],\n isFailure: item.requestIds.length === 0 ? false : item.isFailure,\n isPending: true\n };\n },\n\n failRequest: (item, requestId) => {\n const requestIds = requestId ? item.requestIds.filter((id) => id !== requestId) : item.requestIds;\n return {\n ...item,\n isFailure: true,\n isPending: requestIds.length > 0,\n requestIds\n };\n },\n\n resolveRequest: (item, requestId) => {\n const requestIds = requestId ? item.requestIds.filter((id) => id !== requestId) : item.requestIds;\n return {\n ...item,\n requestIds,\n isPending: requestIds.length > 0\n };\n },\n\n initialize: (entityItem) => {\n return {\n ...entityItem,\n requestIds: [] as RequestId[]\n };\n },\n\n extractAsyncStoreItem: (entityItem) => {\n return {\n requestIds: [...entityItem.requestIds],\n isFailure: entityItem.isFailure,\n isPending: entityItem.isPending\n };\n },\n\n clearAsyncStoreItem: <T extends AsyncStoreItem>(entityItem: T) => {\n const { isPending, isFailure, ...newResponse }: T = { ...entityItem, requestIds: [] };\n return newResponse as T;\n },\n\n merge: (...items) => {\n return items.reduce<AsyncStoreItem>((mergedItem, item) => item\n ? {\n requestIds: [...mergedItem.requestIds, ...item.requestIds],\n isFailure: mergedItem.isFailure || item.isFailure,\n isPending: mergedItem.isPending || item.isPending\n }\n : mergedItem, asyncStoreItemAdapter.initialize({}));\n },\n\n entityStatusAddRequest: (status, subResource, requestId) => {\n const currentSubStatus: AsyncStoreItem = status[subResource] || asyncStoreItemAdapter.initialize({});\n return {\n ...status,\n [subResource]: asyncStoreItemAdapter.addRequest(currentSubStatus, requestId)\n };\n },\n\n entityStatusResolveRequest: (status, subResource, requestId) => {\n const currentSubStatus = status[subResource];\n return {\n ...status,\n [subResource]: currentSubStatus ? asyncStoreItemAdapter.resolveRequest(currentSubStatus, requestId) : { requestIds: [] as RequestId[] }\n };\n },\n\n entityStatusFailRequest: (status, subResource, requestId) => {\n const currentSubStatus = status[subResource];\n return {\n ...status,\n [subResource]: currentSubStatus ? asyncStoreItemAdapter.failRequest(currentSubStatus, requestId) : { requestIds: [] as RequestId[], isFailure: true }\n };\n },\n\n entityStatusResetFailure: (status, subResource) => {\n const currentSubStatus = status[subResource];\n return {\n ...status,\n [subResource]: currentSubStatus ? asyncStoreItemAdapter.resetFailureStatus(currentSubStatus) : { requestIds: [] as RequestId[] }\n };\n },\n\n resetFailureStatus: (entityItem) => {\n return {\n ...entityItem,\n isFailure: false\n };\n },\n\n setLoadingStatus: (entityItem) => {\n return {\n ...entityItem,\n isPending: true\n };\n }\n};\n","import type {\n EntityAdapter,\n EntityState,\n Update,\n} from '@ngrx/entity';\nimport {\n asyncStoreItemAdapter,\n} from './async.adapter';\nimport {\n AsyncStoreItem,\n EntityWithoutAsyncStoreItem,\n} from './async.interfaces';\n\n/** Adapter for Asynchronous Entity Store */\nexport interface EntityAsyncRequestAdapter<T extends AsyncStoreItem> extends EntityAdapter<T> {\n\n /**\n * Updates the AsyncStoreItem properties of each entity matching an id from the list of given ids, when a request has failed.\n * @param state Actual state\n * @param ids Ids of the entity to be updated with AsyncStoreItem properties\n * @param requestId Id of request which has failed\n */\n failRequestMany<V extends EntityState<T> & AsyncStoreItem>(state: V, ids?: (string | number)[], requestId?: string): V;\n\n /**\n * Adds AsyncStoreItem property to the global store, or the entity if it already exists, when a request is triggered.\n * @param state Actual state\n * @param id Id of the entity to update\n * @param requestId Id of the request which is triggered\n */\n addRequestOne<V extends EntityState<T> & AsyncStoreItem>(state: V, id: string | number | null | undefined, requestId: string): V;\n\n /**\n * Adds AsyncStoreItem properties for each entity matching the given ids, when a request is triggered\n * @param state Actual state\n * @param ids Ids of the entity to be updated with AsyncStoreItem properties\n * @param requestId Id of request which is triggered\n */\n addRequestMany<V extends EntityState<T>>(state: V, ids: (string | number)[], requestId: string): V;\n\n /**\n * Updates the state with the given entity. Update the global or the current entity's status if it exists.\n * @param state Actual state\n * @param entity Payload item;\n * @param requestId Id of request which has resolved if any\n */\n resolveRequestOne<V extends EntityState<T> & AsyncStoreItem>(state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<'id', string | number>, requestId?: string): V;\n\n /**\n * Updates the state with the given entity. Update the global or the current entity's status if it exists.\n * @param state Actual state\n * @param entity Payload item;\n * @param requestId Id of request which has resolved if any\n * @param idProperty Property of the entity containing its unique identifier\n */\n resolveRequestOne<V extends EntityState<T> & AsyncStoreItem, W extends keyof T>(state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<W, string | number>, requestId?: string, idProperty?: W): V;\n\n /**\n * Updates the state with the given entities. Updates also AsyncStoreItem properties of each entity, when a request is resolved.\n * @param state Actual state\n * @param entities Payload items;\n * @param requestId Id of request which has resolved if any\n */\n resolveRequestMany<V extends EntityState<T>>(state: V, entities: (Partial<T> & Record<'id', string | number>)[], requestId?: string): V;\n\n /**\n * Updates the state with the given entities. Updates also AsyncStoreItem properties of each entity, when a request is resolved.\n * @param state Actual state\n * @param entities Payload items;\n * @param requestId Id of request which has resolved if any\n * @param idProperty Property of the entity containing its unique identifier\n */\n resolveRequestMany<V extends EntityState<T>, W extends keyof T>(state: V, entities: (Partial<T> & Record<W, string | number>)[], requestId?: string, idProperty?: W): V;\n}\n\n/**\n * Create an Asynchronous Request Entity Adapter\n * @param adapter Entity Adapter\n */\nexport function createEntityAsyncRequestAdapter<T extends AsyncStoreItem>(adapter: EntityAdapter<T>): EntityAsyncRequestAdapter<T> {\n const addRequestOne: <V extends EntityState<T> & AsyncStoreItem>(state: V, id: string | number | null | undefined, requestId: string) => V = (state, id, requestId) => {\n const currentEntity = typeof id !== 'undefined' && id !== null && state.entities[id];\n if (currentEntity) {\n const changes = asyncStoreItemAdapter.addRequest(asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity), requestId);\n return adapter.updateOne({ id, changes } as Update<T>, state);\n }\n return asyncStoreItemAdapter.addRequest(state, requestId);\n };\n\n const addRequestMany: <V extends EntityState<T>>(state: V, ids: (string | number)[], requestId: string) => V = <V extends EntityState<T>>(state: V, ids: (string | number)[], requestId: string): V =>\n adapter.updateMany(ids.filter((id) => !!state.entities[id]).map((id) => ({\n id,\n changes: asyncStoreItemAdapter.addRequest(asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[id]!), requestId)\n } as Update<T>)\n ), state);\n\n const resolveRequestOne: <V extends EntityState<T> & AsyncStoreItem, W extends keyof T | 'id' = 'id'>\n (state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<W, string | number>, requestId?: string, idProperty?: W) => V = <V extends EntityState<T> & AsyncStoreItem, W extends keyof T | 'id'>\n (state: V, entity: EntityWithoutAsyncStoreItem<T> & Record<W, string | number>, requestId?: string, idProperty: W = 'id' as W): V => {\n const currentEntity = state.entities[entity[idProperty]];\n const newEntity = currentEntity\n ? asyncStoreItemAdapter.resolveRequest({ ...entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity) }, requestId)\n : asyncStoreItemAdapter.initialize(entity);\n state = asyncStoreItemAdapter.resolveRequest(state, requestId);\n return adapter.upsertOne(newEntity as T, state);\n };\n\n const resolveRequestMany: <V extends EntityState<T>, W extends keyof T | 'id' = 'id'>\n (state: V, entities: (Partial<T> & Record<W, string | number>)[], requestId?: string, idProperty?: W) => V = <V extends EntityState<T>, W extends keyof T | 'id'>\n (state: V, entities: (Partial<T> & Record<W, string | number>)[], requestId?: string, idProperty: W = 'id' as W): V =>\n adapter.updateMany(\n entities.filter((entity) => !!state.entities[entity[idProperty]]).map((entity) => {\n const model = { ...entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[entity[idProperty]]!) };\n return { id: entity[idProperty], changes: asyncStoreItemAdapter.resolveRequest(model, requestId) } as Update<T>;\n }\n ), state);\n\n const failRequestMany: <V extends EntityState<T> & AsyncStoreItem>\n (state: V, ids?: (string | number)[], requestId?: string) => V = <V extends EntityState<T> & AsyncStoreItem>\n (state: V, ids: (string | number)[] = [], requestId?: string): V => {\n if (ids.length > 0 && !ids.some((id) => state.entities[id] === undefined)) {\n return adapter.updateMany(ids.map((id) => ({\n id,\n changes: asyncStoreItemAdapter.failRequest(asyncStoreItemAdapter.extractAsyncStoreItem(state.entities[id]!), requestId)\n } as Update<T>)\n ), state);\n }\n return asyncStoreItemAdapter.failRequest(state, requestId);\n };\n\n return {\n ...adapter,\n failRequestMany,\n addRequestOne,\n addRequestMany,\n resolveRequestOne,\n resolveRequestMany\n };\n}\n","import {\n AsyncRequest,\n FromApiActionPayload,\n} from './async.interfaces';\n\n/**\n * Determine if the action is an AsyncRequest action\n * @param action Redux Action\n */\nexport function isCallAction<T = any>(action?: any): action is FromApiActionPayload<T> {\n if (!action) {\n return false;\n }\n\n return !!action.call && action.call instanceof Promise;\n}\n\n/**\n * Determine if the action is an AsyncRequest action with a Request ID\n * @param action Redux Action\n */\nexport function isIdentifiedCallAction<T = any>(action?: any): action is FromApiActionPayload<T> & AsyncRequest {\n return isCallAction(action) && typeof action.requestId !== 'undefined';\n}\n\n/**\n * Determine if the given item implements the AsyncRequest interface\n * @param item\n */\nexport function isAsyncRequest<T>(item: any): item is T & AsyncRequest {\n return typeof item.requestId !== 'undefined';\n}\n","import {\n Action,\n} from '@ngrx/store';\nimport {\n BehaviorSubject,\n EMPTY,\n from,\n identity,\n isObservable,\n merge,\n Observable,\n of,\n OperatorFunction,\n Subject,\n} from 'rxjs';\nimport {\n catchError,\n delay,\n filter,\n finalize,\n pairwise,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport {\n isIdentifiedCallAction,\n} from './async.helpers';\nimport {\n AsyncRequest,\n ExtractFromApiActionPayloadType,\n FromApiActionPayload,\n} from './async.interfaces';\n\n/**\n * Determine if the given parameter is a Promise\n * @param object\n */\nconst isPromise = <U>(object: U | Promise<U>): object is Promise<U> => object && typeof object === 'object' && typeof (object as any).then !== 'undefined';\n\n/**\n * Custom operator to use instead of SwitchMap with effects based on FromApi actions.\n * 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.\n * @param successHandler function that returns the action to emit in case the FromApi call is a success\n * @param errorHandler function that returns the action to emit in case the FromApi call fails\n * @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\n */\nexport function fromApiEffectSwitchMap<T extends FromApiActionPayload<any>, S extends ExtractFromApiActionPayloadType<T>, U extends Action, V extends Action, W extends Action>(\n successHandler: (result: S, action: T) => U | Observable<U> | Promise<U>,\n errorHandler?: (error: any, action: T) => Observable<V>,\n cancelRequestActionFactory?: (props: AsyncRequest, action: T) => W): OperatorFunction<T, U | V | W> {\n const pendingRequestIdsContext: Record<string, boolean> = {};\n\n return (source$) => source$.pipe(\n tap((action) => {\n if (isIdentifiedCallAction(action)) {\n pendingRequestIdsContext[action.requestId] = true;\n }\n }),\n startWith(undefined),\n pairwise(),\n switchMap(([previousAction, action]) => {\n if (!action) {\n return EMPTY;\n }\n const isPreviousActionStillRunning = isIdentifiedCallAction(previousAction) && pendingRequestIdsContext[previousAction.requestId];\n const cleanStack = () => {\n if (isIdentifiedCallAction(action)) {\n delete pendingRequestIdsContext[action.requestId];\n }\n };\n return from(action.call).pipe(\n tap(cleanStack),\n switchMap((result) => {\n const success = successHandler(result, action);\n return isObservable(success) ? success : (isPromise(success) ? success : of(success));\n }),\n catchError((error) => {\n cleanStack();\n return errorHandler?.(error, action) || EMPTY;\n }),\n isPreviousActionStillRunning && cancelRequestActionFactory ? startWith(cancelRequestActionFactory({ requestId: previousAction.requestId }, action)) : identity\n );\n })\n );\n}\n\n/**\n * Same as {@link fromApiEffectSwitchMap}, instead one inner subscription is kept by id.\n * @param successHandler\n * @param errorHandler\n * @param cancelRequestActionFactory\n * @param cleanUpTimer\n */\nexport function fromApiEffectSwitchMapById<T extends FromApiActionPayload<any> & { id: string },\n S extends ExtractFromApiActionPayloadType<T>,\n U extends Action,\n V extends Action,\n W extends Action>(\n successHandler: (result: S, action: T) => U | Observable<U> | Promise<U>,\n errorHandler?: (error: any, action: T) => Observable<V>,\n cancelRequestActionFactory?: (props: AsyncRequest, action: T) => W,\n cleanUpTimer?: number\n): OperatorFunction<T, U | V | W> {\n const innerSourcesById: Record<string, [Subject<any>, Observable<any>]> = {};\n return (source$: Observable<T>) => {\n return source$.pipe(\n filter((action: T) => {\n if (!isIdentifiedCallAction(action) || !action.id) {\n return false;\n }\n if (isIdentifiedCallAction(action) && innerSourcesById[action.id]) {\n innerSourcesById[action.id][0].next(action);\n return false;\n }\n return true;\n }),\n switchMap((action: T) => {\n const newIdSubject = new BehaviorSubject(action);\n const newId$ = newIdSubject.pipe(\n fromApiEffectSwitchMap(\n successHandler,\n errorHandler,\n cancelRequestActionFactory\n )\n );\n innerSourcesById[action.id] = [newIdSubject, newId$];\n if (cleanUpTimer !== undefined) {\n newIdSubject.pipe(\n switchMap((myAction) => from(myAction.call).pipe(\n delay(cleanUpTimer),\n finalize(() => {\n delete innerSourcesById[myAction.id];\n newIdSubject.complete();\n })\n ))\n ).subscribe();\n }\n const streams = Object.values(innerSourcesById).map(([_, obs]) => obs);\n return merge(...streams);\n })\n );\n };\n}\n","import {\n v4,\n} from 'uuid';\nimport {\n isAsyncRequest,\n} from './async.helpers';\nimport {\n AsyncRequest,\n} from './async.interfaces';\n\n/**\n * Returns a creator that makes sure that requestId is defined in the action's properties by generating one\n * if needed.\n */\nexport const asyncProps = <P extends object>(): (props: P) => P & AsyncRequest => {\n return (props: P) => isAsyncRequest(props) ? props : { ...props, requestId: v4() };\n};\n","import type {\n EntityState,\n} from '@ngrx/entity';\nimport {\n asyncStoreItemAdapter,\n} from './async.adapter';\nimport {\n AsyncStoreItem,\n EntityStatus,\n} from './async.interfaces';\n\n/**\n * Serializer for asynchronous store.\n * @param state State of an asynchronous store to serialize\n * @returns a plain json object to pass to json.stringify\n */\nexport function asyncSerializer<T extends AsyncStoreItem>(state: T) {\n return asyncStoreItemAdapter.clearAsyncStoreItem(state);\n}\n\n/**\n * Serializer for asynchronous entity store.\n * @param state State of an asynchronous entity store to serialize\n * @returns a plain json object to pass to json.stringify\n */\nexport function asyncEntitySerializer<T extends AsyncStoreItem & EntityState<AsyncStoreItem>>(state: T) {\n const entities = (state.ids as string[]).reduce((entitiesAcc, entityId) => {\n entitiesAcc[entityId] = asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]!);\n return entitiesAcc;\n }, {} as typeof state.entities);\n\n return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };\n}\n\n/**\n * Serializer for asynchronous entity store with status.\n * @param state State of an asynchronous entity store with status to serialize\n * @returns a plain json object to pass to json.stringify\n */\nexport function asyncEntityWithStatusSerializer<T extends AsyncStoreItem & EntityState<AsyncStoreItem & { status: EntityStatus<T['entities']['status']> }>>(state: T) {\n const entities = (state.ids as string[]).reduce((entitiesAcc, entityId) => {\n entitiesAcc[entityId] = { ...asyncStoreItemAdapter.clearAsyncStoreItem(state.entities[entityId]!), status: {} };\n return entitiesAcc;\n }, {} as typeof state.entities);\n\n return { ...asyncStoreItemAdapter.clearAsyncStoreItem(state), entities };\n}\n","/**\n * Object that define how to serialize a specific state\n */\nexport interface Serializer<T> {\n serialize?: (obj: T) => any;\n deserialize?: (data?: any) => T;\n reviver?: (key: string, value: any) => any;\n replacer?: (key: string, value: any) => any;\n initialState?: T;\n}\n\nexport class StateSerializer<T> implements Serializer<T> {\n public serialize?: (obj: T) => any;\n public deserialize?: (data?: any) => T;\n public replacer?: (key: string, value: any) => any;\n public initialState?: T;\n\n constructor(serializer: Serializer<T>) {\n this.serialize = serializer.serialize || this.serialize;\n this.deserialize = serializer.deserialize || this.deserialize;\n this.reviver = serializer.reviver || this.reviver;\n this.replacer = serializer.replacer || this.replacer;\n this.initialState = serializer.initialState || this.initialState;\n }\n\n public reviver = (_: string, value: any): any => value;\n}\n\nexport interface LocalStateModel {\n /**\n * Temporary ID of the model in the dictionary\n */\n tid: string;\n}\n\n/**\n * Adds an `id` to the given type\n */\nexport type Idfy<T> = T & { id: string | number };\n\n/**\n * Payload to update actions\n */\nexport interface UpdateActionPayload<T> {\n stateDetails: Partial<T>;\n}\n\n/**\n * Payload to set actions\n */\nexport interface SetActionPayload<T> {\n stateDetails: T;\n}\n\n/**\n * Payload to set state actions\n */\nexport interface SetStateActionPayload<T> {\n state: T;\n}\n/**\n * Payload to fail actions\n */\nexport interface FailActionPayload<T> {\n error?: T;\n}\n\nexport type Keep<T, K extends keyof T> = Partial<T> & Pick<T, K>;\n\n/** Payload to update entities actions */\nexport interface UpdateEntitiesActionPayload<T, K extends keyof T> {\n entities: Keep<T, K>[];\n}\n\n/** Payload to update entities actions with a field ID */\nexport interface UpdateEntitiesActionPayloadWithId<T extends { id: string | number }> {\n entities: Keep<T, 'id'>[];\n}\n\n/** Payload to update entities actions */\nexport interface UpdateEntityActionPayload<T, K extends keyof T> {\n entity: Keep<T, K>;\n}\n\n/** Payload to update entities actions with a field ID */\nexport interface UpdateEntityActionPayloadWithId<T extends { id: string | number }> {\n entity: Keep<T, 'id'>;\n}\n\n/** Payload to set entities and upsert entities actions */\nexport interface SetEntitiesActionPayload<T> {\n entities: T[];\n}\n\n/** Payload to set entity and upsert entity actions */\nexport interface SetEntityActionPayload<T> {\n entity: T;\n}\n\n/** Payload to fail entities actions */\nexport interface FailEntitiesActionPayload<T> extends FailActionPayload<T> {\n ids?: (string | number)[];\n}\n\n/**\n * Payload to clear the store in case of failure\n */\nexport interface ClearOnFailurePayload {\n /** Clear store on failure */\n clearOnFailure?: boolean;\n}\n","import type {\n BootstrapConfig,\n Dataset,\n} from '../../core/application/dgp-interfaces';\n\n/**\n * Pad number\n * @param val\n * @param digits\n */\nexport function padNumber(val: number, digits = 2): string {\n const str = `${val}`;\n return '0'.repeat(Math.max(0, digits - str.length)) + str;\n}\n\n/**\n * Returns TRUE if bootstrap config environment is production FALSE otherwise\n * @param dataset\n * @returns TRUE if bootstrap config environment is production FALSE otherwise\n */\nexport function isProductionEnvironment(dataset: Dataset): boolean {\n const bootstrapConfig: BootstrapConfig = dataset.bootstrapconfig && JSON.parse(dataset.bootstrapconfig);\n return bootstrapConfig?.environment === 'prod';\n}\n","/** Reviver Mapper to detect and create object on deepFill */\nexport interface PrimitiveReviverMapper<T = any> {\n /** Condition to fill to be determine as */\n condition: (data: any) => boolean;\n\n /**\n * Construct the primitive type if needed\n * @param data to be constructed\n * @default {@link defaultConstruct}\n */\n construct?: (data: any) => T;\n}\n\nconst defaultConstruct = (data: any) => data;\n\nconst isDate = (data: any) => data instanceof Date && !Number.isNaN(data as any);\n\n/**\n * Check if an object is not an array or a date\n * @param obj\n * @param additionalMappers\n */\nexport function isObject(obj: any, additionalMappers?: PrimitiveReviverMapper[]) {\n return obj instanceof Object && !Array.isArray(obj) && !additionalMappers?.some((mapper) => mapper.condition(obj)) && !isDate(obj);\n}\n\n/**\n * Return a new reference of the given object\n * @param obj\n * @param additionalMappers\n */\nexport function immutablePrimitive(obj: any, additionalMappers?: PrimitiveReviverMapper[]) {\n if (Array.isArray(obj)) {\n return obj.slice();\n }\n\n const matchingPrimitive = additionalMappers?.find((mapper) => mapper.condition(obj));\n const resolvedType = matchingPrimitive && ((matchingPrimitive.construct || defaultConstruct)(obj));\n if (resolvedType !== undefined) {\n return resolvedType;\n }\n if (isDate(obj)) {\n return new Date(obj);\n } else if (obj instanceof Object) {\n return deepFill(obj, obj, additionalMappers);\n } else {\n return obj;\n }\n}\n\n/**\n * Deep fill of base object using source\n * It will do a deep merge of the objects, overriding arrays\n * All properties not present in source, but present in base, will remain\n * @param base\n * @param source\n * @param additionalMappers Map of conditions of type mapper\n */\nexport function deepFill<T extends { [x: string]: any }>(base: T, source?: { [x: string]: any }, additionalMappers?: PrimitiveReviverMapper[]): T {\n if (typeof source === 'undefined') {\n return deepFill(base, base, additionalMappers);\n }\n if (!isObject(base, additionalMappers)) {\n return immutablePrimitive(typeof source === 'undefined' ? base : source, additionalMappers);\n }\n const newObj = { ...base };\n for (const key in base) {\n if (source[key] === null) {\n newObj[key] = immutablePrimitive(null, additionalMappers);\n } else if (key in source && typeof base[key] === typeof source[key]) {\n const keyOfSource = source[key];\n newObj[key] = typeof keyOfSource === 'undefined' ? immutablePrimitive(base[key], additionalMappers) : deepFill(base[key], keyOfSource, additionalMappers);\n } else {\n newObj[key] = immutablePrimitive(base[key], additionalMappers);\n }\n }\n\n // getting keys present in source and not present in base\n for (const key in source) {\n if (!(key in newObj)) {\n newObj[key as keyof T] = immutablePrimitive(source[key], additionalMappers);\n }\n }\n return newObj;\n}\n","import {\n animationFrameScheduler,\n from,\n Observable,\n observeOn,\n of,\n} from 'rxjs';\nimport {\n bufferCount,\n concatMap,\n delay,\n mergeMap,\n scan,\n tap,\n} from 'rxjs/operators';\n\n/**\n * Buffers and emits data for lazy/progressive rendering of big lists\n * That could solve issues with long-running tasks when trying to render an array\n * of similar components.\n * @param delayMs Delay between data emits\n * @param concurrency Amount of elements that should be emitted at once\n */\nexport function lazyArray<T>(delayMs = 0, concurrency = 2) {\n let isFirstEmission = true;\n return (source$: Observable<T[]>) => {\n return source$.pipe(\n mergeMap((items) => {\n if (!isFirstEmission) {\n return of(items);\n }\n\n const items$ = from(items);\n\n return items$.pipe(\n bufferCount(concurrency),\n concatMap((value, index) => {\n return of(value).pipe(\n observeOn(animationFrameScheduler),\n delay(index * delayMs)\n );\n }),\n scan((acc: T[], steps: T[]) => {\n return [...acc, ...steps];\n }, []),\n tap((scannedItems: T[]) => {\n const scanDidComplete = scannedItems.length === items.length;\n\n if (scanDidComplete) {\n isFirstEmission = false;\n }\n })\n );\n })\n );\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["filter"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -434,7 +434,7 @@ interface OtterMessageContent<DataType extends string = string> {
|
|
|
434
434
|
interface OtterMessage<Content extends OtterMessageContent = OtterMessageContent, Target extends string | undefined = undefined | string> {
|
|
435
435
|
/** Type of the message */
|
|
436
436
|
type: typeof otterMessageType;
|
|
437
|
-
/** Version of the message (default to the
|
|
437
|
+
/** Version of the message (default to the `@o3r/core` version ) */
|
|
438
438
|
version?: string;
|
|
439
439
|
/** Target of the message */
|
|
440
440
|
to: Target;
|
|
@@ -910,7 +910,7 @@ interface PrimitiveReviverMapper<T = any> {
|
|
|
910
910
|
/**
|
|
911
911
|
* Construct the primitive type if needed
|
|
912
912
|
* @param data to be constructed
|
|
913
|
-
* @default {@
|
|
913
|
+
* @default {@link defaultConstruct}
|
|
914
914
|
*/
|
|
915
915
|
construct?: (data: any) => T;
|
|
916
916
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/core",
|
|
3
|
-
"version": "14.0.0-next.
|
|
3
|
+
"version": "14.0.0-next.7",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@ngrx/entity": "^20.0.0",
|
|
39
39
|
"@ngrx/store": "^20.0.0",
|
|
40
40
|
"@nx/angular": "~21.6.0",
|
|
41
|
-
"@o3r/telemetry": "~14.0.0-next.
|
|
41
|
+
"@o3r/telemetry": "~14.0.0-next.7",
|
|
42
42
|
"@schematics/angular": "^20.0.0",
|
|
43
43
|
"chokidar": "^4.0.3",
|
|
44
44
|
"globby": "^11.1.0",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@o3r/schematics": "~14.0.0-next.
|
|
79
|
+
"@o3r/schematics": "~14.0.0-next.7",
|
|
80
80
|
"tslib": "^2.6.2",
|
|
81
81
|
"uuid": "^11.0.5"
|
|
82
82
|
},
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@ngrx/store": "~20.1.0",
|
|
89
89
|
"@ngrx/store-devtools": "~20.1.0",
|
|
90
90
|
"@nx/eslint-plugin": "~21.6.0",
|
|
91
|
-
"@o3r/store-sync": "~14.0.0-next.
|
|
91
|
+
"@o3r/store-sync": "~14.0.0-next.7",
|
|
92
92
|
"@stylistic/eslint-plugin": "~5.6.0",
|
|
93
93
|
"@types/jest": "~30.0.0",
|
|
94
94
|
"@typescript-eslint/eslint-plugin": "~8.47.0",
|
|
@@ -2,7 +2,7 @@ import { Rule } from '@angular-devkit/schematics';
|
|
|
2
2
|
import { type SetupDependenciesOptions } from '@o3r/schematics';
|
|
3
3
|
/**
|
|
4
4
|
* Add additional modules for dev only
|
|
5
|
-
* @param options @
|
|
5
|
+
* @param options {@link RuleFactory.options}
|
|
6
6
|
* @param options.projectName
|
|
7
7
|
* @param options.workingDirectory the directory where to execute the rule factory
|
|
8
8
|
* @param dependenciesSetupConfig
|
|
@@ -12,7 +12,7 @@ const update_package_json_1 = require("../update-package-json");
|
|
|
12
12
|
const ngrxStoreDevtoolsDep = '@ngrx/store-devtools';
|
|
13
13
|
/**
|
|
14
14
|
* Add additional modules for dev only
|
|
15
|
-
* @param options @
|
|
15
|
+
* @param options {@link RuleFactory.options}
|
|
16
16
|
* @param options.projectName
|
|
17
17
|
* @param options.workingDirectory the directory where to execute the rule factory
|
|
18
18
|
* @param dependenciesSetupConfig
|
|
@@ -9,7 +9,7 @@ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
|
|
|
9
9
|
const dependencies_1 = require("@schematics/angular/utility/dependencies");
|
|
10
10
|
/**
|
|
11
11
|
* Enable customization capabilities
|
|
12
|
-
* @param rootPath @
|
|
12
|
+
* @param rootPath {@link RuleFactory.rootPath}
|
|
13
13
|
* @param o3rCoreVersion
|
|
14
14
|
* @param options
|
|
15
15
|
* @param options.projectName
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Rule } from '@angular-devkit/schematics';
|
|
2
2
|
/**
|
|
3
3
|
* Update Otter environment variable for schematics
|
|
4
|
-
* @param options @
|
|
4
|
+
* @param options {@link RuleFactory.options}
|
|
5
5
|
* @param options.projectName
|
|
6
6
|
* @param options.enableStyling
|
|
7
7
|
* @param options.enableAnalytics
|
|
8
8
|
* @param options.workingDirectory
|
|
9
|
-
* @param _rootPath @
|
|
9
|
+
* @param _rootPath {@link RuleFactory.rootPath}
|
|
10
10
|
*/
|
|
11
11
|
export declare function updateOtterEnvironmentAdapter(options: {
|
|
12
12
|
projectName?: string | null | undefined;
|
|
@@ -23,12 +23,12 @@ const editTsConfigJson = (tree) => {
|
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
25
|
* Update Otter environment variable for schematics
|
|
26
|
-
* @param options @
|
|
26
|
+
* @param options {@link RuleFactory.options}
|
|
27
27
|
* @param options.projectName
|
|
28
28
|
* @param options.enableStyling
|
|
29
29
|
* @param options.enableAnalytics
|
|
30
30
|
* @param options.workingDirectory
|
|
31
|
-
* @param _rootPath @
|
|
31
|
+
* @param _rootPath {@link RuleFactory.rootPath}
|
|
32
32
|
*/
|
|
33
33
|
function updateOtterEnvironmentAdapter(options, _rootPath) {
|
|
34
34
|
/**
|
|
@@ -3,7 +3,7 @@ import { type SetupDependenciesOptions } from '@o3r/schematics';
|
|
|
3
3
|
import { WorkspaceProject } from '@o3r/schematics';
|
|
4
4
|
/**
|
|
5
5
|
* Add Redux Store support
|
|
6
|
-
* @param options @
|
|
6
|
+
* @param options {@link RuleFactory.options}
|
|
7
7
|
* @param options.projectName
|
|
8
8
|
* @param options.workingDirector
|
|
9
9
|
* @param options.dependenciesSetupConfig
|
|
@@ -19,7 +19,7 @@ const ngrxRouterStore = '@ngrx/router-store';
|
|
|
19
19
|
const ngrxRouterStoreDevToolDep = '@ngrx/store-devtools';
|
|
20
20
|
/**
|
|
21
21
|
* Add Redux Store support
|
|
22
|
-
* @param options @
|
|
22
|
+
* @param options {@link RuleFactory.options}
|
|
23
23
|
* @param options.projectName
|
|
24
24
|
* @param options.workingDirector
|
|
25
25
|
* @param options.dependenciesSetupConfig
|