Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 39x 209x 39x 120x 96x 27x 106x 48x 11x 39x 69x 1x 7x 7x 39x 7x 39x 30x | import { memoize } from 'lodash-es'; import { ContentConfigurationParameters } from 'ish-core/models/content-configuration-parameter/content-configuration-parameter.mapper'; import { ContentPageletEntryPoint } from 'ish-core/models/content-pagelet-entry-point/content-pagelet-entry-point.model'; import { ContentPagelet } from 'ish-core/models/content-pagelet/content-pagelet.model'; import { ContentSlot } from 'ish-core/models/content-slot/content-slot.model'; import { SeoAttributes } from 'ish-core/models/seo-attributes/seo-attributes.model'; export interface ContentConfigurationParameterView { hasParam(key: string): boolean; stringParam(key: string, defaultValue?: string): string; numberParam(key: string, defaultValue?: number): number; booleanParam(key: string, defaultValue?: boolean): boolean; configParam<T extends object>(key: string): T; } interface ContentEntryPointView { id: string; domain: string; displayName?: string; pageletIDs: string[]; } interface ContentSlotView extends ContentEntryPointView, ContentConfigurationParameterView {} export interface ContentPageletEntryPointView extends ContentEntryPointView, ContentConfigurationParameterView { id: string; domain: string; displayName: string; resourceSetId: string; pageletIDs: string[]; seoAttributes: SeoAttributes; } export interface ContentPageletView extends ContentConfigurationParameterView { definitionQualifiedName: string; configurationParameters: ContentConfigurationParameters; id: string; domain: string; displayName: string; slot(qualifiedName: string): ContentSlotView; } const paramMemoize = <T>(key: string, defaultValue: T) => JSON.stringify({ key, defaultValue }); export const createContentConfigurationParameterView = ( params: ContentConfigurationParameters ): ContentConfigurationParameterView => ({ hasParam: memoize(key => Object.keys(params).includes(key)), booleanParam: memoize( (key, defaultValue = undefined) => Object.keys(params).includes(key) ? typeof params[key] === 'string' && (params[key] as string).toLowerCase().trim() === 'true' : defaultValue, paramMemoize ), stringParam: memoize( (key, defaultValue = undefined) => Object.keys(params).includes(key) ? typeof params[key] === 'string' ? (params[key] as string) : JSON.stringify(params[key]) : defaultValue, paramMemoize ), numberParam: memoize( (key, defaultValue = NaN) => Number(params[key]) === 0 ? Number(params[key]) : Number(params[key]) || defaultValue, paramMemoize ), configParam: <T extends object>(key: string) => params[key] as T, }); export const createContentPageletView = (pagelet: ContentPagelet): ContentPageletView => pagelet && { definitionQualifiedName: pagelet.definitionQualifiedName, configurationParameters: pagelet.configurationParameters, id: pagelet.id, domain: pagelet.domain, displayName: pagelet.displayName, slot: !pagelet.slots ? () => undefined : memoize(qualifiedName => createContentSlotView( pagelet, pagelet.slots.find(slot => slot.definitionQualifiedName === qualifiedName) ) ), ...createContentConfigurationParameterView(pagelet.configurationParameters || {}), }; const createContentSlotView = (pagelet: ContentPagelet, slot: ContentSlot): ContentSlotView => slot && { id: slot.definitionQualifiedName, domain: pagelet.domain, pageletIDs: slot.pageletIDs || [], ...createContentConfigurationParameterView(slot.configurationParameters || {}), displayName: slot.displayName, }; export const createContentPageletEntryPointView = ( pageletEntryPoint: ContentPageletEntryPoint ): ContentPageletEntryPointView => pageletEntryPoint && { id: pageletEntryPoint.id, domain: pageletEntryPoint.domain, resourceSetId: pageletEntryPoint.resourceSetId, displayName: pageletEntryPoint.displayName, pageletIDs: pageletEntryPoint.pageletIDs || [], ...createContentConfigurationParameterView(pageletEntryPoint.configurationParameters || {}), seoAttributes: pageletEntryPoint.seoAttributes, }; |