@zengenti/contensis-react-base 4.0.0-beta.9 → 4.0.0
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/README.md +14 -1
- package/cjs/{App-vZrUfVgQ.js → App-CNylISW7.js} +546 -104
- package/cjs/App-CNylISW7.js.map +1 -0
- package/cjs/{ChangePassword.container-ECjEXixF.js → ChangePassword.container-C4Du3Wb1.js} +57 -50
- package/cjs/ChangePassword.container-C4Du3Wb1.js.map +1 -0
- package/cjs/{SSRContext-DVj_QAC1.js → ContensisDeliveryApi-MfcvdfDR.js} +32 -74
- package/cjs/ContensisDeliveryApi-MfcvdfDR.js.map +1 -0
- package/cjs/CookieConstants-DfPiWCRZ.js +12 -0
- package/cjs/CookieConstants-DfPiWCRZ.js.map +1 -0
- package/{esm/CookieHelper.class-FTURFpz3.js → cjs/CookieHelper.class-Det3qfdU.js} +4 -6
- package/cjs/CookieHelper.class-Det3qfdU.js.map +1 -0
- package/cjs/{RouteLoader-D5Yg7EB5.js → RouteLoader-DJeM8cym.js} +17 -9
- package/cjs/RouteLoader-DJeM8cym.js.map +1 -0
- package/cjs/SSRContext-tMufQDHY.js +116 -0
- package/cjs/SSRContext-tMufQDHY.js.map +1 -0
- package/cjs/ToJs-BsWqWjdm.js +23 -0
- package/cjs/ToJs-BsWqWjdm.js.map +1 -0
- package/cjs/{VersionInfo-B_dKCubg.js → VersionInfo-zFPsvS8q.js} +3 -25
- package/cjs/VersionInfo-zFPsvS8q.js.map +1 -0
- package/cjs/client.js +63 -65
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +208 -119
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/i18n.js +75 -0
- package/cjs/i18n.js.map +1 -0
- package/cjs/{ToJs-C9jwV7YB.js → matchGroups-dqONU-vY.js} +2 -22
- package/cjs/matchGroups-dqONU-vY.js.map +1 -0
- package/cjs/redux.js +8 -6
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +15 -7
- package/cjs/routing.js.map +1 -1
- package/cjs/{sagas-BVX4Ps1e.js → sagas-BCy9u6zA.js} +523 -375
- package/cjs/sagas-BCy9u6zA.js.map +1 -0
- package/cjs/search.js +54 -29
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-wCs5fHD4.js → selectors-BrxJ8-F8.js} +27 -6
- package/cjs/selectors-BrxJ8-F8.js.map +1 -0
- package/cjs/selectors-DAQR0uZa.js +18 -0
- package/cjs/selectors-DAQR0uZa.js.map +1 -0
- package/cjs/slice-5xJMH24n.js +69 -0
- package/cjs/slice-5xJMH24n.js.map +1 -0
- package/cjs/{store-D07FOXvM.js → store-B7SJs5Hf.js} +64 -5
- package/cjs/store-B7SJs5Hf.js.map +1 -0
- package/cjs/urls-DGZlAs0y.js +25 -0
- package/cjs/urls-DGZlAs0y.js.map +1 -0
- package/cjs/user.js +20 -17
- package/cjs/user.js.map +1 -1
- package/cjs/util-eOjxDjxF.js +148 -0
- package/cjs/util-eOjxDjxF.js.map +1 -0
- package/cjs/util.js +80 -22
- package/cjs/util.js.map +1 -1
- package/cjs/{version-CM-bJ62L.js → version-rFG9Y6_B.js} +2 -2
- package/cjs/{version-CM-bJ62L.js.map → version-rFG9Y6_B.js.map} +1 -1
- package/cjs/{version-B7XFkBhY.js → version-yjHMrfVz.js} +15 -16
- package/cjs/version-yjHMrfVz.js.map +1 -0
- package/esm/{App-DLZweVSp.js → App-Bvs7Km54.js} +507 -66
- package/esm/App-Bvs7Km54.js.map +1 -0
- package/esm/{ChangePassword.container-BgzIy8dA.js → ChangePassword.container-CUBtn82K.js} +19 -13
- package/esm/ChangePassword.container-CUBtn82K.js.map +1 -0
- package/esm/{SSRContext-BE8ElZ3X.js → ContensisDeliveryApi-LWYXevZ1.js} +30 -67
- package/esm/ContensisDeliveryApi-LWYXevZ1.js.map +1 -0
- package/esm/CookieConstants-DEmbwzYr.js +7 -0
- package/esm/CookieConstants-DEmbwzYr.js.map +1 -0
- package/{cjs/CookieHelper.class-C3Eqoze9.js → esm/CookieHelper.class-C6rTRl_1.js} +2 -14
- package/esm/CookieHelper.class-C6rTRl_1.js.map +1 -0
- package/esm/{RouteLoader-xeQBXywk.js → RouteLoader-CzrlySZf.js} +14 -6
- package/esm/RouteLoader-CzrlySZf.js.map +1 -0
- package/esm/SSRContext-Bxtg1KGv.js +106 -0
- package/esm/SSRContext-Bxtg1KGv.js.map +1 -0
- package/esm/ToJs-BnRRHk6f.js +17 -0
- package/esm/ToJs-BnRRHk6f.js.map +1 -0
- package/esm/{VersionInfo-Cno7K0OA.js → VersionInfo-By2ZCZOh.js} +4 -24
- package/esm/VersionInfo-By2ZCZOh.js.map +1 -0
- package/esm/client.js +63 -64
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +201 -114
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/i18n.js +64 -0
- package/esm/i18n.js.map +1 -0
- package/esm/{ToJs-CNzfvyxJ.js → matchGroups-_w8BwzCC.js} +3 -18
- package/esm/matchGroups-_w8BwzCC.js.map +1 -0
- package/esm/redux.js +11 -8
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +14 -7
- package/esm/routing.js.map +1 -1
- package/esm/{sagas-JI51CS37.js → sagas-Fr9yRduO.js} +511 -362
- package/esm/sagas-Fr9yRduO.js.map +1 -0
- package/esm/search.js +73 -47
- package/esm/search.js.map +1 -1
- package/esm/{selectors-DO2ocdOp.js → selectors-8ROQrTd7.js} +25 -7
- package/esm/selectors-8ROQrTd7.js.map +1 -0
- package/esm/selectors-DcmvOeX2.js +10 -0
- package/esm/selectors-DcmvOeX2.js.map +1 -0
- package/esm/slice-C6JLQik8.js +63 -0
- package/esm/slice-C6JLQik8.js.map +1 -0
- package/esm/{store-3u0RzHZ0.js → store-B4IrBYHm.js} +64 -6
- package/esm/store-B4IrBYHm.js.map +1 -0
- package/esm/urls-tLxo_skx.js +22 -0
- package/esm/urls-tLxo_skx.js.map +1 -0
- package/esm/user.js +9 -6
- package/esm/user.js.map +1 -1
- package/esm/util-Bl2u6LpY.js +136 -0
- package/esm/util-Bl2u6LpY.js.map +1 -0
- package/esm/util.js +58 -14
- package/esm/util.js.map +1 -1
- package/esm/{version-wnf-TITV.js → version-BQAL8sQO.js} +2 -2
- package/esm/{version-wnf-TITV.js.map → version-BQAL8sQO.js.map} +1 -1
- package/esm/{version-BlsI7hX2.js → version-CA9Mdm3A.js} +16 -16
- package/esm/version-CA9Mdm3A.js.map +1 -0
- package/i18n/package.json +5 -0
- package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +1 -1
- package/models/app/pages/VersionInfo/components/VersionInfo.styled.d.ts +1 -2
- package/models/i18n/index.d.ts +5 -0
- package/models/i18n/redux/sagas.d.ts +19 -0
- package/models/i18n/redux/selectors.d.ts +11 -0
- package/models/i18n/redux/slice.d.ts +198 -0
- package/models/i18n/routes.d.ts +8 -0
- package/models/i18n/useI18n.hook.d.ts +20 -0
- package/models/index.d.ts +1 -0
- package/models/models/AppState.d.ts +2 -0
- package/models/models/ContentTypeMapping.d.ts +6 -1
- package/models/models/EntryMapper.d.ts +2 -1
- package/models/models/Locales.d.ts +11 -0
- package/models/models/MatchedRoute.d.ts +5 -1
- package/models/models/RouteComponent.d.ts +0 -1
- package/models/models/RouteNode.d.ts +4 -2
- package/models/models/SSRContext.d.ts +4 -4
- package/models/models/StaticRoute.d.ts +12 -1
- package/models/models/WithEvents.d.ts +8 -0
- package/models/models/config/AppConfig.d.ts +2 -0
- package/models/models/config/I18n.d.ts +38 -0
- package/models/models/config/ServerConfig.d.ts +14 -0
- package/models/redux/index.d.ts +2 -1
- package/models/redux/sagas/index.d.ts +3 -1
- package/models/redux/sagas/injector.d.ts +13 -0
- package/models/redux/store/injectors/index.d.ts +26 -0
- package/models/redux/store/injectors/inject.d.ts +24 -0
- package/models/redux/store/injectors/util.d.ts +2 -0
- package/models/redux/store/store.d.ts +13 -4
- package/models/redux/util.d.ts +1 -1
- package/models/routing/components/RouteLoader.d.ts +3 -3
- package/models/routing/httpContext.d.ts +0 -1
- package/models/routing/index.d.ts +1 -0
- package/models/routing/redux/actions.d.ts +1 -1
- package/models/routing/redux/invokeSearch.d.ts +22 -0
- package/models/routing/redux/selectors.d.ts +47 -4
- package/models/routing/util/expressions.d.ts +1 -1
- package/models/routing/util/find-contenttype-mapping.d.ts +3 -1
- package/models/search/containers/withListing.d.ts +1 -1
- package/models/search/containers/withSearch.d.ts +1 -1
- package/models/search/models/Queries.d.ts +3 -5
- package/models/search/models/Search.d.ts +43 -13
- package/models/search/models/SearchActions.d.ts +61 -18
- package/models/search/models/SearchProps.d.ts +11 -10
- package/models/search/models/SearchState.d.ts +23 -2
- package/models/search/models/SearchUtil.d.ts +3 -3
- package/models/search/redux/getIn.d.ts +2 -2
- package/models/search/redux/reducers.d.ts +3 -4
- package/models/search/redux/sagas.d.ts +13 -14
- package/models/search/redux/schema.d.ts +3 -3
- package/models/search/redux/selectors.d.ts +64 -42
- package/models/search/redux/util.d.ts +10 -1
- package/models/search/search/ContensisDeliveryApi.d.ts +6 -26
- package/models/search/search/expressions.d.ts +6 -4
- package/models/search/search/util.d.ts +9 -7
- package/models/search/transformations/state-to-queryparams.mapper.d.ts +1 -1
- package/models/server/features/linkdepth-api/search.d.ts +1 -1
- package/models/server/features/response-handler/render-stream.d.ts +2 -4
- package/models/server/features/static-assets/index.d.ts +4 -3
- package/models/server/internalServer.d.ts +1 -2
- package/models/server/middleware/subsiteDebug.d.ts +11 -0
- package/models/server/root.d.ts +3 -0
- package/models/server/util/bundles.d.ts +9 -9
- package/models/server/util/jsx.d.ts +2 -14
- package/models/user/components.styled/Login.styled.d.ts +1 -1
- package/models/user/components.styled/LoginForm.styled.d.ts +1 -1
- package/models/user/hocs/withRegistration.d.ts +1 -1
- package/models/util/CachedDeliveryApi.d.ts +8 -2
- package/models/util/ContensisDeliveryApi.d.ts +2 -4
- package/models/util/NoSSR.d.ts +6 -0
- package/models/util/SSRContext.d.ts +3 -19
- package/models/util/donotuse_useHistory.d.ts +6 -0
- package/models/util/errors.d.ts +16 -0
- package/models/util/index.d.ts +7 -2
- package/models/util/subsite.d.ts +12 -0
- package/models/util/urls.d.ts +1 -2
- package/models/util/useIsClient.d.ts +6 -0
- package/package.json +37 -39
- package/cjs/App-vZrUfVgQ.js.map +0 -1
- package/cjs/ChangePassword.container-ECjEXixF.js.map +0 -1
- package/cjs/CookieHelper.class-C3Eqoze9.js.map +0 -1
- package/cjs/RouteLoader-D5Yg7EB5.js.map +0 -1
- package/cjs/SSRContext-DVj_QAC1.js.map +0 -1
- package/cjs/ToJs-C9jwV7YB.js.map +0 -1
- package/cjs/VersionInfo-B_dKCubg.js.map +0 -1
- package/cjs/sagas-BVX4Ps1e.js.map +0 -1
- package/cjs/selectors-wCs5fHD4.js.map +0 -1
- package/cjs/store-D07FOXvM.js.map +0 -1
- package/cjs/version-B7XFkBhY.js.map +0 -1
- package/esm/App-DLZweVSp.js.map +0 -1
- package/esm/ChangePassword.container-BgzIy8dA.js.map +0 -1
- package/esm/CookieHelper.class-FTURFpz3.js.map +0 -1
- package/esm/RouteLoader-xeQBXywk.js.map +0 -1
- package/esm/SSRContext-BE8ElZ3X.js.map +0 -1
- package/esm/ToJs-CNzfvyxJ.js.map +0 -1
- package/esm/VersionInfo-Cno7K0OA.js.map +0 -1
- package/esm/sagas-JI51CS37.js.map +0 -1
- package/esm/selectors-DO2ocdOp.js.map +0 -1
- package/esm/store-3u0RzHZ0.js.map +0 -1
- package/esm/version-BlsI7hX2.js.map +0 -1
- package/models/redux/store/injectors.d.ts +0 -31
- package/models/search/search/ToJs.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contensis-react-base.js","sources":["../src/server/features/linkdepth-api/util.ts","../src/server/features/linkdepth-api/search.ts","../src/server/features/linkdepth-api/QueryLevelResults.ts","../src/server/features/linkdepth-api/LinkDepthSearchService.ts","../src/server/features/linkdepth-api/api.ts","../src/server/features/reverse-proxy/index.ts","../src/server/features/caching/cacheDuration.schema.ts","../src/server/util/staticPaths.ts","../src/server/middleware/bundleManipulation.ts","../src/server/middleware/resolveStartup.ts","../src/server/features/static-assets/index.ts","../src/server/util/displayStartupConfiguration.ts","../src/server/util/stringifyAttributes.ts","../src/server/features/response-handler/index.ts","../src/server/features/response-handler/render-stream.ts","../src/server/util/bundles.ts","../src/server/util/getVersionInfo.ts","../src/server/util/handleExceptions.ts","../src/server/util/headers.ts","../src/server/util/html.ts","../src/server/util/jsx.tsx","../src/server/webApp.tsx","../src/server/internalServer.ts"],"sourcesContent":["import { Entry } from 'contensis-delivery-api/lib/models';\nimport { PagedList } from 'contensis-core-api';\n/**\n * Util class holds our search results helper boilerplate methods\n */\nexport class Util {\n static GetIds(entries: Entry[], fieldId?: string) {\n if (fieldId) {\n return entries\n ?.map(e =>\n Array.isArray(e?.[fieldId])\n ? e?.[fieldId]?.map((f: Entry) => f?.sys?.id)\n : e?.[fieldId]?.sys?.id || ''\n )\n .flat();\n }\n return entries?.map(e => e?.sys?.id || '');\n }\n\n static GetItems(result: PagedList<Entry>) {\n return this.GetResults(result) ? result.items : [];\n }\n\n static GetResults(result: PagedList<Entry>) {\n if (result?.items) {\n return result;\n } else {\n return null;\n }\n }\n}\n\nexport const mergeResults = (\n results: Entry[],\n parentResults: Entry[],\n replaceContentTypeIds: string[],\n linkFieldId: string\n) =>\n results\n .map(r => {\n if (replaceContentTypeIds.some(c => c === r.sys.contentTypeId)) {\n const resolvedParent = parentResults?.find(e =>\n e[linkFieldId]?.some((l: Entry) => l.sys?.id === r.sys.id)\n );\n if (resolvedParent)\n return {\n ...resolvedParent,\n ...r,\n entryTitle: resolvedParent.entryTitle,\n entryDescription: resolvedParent.entryDescription,\n sys: resolvedParent.sys,\n originalSys: r.sys,\n };\n else return r;\n }\n return r;\n })\n .filter(r => r) as Entry[];\n","import {\n expressions as exp,\n FieldOperators,\n FilterExpression,\n LogicOperators,\n SearchQueryOptions,\n} from '~/search';\nimport { Op, Query } from 'contensis-core-api';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { cachedSearch } from '~/util/ContensisDeliveryApi';\nimport { LinkDepthApiFilters } from './api.d';\nimport { mergeResults, Util } from './util';\n\ntype WithOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\ntype SearchQueryArgs = WithOptional<\n SearchQueryOptions & {\n idFilters?: SearchQueryOptions['filters'];\n sharedFilters?: SearchQueryOptions['filters'];\n },\n | 'aggregations'\n | 'assetTypes'\n | 'customWhere'\n | 'dynamicOrderBy'\n | 'excludeIds'\n | 'featuredResults'\n | 'fieldLinkDepths'\n | 'fields'\n | 'includeInSearchFields'\n | 'languages'\n | 'omitDefaultSearchFields'\n | 'orderBy'\n | 'pageIndex'\n | 'searchTerm'\n | 'webpageTemplates'\n | 'weightedSearchFields'\n>;\n/**\n * Builds our complete Delivery API Query object from a set of provided arguments\n * @param queryParams\n * @returns Delivery API Query\n */\nexport const searchQuery = ({\n assetTypes,\n contentTypeIds,\n customWhere,\n fields,\n filters,\n idFilters = [],\n sharedFilters = [],\n pageSize,\n pageIndex = 0,\n orderBy,\n searchTerm,\n versionStatus = 'published',\n webpageTemplates,\n weightedSearchFields,\n}: SearchQueryArgs) => {\n const expressions = [\n ...exp.defaultExpressions(versionStatus),\n ...exp.contentTypeIdExpression(\n contentTypeIds,\n webpageTemplates,\n assetTypes\n ),\n ...exp.customWhereExpressions(customWhere),\n ...exp.filterExpressions(filters),\n ...exp.filterExpressions(idFilters),\n ...(sharedFilters?.length > 0\n ? [Op.or(...exp.filterExpressions(sharedFilters, true))]\n : []),\n ...exp.termExpressions(searchTerm || '', weightedSearchFields || []),\n ];\n\n const query = new Query(...expressions);\n\n query.orderBy = exp.orderByExpression(orderBy || []);\n\n if (fields && fields.length > 0) {\n (query as any).fields = fields;\n }\n\n // (query as any).includeArchived = true;\n // (query as any).includeDeleted = true;\n query.pageIndex = pageIndex;\n query.pageSize = pageSize;\n return query;\n};\n\nexport const appendSearchQueryFilters = (\n query: Query,\n idFilters: FilterExpression[]\n) => {\n query.where.addRange(exp.filterExpressions(idFilters));\n};\n\nexport const finalQuery = (\n {\n assetTypes,\n contentTypeIds,\n fields,\n filters,\n idFilters,\n sharedFilters,\n pageSize,\n pageIndex,\n orderBy,\n searchTerm,\n versionStatus = 'published',\n webpageTemplates,\n weightedSearchFields,\n }: SearchQueryArgs,\n children: Omit<SearchQueryArgs, 'pageSize' | 'pageIndex' | 'versionStatus'>[]\n) => {\n const expressions = [\n ...exp.defaultExpressions(versionStatus),\n Op.or(\n Op.and(\n ...exp.contentTypeIdExpression(\n contentTypeIds,\n webpageTemplates,\n assetTypes\n ),\n ...exp.filterExpressions(filters),\n ...exp.filterExpressions(idFilters || []),\n\n ...(sharedFilters?.length\n ? [\n Op.or(\n ...exp.filterExpressions(sharedFilters || [])\n // Op.and(\n // ...sharedFilters.map(sf =>\n // Op.not(exp.fieldExpression(sf.key, true, 'exists')[0])\n // ),\n // ...exp.filterExpressions(idFilters)\n // )\n ),\n ]\n : [])\n ),\n ...children.map(child =>\n Op.and(\n ...exp.contentTypeIdExpression(\n child.contentTypeIds,\n child.webpageTemplates,\n child.assetTypes\n ),\n ...exp.filterExpressions(child.sharedFilters || []),\n ...exp.filterExpressions(child.idFilters || [])\n )\n )\n ),\n ...exp.termExpressions(searchTerm || '', weightedSearchFields || []),\n ];\n\n const query = new Query(...expressions);\n\n query.orderBy = exp.orderByExpression(orderBy || []);\n\n if (fields && fields.length > 0) {\n (query as any).fields = fields;\n }\n\n // (query as any).includeArchived = true;\n // (query as any).includeDeleted = true;\n query.pageIndex = pageIndex || 0;\n query.pageSize = pageSize;\n return query;\n};\n\n/**\n * Create a filter expression from a provided filters configuration object\n * and populate them based on the presence of that key in params, filter\n * out any filter keys that do not have a value set in params\n * @param f filters configuration from any level\n * @param params request.query object from Express middleware\n * @returns FilterExpression[] we can use to use with searchQuery function\n */\nexport const makeFilterExpressions = (\n f: LinkDepthApiFilters,\n params: { [param: string]: string | undefined }\n): FilterExpression[] => {\n const expressions: FilterExpression[] = [];\n for (const [paramKey, filterConfig] of Object.entries(f)) {\n const filterValues = params[paramKey]?.split(',');\n if (typeof filterValues !== 'undefined')\n expressions.push({\n key:\n typeof filterConfig === 'object'\n ? filterConfig.fieldId\n : filterConfig,\n values: filterValues,\n fieldOperator:\n typeof filterConfig === 'object' && filterConfig.fieldOperator\n ? (filterConfig.fieldOperator as FieldOperators)\n : 'equalTo',\n logicOperator:\n typeof filterConfig === 'object' && filterConfig.logicOperator\n ? (filterConfig.logicOperator as LogicOperators)\n : 'or',\n });\n }\n return expressions;\n};\n\nexport const makeDerivedIdsFilterExpression = (\n prevFieldId: string,\n entries: Entry[],\n ownIds = false,\n alwaysApplyFilter = false\n) => {\n const previouslyDerivedIdsFilter = [] as FilterExpression[];\n const prevResultIds = Util.GetIds(entries);\n\n if (prevFieldId && prevResultIds?.length > 0)\n previouslyDerivedIdsFilter.push({\n key: ownIds ? 'sys.id' : `${prevFieldId}.sys.id`,\n values: prevResultIds,\n fieldOperator: 'in',\n logicOperator: 'or',\n });\n else if (alwaysApplyFilter)\n previouslyDerivedIdsFilter.push({\n key: 'intended-dud',\n values: ['1'],\n fieldOperator: 'in',\n logicOperator: 'or',\n });\n return previouslyDerivedIdsFilter;\n};\n\nexport const resolveParentEntries = async (\n parentContentTypeIds: string[],\n replaceContentTypeIds: string[],\n parentFieldId: string,\n results: Entry[],\n params: any,\n debug: boolean\n) => {\n // Build variables from query config to use in our Delivery API Query\n const previousIdsFilter = makeDerivedIdsFilterExpression(\n parentFieldId,\n results\n ) as any;\n\n const query = searchQuery({\n contentTypeIds: parentContentTypeIds,\n idFilters: previousIdsFilter,\n } as any);\n query.fields = params.fields\n ? [...(JSON.parse(params.fields) as unknown as string[]), parentFieldId]\n : [];\n\n if (debug)\n console.log(\n `\\nResolve parent entries query: \\n${JSON.stringify(\n query.toJSON()\n ).substring(0, 1000)}`\n );\n\n const parentResults = await cachedSearch.searchUsingPost(\n query,\n Number(params.linkDepth || 0),\n params.projectId\n );\n\n return mergeResults(\n results,\n Util.GetItems(parentResults),\n replaceContentTypeIds,\n parentFieldId\n );\n};\n","/* eslint-disable no-console */\nimport { PagedList } from 'contensis-core-api';\nimport { Query } from 'contensis-delivery-api';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { cachedSearch } from '~/util/ContensisDeliveryApi';\nimport {\n appendSearchQueryFilters,\n makeFilterExpressions,\n searchQuery,\n} from './search';\nimport { LinkDepthApiFilters, LinkFields } from './api.d';\nimport { Util } from './util';\n\nclass QueryLevelResults {\n level: number;\n contentTypeIds: string[];\n linkFieldIds: string[];\n linkFields: LinkFields;\n filters: LinkDepthApiFilters;\n sharedFilters: LinkDepthApiFilters;\n returnEntries: boolean;\n resolveFirstParent: boolean;\n\n validatedLinks: {\n contentTypeId: string;\n linkFieldId: string;\n entryIds: string[];\n }[] = [];\n\n parent: QueryLevelResults | undefined;\n children: QueryLevelResults[] = [];\n runFirstQuery: boolean;\n runFinalQuery: boolean;\n\n private params: { [key: string]: string | undefined } = {};\n private debug: boolean;\n\n private firstQuery: Query = new Query();\n private firstResults: PagedList<Entry> = {} as PagedList<Entry>;\n\n private finalQuery: Query = new Query();\n private finalResults: PagedList<Entry> = {} as PagedList<Entry>;\n\n constructor({\n level,\n contentTypeIds,\n linkFields,\n filters,\n sharedFilters,\n returnEntries,\n resolveFirstParent,\n params = {},\n parent,\n debug = false,\n }: {\n level: number;\n contentTypeIds: string[];\n linkFields: LinkFields;\n filters: LinkDepthApiFilters;\n sharedFilters: LinkDepthApiFilters;\n returnEntries?: boolean;\n resolveFirstParent?: boolean;\n params: { [key: string]: string | undefined };\n parent?: QueryLevelResults;\n debug?: boolean;\n }) {\n this.level = level;\n this.contentTypeIds = contentTypeIds;\n this.linkFields = linkFields;\n this.linkFieldIds = Object.keys(linkFields).map(fId => fId);\n this.filters = filters;\n this.sharedFilters = sharedFilters;\n this.returnEntries =\n typeof returnEntries === 'undefined' ? level === 0 : returnEntries;\n this.resolveFirstParent = resolveFirstParent || false;\n this.params = params;\n this.parent = parent;\n this.debug = debug;\n\n this.runFirstQuery = Object.keys(params).some(\n p =>\n Object.keys(filters).includes(p) ||\n Object.keys(sharedFilters).includes(p)\n );\n this.runFinalQuery = Object.keys(params).some(\n p =>\n Object.keys(filters).includes(p) ||\n Object.keys(sharedFilters).includes(p)\n );\n\n this.firstQuery = searchQuery({\n contentTypeIds,\n filters: makeFilterExpressions(filters, params),\n sharedFilters: makeFilterExpressions(sharedFilters, params),\n // idFilters: parent?.validatedLinks\n // ? makeFilterExpressions(parent.validatedLinks, params)\n // : [], // these dont exist yet\n fields: ['sys.id', ...this.linkFieldIds],\n pageSize: 2000,\n searchTerm: params.term,\n versionStatus: params.versionStatus as any,\n });\n\n this.finalQuery = searchQuery({\n contentTypeIds,\n filters: makeFilterExpressions(filters, params),\n sharedFilters: makeFilterExpressions(sharedFilters, params),\n fields: JSON.parse(params.fields || '[]'),\n pageIndex: level === 0 ? Number(params.pageIndex) : 0,\n pageSize: level === 0 ? Number(params.pageSize) : 2000,\n searchTerm: params.term,\n versionStatus: params.versionStatus as any,\n });\n }\n\n AddChild = ({ child }: { child: QueryLevelResults }) => {\n this.children.push(child);\n };\n\n RunFirstQuery = async () => {\n const { firstQuery: query, params, parent, runFirstQuery } = this;\n\n if (parent?.validatedLinks.length) {\n // add any idFilters derived from parent query results\n appendSearchQueryFilters(\n query,\n makeFilterExpressions(\n Object.fromEntries(\n parent.validatedLinks.map(vl => [\n vl.linkFieldId,\n { fieldId: `sys.id` },\n ])\n ),\n Object.fromEntries(\n parent.validatedLinks.map(vl => [\n vl.linkFieldId,\n vl.entryIds.join(',') || `no ids from parent ${parent.level}`,\n ])\n )\n )\n );\n }\n\n if (runFirstQuery) {\n if (this.debug)\n console.log(\n `\\nLevel ${this.level} - First query: \\n${JSON.stringify(\n query.toJSON()\n ).substring(0, 1000)}`\n );\n\n this.firstResults = await cachedSearch.searchUsingPost(\n query,\n 0,\n params.projectId\n );\n\n // mapResultsToValidatedLinks\n for (const linkFieldId of this.linkFieldIds) {\n this.validatedLinks.push({\n contentTypeId: this.linkFields[linkFieldId].contentTypeId || '',\n linkFieldId,\n entryIds: Util.GetIds(this.firstResults.items, linkFieldId),\n });\n }\n }\n };\n\n RunFinalQuery = async () => {\n const { level, children, finalQuery: query, params, runFinalQuery } = this;\n\n if (!children.some(c => c.returnEntries)) {\n const firstChild = children?.[0];\n // add any idFilters derived from child query results\n if (firstChild)\n appendSearchQueryFilters(\n query,\n makeFilterExpressions(\n Object.fromEntries(\n firstChild.validatedLinks.map(vl => [\n vl.linkFieldId,\n { fieldId: `${vl.linkFieldId}.sys.id` },\n ])\n ),\n Object.fromEntries(\n firstChild.validatedLinks.map(vl => [\n vl.linkFieldId,\n vl.entryIds.join(',') ||\n `no ids from child ${firstChild.level}`,\n ])\n )\n )\n );\n }\n\n if (level === 0 && this.returnEntries) {\n // This is the final query to be run and response returned to the caller\n // Only this bit cares about linkDepth, fields and pagination parameters\n query.fields = JSON.parse(params.fields || '[]') as unknown as string[];\n query.pageSize = params.pageSize as unknown as number;\n query.pageIndex = params.pageIndex as unknown as number;\n // query.orderBy = params.orderBy;\n }\n\n if (runFinalQuery) {\n if (this.debug)\n console.log(\n `\\nLevel ${this.level} - Final query: \\n${JSON.stringify(\n query.toJSON()\n ).substring(0, 1000)}`\n );\n this.finalResults = await cachedSearch.searchUsingPost(\n query,\n Number(params.linkDepth) || 0,\n params.projectId\n );\n if (this.parent) this.parent.runFinalQuery = true;\n\n // mapResultsToValidatedLinks\n for (const linkFieldId of this.parent?.linkFieldIds || []) {\n this.validatedLinks.push({\n contentTypeId:\n this.parent?.linkFields[linkFieldId].contentTypeId || '',\n linkFieldId,\n entryIds: Util.GetIds(this.finalResults.items),\n });\n }\n }\n };\n\n GetResultsEntries = () => {\n const { finalResults, firstResults } = this;\n return finalResults?.items?.length\n ? finalResults.items\n : firstResults.items;\n };\n\n GetResults = () => {\n const { finalResults, firstResults } = this;\n return typeof finalResults?.totalCount !== 'undefined'\n ? finalResults\n : firstResults;\n };\n}\n\nexport default QueryLevelResults;\n","/* eslint-disable no-console */\nimport { cachedSearch } from '~/util/ContensisDeliveryApi';\nimport { LinkDepthApiConfig, LinkDepthApiFilters, LinkFields } from './api.d';\nimport QueryLevelResults from './QueryLevelResults';\nimport {\n finalQuery,\n makeDerivedIdsFilterExpression,\n makeFilterExpressions,\n resolveParentEntries,\n} from './search';\n\nexport type LinkDepthSearchServiceConstuctorArgs =\n Partial<LinkDepthApiConfig> & {\n params: { [key: string]: string | undefined };\n debug?: boolean;\n };\n\nclass LinkDepthSearchService {\n contentTypeIds: string[];\n filters: LinkDepthApiFilters;\n sharedFilters: LinkDepthApiFilters;\n linkFields: LinkFields;\n params: { [key: string]: string | undefined };\n debug: boolean;\n\n queryLevels: QueryLevelResults[];\n\n constructor({\n contentTypeId = '',\n filters = {},\n sharedFilters = {},\n linkFields = {},\n params,\n debug = false,\n }: LinkDepthSearchServiceConstuctorArgs) {\n this.contentTypeIds = Array.isArray(contentTypeId)\n ? contentTypeId\n : [contentTypeId];\n this.filters = filters;\n this.sharedFilters = sharedFilters;\n this.linkFields = linkFields;\n this.params = params;\n this.debug = debug;\n\n this.queryLevels = this.InitQueryLevels();\n }\n\n DoSearch = async () => {\n // Run queries \"top-down\" through each level of `linkField`\n for (const queryLevel of this.queryLevels) {\n await queryLevel.RunFirstQuery();\n }\n\n // Run queries \"bottom-up\" through each level of `linkField`\n for (const queryLevel of [...this.queryLevels].reverse()) {\n await queryLevel.RunFinalQuery();\n }\n\n // Run a final query that will aggregate the results from all levels\n // adding all levels to the query that have `returnEntries` set true\n return await this.RunFinalQueries();\n };\n\n RunFinalQueries = async () => {\n const finalQueryLevels = this.queryLevels.filter(\n ql =>\n (ql.level > 0 && ql.returnEntries) ||\n (ql.level === 0 && ql.returnEntries !== false)\n );\n\n // Decide if we need a further final query if any child level(s) have had `returnEntries` set to true\n if (\n finalQueryLevels.length > 1 ||\n (finalQueryLevels.length === 1 && finalQueryLevels[0].level !== 0)\n ) {\n // Build final query\n const { contentTypeIds, filters, sharedFilters, params } = this;\n const derivedIds =\n finalQueryLevels[0].children\n .filter(ql => !ql.returnEntries)\n .map(ql => ql.validatedLinks)\n .flat() || [];\n const derivedIdFilters =\n derivedIds\n .map(vl =>\n makeFilterExpressions(\n {\n [vl.linkFieldId]: {\n fieldId: `${vl.linkFieldId}.sys.id`,\n },\n },\n {\n [vl.linkFieldId]:\n vl.entryIds.join(',') || 'no results for filter',\n }\n )\n )\n .flat() || [];\n // This is the final query to be run and response returned to the caller\n // Only this bit cares about linkDepth, fields and pagination parameters\n const query = finalQuery(\n {\n contentTypeIds,\n filters: makeFilterExpressions(filters, params),\n sharedFilters: makeFilterExpressions(sharedFilters, params),\n idFilters: derivedIdFilters,\n fields: params.fields\n ? [\n ...JSON.parse(params.fields),\n ...finalQueryLevels\n .map(l => l.parent?.linkFieldIds || [])\n .flat(),\n ]\n : [],\n orderBy: params.orderBy?.split(','),\n pageIndex: Number(params.pageIndex) || 0,\n pageSize:\n typeof Number(params.pageSize) === 'number'\n ? Number(params.pageSize)\n : 25,\n searchTerm: params.term,\n versionStatus: params.versionStatus as any,\n },\n finalQueryLevels?.[0].children\n .filter(ql => ql.returnEntries)\n .map(ql => {\n const entriesAtLevel =\n ql.GetResultsEntries() || ql.parent?.GetResultsEntries();\n const previousIdsFilter =\n ql.returnEntries || !!ql.children.some(qc => qc.returnEntries)\n ? ql.parent?.linkFieldIds\n .map(fieldId =>\n makeDerivedIdsFilterExpression(\n fieldId,\n entriesAtLevel,\n true,\n ql.runFinalQuery\n )\n )\n .flat()\n : [];\n return {\n contentTypeIds: ql.contentTypeIds,\n filters: makeFilterExpressions(ql.filters, params),\n sharedFilters: makeFilterExpressions(ql.sharedFilters, params),\n idFilters: previousIdsFilter,\n };\n }) || []\n );\n if (this.debug)\n console.log(\n `\\nFinal query: ${derivedIds.reduce(\n (accumulator, object) => accumulator + object.entryIds.length,\n 0\n )} derived ids \\n${JSON.stringify(query.toJSON()).substring(0, 1000)}`\n );\n\n const finalQueryResult = await cachedSearch.searchUsingPost(\n query,\n Number(params.linkDepth) || 0,\n params.projectId\n );\n\n // Resolve any parent entries\n\n const resolveParentLevels = finalQueryLevels.filter(\n ql => ql.resolveFirstParent\n );\n\n let entries = finalQueryResult.items;\n\n for (const resolveParents of resolveParentLevels) {\n entries = await resolveParentEntries(\n resolveParents.parent?.contentTypeIds || [],\n resolveParents.contentTypeIds,\n resolveParents.parent?.linkFieldIds[0] || 'unknown',\n finalQueryResult.items, // or entries?\n this.params,\n this.debug\n );\n }\n\n return { ...finalQueryResult, items: entries };\n } else {\n if (this.debug) console.log(`\\nNo further queries required\\n`);\n return this.queryLevels.find(ql => ql.level === 0)?.GetResults();\n }\n };\n\n private InitQueryLevels = () => {\n const createChildQueryLevels = (\n linkFields: LinkFields,\n parentQueryLevel: QueryLevelResults,\n level = 1\n ): QueryLevelResults[] => {\n return Object.entries(linkFields)\n .map(\n ([\n ,\n {\n contentTypeId = '',\n filters = {},\n linkFields = {},\n resolveFirstParent,\n returnEntries,\n sharedFilters = {},\n },\n ]) => {\n const thisLevel = new QueryLevelResults({\n level,\n contentTypeIds: Array.isArray(contentTypeId)\n ? contentTypeId\n : [contentTypeId],\n filters: Object.fromEntries(\n Object.entries(filters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n sharedFilters: Object.fromEntries(\n Object.entries(sharedFilters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n linkFields,\n parent: parentQueryLevel,\n params,\n resolveFirstParent,\n returnEntries,\n debug: this.debug,\n });\n\n parentQueryLevel.AddChild({ child: thisLevel });\n\n return [\n thisLevel,\n ...createChildQueryLevels(linkFields, thisLevel, level + 1),\n ];\n }\n )\n .flat();\n };\n const { contentTypeIds, filters, sharedFilters, linkFields, params } = this;\n\n const firstLevel = new QueryLevelResults({\n level: 0,\n contentTypeIds,\n filters: Object.fromEntries(\n Object.entries(filters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n sharedFilters: Object.fromEntries(\n Object.entries(sharedFilters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n linkFields,\n params,\n debug: this.debug,\n });\n\n const queryLevels = [\n firstLevel,\n ...createChildQueryLevels(linkFields, firstLevel),\n ];\n // return queryLevels;\n\n // If we are only returning entries from level 0\n // we can skip running the first query and finalQuery will suffice\n if (queryLevels.find(ql => ql.returnEntries && ql.level !== 0))\n return queryLevels;\n else\n return queryLevels.map(ql => {\n ql.runFirstQuery = false;\n // ql.runFinalQuery = false;\n return ql;\n });\n };\n}\n\nexport default LinkDepthSearchService;\n","import { Express, RequestHandler } from 'express';\nimport LinkDepthSearchService from './LinkDepthSearchService';\nimport setCachingHeaders from '../caching/setCachingHeaders';\nimport { LinkDepthApiConfig } from './api.d';\n\n/**\n * Make a LinkDepth api at the uri specified in middlewareConfig.\n * The api supports a GET request and specified filters are supplied as query-string parameters.\n * The response should be a normal Delivery API response.\n * @param app Express app instance\n * @param middlewareConfig Middleware configuration that represents the content types we want to search within, any filters that are required and any linkFields we wish to search within to derive a set of search results from the entries that contain the linkFields. Each key inside of linkFields represents another \"linkDepth\" of entries and we can specify all the same contentTypeId, filters, and linkFields of their own. There is no currently no limit on how deep these linkFields can go\n * @returns Returns nothing if uri, contentTypeId or linkFields is not set in middlewareConfig\n */\nconst makeLinkDepthApi = (\n app: Express,\n middlewareConfig: LinkDepthApiConfig\n) => {\n const { uri, contentTypeId, linkFields } = middlewareConfig;\n if (!contentTypeId || !linkFields || !uri) return;\n\n app.get(uri, makeLinkDepthMiddleware(middlewareConfig));\n};\n\n/** Create a content type hierarchy from supplied config and produces\n * a RequestHandler function to serve our Express middleware */\nconst makeLinkDepthMiddleware = ({\n contentTypeId,\n filters = {},\n sharedFilters = {},\n linkFields,\n debug,\n}: LinkDepthApiConfig) => {\n try {\n // The runtime express request handler\n const linkDepthMiddleware: RequestHandler = async (req, res) => {\n try {\n // Short cache duration copied from canterbury project\n setCachingHeaders(res, {\n cacheControl: 'private',\n surrogateControl: '10',\n });\n\n // Gather all params from the request, we will use them at the right query levels later\n const params = Object.fromEntries(\n [...Object.entries(req.params), ...Object.entries(req.query)].map(\n ([k, v]) => [k, v?.toString()]\n )\n );\n\n const result = await new LinkDepthSearchService({\n contentTypeId,\n linkFields,\n filters,\n sharedFilters,\n params,\n debug,\n }).DoSearch();\n\n res.json(result);\n } catch (error) {\n // This is a runtime error encountered when processing a given request\n console.error(error);\n res.statusCode = 500;\n res.json(error);\n }\n };\n\n return linkDepthMiddleware;\n } catch (error) {\n // This will be an error building the middleware\n // we can only serve what the error was as the request handler instead\n console.error(error);\n const errorMiddleware: RequestHandler = async (req, res) => {\n res.statusCode = 500;\n res.json(JSON.stringify(error));\n };\n return errorMiddleware;\n }\n};\n\nexport default makeLinkDepthApi;\n","import { Express } from 'express';\nimport httpProxy from 'http-proxy';\nimport url from '~/util/urls';\n\nconst servers = SERVERS; /* global SERVERS */\nconst project = PROJECT; /* global PROJECT */\nconst alias = ALIAS; /* global ALIAS */\nconst deliveryApiHostname = url(alias, project).api;\n\nexport const assetProxy = httpProxy.createProxyServer();\nexport const deliveryProxy = httpProxy.createProxyServer();\n\nconst reverseProxies = (app: Express, reverseProxyPaths: string[] = []) => {\n deliveryApiProxy(deliveryProxy, app);\n\n app.all(reverseProxyPaths, (req, res) => {\n const target =\n req.hostname.indexOf('preview-') ||\n req.hostname.indexOf('preview.') ||\n req.hostname === 'localhost'\n ? servers.previewIis || servers.iis\n : servers.iis;\n\n assetProxy.web(req, res, { target, changeOrigin: true });\n assetProxy.on('error', e => {\n /* eslint-disable no-console */\n console.log(\n `Proxy Request for ${req.path} HostName:${req.hostname} failed with ${e}`\n );\n /* eslint-enable no-console */\n });\n });\n};\n\nconst deliveryApiProxy = (apiProxy, app) => {\n // This is just here to stop cors requests on localhost. In Production this is mapped using varnish.\n app.all(\n ['/api/delivery/*', '/api/forms/*', '/api/image/*', '/authenticate/*'],\n (req, res) => {\n /* eslint-disable no-console */\n console.log(`Proxying api request to ${servers.alias}`);\n apiProxy.web(req, res, {\n target: deliveryApiHostname,\n changeOrigin: true,\n });\n apiProxy.on('error', e => {\n /* eslint-disable no-console */\n console.log(\n `Proxy request for ${req.path} HostName:${req.hostname} failed with ${e}`\n );\n /* eslint-enable no-console */\n });\n }\n );\n};\n\nexport default reverseProxies;\n","export const CacheDuration = {\n 200: '3600',\n 404: '5',\n static: '31536000', // Believe it or not these two max ages are the same in runtime\n expressStatic: '31557600h', // Believe it or not these two max ages are the same in runtime\n};\n\nexport const getCacheDuration = (status = 200) => {\n if (status >= 400) return CacheDuration[404];\n return CacheDuration[200];\n};\n\nconst alias = ALIAS; /* global ALIAS */\n\nexport const anyUpdateHeader = `${alias}_any-update`;\n","export const replaceStaticPath = (str: string, staticFolderPath = 'static') =>\n str.replace(/static\\//g, `${staticFolderPath}/`);\n","import { RequestHandler } from 'express';\nimport fs from 'fs';\nimport path from 'path';\nimport { replaceStaticPath } from '../util/staticPaths';\n\nexport const bundleManipulationMiddleware =\n ({\n appRootPath,\n maxage,\n staticFolderPath,\n staticRoutePath,\n }: {\n appRootPath: string;\n maxage: string;\n staticFolderPath: string;\n staticRoutePath: string;\n }): RequestHandler =>\n (req, res, next) => {\n const filename = path.basename(encodeURI(req.path));\n const modernBundle = filename.endsWith('.mjs');\n const legacyBundle = filename.endsWith('.js');\n if ((legacyBundle || modernBundle) && filename.startsWith('runtime.')) {\n const jsRuntimeLocation = path.resolve(\n appRootPath,\n `dist/${staticFolderPath}/${\n modernBundle ? 'modern/js' : 'legacy/js'\n }/${filename}`\n );\n try {\n const jsRuntimeBundle = fs.readFileSync(jsRuntimeLocation, 'utf8');\n const modifiedBundle = replaceStaticPath(\n jsRuntimeBundle,\n staticRoutePath\n );\n if (maxage) res.set('Cache-Control', `public, max-age=${maxage}`);\n res.type('.js').send(modifiedBundle);\n return;\n } catch (readError) {\n console.log(\n `Unable to find js runtime bundle at '${jsRuntimeLocation}'`,\n readError\n );\n next();\n }\n } else {\n next();\n }\n };\n","import { RequestHandler } from 'express';\nimport fs from 'fs';\nimport path from 'path';\n\n/**\n *\n * @param { appRootPath: string; maxage: number; staticFolderPath: string, startupScriptFilename: string } args\n * @returns Response | next()\n * A middleware function to resolve /dist/static/startup.js under a supplied startupScriptFilename variable\n */\nexport const resolveStartupMiddleware =\n ({\n appRootPath,\n maxage,\n staticFolderPath,\n startupScriptFilename,\n }: {\n appRootPath: string;\n maxage: string;\n staticFolderPath: string;\n startupScriptFilename: string;\n }): RequestHandler =>\n async (req, res, next) => {\n if (\n startupScriptFilename !== 'startup.js' &&\n req.path === `/${startupScriptFilename}`\n ) {\n let startupFileLocation = '';\n try {\n const startupFilePaths = [\n `dist/static/startup.js`,\n `dist/${staticFolderPath}/startup.js`,\n ];\n let startupFilePath = '';\n startupFilePaths.forEach(async testPath => {\n try {\n fs.accessSync(testPath);\n startupFilePath = testPath;\n } catch (ex) {\n // Do nothing\n }\n });\n startupFileLocation = path.resolve(appRootPath, startupFilePath);\n\n if (maxage) res.set('Cache-Control', `public, max-age=${maxage}`);\n\n res.sendFile(startupFileLocation);\n } catch (sendFileError) {\n // eslint-disable-next-line no-console\n console.log(\n `Unable to send file startup.js at '${startupFileLocation}'`,\n sendFileError\n );\n next();\n }\n } else {\n next();\n }\n };\n","import express from 'express';\nimport { CacheDuration } from '~/server/features/caching/cacheDuration.schema';\nimport { bundleManipulationMiddleware } from '~/server/middleware/bundleManipulation';\nimport { resolveStartupMiddleware } from '~/server/middleware/resolveStartup';\n\nimport { path as appPath } from 'app-root-path';\nimport { ServerConfig } from '~/models';\n// Serving static assets\nconst staticAssets = (\n app,\n {\n appRootPath = appPath,\n scripts = {} as NonNullable<ServerConfig['scripts']>,\n startupScriptFilename = 'startup.js',\n staticFolderPath = 'static',\n staticRoutePath = 'static',\n staticRoutePaths = [] as string[],\n }\n) => {\n app.use(\n [\n `/${staticRoutePath}`,\n ...staticRoutePaths.map(p => `/${p}`),\n `/${staticFolderPath}`,\n ],\n bundleManipulationMiddleware({\n appRootPath,\n // these maxage values are different in config but the same in runtime,\n // this one is the true value in seconds\n maxage: CacheDuration.static,\n staticFolderPath,\n staticRoutePath,\n }),\n resolveStartupMiddleware({\n appRootPath,\n maxage: CacheDuration.static,\n startupScriptFilename: scripts.startup || startupScriptFilename,\n staticFolderPath,\n }),\n // eslint-disable-next-line import/no-named-as-default-member\n express.static(`dist/${staticFolderPath}`, {\n // these maxage values are different in config but the same in runtime,\n // this one is somehow converted and should end up being the same as CacheDuration.static\n maxAge: CacheDuration.expressStatic,\n })\n );\n};\n\nexport default staticAssets;\n","const servers = SERVERS; /* global SERVERS */\nconst projects = PROJECTS; /* global PROJECTS */\n\nconst DisplayStartupConfiguration = config => {\n /* eslint-disable no-console */\n console.log();\n console.log(\n `Configured servers:\n`,\n JSON.stringify(servers, null, 2)\n );\n console.log();\n console.log(\n `Configured projects:\n`,\n JSON.stringify(projects, null, 2)\n );\n console.log();\n console.log(\n 'Reverse proxy paths: ',\n JSON.stringify(config.reverseProxyPaths, null, 2)\n );\n console.log();\n if (config.staticFolderPath)\n console.log(\n `Serving static assets from: \"/dist/${config.staticFolderPath}/\"`\n );\n /* eslint-enable no-console */\n};\n\nexport default DisplayStartupConfiguration;\n","export default (attributes = {}) =>\n Object.entries(attributes)\n .map(\n ([key, value], idx) =>\n `${idx !== 0 ? ' ' : ''}${key}${value ? `=\"${value}\"` : ''}`\n )\n .join(' ');\n","/* eslint-disable no-console */\nimport { Request, Response } from 'express';\nimport { ResponseMethod } from './types';\n\n/**\n * Web Application Response handler, sends a prepared express js response\n * with the supplied content sending in the specified manner\n * @param {response} request express js request object\n * @param {response} response express js response object\n * @param {string | object} content the content to send in the response body\n * @param {\"send\" | \"json\" | \"end\"} send the response function to call e.g res.send() res.json() res.end()\n */\nconst handleResponse = (\n request: Request,\n response: Response,\n content: any,\n send: keyof typeof ResponseMethod = 'send'\n) => {\n // console.log('---', response.statusCode, '---');\n response[send](content);\n};\n\nexport default handleResponse;\n","import { Response } from 'express';\nimport { ReactNode } from 'react';\nimport { renderToPipeableStream } from 'react-dom/server';\nimport { Transform, Writable } from 'stream';\nimport { ServerStyleSheet } from 'styled-components';\n\n/**\n * Render React JSX (and surrounding HTML document) via React's\n * renderToPipeableStream method\n * @param getContextHtml a function to produce the correct HTML template that surrounds the JSX \"App\" with all available document assets injected\n * @param jsx the JSX to render via a streamed response\n * @param response the express Response object\n * @param stream all chunks are piped to this stream to add additional style elements to each streamed chunk\n */\nexport const renderStream = (\n getContextHtml: (isFinal?: boolean) => string,\n jsx: ReactNode,\n response: Response,\n stream: Writable\n) => {\n const { abort, pipe } = renderToPipeableStream(jsx, {\n onShellReady() {\n const html = getContextHtml(false);\n if (!html) {\n // this means we have finished with the response already\n abort();\n } else {\n const header = html.split('{{APP}}')[0];\n\n response.setHeader('content-type', 'text/html; charset=utf-8');\n stream.write(header);\n pipe(stream);\n }\n },\n onAllReady() {\n const footer = getContextHtml(true).split('{{APP}}')[1];\n stream.write(footer);\n },\n onShellError(error: unknown) {\n response.statusCode = 500;\n response.setHeader('content-type', 'text/html; charset=utf-8');\n response.send('<h1>Something went wrong</h1>');\n console.error(`[renderToPipeableStream:onShellError]`, error);\n },\n onError(error) {\n console.error(`[renderToPipeableStream:onError]`, error);\n },\n });\n\n // Abandon and switch to client rendering if enough time passes.\n // Try lowering this to see the client recover.\n setTimeout(() => abort(), 30 * 1000);\n\n stream?.pipe(response);\n};\n\n/**\n * Generate and add styled-components CSS to the streamed\n * chunks of rendered HTML via renderToPipeableStream\n *\n * Workaround for Styled Components issue: React 18 Streaming SSR #3658\n * https://github.com/styled-components/styled-components/issues/3658#issuecomment-2480721193\n * credit: https://github.com/rurquia/styled-components-ssr-3658/blob/main/server/render.js\n * @param sheet styled-components ServerStyleSheet\n * @returns Transform Stream\n */\nexport const styledComponentsStream = (sheet: ServerStyleSheet) => {\n const readerWriter = new Transform({\n objectMode: true,\n transform(\n chunk,\n /* encoding */\n _,\n callback\n ) {\n // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n // then reset its rules so we get only new ones for the next chunk\n const renderedHtml =\n typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk);\n const styledCSS = sheet._emitSheetCSS();\n const CLOSING_TAG_R = /<\\/[a-z]*>/i;\n\n sheet.instance.clearTag();\n\n // prepend style html to chunk, unless the start of the chunk is a\n // closing tag in which case append right after that\n if (/<\\/head>/.test(renderedHtml)) {\n const replacedHtml = renderedHtml.replace(\n '</head>',\n `${styledCSS}</head>`\n );\n this.push(replacedHtml);\n } else if (CLOSING_TAG_R.test(renderedHtml)) {\n const execResult = CLOSING_TAG_R.exec(renderedHtml) as RegExpExecArray;\n const endOfClosingTag = execResult.index + execResult.flat().length - 1;\n const before = renderedHtml.slice(0, endOfClosingTag);\n const after = renderedHtml.slice(endOfClosingTag);\n this.push(before + styledCSS + after);\n } else {\n this.push(styledCSS + renderedHtml);\n }\n callback();\n },\n });\n return readerWriter;\n};\nexport const renderToString = () => {};\n","import fs from 'fs';\nimport path from 'path';\nimport { ChunkExtractor } from '@loadable/server';\nimport { replaceStaticPath } from './staticPaths';\nimport { ServerConfig } from '~/models';\nimport stringifyAttributes from './stringifyAttributes';\n\nconst readFileSync = (path: string) => fs.readFileSync(path, 'utf8');\n\nexport const loadableBundleData = (\n { stats, templates }: ServerConfig,\n staticRoutePath: string,\n build?: string\n) => {\n const bundle: {\n stats?: string | null;\n templates?: {\n templateHTML: string;\n templateHTMLStatic: string;\n templateHTMLFragment: string;\n } | null;\n } = {};\n try {\n bundle.stats = stats\n ? JSON.parse(\n readFileSync(stats.replace('/target', build ? `/${build}` : ''))\n )\n : null;\n } catch (ex) {\n // console.info(ex);\n bundle.stats = null;\n }\n try {\n bundle.templates = {\n templateHTML: replaceStaticPath(\n readFileSync(\n templates.html.replace('/target', build ? `/${build}` : '')\n ),\n staticRoutePath\n ),\n templateHTMLStatic: replaceStaticPath(\n readFileSync(\n templates.static.replace('/target', build ? `/${build}` : '')\n ),\n staticRoutePath\n ),\n templateHTMLFragment: replaceStaticPath(\n readFileSync(\n templates.fragment.replace('/target', build ? `/${build}` : '')\n ),\n staticRoutePath\n ),\n };\n } catch (ex) {\n // console.info(ex);\n bundle.templates = null;\n }\n return bundle;\n};\n\ntype LoadableChunkExtractors = {\n legacy?: ChunkExtractor;\n modern?: ChunkExtractor;\n commonLoadableExtractor: ChunkExtractor;\n};\n\nexport const loadableChunkExtractors = () => {\n const commonLoadableExtractor = new ChunkExtractor({ stats: {} });\n try {\n let modern: ChunkExtractor | undefined;\n let legacy: ChunkExtractor | undefined;\n try {\n modern = new ChunkExtractor({\n entrypoints: ['app'],\n namespace: 'modern',\n statsFile: path.resolve('dist/modern/loadable-stats.json'),\n });\n } catch (e) {\n console.info('@loadable/server modern ChunkExtractor not available');\n }\n try {\n legacy = new ChunkExtractor({\n entrypoints: ['app'],\n namespace: 'legacy',\n statsFile: path.resolve('dist/legacy/loadable-stats.json'),\n });\n } catch (e) {\n // legacy bundling deprecated in v4\n // console.info('@loadable/server legacy ChunkExtractor not available');\n }\n\n (commonLoadableExtractor as any).addChunk = (chunk: any) => {\n (modern as any)?.addChunk(chunk);\n if (\n typeof (legacy as any)?.stats.assetsByChunkName[chunk] !== 'undefined'\n )\n (legacy as any)?.addChunk(chunk);\n };\n\n return {\n commonLoadableExtractor,\n modern,\n legacy,\n } as LoadableChunkExtractors;\n } catch (e) {\n console.info('@loadable/server no ChunkExtractor available');\n return { commonLoadableExtractor };\n }\n};\n\nexport const getBundleData = (\n config: ServerConfig,\n staticRoutePath: string\n) => {\n const bundleData = {\n default: loadableBundleData(config, staticRoutePath),\n legacy: loadableBundleData(config, staticRoutePath, 'legacy'),\n modern: loadableBundleData(config, staticRoutePath, 'modern'),\n };\n if (!bundleData.default || Object.keys(bundleData.default || {}).length === 0)\n bundleData.default = bundleData.legacy || bundleData.modern;\n return bundleData;\n};\n\n// export const buildBundleTags = (\n// bundles,\n// differentialBundles = false,\n// staticRoutePath = 'static',\n// attributes = ''\n// ) => {\n// // Take the bundles returned from Loadable.Capture\n// const bundleTags = bundles\n// .filter(b => b)\n// .map(bundle => {\n// if (bundle.publicPath.includes('/modern/'))\n// return differentialBundles\n// ? `<script ${attributes} type=\"module\" src=\"${replaceStaticPath(\n// bundle.publicPath,\n// staticRoutePath\n// )}\"></script>`\n// : null;\n// return `<script ${attributes}${\n// differentialBundles ? ' nomodule' : ''\n// } src=\"${replaceStaticPath(\n// bundle.publicPath,\n// staticRoutePath\n// )}\"></script>`;\n// })\n// .filter(f => f);\n\n// return bundleTags;\n// };\n\nexport const getBundleTags = (\n loadableExtractor: LoadableChunkExtractors,\n scripts: ServerConfig['scripts'],\n staticRoutePath = 'static'\n) => {\n let startupTag = '';\n // Add the static startup script to the bundleTags\n if (scripts?.startup)\n startupTag = `<script ${stringifyAttributes(\n scripts.attributes\n )} src=\"/${staticRoutePath}/${scripts.startup}\"></script>`;\n\n // Get the script tags from their respective extractor instances\n if (loadableExtractor) {\n const legacyScriptTags = loadableExtractor.legacy?.getScriptTags({\n nomodule: 'nomodule',\n });\n const modernScriptTags = loadableExtractor.modern?.getScriptTags({\n type: 'module',\n });\n const scriptTags = `${startupTag}${legacyScriptTags || ''}${\n modernScriptTags || ''\n }`.replace(/\"\\/static\\//g, `\"/${staticRoutePath}/`);\n return scriptTags;\n }\n return startupTag;\n};\n","import fs from 'fs';\n\nexport const getVersionInfo = (staticFolderPath: string) => {\n try {\n const versionData = fs.readFileSync(\n `dist/${staticFolderPath}/version.json`,\n 'utf8'\n );\n const versionInfo = JSON.parse(versionData);\n return versionInfo;\n } catch (ex) {\n console.error(`Unable to read from \"version.json\"`, ex);\n return {};\n }\n};\n","/* eslint-disable no-console */\nimport chalk from 'chalk';\n\n// Default exception types to add event listeners for\nconst handleDefaultEvents = ['uncaughtException', 'unhandledRejection'];\n\nexport const unhandledExceptionHandler = (\n handleExceptions: boolean | string[] = handleDefaultEvents\n) => {\n const exceptionTypes = Array.isArray(handleExceptions)\n ? handleExceptions\n : handleExceptions === false\n ? []\n : handleDefaultEvents;\n\n for (const type of exceptionTypes) {\n process.on(type, (err: Error) => {\n if (err && err instanceof Error) {\n // Print a message to inform admins and developers the error should not be ignored\n console.log(\n `${`[contensis-react-base] ❌ ${chalk.red.bold(\n `${type} - ${err.message}`\n )}`}`\n );\n console.log(\n chalk.gray` - you are seeing this because we have tried to prevent the app from completely crashing - you should not ignore this problem`\n );\n // Log the error to server console\n console.error(err);\n }\n });\n }\n};\n","import { Response } from 'express';\nimport {\n selectCurrentProject,\n selectRouteEntry,\n selectSsrApiCalls,\n selectSurrogateKeys,\n} from '~/routing/redux/selectors';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nimport {\n anyUpdateHeader,\n getCacheDuration,\n} from '../features/caching/cacheDuration.schema';\nimport { AppState } from '~/models';\n\nexport const addStandardHeaders = (\n state: AppState,\n response: Response,\n packagejson: any,\n groups: { globalGroups?: any[]; allowedGroups?: any[] }\n) => {\n if (state) {\n try {\n const routingSurrogateKeys = selectSurrogateKeys(state);\n const apiCalls = selectSsrApiCalls(state);\n const anyApiError = !!apiCalls.find(([status]) => status >= 400);\n\n // Check length of surrogate keys and prevent potential header overflow errors in prod\n // Check for any error set in the page response\n // And check if we have seen any error in any of the Delivery API calls\n // - add `any-update` header that will indiscriminately\n // invalidate the SSR page cache when any content is updated\n const addAnyUpdateHeader =\n routingSurrogateKeys.length >= 2000 ||\n response.statusCode >= 400 ||\n anyApiError;\n\n console.info(\n `[addStandardHeaders] ${\n addAnyUpdateHeader ? anyUpdateHeader : routingSurrogateKeys.length\n } surrogate keys for ${response.req.url}`\n );\n\n const surrogateKeys = addAnyUpdateHeader\n ? anyUpdateHeader\n : routingSurrogateKeys.join(' ');\n\n const surrogateKeyHeader = `${packagejson.name}-app ${surrogateKeys}`;\n\n response.setHeader('surrogate-key', surrogateKeyHeader);\n\n addVarnishAuthenticationHeaders(state, response, groups);\n\n response.setHeader(\n 'surrogate-control',\n `max-age=${getCacheDuration(response.statusCode)}`\n );\n } catch (e: any) {\n console.info('[addStandardHeaders] Error adding headers', e.message);\n }\n }\n};\n\nexport const addVarnishAuthenticationHeaders = (\n state: AppState,\n response: Response,\n groups: { globalGroups?: any[]; allowedGroups?: any[] } = {}\n) => {\n if (state) {\n try {\n const stateEntry = selectRouteEntry(state);\n const project = selectCurrentProject(state);\n const { globalGroups, allowedGroups } = groups;\n // console.info(globalGroups, allowedGroups);\n let allGroups = Array.from((globalGroups && globalGroups[project]) || {});\n if (\n stateEntry &&\n getIn(stateEntry, ['authentication', 'isLoginRequired']) &&\n allowedGroups &&\n allowedGroups[project]\n ) {\n allGroups = [...allGroups, ...allowedGroups[project]];\n }\n response.header('x-contensis-viewer-groups', allGroups.join('|'));\n } catch (e) {\n console.info('Error adding authentication header', e);\n }\n }\n};\n","import minifyCssString from 'minify-css-string';\n\n/**\n * Add assets to templateHTML in the positions represented\n * by replacing specific keys wrapped in handlebars depending\n * on the accessMethod(s) that have been set (or updated)\n * while processing the request\n */\nexport const replaceHtml = (\n {\n bundleTags = '',\n html = '',\n htmlAttributes = '',\n metadata = '',\n state = '',\n styleTags = '',\n title = '',\n templateHTML = '',\n templateHTMLFragment = '',\n templateHTMLStatic = '',\n },\n accessMethod: {\n DYNAMIC: boolean;\n REDUX: boolean;\n FRAGMENT: boolean;\n STATIC: boolean;\n }\n) => {\n let responseHTML = '';\n // Serve a blank HTML page with client scripts to load the app in the browser\n if (accessMethod.DYNAMIC) {\n responseHTML = templateHTML\n .replace('{{TITLE}}', '')\n .replace('{{SEO_CRITICAL_METADATA}}', '')\n .replace('{{CRITICAL_CSS}}', '')\n .replace('{{APP}}', '')\n // .replace('{{LOADABLE_CHUNKS}}', bundleTags)\n .replace('{{REDUX_DATA}}', state);\n }\n\n // Page fragment served with client scripts and redux data that hydrate the app client side\n else if (accessMethod.FRAGMENT && !accessMethod.STATIC) {\n responseHTML = templateHTMLFragment\n .replace('{{TITLE}}', title)\n .replace('{{SEO_CRITICAL_METADATA}}', metadata)\n .replace('{{CRITICAL_CSS}}', minifyCssString(styleTags))\n //.replace('{{APP}}', html)\n // .replace('{{LOADABLE_CHUNKS}}', bundleTags)\n .replace('{{REDUX_DATA}}', state);\n }\n\n // Full HTML page served statically\n else if (!accessMethod.FRAGMENT && accessMethod.STATIC) {\n responseHTML = templateHTMLStatic\n .replace('{{TITLE}}', title)\n .replace('{{SEO_CRITICAL_METADATA}}', metadata)\n .replace('{{CRITICAL_CSS}}', minifyCssString(styleTags))\n //.replace('{{APP}}', html)\n .replace('{{LOADABLE_CHUNKS}}', '');\n }\n\n // Full HTML page served with client scripts and redux data that hydrate the app client side\n else if (!accessMethod.FRAGMENT && !accessMethod.STATIC) {\n responseHTML = templateHTML\n .replace('{{TITLE}}', title)\n .replace('{{SEO_CRITICAL_METADATA}}', metadata)\n .replace('{{CRITICAL_CSS}}', styleTags)\n //.replace('{{APP}}', html)\n // .replace('{{LOADABLE_CHUNKS}}', bundleTags)\n .replace('{{REDUX_DATA}}', state);\n }\n\n // If react-helmet htmlAttributes are being used,\n // replace the html tag with those attributes sepcified\n // e.g. (lang, dir etc.)\n if (htmlAttributes) {\n responseHTML = responseHTML.replace(\n /<html?.+?>/,\n `<html ${htmlAttributes}>`\n );\n }\n responseHTML = html ? responseHTML.replace('{{APP}}', html) : responseHTML;\n\n // Only replace bundle tags at the very end when we have rendered and are\n // streaming out the HTML \"footer\"\n if (bundleTags)\n responseHTML = responseHTML.replace('{{LOADABLE_CHUNKS}}', bundleTags);\n\n return responseHTML;\n};\n","import {\n ChunkExtractor,\n ChunkExtractorManager,\n ChunkExtractorManagerProps,\n} from '@loadable/server';\nimport { Request, Response } from 'express';\nimport React, { ClassType, Component, ComponentClass } from 'react';\nimport { CookiesProvider } from 'react-cookie';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { StaticRouter } from 'react-router-dom/server';\nimport { ServerStyleSheet } from 'styled-components';\nimport Cookies from 'universal-cookie';\nimport { AppRoutes, SSRAccessMethod, WithEvents } from '~/models';\nimport { reduxStore } from '~/redux/store/store';\nimport { HttpContext, HttpContextValues } from '~/routing/httpContext';\nimport { SSRContextProvider } from '~/util';\n\n/**\n * Produce the JSX wrapped in the necessary Providers\n * to render the app in SSR\n * @param ReactApp the JSX to render\n * @param { providers, props, ssrAssets }\n * @returns the final JSX to render decorated with all Provider and App props\n */\nexport const ssrJsxProducer = (\n ReactApp: React.ComponentType<any>,\n {\n providers,\n props,\n ssrAssets,\n }: {\n /** Providers enrich the JSX */\n providers: {\n loadable: { extractor: ChunkExtractor };\n cookies?: Cookies;\n redux: typeof reduxStore;\n httpContext: HttpContextValues;\n router: {\n url: string;\n };\n styledComponents?: { sheet: ServerStyleSheet };\n ssrContext: {\n accessMethod: SSRAccessMethod;\n request: Request;\n response: Response;\n };\n };\n /** Props are supplied to the ReactApp */\n props: {\n routes: AppRoutes;\n withEvents: WithEvents;\n };\n /**\n * SSR Assets are passed in here when they become available\n * allowing the ReactApp to control the render for the\n * entire HTML document\n */\n ssrAssets?: {\n bundleTags?: string;\n htmlAttributes?: string;\n metadata?: string;\n serializedState?: string;\n styleTags?: string;\n title?: string;\n };\n }\n) => {\n type ChunkExtractorManagerPropsForReact18 = ChunkExtractorManagerProps & {\n children?: React.ReactNode;\n };\n // Recast ChunkExtractorManager to avoid TS error `Property 'children' does not exist on type...`\n const ChunkExtractor = ChunkExtractorManager as ClassType<\n ChunkExtractorManagerPropsForReact18,\n Component<ChunkExtractorManagerPropsForReact18>,\n ComponentClass<ChunkExtractorManagerPropsForReact18>\n >;\n\n const jsx = (\n <ChunkExtractor extractor={providers.loadable.extractor}>\n <CookiesProvider cookies={providers.cookies}>\n <ReduxProvider store={providers.redux}>\n <HttpContext.Provider value={providers.httpContext}>\n <StaticRouter location={providers.router.url}>\n <SSRContextProvider\n accessMethod={providers.ssrContext.accessMethod}\n request={providers.ssrContext.request}\n response={providers.ssrContext.response}\n ssrAssets={ssrAssets}\n >\n <ReactApp routes={props.routes} withEvents={props.withEvents} />\n </SSRContextProvider>\n </StaticRouter>\n </HttpContext.Provider>\n </ReduxProvider>\n </CookiesProvider>\n </ChunkExtractor>\n );\n\n // Wrap the JSX in a StyleSheetManager if a ServerStyleSheet is provided\n return !providers.styledComponents?.sheet\n ? jsx\n : providers.styledComponents.sheet.collectStyles(jsx);\n};\n","import React from 'react';\nimport { renderToString } from 'react-dom/server';\nimport { matchRoutes, RouteObject } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport { ServerStyleSheet } from 'styled-components';\nimport serialize from 'serialize-javascript';\nimport mapJson from 'jsonpath-mapper';\nimport { Express, Request, Response } from 'express';\nimport { identity, noop } from 'lodash';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { buildCleaner } from 'lodash-clean';\nimport Cookies from 'universal-cookie';\nimport cookiesMiddleware from 'universal-cookie-express';\n\nimport createStore from '~/redux/store/store';\nimport { history } from '~/redux/store/history';\nimport rootSaga from '~/redux/sagas';\n\nimport { setVersion, setVersionStatus } from '~/redux/actions/version';\nimport { HttpContextValues } from '~/routing/httpContext';\nimport { setCurrentProject } from '~/routing/redux/actions';\nimport { selectCurrentSearch } from '~/routing/redux/selectors';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport { mergeStaticRoutes } from '~/util/mergeStaticRoutes';\nimport pickProject from '~/util/pickProject';\nimport stringifyAttributes from './util/stringifyAttributes';\n\nimport { getCacheDuration } from './features/caching/cacheDuration.schema';\nimport handleResponse from './features/response-handler';\nimport {\n renderStream,\n styledComponentsStream,\n} from './features/response-handler/render-stream';\n\nimport {\n getBundleData,\n getBundleTags,\n loadableChunkExtractors,\n} from './util/bundles';\nimport { getVersionInfo } from './util/getVersionInfo';\nimport { unhandledExceptionHandler } from './util/handleExceptions';\nimport { addStandardHeaders } from './util/headers';\nimport { replaceHtml } from './util/html';\n\nimport { AppState, ServerConfig, MatchedRoute, StaticRoute } from '~/models';\nimport { ssrJsxProducer } from './util/jsx';\n\nconst webApp = (\n app: Express,\n ReactApp: React.ComponentType<any>,\n config: ServerConfig & {\n allowedGroups?: string[];\n globalGroups?: string[];\n startupScriptFilename?: string;\n }\n) => {\n const {\n stateType = 'js',\n routes,\n withReducers,\n withSagas,\n withEvents,\n packagejson,\n scripts = {},\n staticFolderPath = 'static',\n startupScriptFilename,\n allowedGroups,\n globalGroups,\n disableSsrRedux,\n enableSsrCookies,\n handleResponses,\n handleExceptions = true,\n } = config;\n const staticRoutePath = config.staticRoutePath || staticFolderPath;\n\n let isRenderingJsxToString = config.renderToString || false;\n\n const bundleData = getBundleData(config, staticRoutePath);\n\n const attributes = stringifyAttributes(scripts.attributes);\n scripts.startup = scripts.startup || startupScriptFilename;\n\n let responseHandler = handleResponse;\n if (typeof handleResponses === 'function') {\n responseHandler = handleResponses;\n isRenderingJsxToString = true;\n }\n\n if (handleExceptions !== false) unhandledExceptionHandler(handleExceptions); // Create `process.on` event handlers for unhandled exceptions (Node v15+)\n\n const versionInfo = getVersionInfo(staticFolderPath);\n\n app.get(\n '/*',\n cookiesMiddleware(),\n async (\n request: Request & {\n universalCookies?: Cookies;\n },\n response: Response\n ) => {\n const url = encodeURI(request.url);\n\n const matchedStaticRoute = matchRoutes(\n routes.StaticRoutes as RouteObject[],\n request.path\n );\n const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0;\n\n if (isStaticRoute) {\n mergeStaticRoutes(matchedStaticRoute);\n }\n\n const staticRoute: MatchedRoute<string, StaticRoute> | null =\n isStaticRoute ? matchedStaticRoute.pop() || null : null;\n\n // Allow certain routes to avoid SSR\n const onlyDynamic = staticRoute && staticRoute.route.ssr === false;\n const onlySSR = staticRoute && staticRoute.route.ssrOnly === true;\n\n const normaliseQs = q => (q && q.toLowerCase() === 'true' ? true : false);\n\n // Determine functional params from QueryString and set access methods\n const accessMethod = mapJson<\n any,\n { DYNAMIC: boolean; REDUX: boolean; FRAGMENT: boolean; STATIC: boolean }\n >(request.query, {\n DYNAMIC: ({ dynamic }) => normaliseQs(dynamic) || onlyDynamic,\n REDUX: ({ redux }) => normaliseQs(redux),\n FRAGMENT: ({ fragment }) => normaliseQs(fragment),\n STATIC: ({ static: value }) => normaliseQs(value) || onlySSR,\n });\n\n // Create a store (with a memory history) from our current url\n const store = await createStore(\n withReducers,\n {} as AppState,\n history({\n initialEntries: [url],\n }),\n stateType\n );\n\n // dispatch any global and non-saga related actions before calling our JSX\n const versionStatus = deliveryApi.getServerSideVersionStatus(request);\n\n // In server-side blocks world, the hostname requested by the client resides in the x-orig-host header\n // Because of this, we prioritize x-orig-host when setting our hostname\n const hostname = (request.headers['x-orig-host'] ||\n request.hostname) as string;\n\n console.info(\n `Request for ${request.path} hostname: ${hostname} versionStatus: ${versionStatus}`\n );\n\n store.dispatch(setVersionStatus(versionStatus));\n store.dispatch(setVersion(versionInfo.commitRef, versionInfo.buildNo));\n\n const project = pickProject(hostname, request.query);\n\n const groups = allowedGroups && allowedGroups[project];\n store.dispatch(setCurrentProject(project, groups, hostname));\n\n const loadableExtractor = loadableChunkExtractors();\n\n // type ChunkExtractorManagerPropsForReact18 = ChunkExtractorManagerProps & {\n // children?: React.ReactNode;\n // };\n\n // // Recast ChunkExtractorManager to avoid TS error `Property 'children' does not exist on type...`\n // const ChunkExtractor = ChunkExtractorManager as ClassType<\n // ChunkExtractorManagerPropsForReact18,\n // Component<ChunkExtractorManagerPropsForReact18>,\n // ComponentClass<ChunkExtractorManagerPropsForReact18>\n // >;\n\n const ssrCookies = enableSsrCookies\n ? // these cookies are managed by the cookiesMiddleware and contain listeners\n // when cookies are read or written in ssr can be added to the `set-cookie` response header\n request.universalCookies\n : // this is a stub cookie collection so cookie methods can be used in code\n new Cookies();\n\n // Track the current statusCode via the response object\n response.status(200);\n\n // Create the context we will pass to JSX HttpContext.Provider\n // and read back any context props set by the ReactApp\n const context: HttpContextValues = {};\n\n // Amalgamate all props for the various Providers we wrap the ReactApp with\n const jsxProviderProps = {\n loadable: { extractor: loadableExtractor.commonLoadableExtractor },\n cookies: ssrCookies,\n redux: store,\n httpContext: context,\n router: { url },\n ssrContext: { accessMethod, request, response },\n };\n // These are the props we will pass to the ReactApp itself\n const jsxReactAppProps = { routes, withEvents };\n\n // Get the configured HTML templates provided by the consumer\n const {\n templateHTML = '',\n templateHTMLFragment = '',\n templateHTMLStatic = '',\n } = bundleData.default.templates || bundleData.legacy.templates || {};\n\n // Serve a blank HTML page with client scripts to load the app in the browser\n if (accessMethod.DYNAMIC) {\n // Dynamic doesn't need sagas\n // or styles, or any split component bundles\n // nor are we streaming responses\n const isDynamicHints = `<script ${attributes}>window.versionStatus = \"${versionStatus}\"; window.isDynamic = true;</script>`;\n\n const jsx = ssrJsxProducer(ReactApp, {\n providers: jsxProviderProps,\n props: jsxReactAppProps,\n ssrAssets: {\n serializedState: isDynamicHints,\n },\n });\n renderToString(jsx);\n\n // Dynamic page render has only the necessary bundles to start up the app\n // and does not include any react-loadable code-split bundles\n const bundleTags = getBundleTags(\n loadableExtractor,\n scripts,\n staticRoutePath\n );\n const responseHtmlDynamic = replaceHtml(\n {\n bundleTags,\n state: isDynamicHints,\n templateHTML,\n templateHTMLFragment,\n },\n accessMethod\n );\n\n // Dynamic pages always return a 200 so we can run\n // the app and serve up all errors inside the client\n response.setHeader(\n 'Surrogate-Control',\n `max-age=${getCacheDuration(200)}`\n );\n responseHandler(request, response, responseHtmlDynamic);\n }\n\n // Render the JSX server side and send response as per access method options\n if (!accessMethod.DYNAMIC) {\n store\n .runSaga(rootSaga(withSagas))\n .toPromise()\n .then(() => {\n const reduxState = store.getState();\n let clonedState = buildCleaner({\n isArray: identity,\n isBoolean: identity,\n isDate: identity,\n isFunction: noop,\n isNull: identity,\n isPlainObject: identity,\n isString: identity,\n isUndefined: noop,\n })(cloneDeep(reduxState));\n // These keys are used for preparing server-side response headers only\n // and are not required in the client at all except for debugging ssr\n if (!selectCurrentSearch(reduxState)?.includes('includeApiCalls')) {\n if (stateType === 'immutable')\n clonedState = clonedState\n .deleteIn(['routing', 'apiCalls'])\n .deleteIn(['routing', 'surrogateKeys']);\n else {\n delete clonedState.routing.apiCalls;\n delete clonedState.routing.surrogateKeys;\n }\n }\n // Reset user state to prevent user details from being cached in SSR\n if (stateType === 'immutable') {\n clonedState = clonedState.delete('user');\n } else delete clonedState.user;\n\n let serialisedReduxData = serialize(clonedState);\n if (context.statusCode !== 404) {\n // For a request that returns a redux state object as a response\n if (accessMethod.REDUX) {\n addStandardHeaders(reduxState, response, packagejson, {\n allowedGroups,\n globalGroups,\n });\n responseHandler(request, response, serialisedReduxData, 'json');\n return true;\n }\n if (!disableSsrRedux) {\n // window.versionStatus is not strictly required here and is added to support cases\n // where a consumer may not be using the contensisVersionStatus in redux and calling\n // the `getClientSideVersionStatus()` method directly\n serialisedReduxData = `<script ${attributes}>window.versionStatus = \"${versionStatus}\"; window.REDUX_DATA = ${serialisedReduxData}</script>`;\n }\n }\n\n // Responses\n addStandardHeaders(reduxState, response, packagejson, {\n allowedGroups,\n globalGroups,\n });\n\n // // Produce the ssr jsx one time so we can get any style tags to pass back in\n // ssrJsxProducer(ReactApp, {\n // providers: { ...jsxProviderProps, styledComponents: { sheet } },\n // props: jsxReactAppProps,\n // });\n\n // // After running rootSaga (and rendering subsquent children)\n // // there should be additional react-loadable\n // // code-split bundles for any page components as well as core app bundles\n // const bundleTags = getBundleTags(\n // loadableExtractor,\n // scripts,\n // staticRoutePath\n // );\n\n const sheet = new ServerStyleSheet();\n const styledJsx = ssrJsxProducer(ReactApp, {\n providers: { ...jsxProviderProps, styledComponents: { sheet } },\n props: jsxReactAppProps,\n ssrAssets: {\n // bundleTags,\n // htmlAttributes,\n // metadata,\n // title,\n },\n });\n\n // We have to call renderToString() in order for all components to have\n // had chance to set the helmet metadata\n const html = renderToString(styledJsx);\n // Helmet.renderStatic() has to be called synchronously immediately after calling renderToString()\n // as it is not thread-safe (or specifically scoped to only this request)\n const helmet = Helmet.renderStatic();\n\n // Because we have had to call renderToString() here to reliably gather all helmet metadata\n // We could potentially call sheet.getStyleTags() here too and avoid piping a react-rendered\n // stream to a second stream to inject styled-components CSS\n\n const htmlAttributes = helmet.htmlAttributes.toString();\n let title = helmet.title.toString();\n const metadata = helmet.meta\n .toString()\n .concat(helmet.base.toString())\n .concat(helmet.link.toString())\n .concat(helmet.script.toString())\n .concat(helmet.noscript.toString());\n\n try {\n /**\n * Loads all page assets into the provided templateHTML\n *\n * Is callable after the JSX has been rendered, as\n * JSX components may update the context via the\n * HttpContext.Provider which can influence whether\n * we render the page as STATIC or render nothing\n * if the context has requested a redirect\n * */\n const getContextHtml = (\n isFinal = false,\n styleTags?: string,\n renderedJsxMarkup?: string\n ) => {\n if (context.url) {\n response.redirect(context.statusCode || 302, context.url);\n return '';\n }\n\n // Make the page render statically if there is an error status code\n if ((context.statusCode || 200) >= 404) {\n accessMethod.STATIC = true;\n }\n\n if (context.statusCode === 404)\n title = '<title>404 page not found</title>';\n\n // Set response.status from React StaticRouter\n if (typeof context.statusCode === 'number')\n response.status(context.statusCode);\n\n const bundleTags = isFinal\n ? getBundleTags(loadableExtractor, scripts, staticRoutePath)\n : '';\n\n const html = replaceHtml(\n {\n bundleTags,\n html: renderedJsxMarkup,\n htmlAttributes,\n metadata,\n state: serialisedReduxData,\n styleTags,\n title,\n templateHTML,\n templateHTMLFragment,\n templateHTMLStatic,\n },\n accessMethod\n );\n return html;\n };\n\n if (isRenderingJsxToString) {\n // We have already (begrudgingly) rendered the JSX to a string above\n // so we can get all of the Helmet metadata out from any rendered component\n // const html = renderToString(styledJsx);\n const styleTags = sheet.getStyleTags();\n const responseHTML = getContextHtml(true, styleTags, html);\n responseHandler(request, response, responseHTML);\n } else {\n renderStream(\n getContextHtml,\n styledJsx,\n response,\n styledComponentsStream(sheet)\n );\n }\n } catch (err: any) {\n console.info(err.message);\n }\n })\n .catch(err => {\n // Handle any error that occurred in any of the previous\n // promises in the chain.\n console.info(err);\n response.status(500);\n responseHandler(\n request,\n response,\n `Error occurred: <br />${err.stack} <br />${JSON.stringify(err)}`\n );\n });\n\n // If this is removed we don't get the redux state populated\n // with the result of the actions RouteLoader component has dispatched\n renderToString(\n ssrJsxProducer(ReactApp, {\n providers: jsxProviderProps,\n props: jsxReactAppProps,\n })\n );\n\n store.close();\n }\n }\n );\n};\n\nexport default webApp;\n","import 'isomorphic-fetch';\nimport express, { Express } from 'express';\nimport http from 'http';\nimport React from 'react';\n\nimport ConfigureReverseProxies, {\n deliveryProxy,\n} from './features/reverse-proxy';\nimport ServeStaticAssets from './features/static-assets';\nimport DisplayStartupConfiguration from './util/displayStartupConfiguration';\nimport ConfigureWebApp from './webApp';\n\nimport { ServerConfig } from '~/models';\n\ndeclare let global: typeof globalThis & {\n DISABLE_SSR_REDUX: boolean | undefined;\n PACKAGE_JSON: any;\n PROXY_DELIVERY_API: boolean | undefined;\n REVERSE_PROXY_PATHS: string[];\n};\n\nconst app = express();\n\nconst server = http.createServer(app);\n\nconst start = (\n ReactApp: React.ComponentType<any>,\n config: ServerConfig,\n ServerFeatures: (app: Express) => void\n) => {\n global.PACKAGE_JSON = config.packagejson;\n global.DISABLE_SSR_REDUX = config.disableSsrRedux;\n global.PROXY_DELIVERY_API = config.proxyDeliveryApi;\n global.REVERSE_PROXY_PATHS = Object(config.reverseProxyPaths);\n\n app.disable('x-powered-by');\n // Output some information about the used build/startup configuration\n DisplayStartupConfiguration(config);\n\n ServerFeatures(app);\n // Set-up local proxy for images from cms, and delivery api requests\n // to save doing rewrites and extra code\n ConfigureReverseProxies(app, config.reverseProxyPaths);\n ServeStaticAssets(app, config);\n ConfigureWebApp(app, ReactApp, config);\n\n app.on('ready', async () => {\n server.listen(3001, () => {\n console.info(`HTTP server is listening @ port 3001`);\n setTimeout(function () {\n app.emit('app_started');\n }, 500);\n });\n app.on('stop', () => {\n server.close(function () {\n console.info('GoodBye :(');\n process.exit();\n });\n });\n });\n};\n\ntype Exporting = {\n app: Express;\n apiProxy: typeof deliveryProxy;\n server: http.Server;\n start: (\n ReactApp: React.ComponentType<any>,\n config: ServerConfig,\n ServerFeatures: (app: Express) => void\n ) => void;\n};\n\nexport default { app, apiProxy: deliveryProxy, server, start } as Exporting;\n"],"names":["Util","GetIds","entries","fieldId","map","e","_e$fieldId","_e$fieldId2","Array","isArray","f","_f$sys","sys","id","flat","_e$sys","GetItems","result","GetResults","items","mergeResults","results","parentResults","replaceContentTypeIds","linkFieldId","r","some","c","contentTypeId","resolvedParent","find","_e$linkFieldId","l","_l$sys","entryTitle","entryDescription","originalSys","filter","searchQuery","assetTypes","contentTypeIds","customWhere","fields","filters","idFilters","sharedFilters","pageSize","pageIndex","orderBy","searchTerm","versionStatus","webpageTemplates","weightedSearchFields","expressions","exp","length","Op","or","query","Query","appendSearchQueryFilters","where","addRange","finalQuery","children","and","child","makeFilterExpressions","params","paramKey","filterConfig","Object","_params$paramKey","filterValues","split","push","key","values","fieldOperator","logicOperator","makeDerivedIdsFilterExpression","prevFieldId","ownIds","alwaysApplyFilter","previouslyDerivedIdsFilter","prevResultIds","resolveParentEntries","parentContentTypeIds","parentFieldId","debug","previousIdsFilter","JSON","parse","console","log","stringify","toJSON","substring","cachedSearch","searchUsingPost","Number","linkDepth","projectId","QueryLevelResults","constructor","level","linkFields","returnEntries","resolveFirstParent","parent","validatedLinks","firstQuery","firstResults","finalResults","AddChild","RunFirstQuery","runFirstQuery","fromEntries","vl","entryIds","join","linkFieldIds","RunFinalQuery","runFinalQuery","firstChild","_this$parent","_this$parent2","GetResultsEntries","_finalResults$items","totalCount","keys","fId","p","includes","term","LinkDepthSearchService","DoSearch","queryLevel","queryLevels","reverse","RunFinalQueries","finalQueryLevels","ql","_params$orderBy","derivedIds","derivedIdFilters","_l$parent","_ql$parent","_ql$parent2","entriesAtLevel","qc","reduce","accumulator","object","finalQueryResult","resolveParentLevels","resolveParents","_resolveParents$paren","_resolveParents$paren2","_this$queryLevels$fin","InitQueryLevels","createChildQueryLevels","parentQueryLevel","thisLevel","fKey","fVal","firstLevel","makeLinkDepthApi","app","middlewareConfig","uri","get","makeLinkDepthMiddleware","linkDepthMiddleware","req","res","setCachingHeaders","cacheControl","surrogateControl","k","v","toString","json","error","statusCode","errorMiddleware","servers","SERVERS","project","PROJECT","alias","ALIAS","deliveryApiHostname","url","api","assetProxy","httpProxy","createProxyServer","deliveryProxy","reverseProxies","reverseProxyPaths","deliveryApiProxy","all","target","hostname","indexOf","previewIis","iis","web","changeOrigin","on","path","apiProxy","CacheDuration","static","expressStatic","getCacheDuration","status","anyUpdateHeader","replaceStaticPath","str","staticFolderPath","replace","bundleManipulationMiddleware","appRootPath","maxage","staticRoutePath","next","filename","basename","encodeURI","modernBundle","endsWith","legacyBundle","startsWith","jsRuntimeLocation","resolve","jsRuntimeBundle","fs","readFileSync","modifiedBundle","set","type","send","readError","resolveStartupMiddleware","startupScriptFilename","startupFileLocation","startupFilePaths","startupFilePath","forEach","testPath","accessSync","ex","sendFile","sendFileError","staticAssets","appPath","scripts","staticRoutePaths","use","startup","express","maxAge","projects","PROJECTS","DisplayStartupConfiguration","config","attributes","value","idx","handleResponse","request","response","content","renderStream","getContextHtml","jsx","stream","abort","pipe","renderToPipeableStream","onShellReady","html","header","setHeader","write","onAllReady","footer","onShellError","onError","setTimeout","styledComponentsStream","sheet","readerWriter","Transform","objectMode","transform","chunk","_","callback","renderedHtml","TextDecoder","decode","styledCSS","_emitSheetCSS","CLOSING_TAG_R","instance","clearTag","test","replacedHtml","execResult","exec","endOfClosingTag","index","before","slice","after","loadableBundleData","stats","templates","build","bundle","templateHTML","templateHTMLStatic","templateHTMLFragment","fragment","loadableChunkExtractors","commonLoadableExtractor","ChunkExtractor","modern","legacy","entrypoints","namespace","statsFile","info","addChunk","_modern","_legacy","_legacy2","assetsByChunkName","getBundleData","bundleData","default","getBundleTags","loadableExtractor","startupTag","stringifyAttributes","_loadableExtractor$le","_loadableExtractor$mo","legacyScriptTags","getScriptTags","nomodule","modernScriptTags","scriptTags","getVersionInfo","versionData","versionInfo","handleDefaultEvents","unhandledExceptionHandler","handleExceptions","exceptionTypes","process","err","Error","chalk","red","bold","message","gray","addStandardHeaders","state","packagejson","groups","routingSurrogateKeys","selectSurrogateKeys","apiCalls","selectSsrApiCalls","anyApiError","addAnyUpdateHeader","surrogateKeys","surrogateKeyHeader","name","addVarnishAuthenticationHeaders","stateEntry","selectRouteEntry","selectCurrentProject","globalGroups","allowedGroups","allGroups","from","getIn","replaceHtml","bundleTags","htmlAttributes","metadata","styleTags","title","accessMethod","responseHTML","DYNAMIC","FRAGMENT","STATIC","minifyCssString","ssrJsxProducer","ReactApp","providers","props","ssrAssets","_providers$styledComp","ChunkExtractorManager","React","createElement","extractor","loadable","CookiesProvider","cookies","ReduxProvider","store","redux","HttpContext","Provider","httpContext","StaticRouter","location","router","SSRContextProvider","ssrContext","routes","withEvents","styledComponents","collectStyles","webApp","stateType","withReducers","withSagas","disableSsrRedux","enableSsrCookies","handleResponses","isRenderingJsxToString","renderToString","responseHandler","cookiesMiddleware","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","mergeStaticRoutes","staticRoute","pop","onlyDynamic","route","ssr","onlySSR","ssrOnly","normaliseQs","q","toLowerCase","mapJson","dynamic","REDUX","createStore","history","initialEntries","deliveryApi","getServerSideVersionStatus","headers","dispatch","setVersionStatus","setVersion","commitRef","buildNo","pickProject","setCurrentProject","ssrCookies","universalCookies","Cookies","context","jsxProviderProps","jsxReactAppProps","isDynamicHints","serializedState","responseHtmlDynamic","runSaga","rootSaga","toPromise","then","_selectCurrentSearch","reduxState","getState","clonedState","buildCleaner","identity","isBoolean","isDate","isFunction","noop","isNull","isPlainObject","isString","isUndefined","cloneDeep","selectCurrentSearch","deleteIn","routing","delete","user","serialisedReduxData","serialize","ServerStyleSheet","styledJsx","helmet","Helmet","renderStatic","meta","concat","base","link","script","noscript","isFinal","renderedJsxMarkup","redirect","getStyleTags","catch","stack","close","server","http","createServer","start","ServerFeatures","global","PACKAGE_JSON","DISABLE_SSR_REDUX","PROXY_DELIVERY_API","proxyDeliveryApi","REVERSE_PROXY_PATHS","disable","ConfigureReverseProxies","ServeStaticAssets","ConfigureWebApp","listen","emit","exit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACO,MAAMA,IAAI,CAAC;AAChB,EAAA,OAAOC,MAAMA,CAACC,OAAgB,EAAEC,OAAgB,EAAE;AAChD,IAAA,IAAIA,OAAO,EAAE;MACX,OAAOD,OAAO,aAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CACVE,GAAG,CAACC,CAAC,IAAA;QAAA,IAAAC,UAAA,EAAAC,WAAA;AAAA,QAAA,OACLC,KAAK,CAACC,OAAO,CAACJ,CAAC,KAAA,IAAA,IAADA,CAAC,KAAA,MAAA,GAAA,MAAA,GAADA,CAAC,CAAGF,OAAO,CAAC,CAAC,GACvBE,CAAC,KAAA,IAAA,IAADA,CAAC,KAAA,MAAA,IAAA,CAAAC,UAAA,GAADD,CAAC,CAAGF,OAAO,CAAC,MAAA,IAAA,IAAAG,UAAA,KAAA,MAAA,GAAA,MAAA,GAAZA,UAAA,CAAcF,GAAG,CAAEM,CAAQ,IAAA;AAAA,UAAA,IAAAC,MAAA;AAAA,UAAA,OAAKD,CAAC,KAAA,IAAA,IAADA,CAAC,KAAA,MAAA,IAAA,CAAAC,MAAA,GAADD,CAAC,CAAEE,GAAG,MAAA,IAAA,IAAAD,MAAA,KAAA,MAAA,GAAA,MAAA,GAANA,MAAA,CAAQE,EAAE;QAAA,CAAA,CAAC,GAC3C,CAAAR,CAAC,KAAA,IAAA,IAADA,CAAC,KAAA,MAAA,IAAA,CAAAE,WAAA,GAADF,CAAC,CAAGF,OAAO,CAAC,MAAA,IAAA,IAAAI,WAAA,KAAA,MAAA,IAAA,CAAAA,WAAA,GAAZA,WAAA,CAAcK,GAAG,MAAA,IAAA,IAAAL,WAAA,KAAA,MAAA,GAAA,MAAA,GAAjBA,WAAA,CAAmBM,EAAE,KAAI,EAAE;AAAA,MAAA,CACjC,CAAC,CACAC,IAAI,EAAE;AACX,IAAA;IACA,OAAOZ,OAAO,aAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEE,GAAG,CAACC,CAAC,IAAA;AAAA,MAAA,IAAAU,MAAA;AAAA,MAAA,OAAI,CAAAV,CAAC,KAAA,IAAA,IAADA,CAAC,KAAA,MAAA,IAAA,CAAAU,MAAA,GAADV,CAAC,CAAEO,GAAG,cAAAG,MAAA,KAAA,MAAA,GAAA,MAAA,GAANA,MAAA,CAAQF,EAAE,KAAI,EAAE;IAAA,CAAA,CAAC;AAC5C,EAAA;EAEA,OAAOG,QAAQA,CAACC,MAAwB,EAAE;IACxC,OAAO,IAAI,CAACC,UAAU,CAACD,MAAM,CAAC,GAAGA,MAAM,CAACE,KAAK,GAAG,EAAE;AACpD,EAAA;EAEA,OAAOD,UAAUA,CAACD,MAAwB,EAAE;AAC1C,IAAA,IAAIA,MAAM,KAAA,IAAA,IAANA,MAAM,eAANA,MAAM,CAAEE,KAAK,EAAE;AACjB,MAAA,OAAOF,MAAM;AACf,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI;AACb,IAAA;AACF,EAAA;AACF;AAEO,MAAMG,YAAY,GAAGA,CAC1BC,OAAgB,EAChBC,aAAsB,EACtBC,qBAA+B,EAC/BC,WAAmB,KAEnBH,OAAO,CACJjB,GAAG,CAACqB,CAAC,IAAI;AACR,EAAA,IAAIF,qBAAqB,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,KAAKF,CAAC,CAACb,GAAG,CAACgB,aAAa,CAAC,EAAE;IAC9D,MAAMC,cAAc,GAAGP,aAAa,KAAA,IAAA,IAAbA,aAAa,uBAAbA,aAAa,CAAEQ,IAAI,CAACzB,CAAC,IAAA;AAAA,MAAA,IAAA0B,cAAA;AAAA,MAAA,OAAA,CAAAA,cAAA,GAC1C1B,CAAC,CAACmB,WAAW,CAAC,MAAA,IAAA,IAAAO,cAAA,KAAA,MAAA,GAAA,MAAA,GAAdA,cAAA,CAAgBL,IAAI,CAAEM,CAAQ,IAAA;AAAA,QAAA,IAAAC,MAAA;AAAA,QAAA,OAAK,EAAAA,MAAA,GAAAD,CAAC,CAACpB,GAAG,MAAA,IAAA,IAAAqB,MAAA,KAAA,MAAA,GAAA,MAAA,GAALA,MAAA,CAAOpB,EAAE,MAAKY,CAAC,CAACb,GAAG,CAACC,EAAE;MAAA,CAAA,CAAC;AAAA,IAAA,CAC5D,CAAC;IACD,IAAIgB,cAAc,EAChB,OAAO;AACL,MAAA,GAAGA,cAAc;AACjB,MAAA,GAAGJ,CAAC;MACJS,UAAU,EAAEL,cAAc,CAACK,UAAU;MACrCC,gBAAgB,EAAEN,cAAc,CAACM,gBAAgB;MACjDvB,GAAG,EAAEiB,cAAc,CAACjB,GAAG;MACvBwB,WAAW,EAAEX,CAAC,CAACb;KAChB,CAAC,KACC,OAAOa,CAAC;AACf,EAAA;AACA,EAAA,OAAOA,CAAC;AACV,CAAC,CAAC,CACDY,MAAM,CAACZ,CAAC,IAAIA,CAAC,CAAY;;ACpB9B;AACA;AACA;AACA;AACA;AACO,MAAMa,WAAW,GAAGA,CAAC;EAC1BC,UAAU;EACVC,cAAc;EACdC,WAAW;EACXC,MAAM;EACNC,OAAO;AACPC,EAAAA,SAAS,GAAG,EAAE;AACdC,EAAAA,aAAa,GAAG,EAAE;EAClBC,QAAQ;AACRC,EAAAA,SAAS,GAAG,CAAC;EACbC,OAAO;EACPC,UAAU;AACVC,EAAAA,aAAa,GAAG,WAAW;EAC3BC,gBAAgB;AAChBC,EAAAA;AACe,CAAC,KAAK;EACrB,MAAMC,aAAW,GAAG,CAClB,GAAGC,kBAAsB,CAACJ,aAAa,CAAC,EACxC,GAAGI,uBAA2B,CAC5Bd,cAAc,EACdW,gBAAgB,EAChBZ,UACF,CAAC,EACD,GAAGe,sBAA0B,CAACb,WAAW,CAAC,EAC1C,GAAGa,iBAAqB,CAACX,OAAO,CAAC,EACjC,GAAGW,iBAAqB,CAACV,SAAS,CAAC,EACnC,IAAI,CAAAC,aAAa,KAAA,IAAA,IAAbA,aAAa,uBAAbA,aAAa,CAAEU,MAAM,IAAG,CAAC,GACzB,CAACC,EAAE,CAACC,EAAE,CAAC,GAAGH,iBAAqB,CAACT,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,GACtD,EAAE,CAAC,EACP,GAAGS,eAAmB,CAACL,UAAU,IAAI,EAAE,EAAEG,oBAAoB,IAAI,EAAE,CAAC,CACrE;AAED,EAAA,MAAMM,KAAK,GAAG,IAAIC,KAAK,CAAC,GAAGN,aAAW,CAAC;EAEvCK,KAAK,CAACV,OAAO,GAAGM,iBAAqB,CAACN,OAAO,IAAI,EAAE,CAAC;AAEpD,EAAA,IAAIN,MAAM,IAAIA,MAAM,CAACa,MAAM,GAAG,CAAC,EAAE;IAC9BG,KAAK,CAAShB,MAAM,GAAGA,MAAM;AAChC,EAAA;;AAEA;AACA;EACAgB,KAAK,CAACX,SAAS,GAAGA,SAAS;EAC3BW,KAAK,CAACZ,QAAQ,GAAGA,QAAQ;AACzB,EAAA,OAAOY,KAAK;AACd,CAAC;AAEM,MAAME,wBAAwB,GAAGA,CACtCF,KAAY,EACZd,SAA6B,KAC1B;EACHc,KAAK,CAACG,KAAK,CAACC,QAAQ,CAACR,iBAAqB,CAACV,SAAS,CAAC,CAAC;AACxD,CAAC;AAEM,MAAMmB,UAAU,GAAGA,CACxB;EACExB,UAAU;EACVC,cAAc;EACdE,MAAM;EACNC,OAAO;EACPC,SAAS;EACTC,aAAa;EACbC,QAAQ;EACRC,SAAS;EACTC,OAAO;EACPC,UAAU;AACVC,EAAAA,aAAa,GAAG,WAAW;EAC3BC,gBAAgB;AAChBC,EAAAA;AACe,CAAC,EAClBY,QAA6E,KAC1E;AACH,EAAA,MAAMX,aAAW,GAAG,CAClB,GAAGC,kBAAsB,CAACJ,aAAa,CAAC,EACxCM,EAAE,CAACC,EAAE,CACHD,EAAE,CAACS,GAAG,CACJ,GAAGX,uBAA2B,CAC5Bd,cAAc,EACdW,gBAAgB,EAChBZ,UACF,CAAC,EACD,GAAGe,iBAAqB,CAACX,OAAO,CAAC,EACjC,GAAGW,iBAAqB,CAACV,SAAS,IAAI,EAAE,CAAC,EAEzC,IAAIC,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,MAAA,IAAbA,aAAa,CAAEU,MAAM,GACrB,CACAC,EAAE,CAACC,EAAE,CACH,GAAGH,iBAAqB,CAACT,aAAa,IAAI,EAAE;AAC5C;AACA;AACA;AACA;AACA;AACA;AACF,GAAC,CACF,GACC,EAAE,CACR,CAAC,EACD,GAAGmB,QAAQ,CAAC5D,GAAG,CAAC8D,KAAK,IACnBV,EAAE,CAACS,GAAG,CACJ,GAAGX,uBAA2B,CAC5BY,KAAK,CAAC1B,cAAc,EACpB0B,KAAK,CAACf,gBAAgB,EACtBe,KAAK,CAAC3B,UACR,CAAC,EACD,GAAGe,iBAAqB,CAACY,KAAK,CAACrB,aAAa,IAAI,EAAE,CAAC,EACnD,GAAGS,iBAAqB,CAACY,KAAK,CAACtB,SAAS,IAAI,EAAE,CAChD,CACF,CACF,CAAC,EACD,GAAGU,eAAmB,CAACL,UAAU,IAAI,EAAE,EAAEG,oBAAoB,IAAI,EAAE,CAAC,CACrE;AAED,EAAA,MAAMM,KAAK,GAAG,IAAIC,KAAK,CAAC,GAAGN,aAAW,CAAC;EAEvCK,KAAK,CAACV,OAAO,GAAGM,iBAAqB,CAACN,OAAO,IAAI,EAAE,CAAC;AAEpD,EAAA,IAAIN,MAAM,IAAIA,MAAM,CAACa,MAAM,GAAG,CAAC,EAAE;IAC9BG,KAAK,CAAShB,MAAM,GAAGA,MAAM;AAChC,EAAA;;AAEA;AACA;AACAgB,EAAAA,KAAK,CAACX,SAAS,GAAGA,SAAS,IAAI,CAAC;EAChCW,KAAK,CAACZ,QAAQ,GAAGA,QAAQ;AACzB,EAAA,OAAOY,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMS,qBAAqB,GAAGA,CACnCzD,CAAsB,EACtB0D,MAA+C,KACxB;EACvB,MAAMf,WAA+B,GAAG,EAAE;AAC1C,EAAA,KAAK,MAAM,CAACgB,QAAQ,EAAEC,YAAY,CAAC,IAAIC,MAAM,CAACrE,OAAO,CAACQ,CAAC,CAAC,EAAE;AAAA,IAAA,IAAA8D,gBAAA;AACxD,IAAA,MAAMC,YAAY,GAAA,CAAAD,gBAAA,GAAGJ,MAAM,CAACC,QAAQ,CAAC,MAAA,IAAA,IAAAG,gBAAA,uBAAhBA,gBAAA,CAAkBE,KAAK,CAAC,GAAG,CAAC;IACjD,IAAI,OAAOD,YAAY,KAAK,WAAW,EACrCpB,WAAW,CAACsB,IAAI,CAAC;MACfC,GAAG,EACD,OAAON,YAAY,KAAK,QAAQ,GAC5BA,YAAY,CAACnE,OAAO,GACpBmE,YAAY;AAClBO,MAAAA,MAAM,EAAEJ,YAAY;AACpBK,MAAAA,aAAa,EACX,OAAOR,YAAY,KAAK,QAAQ,IAAIA,YAAY,CAACQ,aAAa,GACzDR,YAAY,CAACQ,aAAa,GAC3B,SAAS;AACfC,MAAAA,aAAa,EACX,OAAOT,YAAY,KAAK,QAAQ,IAAIA,YAAY,CAACS,aAAa,GACzDT,YAAY,CAACS,aAAa,GAC3B;AACR,KAAC,CAAC;AACN,EAAA;AACA,EAAA,OAAO1B,WAAW;AACpB,CAAC;AAEM,MAAM2B,8BAA8B,GAAGA,CAC5CC,WAAmB,EACnB/E,OAAgB,EAChBgF,MAAM,GAAG,KAAK,EACdC,iBAAiB,GAAG,KAAK,KACtB;EACH,MAAMC,0BAA0B,GAAG,EAAwB;AAC3D,EAAA,MAAMC,aAAa,GAAGrF,IAAI,CAACC,MAAM,CAACC,OAAO,CAAC;AAE1C,EAAA,IAAI+E,WAAW,IAAI,CAAAI,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAa,CAAE9B,MAAM,IAAG,CAAC,EAC1C6B,0BAA0B,CAACT,IAAI,CAAC;AAC9BC,IAAAA,GAAG,EAAEM,MAAM,GAAG,QAAQ,GAAG,CAAA,EAAGD,WAAW,CAAA,OAAA,CAAS;AAChDJ,IAAAA,MAAM,EAAEQ,aAAa;AACrBP,IAAAA,aAAa,EAAE,IAAI;AACnBC,IAAAA,aAAa,EAAE;GAChB,CAAC,CAAC,KACA,IAAII,iBAAiB,EACxBC,0BAA0B,CAACT,IAAI,CAAC;AAC9BC,IAAAA,GAAG,EAAE,cAAc;IACnBC,MAAM,EAAE,CAAC,GAAG,CAAC;AACbC,IAAAA,aAAa,EAAE,IAAI;AACnBC,IAAAA,aAAa,EAAE;AACjB,GAAC,CAAC;AACJ,EAAA,OAAOK,0BAA0B;AACnC,CAAC;AAEM,MAAME,oBAAoB,GAAG,OAClCC,oBAA8B,EAC9BhE,qBAA+B,EAC/BiE,aAAqB,EACrBnE,OAAgB,EAChB+C,MAAW,EACXqB,KAAc,KACX;AACH;AACA,EAAA,MAAMC,iBAAiB,GAAGV,8BAA8B,CACtDQ,aAAa,EACbnE,OACF,CAAQ;EAER,MAAMqC,KAAK,GAAGpB,WAAW,CAAC;AACxBE,IAAAA,cAAc,EAAE+C,oBAAoB;AACpC3C,IAAAA,SAAS,EAAE8C;AACb,GAAQ,CAAC;EACThC,KAAK,CAAChB,MAAM,GAAG0B,MAAM,CAAC1B,MAAM,GACxB,CAAC,GAAIiD,IAAI,CAACC,KAAK,CAACxB,MAAM,CAAC1B,MAAM,CAAyB,EAAE8C,aAAa,CAAC,GACtE,EAAE;EAEN,IAAIC,KAAK,EACPI,OAAO,CAACC,GAAG,CACT,CAAA,kCAAA,EAAqCH,IAAI,CAACI,SAAS,CACjDrC,KAAK,CAACsC,MAAM,EACd,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CACtB,CAAC;EAEH,MAAM3E,aAAa,GAAG,MAAM4E,YAAY,CAACC,eAAe,CACtDzC,KAAK,EACL0C,MAAM,CAAChC,MAAM,CAACiC,SAAS,IAAI,CAAC,CAAC,EAC7BjC,MAAM,CAACkC,SACT,CAAC;AAED,EAAA,OAAOlF,YAAY,CACjBC,OAAO,EACPrB,IAAI,CAACgB,QAAQ,CAACM,aAAa,CAAC,EAC5BC,qBAAqB,EACrBiE,aACF,CAAC;AACH,CAAC;;AChRD;;AAaA,MAAMe,iBAAiB,CAAC;AA8BtBC,EAAAA,WAAWA,CAAC;AACVC,IAAAA,KAAK,EAALA,MAAK;IACLjE,cAAc;IACdkE,UAAU;IACV/D,OAAO;IACPE,aAAa;IACb8D,aAAa;IACbC,kBAAkB;AAClBxC,IAAAA,MAAM,EAANA,OAAM,GAAG,EAAE;AACXyC,IAAAA,MAAM,EAANA,OAAM;AACNpB,IAAAA,KAAK,GAAG;AAYV,GAAC,EAAE;IAAA,IAAA,CA1CHqB,cAAc,GAIR,EAAE;IAAA,IAAA,CAGR9C,QAAQ,GAAwB,EAAE;IAAA,IAAA,CAI1BI,MAAM,GAA0C,EAAE;AAAA,IAAA,IAAA,CAGlD2C,UAAU,GAAU,IAAIpD,OAAK,EAAE;IAAA,IAAA,CAC/BqD,YAAY,GAAqB,EAAE;AAAA,IAAA,IAAA,CAEnCjD,UAAU,GAAU,IAAIJ,OAAK,EAAE;IAAA,IAAA,CAC/BsD,YAAY,GAAqB,EAAE;IAAA,IAAA,CA0E3CC,QAAQ,GAAG,CAAC;AAAEhD,MAAAA;AAAoC,KAAC,KAAK;AACtD,MAAA,IAAI,CAACF,QAAQ,CAACW,IAAI,CAACT,KAAK,CAAC;IAC3B,CAAC;IAAA,IAAA,CAEDiD,aAAa,GAAG,YAAY;MAC1B,MAAM;AAAEJ,QAAAA,UAAU,EAAErD,KAAK;QAAEU,MAAM;QAAEyC,MAAM;AAAEO,QAAAA;AAAc,OAAC,GAAG,IAAI;MAEjE,IAAIP,MAAM,aAANA,MAAM,KAAA,MAAA,IAANA,MAAM,CAAEC,cAAc,CAACvD,MAAM,EAAE;AACjC;QACAK,wBAAwB,CACtBF,KAAK,EACLS,qBAAqB,CACnBI,MAAM,CAAC8C,WAAW,CAChBR,MAAM,CAACC,cAAc,CAAC1G,GAAG,CAACkH,EAAE,IAAI,CAC9BA,EAAE,CAAC9F,WAAW,EACd;AAAErB,UAAAA,OAAO,EAAE,CAAA,MAAA;AAAS,SAAC,CACtB,CACH,CAAC,EACDoE,MAAM,CAAC8C,WAAW,CAChBR,MAAM,CAACC,cAAc,CAAC1G,GAAG,CAACkH,EAAE,IAAI,CAC9BA,EAAE,CAAC9F,WAAW,EACd8F,EAAE,CAACC,QAAQ,CAACC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,mBAAA,EAAsBX,MAAM,CAACJ,KAAK,CAAA,CAAE,CAC9D,CACH,CACF,CACF,CAAC;AACH,MAAA;AAEA,MAAA,IAAIW,aAAa,EAAE;AACjB,QAAA,IAAI,IAAI,CAAC3B,KAAK,EACZI,OAAO,CAACC,GAAG,CACT,CAAA,QAAA,EAAW,IAAI,CAACW,KAAK,qBAAqBd,IAAI,CAACI,SAAS,CACtDrC,KAAK,CAACsC,MAAM,EACd,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EACtB,CAAC;AAEH,QAAA,IAAI,CAACe,YAAY,GAAG,MAAMd,YAAY,CAACC,eAAe,CACpDzC,KAAK,EACL,CAAC,EACDU,MAAM,CAACkC,SACT,CAAC;;AAED;AACA,QAAA,KAAK,MAAM9E,WAAW,IAAI,IAAI,CAACiG,YAAY,EAAE;AAC3C,UAAA,IAAI,CAACX,cAAc,CAACnC,IAAI,CAAC;YACvB/C,aAAa,EAAE,IAAI,CAAC8E,UAAU,CAAClF,WAAW,CAAC,CAACI,aAAa,IAAI,EAAE;YAC/DJ,WAAW;YACX+F,QAAQ,EAAEvH,IAAI,CAACC,MAAM,CAAC,IAAI,CAAC+G,YAAY,CAAC7F,KAAK,EAAEK,WAAW;AAC5D,WAAC,CAAC;AACJ,QAAA;AACF,MAAA;IACF,CAAC;IAAA,IAAA,CAEDkG,aAAa,GAAG,YAAY;MAC1B,MAAM;QAAEjB,KAAK;QAAEzC,QAAQ;AAAED,QAAAA,UAAU,EAAEL,KAAK;QAAEU,MAAM;AAAEuD,QAAAA;AAAc,OAAC,GAAG,IAAI;MAE1E,IAAI,CAAC3D,QAAQ,CAACtC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACgF,aAAa,CAAC,EAAE;QACxC,MAAMiB,UAAU,GAAG5D,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,MAAA,GAAA,MAAA,GAARA,QAAQ,CAAG,CAAC,CAAC;AAChC;QACA,IAAI4D,UAAU,EACZhE,wBAAwB,CACtBF,KAAK,EACLS,qBAAqB,CACnBI,MAAM,CAAC8C,WAAW,CAChBO,UAAU,CAACd,cAAc,CAAC1G,GAAG,CAACkH,EAAE,IAAI,CAClCA,EAAE,CAAC9F,WAAW,EACd;AAAErB,UAAAA,OAAO,EAAE,CAAA,EAAGmH,EAAE,CAAC9F,WAAW,CAAA,OAAA;AAAU,SAAC,CACxC,CACH,CAAC,EACD+C,MAAM,CAAC8C,WAAW,CAChBO,UAAU,CAACd,cAAc,CAAC1G,GAAG,CAACkH,EAAE,IAAI,CAClCA,EAAE,CAAC9F,WAAW,EACd8F,EAAE,CAACC,QAAQ,CAACC,IAAI,CAAC,GAAG,CAAC,IACnB,CAAA,kBAAA,EAAqBI,UAAU,CAACnB,KAAK,CAAA,CAAE,CAC1C,CACH,CACF,CACF,CAAC;AACL,MAAA;AAEA,MAAA,IAAIA,KAAK,KAAK,CAAC,IAAI,IAAI,CAACE,aAAa,EAAE;AACrC;AACA;AACAjD,QAAAA,KAAK,CAAChB,MAAM,GAAGiD,IAAI,CAACC,KAAK,CAACxB,MAAM,CAAC1B,MAAM,IAAI,IAAI,CAAwB;AACvEgB,QAAAA,KAAK,CAACZ,QAAQ,GAAGsB,MAAM,CAACtB,QAA6B;AACrDY,QAAAA,KAAK,CAACX,SAAS,GAAGqB,MAAM,CAACrB,SAA8B;AACvD;AACF,MAAA;AAEA,MAAA,IAAI4E,aAAa,EAAE;AACjB,QAAA,IAAI,IAAI,CAAClC,KAAK,EACZI,OAAO,CAACC,GAAG,CACT,CAAA,QAAA,EAAW,IAAI,CAACW,KAAK,qBAAqBd,IAAI,CAACI,SAAS,CACtDrC,KAAK,CAACsC,MAAM,EACd,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EACtB,CAAC;QACH,IAAI,CAACgB,YAAY,GAAG,MAAMf,YAAY,CAACC,eAAe,CACpDzC,KAAK,EACL0C,MAAM,CAAChC,MAAM,CAACiC,SAAS,CAAC,IAAI,CAAC,EAC7BjC,MAAM,CAACkC,SACT,CAAC;QACD,IAAI,IAAI,CAACO,MAAM,EAAE,IAAI,CAACA,MAAM,CAACc,aAAa,GAAG,IAAI;;AAEjD;AACA,QAAA,KAAK,MAAMnG,WAAW,IAAI,CAAA,CAAAqG,YAAA,OAAI,CAAChB,MAAM,MAAA,IAAA,IAAAgB,YAAA,uBAAXA,YAAA,CAAaJ,YAAY,KAAI,EAAE,EAAE;UAAA,IAAAI,YAAA,EAAAC,aAAA;AACzD,UAAA,IAAI,CAAChB,cAAc,CAACnC,IAAI,CAAC;AACvB/C,YAAAA,aAAa,EACX,CAAA,CAAAkG,aAAA,OAAI,CAACjB,MAAM,cAAAiB,aAAA,KAAA,MAAA,GAAA,MAAA,GAAXA,aAAA,CAAapB,UAAU,CAAClF,WAAW,CAAC,CAACI,aAAa,KAAI,EAAE;YAC1DJ,WAAW;YACX+F,QAAQ,EAAEvH,IAAI,CAACC,MAAM,CAAC,IAAI,CAACgH,YAAY,CAAC9F,KAAK;AAC/C,WAAC,CAAC;AACJ,QAAA;AACF,MAAA;IACF,CAAC;IAAA,IAAA,CAED4G,iBAAiB,GAAG,MAAM;AAAA,MAAA,IAAAC,mBAAA;MACxB,MAAM;QAAEf,YAAY;AAAED,QAAAA;AAAa,OAAC,GAAG,IAAI;MAC3C,OAAOC,YAAY,aAAZA,YAAY,KAAA,MAAA,IAAA,CAAAe,mBAAA,GAAZf,YAAY,CAAE9F,KAAK,MAAA,IAAA,IAAA6G,mBAAA,eAAnBA,mBAAA,CAAqBzE,MAAM,GAC9B0D,YAAY,CAAC9F,KAAK,GAClB6F,YAAY,CAAC7F,KAAK;IACxB,CAAC;IAAA,IAAA,CAEDD,UAAU,GAAG,MAAM;MACjB,MAAM;QAAE+F,YAAY;AAAED,QAAAA;AAAa,OAAC,GAAG,IAAI;AAC3C,MAAA,OAAO,QAAOC,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZA,YAAY,CAAEgB,UAAU,CAAA,KAAK,WAAW,GAClDhB,YAAY,GACZD,YAAY;IAClB,CAAC;IAhLC,IAAI,CAACP,KAAK,GAAGA,MAAK;IAClB,IAAI,CAACjE,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACkE,UAAU,GAAGA,UAAU;AAC5B,IAAA,IAAI,CAACe,YAAY,GAAGlD,MAAM,CAAC2D,IAAI,CAACxB,UAAU,CAAC,CAACtG,GAAG,CAAC+H,GAAG,IAAIA,GAAG,CAAC;IAC3D,IAAI,CAACxF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,aAAa,GAAGA,aAAa;AAClC,IAAA,IAAI,CAAC8D,aAAa,GAChB,OAAOA,aAAa,KAAK,WAAW,GAAGF,MAAK,KAAK,CAAC,GAAGE,aAAa;AACpE,IAAA,IAAI,CAACC,kBAAkB,GAAGA,kBAAkB,IAAI,KAAK;IACrD,IAAI,CAACxC,MAAM,GAAGA,OAAM;IACpB,IAAI,CAACyC,MAAM,GAAGA,OAAM;IACpB,IAAI,CAACpB,KAAK,GAAGA,KAAK;AAElB,IAAA,IAAI,CAAC2B,aAAa,GAAG7C,MAAM,CAAC2D,IAAI,CAAC9D,OAAM,CAAC,CAAC1C,IAAI,CAC3C0G,CAAC,IACC7D,MAAM,CAAC2D,IAAI,CAACvF,OAAO,CAAC,CAAC0F,QAAQ,CAACD,CAAC,CAAC,IAChC7D,MAAM,CAAC2D,IAAI,CAACrF,aAAa,CAAC,CAACwF,QAAQ,CAACD,CAAC,CACzC,CAAC;AACD,IAAA,IAAI,CAACT,aAAa,GAAGpD,MAAM,CAAC2D,IAAI,CAAC9D,OAAM,CAAC,CAAC1C,IAAI,CAC3C0G,CAAC,IACC7D,MAAM,CAAC2D,IAAI,CAACvF,OAAO,CAAC,CAAC0F,QAAQ,CAACD,CAAC,CAAC,IAChC7D,MAAM,CAAC2D,IAAI,CAACrF,aAAa,CAAC,CAACwF,QAAQ,CAACD,CAAC,CACzC,CAAC;AAED,IAAA,IAAI,CAACrB,UAAU,GAAGzE,WAAW,CAAC;MAC5BE,cAAc;AACdG,MAAAA,OAAO,EAAEwB,qBAAqB,CAACxB,OAAO,EAAEyB,OAAM,CAAC;AAC/CvB,MAAAA,aAAa,EAAEsB,qBAAqB,CAACtB,aAAa,EAAEuB,OAAM,CAAC;AAC3D;AACA;AACA;MACA1B,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC+E,YAAY,CAAC;AACxC3E,MAAAA,QAAQ,EAAE,IAAI;MACdG,UAAU,EAAEmB,OAAM,CAACkE,IAAI;MACvBpF,aAAa,EAAEkB,OAAM,CAAClB;AACxB,KAAC,CAAC;AAEF,IAAA,IAAI,CAACa,UAAU,GAAGzB,WAAW,CAAC;MAC5BE,cAAc;AACdG,MAAAA,OAAO,EAAEwB,qBAAqB,CAACxB,OAAO,EAAEyB,OAAM,CAAC;AAC/CvB,MAAAA,aAAa,EAAEsB,qBAAqB,CAACtB,aAAa,EAAEuB,OAAM,CAAC;MAC3D1B,MAAM,EAAEiD,IAAI,CAACC,KAAK,CAACxB,OAAM,CAAC1B,MAAM,IAAI,IAAI,CAAC;AACzCK,MAAAA,SAAS,EAAE0D,MAAK,KAAK,CAAC,GAAGL,MAAM,CAAChC,OAAM,CAACrB,SAAS,CAAC,GAAG,CAAC;AACrDD,MAAAA,QAAQ,EAAE2D,MAAK,KAAK,CAAC,GAAGL,MAAM,CAAChC,OAAM,CAACtB,QAAQ,CAAC,GAAG,IAAI;MACtDG,UAAU,EAAEmB,OAAM,CAACkE,IAAI;MACvBpF,aAAa,EAAEkB,OAAM,CAAClB;AACxB,KAAC,CAAC;AACJ,EAAA;AAkIF;;ACnPA;AAiBA,MAAMqF,sBAAsB,CAAC;AAU3B/B,EAAAA,WAAWA,CAAC;IACV5E,aAAa,EAAbA,cAAa,GAAG,EAAE;AAClBe,IAAAA,OAAO,EAAPA,QAAO,GAAG,EAAE;AACZE,IAAAA,aAAa,EAAbA,cAAa,GAAG,EAAE;AAClB6D,IAAAA,UAAU,EAAVA,WAAU,GAAG,EAAE;AACftC,IAAAA,MAAM,EAANA,OAAM;AACNqB,IAAAA,KAAK,GAAG;AAC4B,GAAC,EAAE;IAAA,IAAA,CAazC+C,QAAQ,GAAG,YAAY;AACrB;AACA,MAAA,KAAK,MAAMC,UAAU,IAAI,IAAI,CAACC,WAAW,EAAE;AACzC,QAAA,MAAMD,UAAU,CAACtB,aAAa,EAAE;AAClC,MAAA;;AAEA;AACA,MAAA,KAAK,MAAMsB,UAAU,IAAI,CAAC,GAAG,IAAI,CAACC,WAAW,CAAC,CAACC,OAAO,EAAE,EAAE;AACxD,QAAA,MAAMF,UAAU,CAACf,aAAa,EAAE;AAClC,MAAA;;AAEA;AACA;AACA,MAAA,OAAO,MAAM,IAAI,CAACkB,eAAe,EAAE;IACrC,CAAC;IAAA,IAAA,CAEDA,eAAe,GAAG,YAAY;AAC5B,MAAA,MAAMC,gBAAgB,GAAG,IAAI,CAACH,WAAW,CAACrG,MAAM,CAC9CyG,EAAE,IACCA,EAAE,CAACrC,KAAK,GAAG,CAAC,IAAIqC,EAAE,CAACnC,aAAa,IAChCmC,EAAE,CAACrC,KAAK,KAAK,CAAC,IAAIqC,EAAE,CAACnC,aAAa,KAAK,KAC5C,CAAC;;AAED;MACA,IACEkC,gBAAgB,CAACtF,MAAM,GAAG,CAAC,IAC1BsF,gBAAgB,CAACtF,MAAM,KAAK,CAAC,IAAIsF,gBAAgB,CAAC,CAAC,CAAC,CAACpC,KAAK,KAAK,CAAE,EAClE;AAAA,QAAA,IAAAsC,eAAA;AACA;QACA,MAAM;UAAEvG,cAAc;UAAEG,OAAO;UAAEE,aAAa;AAAEuB,UAAAA;AAAO,SAAC,GAAG,IAAI;AAC/D,QAAA,MAAM4E,UAAU,GACdH,gBAAgB,CAAC,CAAC,CAAC,CAAC7E,QAAQ,CACzB3B,MAAM,CAACyG,EAAE,IAAI,CAACA,EAAE,CAACnC,aAAa,CAAC,CAC/BvG,GAAG,CAAC0I,EAAE,IAAIA,EAAE,CAAChC,cAAc,CAAC,CAC5BhG,IAAI,EAAE,IAAI,EAAE;QACjB,MAAMmI,gBAAgB,GACpBD,UAAU,CACP5I,GAAG,CAACkH,EAAE,IACLnD,qBAAqB,CACnB;UACE,CAACmD,EAAE,CAAC9F,WAAW,GAAG;AAChBrB,YAAAA,OAAO,EAAE,CAAA,EAAGmH,EAAE,CAAC9F,WAAW,CAAA,OAAA;AAC5B;AACF,SAAC,EACD;AACE,UAAA,CAAC8F,EAAE,CAAC9F,WAAW,GACb8F,EAAE,CAACC,QAAQ,CAACC,IAAI,CAAC,GAAG,CAAC,IAAI;AAC7B,SACF,CACF,CAAC,CACA1G,IAAI,EAAE,IAAI,EAAE;AACjB;AACA;QACA,MAAM4C,KAAK,GAAGK,UAAU,CACtB;UACEvB,cAAc;AACdG,UAAAA,OAAO,EAAEwB,qBAAqB,CAACxB,OAAO,EAAEyB,MAAM,CAAC;AAC/CvB,UAAAA,aAAa,EAAEsB,qBAAqB,CAACtB,aAAa,EAAEuB,MAAM,CAAC;AAC3DxB,UAAAA,SAAS,EAAEqG,gBAAgB;UAC3BvG,MAAM,EAAE0B,MAAM,CAAC1B,MAAM,GACjB,CACE,GAAGiD,IAAI,CAACC,KAAK,CAACxB,MAAM,CAAC1B,MAAM,CAAC,EAC5B,GAAGmG,gBAAgB,CAChBzI,GAAG,CAAC4B,CAAC,IAAA;AAAA,YAAA,IAAAkH,SAAA;AAAA,YAAA,OAAI,CAAA,CAAAA,SAAA,GAAAlH,CAAC,CAAC6E,MAAM,MAAA,IAAA,IAAAqC,SAAA,KAAA,MAAA,GAAA,MAAA,GAARA,SAAA,CAAUzB,YAAY,KAAI,EAAE;AAAA,UAAA,CAAA,CAAC,CACtC3G,IAAI,EAAE,CACV,GACD,EAAE;AACNkC,UAAAA,OAAO,EAAA,CAAA+F,eAAA,GAAE3E,MAAM,CAACpB,OAAO,MAAA,IAAA,IAAA+F,eAAA,KAAA,MAAA,GAAA,MAAA,GAAdA,eAAA,CAAgBrE,KAAK,CAAC,GAAG,CAAC;UACnC3B,SAAS,EAAEqD,MAAM,CAAChC,MAAM,CAACrB,SAAS,CAAC,IAAI,CAAC;AACxCD,UAAAA,QAAQ,EACN,OAAOsD,MAAM,CAAChC,MAAM,CAACtB,QAAQ,CAAC,KAAK,QAAQ,GACvCsD,MAAM,CAAChC,MAAM,CAACtB,QAAQ,CAAC,GACvB,EAAE;UACRG,UAAU,EAAEmB,MAAM,CAACkE,IAAI;UACvBpF,aAAa,EAAEkB,MAAM,CAAClB;SACvB,EACD,CAAA2F,gBAAgB,KAAA,IAAA,IAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,CAAC,CAAC,CAAC7E,QAAQ,CAC3B3B,MAAM,CAACyG,EAAE,IAAIA,EAAE,CAACnC,aAAa,CAAC,CAC9BvG,GAAG,CAAC0I,EAAE,IAAI;UAAA,IAAAK,UAAA,EAAAC,WAAA;UACT,MAAMC,cAAc,GAClBP,EAAE,CAACf,iBAAiB,EAAE,MAAAoB,UAAA,GAAIL,EAAE,CAACjC,MAAM,cAAAsC,UAAA,KAAA,MAAA,GAAA,MAAA,GAATA,UAAA,CAAWpB,iBAAiB,EAAE,CAAA;UAC1D,MAAMrC,iBAAiB,GACrBoD,EAAE,CAACnC,aAAa,IAAI,CAAC,CAACmC,EAAE,CAAC9E,QAAQ,CAACtC,IAAI,CAAC4H,EAAE,IAAIA,EAAE,CAAC3C,aAAa,CAAC,GAAA,CAAAyC,WAAA,GAC1DN,EAAE,CAACjC,MAAM,MAAA,IAAA,IAAAuC,WAAA,KAAA,MAAA,GAAA,MAAA,GAATA,WAAA,CAAW3B,YAAY,CACpBrH,GAAG,CAACD,OAAO,IACV6E,8BAA8B,CAC5B7E,OAAO,EACPkJ,cAAc,EACd,IAAI,EACJP,EAAE,CAACnB,aACL,CACF,CAAC,CACA7G,IAAI,EAAE,GACT,EAAE;UACR,OAAO;YACL0B,cAAc,EAAEsG,EAAE,CAACtG,cAAc;YACjCG,OAAO,EAAEwB,qBAAqB,CAAC2E,EAAE,CAACnG,OAAO,EAAEyB,MAAM,CAAC;YAClDvB,aAAa,EAAEsB,qBAAqB,CAAC2E,EAAE,CAACjG,aAAa,EAAEuB,MAAM,CAAC;AAC9DxB,YAAAA,SAAS,EAAE8C;WACZ;QACH,CAAC,CAAC,KAAI,EACV,CAAC;QACD,IAAI,IAAI,CAACD,KAAK,EACZI,OAAO,CAACC,GAAG,CACT,CAAA,eAAA,EAAkBkD,UAAU,CAACO,MAAM,CACjC,CAACC,WAAW,EAAEC,MAAM,KAAKD,WAAW,GAAGC,MAAM,CAAClC,QAAQ,CAAChE,MAAM,EAC7D,CACF,CAAC,CAAA,eAAA,EAAkBoC,IAAI,CAACI,SAAS,CAACrC,KAAK,CAACsC,MAAM,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA,CACtE,CAAC;QAEH,MAAMyD,gBAAgB,GAAG,MAAMxD,YAAY,CAACC,eAAe,CACzDzC,KAAK,EACL0C,MAAM,CAAChC,MAAM,CAACiC,SAAS,CAAC,IAAI,CAAC,EAC7BjC,MAAM,CAACkC,SACT,CAAC;;AAED;;QAEA,MAAMqD,mBAAmB,GAAGd,gBAAgB,CAACxG,MAAM,CACjDyG,EAAE,IAAIA,EAAE,CAAClC,kBACX,CAAC;AAED,QAAA,IAAI1G,OAAO,GAAGwJ,gBAAgB,CAACvI,KAAK;AAEpC,QAAA,KAAK,MAAMyI,cAAc,IAAID,mBAAmB,EAAE;UAAA,IAAAE,qBAAA,EAAAC,sBAAA;AAChD5J,UAAAA,OAAO,GAAG,MAAMoF,oBAAoB,CAClC,CAAA,CAAAuE,qBAAA,GAAAD,cAAc,CAAC/C,MAAM,MAAA,IAAA,IAAAgD,qBAAA,uBAArBA,qBAAA,CAAuBrH,cAAc,KAAI,EAAE,EAC3CoH,cAAc,CAACpH,cAAc,EAC7B,CAAA,CAAAsH,sBAAA,GAAAF,cAAc,CAAC/C,MAAM,MAAA,IAAA,IAAAiD,sBAAA,KAAA,MAAA,GAAA,MAAA,GAArBA,sBAAA,CAAuBrC,YAAY,CAAC,CAAC,CAAC,KAAI,SAAS,EACnDiC,gBAAgB,CAACvI,KAAK;AAAE;AACxB,UAAA,IAAI,CAACiD,MAAM,EACX,IAAI,CAACqB,KACP,CAAC;AACH,QAAA;QAEA,OAAO;AAAE,UAAA,GAAGiE,gBAAgB;AAAEvI,UAAAA,KAAK,EAAEjB;SAAS;AAChD,MAAA,CAAC,MAAM;AAAA,QAAA,IAAA6J,qBAAA;QACL,IAAI,IAAI,CAACtE,KAAK,EAAEI,OAAO,CAACC,GAAG,CAAC,CAAA,+BAAA,CAAiC,CAAC;QAC9D,OAAA,CAAAiE,qBAAA,GAAO,IAAI,CAACrB,WAAW,CAAC5G,IAAI,CAACgH,EAAE,IAAIA,EAAE,CAACrC,KAAK,KAAK,CAAC,CAAC,MAAA,IAAA,IAAAsD,qBAAA,uBAA3CA,qBAAA,CAA6C7I,UAAU,EAAE;AAClE,MAAA;IACF,CAAC;IAAA,IAAA,CAEO8I,eAAe,GAAG,MAAM;MAC9B,MAAMC,sBAAsB,GAAGA,CAC7BvD,UAAsB,EACtBwD,gBAAmC,EACnCzD,KAAK,GAAG,CAAC,KACe;QACxB,OAAOlC,MAAM,CAACrE,OAAO,CAACwG,UAAU,CAAC,CAC9BtG,GAAG,CACF,CAAC,GAEC;AACEwB,UAAAA,aAAa,GAAG,EAAE;UAClBe,OAAO,GAAG,EAAE;UACZ+D,UAAU,GAAG,EAAE;UACfE,kBAAkB;UAClBD,aAAa;AACb9D,UAAAA,aAAa,GAAG;AAClB,SAAC,CACF,KAAK;AACJ,UAAA,MAAMsH,SAAS,GAAG,IAAI5D,iBAAiB,CAAC;YACtCE,KAAK;AACLjE,YAAAA,cAAc,EAAEhC,KAAK,CAACC,OAAO,CAACmB,aAAa,CAAC,GACxCA,aAAa,GACb,CAACA,aAAa,CAAC;AACnBe,YAAAA,OAAO,EAAE4B,MAAM,CAAC8C,WAAW,CACzB9C,MAAM,CAACrE,OAAO,CAACyC,OAAO,CAAC,CAACvC,GAAG,CAAC,CAAC,CAACgK,IAAI,EAAEC,IAAI,CAAC,KAAK,CAC5CD,IAAI,EACJ,OAAOC,IAAI,KAAK,QAAQ,GAAG;AAAElK,cAAAA,OAAO,EAAEkK;AAAK,aAAC,GAAGA,IAAI,CACpD,CACH,CAAC;AACDxH,YAAAA,aAAa,EAAE0B,MAAM,CAAC8C,WAAW,CAC/B9C,MAAM,CAACrE,OAAO,CAAC2C,aAAa,CAAC,CAACzC,GAAG,CAAC,CAAC,CAACgK,IAAI,EAAEC,IAAI,CAAC,KAAK,CAClDD,IAAI,EACJ,OAAOC,IAAI,KAAK,QAAQ,GAAG;AAAElK,cAAAA,OAAO,EAAEkK;AAAK,aAAC,GAAGA,IAAI,CACpD,CACH,CAAC;YACD3D,UAAU;AACVG,YAAAA,MAAM,EAAEqD,gBAAgB;YACxB9F,MAAM;YACNwC,kBAAkB;YAClBD,aAAa;YACblB,KAAK,EAAE,IAAI,CAACA;AACd,WAAC,CAAC;UAEFyE,gBAAgB,CAAChD,QAAQ,CAAC;AAAEhD,YAAAA,KAAK,EAAEiG;AAAU,WAAC,CAAC;AAE/C,UAAA,OAAO,CACLA,SAAS,EACT,GAAGF,sBAAsB,CAACvD,UAAU,EAAEyD,SAAS,EAAE1D,KAAK,GAAG,CAAC,CAAC,CAC5D;AACH,QAAA,CACF,CAAC,CACA3F,IAAI,EAAE;MACX,CAAC;MACD,MAAM;QAAE0B,cAAc;QAAEG,OAAO;QAAEE,aAAa;QAAE6D,UAAU;AAAEtC,QAAAA;AAAO,OAAC,GAAG,IAAI;AAE3E,MAAA,MAAMkG,UAAU,GAAG,IAAI/D,iBAAiB,CAAC;AACvCE,QAAAA,KAAK,EAAE,CAAC;QACRjE,cAAc;AACdG,QAAAA,OAAO,EAAE4B,MAAM,CAAC8C,WAAW,CACzB9C,MAAM,CAACrE,OAAO,CAACyC,OAAO,CAAC,CAACvC,GAAG,CAAC,CAAC,CAACgK,IAAI,EAAEC,IAAI,CAAC,KAAK,CAC5CD,IAAI,EACJ,OAAOC,IAAI,KAAK,QAAQ,GAAG;AAAElK,UAAAA,OAAO,EAAEkK;AAAK,SAAC,GAAGA,IAAI,CACpD,CACH,CAAC;AACDxH,QAAAA,aAAa,EAAE0B,MAAM,CAAC8C,WAAW,CAC/B9C,MAAM,CAACrE,OAAO,CAAC2C,aAAa,CAAC,CAACzC,GAAG,CAAC,CAAC,CAACgK,IAAI,EAAEC,IAAI,CAAC,KAAK,CAClDD,IAAI,EACJ,OAAOC,IAAI,KAAK,QAAQ,GAAG;AAAElK,UAAAA,OAAO,EAAEkK;AAAK,SAAC,GAAGA,IAAI,CACpD,CACH,CAAC;QACD3D,UAAU;QACVtC,MAAM;QACNqB,KAAK,EAAE,IAAI,CAACA;AACd,OAAC,CAAC;AAEF,MAAA,MAAMiD,WAAW,GAAG,CAClB4B,UAAU,EACV,GAAGL,sBAAsB,CAACvD,UAAU,EAAE4D,UAAU,CAAC,CAClD;AACD;;AAEA;AACA;MACA,IAAI5B,WAAW,CAAC5G,IAAI,CAACgH,EAAE,IAAIA,EAAE,CAACnC,aAAa,IAAImC,EAAE,CAACrC,KAAK,KAAK,CAAC,CAAC,EAC5D,OAAOiC,WAAW,CAAC,KAEnB,OAAOA,WAAW,CAACtI,GAAG,CAAC0I,EAAE,IAAI;QAC3BA,EAAE,CAAC1B,aAAa,GAAG,KAAK;AACxB;AACA,QAAA,OAAO0B,EAAE;AACX,MAAA,CAAC,CAAC;IACN,CAAC;AAtPC,IAAA,IAAI,CAACtG,cAAc,GAAGhC,KAAK,CAACC,OAAO,CAACmB,cAAa,CAAC,GAC9CA,cAAa,GACb,CAACA,cAAa,CAAC;IACnB,IAAI,CAACe,OAAO,GAAGA,QAAO;IACtB,IAAI,CAACE,aAAa,GAAGA,cAAa;IAClC,IAAI,CAAC6D,UAAU,GAAGA,WAAU;IAC5B,IAAI,CAACtC,MAAM,GAAGA,OAAM;IACpB,IAAI,CAACqB,KAAK,GAAGA,KAAK;AAElB,IAAA,IAAI,CAACiD,WAAW,GAAG,IAAI,CAACsB,eAAe,EAAE;AAC3C,EAAA;AA6OF;;ACrRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMO,gBAAgB,GAAGA,CACvBC,GAAY,EACZC,gBAAoC,KACjC;EACH,MAAM;IAAEC,GAAG;IAAE9I,aAAa;AAAE8E,IAAAA;AAAW,GAAC,GAAG+D,gBAAgB;EAC3D,IAAI,CAAC7I,aAAa,IAAI,CAAC8E,UAAU,IAAI,CAACgE,GAAG,EAAE;EAE3CF,GAAG,CAACG,GAAG,CAACD,GAAG,EAAEE,uBAAuB,CAACH,gBAAgB,CAAC,CAAC;AACzD;;AAEA;AACA;AACA,MAAMG,uBAAuB,GAAGA,CAAC;EAC/BhJ,aAAa;EACbe,OAAO,GAAG,EAAE;EACZE,aAAa,GAAG,EAAE;EAClB6D,UAAU;AACVjB,EAAAA;AACkB,CAAC,KAAK;EACxB,IAAI;AACF;AACA,IAAA,MAAMoF,mBAAmC,GAAG,OAAOC,GAAG,EAAEC,GAAG,KAAK;MAC9D,IAAI;AACF;QACAC,iBAAiB,CAACD,GAAG,EAAE;AACrBE,UAAAA,YAAY,EAAE,SAAS;AACvBC,UAAAA,gBAAgB,EAAE;AACpB,SAAC,CAAC;;AAEF;QACA,MAAM9G,MAAM,GAAGG,MAAM,CAAC8C,WAAW,CAC/B,CAAC,GAAG9C,MAAM,CAACrE,OAAO,CAAC4K,GAAG,CAAC1G,MAAM,CAAC,EAAE,GAAGG,MAAM,CAACrE,OAAO,CAAC4K,GAAG,CAACpH,KAAK,CAAC,CAAC,CAACtD,GAAG,CAC/D,CAAC,CAAC+K,CAAC,EAAEC,CAAC,CAAC,KAAK,CAACD,CAAC,EAAEC,CAAC,KAAA,IAAA,IAADA,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAADA,CAAC,CAAEC,QAAQ,EAAE,CAC/B,CACF,CAAC;AAED,QAAA,MAAMpK,MAAM,GAAG,MAAM,IAAIsH,sBAAsB,CAAC;UAC9C3G,aAAa;UACb8E,UAAU;UACV/D,OAAO;UACPE,aAAa;UACbuB,MAAM;AACNqB,UAAAA;AACF,SAAC,CAAC,CAAC+C,QAAQ,EAAE;AAEbuC,QAAAA,GAAG,CAACO,IAAI,CAACrK,MAAM,CAAC;MAClB,CAAC,CAAC,OAAOsK,KAAK,EAAE;AACd;AACA1F,QAAAA,OAAO,CAAC0F,KAAK,CAACA,KAAK,CAAC;QACpBR,GAAG,CAACS,UAAU,GAAG,GAAG;AACpBT,QAAAA,GAAG,CAACO,IAAI,CAACC,KAAK,CAAC;AACjB,MAAA;IACF,CAAC;AAED,IAAA,OAAOV,mBAAmB;EAC5B,CAAC,CAAC,OAAOU,KAAK,EAAE;AACd;AACA;AACA1F,IAAAA,OAAO,CAAC0F,KAAK,CAACA,KAAK,CAAC;AACpB,IAAA,MAAME,eAA+B,GAAG,OAAOX,GAAG,EAAEC,GAAG,KAAK;MAC1DA,GAAG,CAACS,UAAU,GAAG,GAAG;MACpBT,GAAG,CAACO,IAAI,CAAC3F,IAAI,CAACI,SAAS,CAACwF,KAAK,CAAC,CAAC;IACjC,CAAC;AACD,IAAA,OAAOE,eAAe;AACxB,EAAA;AACF,CAAC;;AC1ED,MAAMC,SAAO,GAAGC,OAAO,CAAC;AACxB,MAAMC,OAAO,GAAGC,OAAO,CAAC;AACxB,MAAMC,OAAK,GAAGC,KAAK,CAAC;AACpB,MAAMC,mBAAmB,GAAGC,GAAG,CAACH,OAAK,EAAEF,OAAO,CAAC,CAACM,GAAG;AAE5C,MAAMC,UAAU,GAAGC,SAAS,CAACC,iBAAiB,EAAE;AAChD,MAAMC,aAAa,GAAGF,SAAS,CAACC,iBAAiB,EAAE;AAE1D,MAAME,cAAc,GAAGA,CAAC/B,GAAY,EAAEgC,iBAA2B,GAAG,EAAE,KAAK;AACzEC,EAAAA,gBAAgB,CAACH,aAAa,EAAE9B,GAAG,CAAC;EAEpCA,GAAG,CAACkC,GAAG,CAACF,iBAAiB,EAAE,CAAC1B,GAAG,EAAEC,GAAG,KAAK;AACvC,IAAA,MAAM4B,MAAM,GACV7B,GAAG,CAAC8B,QAAQ,CAACC,OAAO,CAAC,UAAU,CAAC,IAChC/B,GAAG,CAAC8B,QAAQ,CAACC,OAAO,CAAC,UAAU,CAAC,IAChC/B,GAAG,CAAC8B,QAAQ,KAAK,WAAW,GACxBlB,SAAO,CAACoB,UAAU,IAAIpB,SAAO,CAACqB,GAAG,GACjCrB,SAAO,CAACqB,GAAG;AAEjBZ,IAAAA,UAAU,CAACa,GAAG,CAAClC,GAAG,EAAEC,GAAG,EAAE;MAAE4B,MAAM;AAAEM,MAAAA,YAAY,EAAE;AAAK,KAAC,CAAC;AACxDd,IAAAA,UAAU,CAACe,EAAE,CAAC,OAAO,EAAE7M,CAAC,IAAI;AAC1B;AACAwF,MAAAA,OAAO,CAACC,GAAG,CACT,CAAA,kBAAA,EAAqBgF,GAAG,CAACqC,IAAI,CAAA,UAAA,EAAarC,GAAG,CAAC8B,QAAQ,CAAA,aAAA,EAAgBvM,CAAC,EACzE,CAAC;AACD;AACF,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAMoM,gBAAgB,GAAGA,CAACW,QAAQ,EAAE5C,GAAG,KAAK;AAC1C;AACAA,EAAAA,GAAG,CAACkC,GAAG,CACL,CAAC,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,EACtE,CAAC5B,GAAG,EAAEC,GAAG,KAAK;AACZ;IACAlF,OAAO,CAACC,GAAG,CAAC,CAAA,wBAAA,EAA2B4F,SAAO,CAACI,KAAK,EAAE,CAAC;AACvDsB,IAAAA,QAAQ,CAACJ,GAAG,CAAClC,GAAG,EAAEC,GAAG,EAAE;AACrB4B,MAAAA,MAAM,EAAEX,mBAAmB;AAC3BiB,MAAAA,YAAY,EAAE;AAChB,KAAC,CAAC;AACFG,IAAAA,QAAQ,CAACF,EAAE,CAAC,OAAO,EAAE7M,CAAC,IAAI;AACxB;AACAwF,MAAAA,OAAO,CAACC,GAAG,CACT,CAAA,kBAAA,EAAqBgF,GAAG,CAACqC,IAAI,CAAA,UAAA,EAAarC,GAAG,CAAC8B,QAAQ,CAAA,aAAA,EAAgBvM,CAAC,EACzE,CAAC;AACD;AACF,IAAA,CAAC,CAAC;AACJ,EAAA,CACF,CAAC;AACH,CAAC;;ACtDM,MAAMgN,aAAa,GAAG;AAC3B,EAAA,GAAG,EAAE,MAAM;AACX,EAAA,GAAG,EAAE,GAAG;AACRC,EAAAA,MAAM,EAAE,UAAU;AAAE;EACpBC,aAAa,EAAE,WAAW;AAC5B,CAAC;AAEM,MAAMC,gBAAgB,GAAGA,CAACC,MAAM,GAAG,GAAG,KAAK;EAChD,IAAIA,MAAM,IAAI,GAAG,EAAE,OAAOJ,aAAa,CAAC,GAAG,CAAC;EAC5C,OAAOA,aAAa,CAAC,GAAG,CAAC;AAC3B,CAAC;AAED,MAAMvB,KAAK,GAAGC,KAAK,CAAC;;AAEb,MAAM2B,eAAe,GAAG,CAAA,EAAG5B,KAAK,CAAA,WAAA,CAAa;;ACd7C,MAAM6B,iBAAiB,GAAGA,CAACC,GAAW,EAAEC,gBAAgB,GAAG,QAAQ,KACxED,GAAG,CAACE,OAAO,CAAC,WAAW,EAAE,CAAA,EAAGD,gBAAgB,GAAG,CAAC;;ACI3C,MAAME,4BAA4B,GACvCA,CAAC;EACCC,WAAW;EACXC,MAAM;EACNJ,gBAAgB;AAChBK,EAAAA;AAMF,CAAC,KACD,CAACpD,GAAG,EAAEC,GAAG,EAAEoD,IAAI,KAAK;AAClB,EAAA,MAAMC,QAAQ,GAAGjB,IAAI,CAACkB,QAAQ,CAACC,SAAS,CAACxD,GAAG,CAACqC,IAAI,CAAC,CAAC;AACnD,EAAA,MAAMoB,YAAY,GAAGH,QAAQ,CAACI,QAAQ,CAAC,MAAM,CAAC;AAC9C,EAAA,MAAMC,YAAY,GAAGL,QAAQ,CAACI,QAAQ,CAAC,KAAK,CAAC;EAC7C,IAAI,CAACC,YAAY,IAAIF,YAAY,KAAKH,QAAQ,CAACM,UAAU,CAAC,UAAU,CAAC,EAAE;AACrE,IAAA,MAAMC,iBAAiB,GAAGxB,IAAI,CAACyB,OAAO,CACpCZ,WAAW,EACX,CAAA,KAAA,EAAQH,gBAAgB,CAAA,CAAA,EACtBU,YAAY,GAAG,WAAW,GAAG,WAAW,CAAA,CAAA,EACtCH,QAAQ,EACd,CAAC;IACD,IAAI;MACF,MAAMS,eAAe,GAAGC,EAAE,CAACC,YAAY,CAACJ,iBAAiB,EAAE,MAAM,CAAC;AAClE,MAAA,MAAMK,cAAc,GAAGrB,iBAAiB,CACtCkB,eAAe,EACfX,eACF,CAAC;MACD,IAAID,MAAM,EAAElD,GAAG,CAACkE,GAAG,CAAC,eAAe,EAAE,CAAA,gBAAA,EAAmBhB,MAAM,CAAA,CAAE,CAAC;MACjElD,GAAG,CAACmE,IAAI,CAAC,KAAK,CAAC,CAACC,IAAI,CAACH,cAAc,CAAC;AACpC,MAAA;IACF,CAAC,CAAC,OAAOI,SAAS,EAAE;MAClBvJ,OAAO,CAACC,GAAG,CACT,CAAA,qCAAA,EAAwC6I,iBAAiB,CAAA,CAAA,CAAG,EAC5DS,SACF,CAAC;AACDjB,MAAAA,IAAI,EAAE;AACR,IAAA;AACF,EAAA,CAAC,MAAM;AACLA,IAAAA,IAAI,EAAE;AACR,EAAA;AACF,CAAC;;AC3CH;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkB,wBAAwB,GACnCA,CAAC;EACCrB,WAAW;EACXC,MAAM;EACNJ,gBAAgB;AAChByB,EAAAA;AAMF,CAAC,KACD,OAAOxE,GAAG,EAAEC,GAAG,EAAEoD,IAAI,KAAK;EACxB,IACEmB,qBAAqB,KAAK,YAAY,IACtCxE,GAAG,CAACqC,IAAI,KAAK,CAAA,CAAA,EAAImC,qBAAqB,CAAA,CAAE,EACxC;IACA,IAAIC,mBAAmB,GAAG,EAAE;IAC5B,IAAI;MACF,MAAMC,gBAAgB,GAAG,CACvB,CAAA,sBAAA,CAAwB,EACxB,CAAA,KAAA,EAAQ3B,gBAAgB,aAAa,CACtC;MACD,IAAI4B,eAAe,GAAG,EAAE;AACxBD,MAAAA,gBAAgB,CAACE,OAAO,CAAC,MAAMC,QAAQ,IAAI;QACzC,IAAI;AACFb,UAAAA,EAAE,CAACc,UAAU,CAACD,QAAQ,CAAC;AACvBF,UAAAA,eAAe,GAAGE,QAAQ;QAC5B,CAAC,CAAC,OAAOE,EAAE,EAAE;AACX;AAAA,QAAA;AAEJ,MAAA,CAAC,CAAC;MACFN,mBAAmB,GAAGpC,IAAI,CAACyB,OAAO,CAACZ,WAAW,EAAEyB,eAAe,CAAC;MAEhE,IAAIxB,MAAM,EAAElD,GAAG,CAACkE,GAAG,CAAC,eAAe,EAAE,CAAA,gBAAA,EAAmBhB,MAAM,CAAA,CAAE,CAAC;AAEjElD,MAAAA,GAAG,CAAC+E,QAAQ,CAACP,mBAAmB,CAAC;IACnC,CAAC,CAAC,OAAOQ,aAAa,EAAE;AACtB;MACAlK,OAAO,CAACC,GAAG,CACT,CAAA,mCAAA,EAAsCyJ,mBAAmB,CAAA,CAAA,CAAG,EAC5DQ,aACF,CAAC;AACD5B,MAAAA,IAAI,EAAE;AACR,IAAA;AACF,EAAA,CAAC,MAAM;AACLA,IAAAA,IAAI,EAAE;AACR,EAAA;AACF,CAAC;;ACnDH;AACA,MAAM6B,YAAY,GAAGA,CACnBxF,GAAG,EACH;AACEwD,EAAAA,WAAW,GAAGiC,MAAO;EACrBC,OAAO,GAAG,EAA0C;AACpDZ,EAAAA,qBAAqB,GAAG,YAAY;AACpCzB,EAAAA,gBAAgB,GAAG,QAAQ;AAC3BK,EAAAA,eAAe,GAAG,QAAQ;AAC1BiC,EAAAA,gBAAgB,GAAG;AACrB,CAAC,KACE;EACH3F,GAAG,CAAC4F,GAAG,CACL,CACE,CAAA,CAAA,EAAIlC,eAAe,CAAA,CAAE,EACrB,GAAGiC,gBAAgB,CAAC/P,GAAG,CAACgI,CAAC,IAAI,CAAA,CAAA,EAAIA,CAAC,CAAA,CAAE,CAAC,EACrC,CAAA,CAAA,EAAIyF,gBAAgB,CAAA,CAAE,CACvB,EACDE,4BAA4B,CAAC;IAC3BC,WAAW;AACX;AACA;IACAC,MAAM,EAAEZ,aAAa,CAACC,MAAM;IAC5BO,gBAAgB;AAChBK,IAAAA;GACD,CAAC,EACFmB,wBAAwB,CAAC;IACvBrB,WAAW;IACXC,MAAM,EAAEZ,aAAa,CAACC,MAAM;AAC5BgC,IAAAA,qBAAqB,EAAEY,OAAO,CAACG,OAAO,IAAIf,qBAAqB;AAC/DzB,IAAAA;AACF,GAAC,CAAC;AACF;AACAyC,EAAAA,OAAO,CAAChD,MAAM,CAAC,CAAA,KAAA,EAAQO,gBAAgB,EAAE,EAAE;AACzC;AACA;IACA0C,MAAM,EAAElD,aAAa,CAACE;AACxB,GAAC,CACH,CAAC;AACH,CAAC;;AC9CD,MAAM7B,OAAO,GAAGC,OAAO,CAAC;AACxB,MAAM6E,QAAQ,GAAGC,QAAQ,CAAC;;AAE1B,MAAMC,2BAA2B,GAAGC,MAAM,IAAI;AAC5C;EACA9K,OAAO,CAACC,GAAG,EAAE;EACbD,OAAO,CAACC,GAAG,CACT,CAAA;AACJ,CAAC,EACGH,IAAI,CAACI,SAAS,CAAC2F,OAAO,EAAE,IAAI,EAAE,CAAC,CACjC,CAAC;EACD7F,OAAO,CAACC,GAAG,EAAE;EACbD,OAAO,CAACC,GAAG,CACT,CAAA;AACJ,CAAC,EACGH,IAAI,CAACI,SAAS,CAACyK,QAAQ,EAAE,IAAI,EAAE,CAAC,CAClC,CAAC;EACD3K,OAAO,CAACC,GAAG,EAAE;AACbD,EAAAA,OAAO,CAACC,GAAG,CACT,uBAAuB,EACvBH,IAAI,CAACI,SAAS,CAAC4K,MAAM,CAACnE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;EACD3G,OAAO,CAACC,GAAG,EAAE;AACb,EAAA,IAAI6K,MAAM,CAAC9C,gBAAgB,EACzBhI,OAAO,CAACC,GAAG,CACT,CAAA,mCAAA,EAAsC6K,MAAM,CAAC9C,gBAAgB,IAC/D,CAAC;AACH;AACF,CAAC;;AC5BD,0BAAe,CAAC+C,UAAU,GAAG,EAAE,KAC7BrM,MAAM,CAACrE,OAAO,CAAC0Q,UAAU,CAAC,CACvBxQ,GAAG,CACF,CAAC,CAACwE,GAAG,EAAEiM,KAAK,CAAC,EAAEC,GAAG,KAChB,GAAGA,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,EAAGlM,GAAG,CAAA,EAAGiM,KAAK,GAAG,KAAKA,KAAK,CAAA,CAAA,CAAG,GAAG,EAAE,CAAA,CAC9D,CAAC,CACArJ,IAAI,CAAC,GAAG,CAAC;;ACNd;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMuJ,cAAc,GAAGA,CACrBC,OAAgB,EAChBC,QAAkB,EAClBC,OAAY,EACZ/B,IAAiC,GAAG,MAAM,KACvC;AACH;AACA8B,EAAAA,QAAQ,CAAC9B,IAAI,CAAC,CAAC+B,OAAO,CAAC;AACzB,CAAC;;ACdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAGA,CAC1BC,cAA6C,EAC7CC,GAAc,EACdJ,QAAkB,EAClBK,MAAgB,KACb;EACH,MAAM;IAAEC,KAAK;AAAEC,IAAAA;AAAK,GAAC,GAAGC,sBAAsB,CAACJ,GAAG,EAAE;AAClDK,IAAAA,YAAYA,GAAG;AACb,MAAA,MAAMC,IAAI,GAAGP,cAAc,CAAC,KAAK,CAAC;MAClC,IAAI,CAACO,IAAI,EAAE;AACT;AACAJ,QAAAA,KAAK,EAAE;AACT,MAAA,CAAC,MAAM;QACL,MAAMK,MAAM,GAAGD,IAAI,CAACjN,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvCuM,QAAAA,QAAQ,CAACY,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC;AAC9DP,QAAAA,MAAM,CAACQ,KAAK,CAACF,MAAM,CAAC;QACpBJ,IAAI,CAACF,MAAM,CAAC;AACd,MAAA;IACF,CAAC;AACDS,IAAAA,UAAUA,GAAG;AACX,MAAA,MAAMC,MAAM,GAAGZ,cAAc,CAAC,IAAI,CAAC,CAAC1M,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvD4M,MAAAA,MAAM,CAACQ,KAAK,CAACE,MAAM,CAAC;IACtB,CAAC;IACDC,YAAYA,CAAC1G,KAAc,EAAE;MAC3B0F,QAAQ,CAACzF,UAAU,GAAG,GAAG;AACzByF,MAAAA,QAAQ,CAACY,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC;AAC9DZ,MAAAA,QAAQ,CAAC9B,IAAI,CAAC,+BAA+B,CAAC;AAC9CtJ,MAAAA,OAAO,CAAC0F,KAAK,CAAC,CAAA,qCAAA,CAAuC,EAAEA,KAAK,CAAC;IAC/D,CAAC;IACD2G,OAAOA,CAAC3G,KAAK,EAAE;AACb1F,MAAAA,OAAO,CAAC0F,KAAK,CAAC,CAAA,gCAAA,CAAkC,EAAEA,KAAK,CAAC;AAC1D,IAAA;AACF,GAAC,CAAC;;AAEF;AACA;EACA4G,UAAU,CAAC,MAAMZ,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;EAEpCD,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,MAAA,IAANA,MAAM,CAAEE,IAAI,CAACP,QAAQ,CAAC;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMmB,sBAAsB,GAAIC,KAAuB,IAAK;AACjE,EAAA,MAAMC,YAAY,GAAG,IAAIC,SAAS,CAAC;AACjCC,IAAAA,UAAU,EAAE,IAAI;IAChBC,SAASA,CACPC,KAAK;IAELC,CAAC,EACDC,QAAQ,EACR;AACA;AACA;AACA,MAAA,MAAMC,YAAY,GAChB,OAAOH,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,IAAII,WAAW,EAAE,CAACC,MAAM,CAACL,KAAK,CAAC;AACrE,MAAA,MAAMM,SAAS,GAAGX,KAAK,CAACY,aAAa,EAAE;MACvC,MAAMC,aAAa,GAAG,aAAa;AAEnCb,MAAAA,KAAK,CAACc,QAAQ,CAACC,QAAQ,EAAE;;AAEzB;AACA;AACA,MAAA,IAAI,UAAU,CAACC,IAAI,CAACR,YAAY,CAAC,EAAE;QACjC,MAAMS,YAAY,GAAGT,YAAY,CAAC/E,OAAO,CACvC,SAAS,EACT,CAAA,EAAGkF,SAAS,CAAA,OAAA,CACd,CAAC;AACD,QAAA,IAAI,CAACrO,IAAI,CAAC2O,YAAY,CAAC;MACzB,CAAC,MAAM,IAAIJ,aAAa,CAACG,IAAI,CAACR,YAAY,CAAC,EAAE;AAC3C,QAAA,MAAMU,UAAU,GAAGL,aAAa,CAACM,IAAI,CAACX,YAAY,CAAoB;AACtE,QAAA,MAAMY,eAAe,GAAGF,UAAU,CAACG,KAAK,GAAGH,UAAU,CAACzS,IAAI,EAAE,CAACyC,MAAM,GAAG,CAAC;QACvE,MAAMoQ,MAAM,GAAGd,YAAY,CAACe,KAAK,CAAC,CAAC,EAAEH,eAAe,CAAC;AACrD,QAAA,MAAMI,KAAK,GAAGhB,YAAY,CAACe,KAAK,CAACH,eAAe,CAAC;QACjD,IAAI,CAAC9O,IAAI,CAACgP,MAAM,GAAGX,SAAS,GAAGa,KAAK,CAAC;AACvC,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAAClP,IAAI,CAACqO,SAAS,GAAGH,YAAY,CAAC;AACrC,MAAA;AACAD,MAAAA,QAAQ,EAAE;AACZ,IAAA;AACF,GAAC,CAAC;AACF,EAAA,OAAON,YAAY;AACrB,CAAC;;AClGD,MAAMvD,YAAY,GAAI5B,IAAY,IAAK2B,EAAE,CAACC,YAAY,CAAC5B,IAAI,EAAE,MAAM,CAAC;AAE7D,MAAM2G,kBAAkB,GAAGA,CAChC;EAAEC,KAAK;AAAEC,EAAAA;AAAwB,CAAC,EAClC9F,eAAuB,EACvB+F,KAAc,KACX;EACH,MAAMC,MAOL,GAAG,EAAE;EACN,IAAI;AACFA,IAAAA,MAAM,CAACH,KAAK,GAAGA,KAAK,GAChBpO,IAAI,CAACC,KAAK,CACRmJ,YAAY,CAACgF,KAAK,CAACjG,OAAO,CAAC,SAAS,EAAEmG,KAAK,GAAG,CAAA,CAAA,EAAIA,KAAK,CAAA,CAAE,GAAG,EAAE,CAAC,CACjE,CAAC,GACD,IAAI;EACV,CAAC,CAAC,OAAOpE,EAAE,EAAE;AACX;IACAqE,MAAM,CAACH,KAAK,GAAG,IAAI;AACrB,EAAA;EACA,IAAI;IACFG,MAAM,CAACF,SAAS,GAAG;MACjBG,YAAY,EAAExG,iBAAiB,CAC7BoB,YAAY,CACViF,SAAS,CAACrC,IAAI,CAAC7D,OAAO,CAAC,SAAS,EAAEmG,KAAK,GAAG,CAAA,CAAA,EAAIA,KAAK,CAAA,CAAE,GAAG,EAAE,CAC5D,CAAC,EACD/F,eACF,CAAC;MACDkG,kBAAkB,EAAEzG,iBAAiB,CACnCoB,YAAY,CACViF,SAAS,CAAC1G,MAAM,CAACQ,OAAO,CAAC,SAAS,EAAEmG,KAAK,GAAG,CAAA,CAAA,EAAIA,KAAK,CAAA,CAAE,GAAG,EAAE,CAC9D,CAAC,EACD/F,eACF,CAAC;MACDmG,oBAAoB,EAAE1G,iBAAiB,CACrCoB,YAAY,CACViF,SAAS,CAACM,QAAQ,CAACxG,OAAO,CAAC,SAAS,EAAEmG,KAAK,GAAG,CAAA,CAAA,EAAIA,KAAK,CAAA,CAAE,GAAG,EAAE,CAChE,CAAC,EACD/F,eACF;KACD;EACH,CAAC,CAAC,OAAO2B,EAAE,EAAE;AACX;IACAqE,MAAM,CAACF,SAAS,GAAG,IAAI;AACzB,EAAA;AACA,EAAA,OAAOE,MAAM;AACf,CAAC;AAQM,MAAMK,uBAAuB,GAAGA,MAAM;AAC3C,EAAA,MAAMC,uBAAuB,GAAG,IAAIC,cAAc,CAAC;AAAEV,IAAAA,KAAK,EAAE;AAAG,GAAC,CAAC;EACjE,IAAI;AACF,IAAA,IAAIW,MAAkC;AACtC,IAAA,IAAIC,MAAkC;IACtC,IAAI;MACFD,MAAM,GAAG,IAAID,cAAc,CAAC;QAC1BG,WAAW,EAAE,CAAC,KAAK,CAAC;AACpBC,QAAAA,SAAS,EAAE,QAAQ;AACnBC,QAAAA,SAAS,EAAE3H,IAAI,CAACyB,OAAO,CAAC,iCAAiC;AAC3D,OAAC,CAAC;IACJ,CAAC,CAAC,OAAOvO,CAAC,EAAE;AACVwF,MAAAA,OAAO,CAACkP,IAAI,CAAC,sDAAsD,CAAC;AACtE,IAAA;IACA,IAAI;MACFJ,MAAM,GAAG,IAAIF,cAAc,CAAC;QAC1BG,WAAW,EAAE,CAAC,KAAK,CAAC;AACpBC,QAAAA,SAAS,EAAE,QAAQ;AACnBC,QAAAA,SAAS,EAAE3H,IAAI,CAACyB,OAAO,CAAC,iCAAiC;AAC3D,OAAC,CAAC;IACJ,CAAC,CAAC,OAAOvO,CAAC,EAAE;AACV;AACA;AAAA,IAAA;AAGDmU,IAAAA,uBAAuB,CAASQ,QAAQ,GAAItC,KAAU,IAAK;AAAA,MAAA,IAAAuC,OAAA,EAAAC,OAAA,EAAAC,QAAA;MAC1D,CAAAF,OAAA,GAACP,MAAM,MAAA,IAAA,IAAAO,OAAA,KAAA,KAAA,CAAA,IAAPA,OAAA,CAAiBD,QAAQ,CAACtC,KAAK,CAAC;AAChC,MAAA,IACE,QAAA,CAAAwC,OAAA,GAAQP,MAAM,MAAA,IAAA,IAAAO,OAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,OAAA,CAAiBnB,KAAK,CAACqB,iBAAiB,CAAC1C,KAAK,CAAC,CAAA,KAAK,WAAW,EAEtE,CAAAyC,QAAA,GAACR,MAAM,MAAA,IAAA,IAAAQ,QAAA,KAAA,KAAA,CAAA,IAAPA,QAAA,CAAiBH,QAAQ,CAACtC,KAAK,CAAC;IACpC,CAAC;IAED,OAAO;MACL8B,uBAAuB;MACvBE,MAAM;AACNC,MAAAA;KACD;EACH,CAAC,CAAC,OAAOtU,CAAC,EAAE;AACVwF,IAAAA,OAAO,CAACkP,IAAI,CAAC,8CAA8C,CAAC;IAC5D,OAAO;AAAEP,MAAAA;KAAyB;AACpC,EAAA;AACF,CAAC;AAEM,MAAMa,aAAa,GAAGA,CAC3B1E,MAAoB,EACpBzC,eAAuB,KACpB;AACH,EAAA,MAAMoH,UAAU,GAAG;AACjBC,IAAAA,OAAO,EAAEzB,kBAAkB,CAACnD,MAAM,EAAEzC,eAAe,CAAC;IACpDyG,MAAM,EAAEb,kBAAkB,CAACnD,MAAM,EAAEzC,eAAe,EAAE,QAAQ,CAAC;AAC7DwG,IAAAA,MAAM,EAAEZ,kBAAkB,CAACnD,MAAM,EAAEzC,eAAe,EAAE,QAAQ;GAC7D;AACD,EAAA,IAAI,CAACoH,UAAU,CAACC,OAAO,IAAIhR,MAAM,CAAC2D,IAAI,CAACoN,UAAU,CAACC,OAAO,IAAI,EAAE,CAAC,CAAChS,MAAM,KAAK,CAAC,EAC3E+R,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACX,MAAM,IAAIW,UAAU,CAACZ,MAAM;AAC7D,EAAA,OAAOY,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO,MAAME,aAAa,GAAGA,CAC3BC,iBAA0C,EAC1CvF,OAAgC,EAChChC,eAAe,GAAG,QAAQ,KACvB;EACH,IAAIwH,UAAU,GAAG,EAAE;AACnB;EACA,IAAIxF,OAAO,aAAPA,OAAO,KAAA,MAAA,IAAPA,OAAO,CAAEG,OAAO,EAClBqF,UAAU,GAAG,CAAA,QAAA,EAAWC,mBAAmB,CACzCzF,OAAO,CAACU,UACV,CAAC,CAAA,OAAA,EAAU1C,eAAe,CAAA,CAAA,EAAIgC,OAAO,CAACG,OAAO,CAAA,WAAA,CAAa;;AAE5D;AACA,EAAA,IAAIoF,iBAAiB,EAAE;IAAA,IAAAG,qBAAA,EAAAC,qBAAA;AACrB,IAAA,MAAMC,gBAAgB,GAAA,CAAAF,qBAAA,GAAGH,iBAAiB,CAACd,MAAM,MAAA,IAAA,IAAAiB,qBAAA,KAAA,MAAA,GAAA,MAAA,GAAxBA,qBAAA,CAA0BG,aAAa,CAAC;AAC/DC,MAAAA,QAAQ,EAAE;AACZ,KAAC,CAAC;AACF,IAAA,MAAMC,gBAAgB,GAAA,CAAAJ,qBAAA,GAAGJ,iBAAiB,CAACf,MAAM,MAAA,IAAA,IAAAmB,qBAAA,KAAA,MAAA,GAAA,MAAA,GAAxBA,qBAAA,CAA0BE,aAAa,CAAC;AAC/D7G,MAAAA,IAAI,EAAE;AACR,KAAC,CAAC;IACF,MAAMgH,UAAU,GAAG,CAAA,EAAGR,UAAU,GAAGI,gBAAgB,IAAI,EAAE,CAAA,EACvDG,gBAAgB,IAAI,EAAE,CAAA,CACtB,CAACnI,OAAO,CAAC,cAAc,EAAE,CAAA,EAAA,EAAKI,eAAe,CAAA,CAAA,CAAG,CAAC;AACnD,IAAA,OAAOgI,UAAU;AACnB,EAAA;AACA,EAAA,OAAOR,UAAU;AACnB,CAAC;;ACjLM,MAAMS,cAAc,GAAItI,gBAAwB,IAAK;EAC1D,IAAI;IACF,MAAMuI,WAAW,GAAGtH,EAAE,CAACC,YAAY,CACjC,CAAA,KAAA,EAAQlB,gBAAgB,CAAA,aAAA,CAAe,EACvC,MACF,CAAC;AACD,IAAA,MAAMwI,WAAW,GAAG1Q,IAAI,CAACC,KAAK,CAACwQ,WAAW,CAAC;AAC3C,IAAA,OAAOC,WAAW;EACpB,CAAC,CAAC,OAAOxG,EAAE,EAAE;AACXhK,IAAAA,OAAO,CAAC0F,KAAK,CAAC,CAAA,kCAAA,CAAoC,EAAEsE,EAAE,CAAC;AACvD,IAAA,OAAO,EAAE;AACX,EAAA;AACF,CAAC;;ACdD;;AAGA;AACA,MAAMyG,mBAAmB,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;AAEhE,MAAMC,yBAAyB,GAAGA,CACvCC,gBAAoC,GAAGF,mBAAmB,KACvD;AACH,EAAA,MAAMG,cAAc,GAAGjW,KAAK,CAACC,OAAO,CAAC+V,gBAAgB,CAAC,GAClDA,gBAAgB,GAChBA,gBAAgB,KAAK,KAAK,GAC1B,EAAE,GACFF,mBAAmB;AAEvB,EAAA,KAAK,MAAMpH,IAAI,IAAIuH,cAAc,EAAE;AACjCC,IAAAA,OAAO,CAACxJ,EAAE,CAACgC,IAAI,EAAGyH,GAAU,IAAK;AAC/B,MAAA,IAAIA,GAAG,IAAIA,GAAG,YAAYC,KAAK,EAAE;AAC/B;QACA/Q,OAAO,CAACC,GAAG,CACT,CAAA,EAAG,4BAA4B+Q,KAAK,CAACC,GAAG,CAACC,IAAI,CAC3C,CAAA,EAAG7H,IAAI,MAAMyH,GAAG,CAACK,OAAO,CAAA,CAC1B,CAAC,CAAA,CAAE,CAAA,CACL,CAAC;AACDnR,QAAAA,OAAO,CAACC,GAAG,CACT+Q,KAAK,CAACI,IAAI,+HACZ,CAAC;AACD;AACApR,QAAAA,OAAO,CAAC0F,KAAK,CAACoL,GAAG,CAAC;AACpB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AACF,CAAC;;ACjBM,MAAMO,kBAAkB,GAAGA,CAChCC,KAAe,EACflG,QAAkB,EAClBmG,WAAgB,EAChBC,MAAuD,KACpD;AACH,EAAA,IAAIF,KAAK,EAAE;IACT,IAAI;AACF,MAAA,MAAMG,oBAAoB,GAAGC,mBAAmB,CAACJ,KAAK,CAAC;AACvD,MAAA,MAAMK,QAAQ,GAAGC,iBAAiB,CAACN,KAAK,CAAC;AACzC,MAAA,MAAMO,WAAW,GAAG,CAAC,CAACF,QAAQ,CAAC1V,IAAI,CAAC,CAAC,CAAC2L,MAAM,CAAC,KAAKA,MAAM,IAAI,GAAG,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMkK,kBAAkB,GACtBL,oBAAoB,CAAC/T,MAAM,IAAI,IAAI,IACnC0N,QAAQ,CAACzF,UAAU,IAAI,GAAG,IAC1BkM,WAAW;AAEb7R,MAAAA,OAAO,CAACkP,IAAI,CACV,wBACE4C,kBAAkB,GAAGjK,eAAe,GAAG4J,oBAAoB,CAAC/T,MAAM,uBAC7C0N,QAAQ,CAACnG,GAAG,CAACmB,GAAG,EACzC,CAAC;MAED,MAAM2L,aAAa,GAAGD,kBAAkB,GACpCjK,eAAe,GACf4J,oBAAoB,CAAC9P,IAAI,CAAC,GAAG,CAAC;MAElC,MAAMqQ,kBAAkB,GAAG,CAAA,EAAGT,WAAW,CAACU,IAAI,CAAA,KAAA,EAAQF,aAAa,CAAA,CAAE;AAErE3G,MAAAA,QAAQ,CAACY,SAAS,CAAC,eAAe,EAAEgG,kBAAkB,CAAC;AAEvDE,MAAAA,+BAA+B,CAACZ,KAAK,EAAElG,QAAQ,EAAEoG,MAAM,CAAC;AAExDpG,MAAAA,QAAQ,CAACY,SAAS,CAChB,mBAAmB,EACnB,CAAA,QAAA,EAAWrE,gBAAgB,CAACyD,QAAQ,CAACzF,UAAU,CAAC,EAClD,CAAC;IACH,CAAC,CAAC,OAAOnL,CAAM,EAAE;MACfwF,OAAO,CAACkP,IAAI,CAAC,2CAA2C,EAAE1U,CAAC,CAAC2W,OAAO,CAAC;AACtE,IAAA;AACF,EAAA;AACF,CAAC;AAEM,MAAMe,+BAA+B,GAAGA,CAC7CZ,KAAe,EACflG,QAAkB,EAClBoG,MAAuD,GAAG,EAAE,KACzD;AACH,EAAA,IAAIF,KAAK,EAAE;IACT,IAAI;AACF,MAAA,MAAMa,UAAU,GAAGC,gBAAgB,CAACd,KAAK,CAAC;AAC1C,MAAA,MAAMvL,OAAO,GAAGsM,oBAAoB,CAACf,KAAK,CAAC;MAC3C,MAAM;QAAEgB,YAAY;AAAEC,QAAAA;AAAc,OAAC,GAAGf,MAAM;AAC9C;AACA,MAAA,IAAIgB,SAAS,GAAG7X,KAAK,CAAC8X,IAAI,CAAEH,YAAY,IAAIA,YAAY,CAACvM,OAAO,CAAC,IAAK,EAAE,CAAC;AACzE,MAAA,IACEoM,UAAU,IACVO,gBAAK,CAACP,UAAU,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,IACxDI,aAAa,IACbA,aAAa,CAACxM,OAAO,CAAC,EACtB;QACAyM,SAAS,GAAG,CAAC,GAAGA,SAAS,EAAE,GAAGD,aAAa,CAACxM,OAAO,CAAC,CAAC;AACvD,MAAA;MACAqF,QAAQ,CAACW,MAAM,CAAC,2BAA2B,EAAEyG,SAAS,CAAC7Q,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC,CAAC,OAAOnH,CAAC,EAAE;AACVwF,MAAAA,OAAO,CAACkP,IAAI,CAAC,oCAAoC,EAAE1U,CAAC,CAAC;AACvD,IAAA;AACF,EAAA;AACF,CAAC;;ACtFD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMmY,WAAW,GAAGA,CACzB;AACEC,EAAAA,UAAU,GAAG,EAAE;AACf9G,EAAAA,IAAI,GAAG,EAAE;AACT+G,EAAAA,cAAc,GAAG,EAAE;AACnBC,EAAAA,QAAQ,GAAG,EAAE;AACbxB,EAAAA,KAAK,GAAG,EAAE;AACVyB,EAAAA,SAAS,GAAG,EAAE;AACdC,EAAAA,KAAK,GAAG,EAAE;AACV1E,EAAAA,YAAY,GAAG,EAAE;AACjBE,EAAAA,oBAAoB,GAAG,EAAE;AACzBD,EAAAA,kBAAkB,GAAG;AACvB,CAAC,EACD0E,YAKC,KACE;EACH,IAAIC,YAAY,GAAG,EAAE;AACrB;EACA,IAAID,YAAY,CAACE,OAAO,EAAE;AACxBD,IAAAA,YAAY,GAAG5E,YAAY,CACxBrG,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CACxBA,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CACxCA,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAC/BA,OAAO,CAAC,SAAS,EAAE,EAAE;AACtB;AAAA,KACCA,OAAO,CAAC,gBAAgB,EAAEqJ,KAAK,CAAC;AACrC,EAAA;;AAEA;OACK,IAAI2B,YAAY,CAACG,QAAQ,IAAI,CAACH,YAAY,CAACI,MAAM,EAAE;IACtDH,YAAY,GAAG1E,oBAAoB,CAChCvG,OAAO,CAAC,WAAW,EAAE+K,KAAK,CAAC,CAC3B/K,OAAO,CAAC,2BAA2B,EAAE6K,QAAQ,CAAC,CAC9C7K,OAAO,CAAC,kBAAkB,EAAEqL,eAAe,CAACP,SAAS,CAAC;AACvD;AACA;AAAA,KACC9K,OAAO,CAAC,gBAAgB,EAAEqJ,KAAK,CAAC;AACrC,EAAA;;AAEA;OACK,IAAI,CAAC2B,YAAY,CAACG,QAAQ,IAAIH,YAAY,CAACI,MAAM,EAAE;IACtDH,YAAY,GAAG3E,kBAAkB,CAC9BtG,OAAO,CAAC,WAAW,EAAE+K,KAAK,CAAC,CAC3B/K,OAAO,CAAC,2BAA2B,EAAE6K,QAAQ,CAAC,CAC9C7K,OAAO,CAAC,kBAAkB,EAAEqL,eAAe,CAACP,SAAS,CAAC;AACvD;AAAA,KACC9K,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;AACvC,EAAA;;AAEA;OACK,IAAI,CAACgL,YAAY,CAACG,QAAQ,IAAI,CAACH,YAAY,CAACI,MAAM,EAAE;IACvDH,YAAY,GAAG5E,YAAY,CACxBrG,OAAO,CAAC,WAAW,EAAE+K,KAAK,CAAC,CAC3B/K,OAAO,CAAC,2BAA2B,EAAE6K,QAAQ,CAAC,CAC9C7K,OAAO,CAAC,kBAAkB,EAAE8K,SAAS;AACtC;AACA;AAAA,KACC9K,OAAO,CAAC,gBAAgB,EAAEqJ,KAAK,CAAC;AACrC,EAAA;;AAEA;AACA;AACA;AACA,EAAA,IAAIuB,cAAc,EAAE;IAClBK,YAAY,GAAGA,YAAY,CAACjL,OAAO,CACjC,YAAY,EACZ,CAAA,MAAA,EAAS4K,cAAc,CAAA,CAAA,CACzB,CAAC;AACH,EAAA;AACAK,EAAAA,YAAY,GAAGpH,IAAI,GAAGoH,YAAY,CAACjL,OAAO,CAAC,SAAS,EAAE6D,IAAI,CAAC,GAAGoH,YAAY;;AAE1E;AACA;EACA,IAAIN,UAAU,EACZM,YAAY,GAAGA,YAAY,CAACjL,OAAO,CAAC,qBAAqB,EAAE2K,UAAU,CAAC;AAExE,EAAA,OAAOM,YAAY;AACrB,CAAC;;ACxED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,cAAc,GAAGA,CAC5BC,QAAkC,EAClC;EACEC,SAAS;EACTC,KAAK;AACLC,EAAAA;AAoCF,CAAC,KACE;AAAA,EAAA,IAAAC,qBAAA;AAIH;EACA,MAAMhF,cAAc,GAAGiF,qBAItB;AAED,EAAA,MAAMrI,GAAG,gBACPsI,KAAA,CAAAC,aAAA,CAACnF,cAAc,EAAA;AAACoF,IAAAA,SAAS,EAAEP,SAAS,CAACQ,QAAQ,CAACD;AAAU,GAAA,eACtDF,KAAA,CAAAC,aAAA,CAACG,eAAe,EAAA;IAACC,OAAO,EAAEV,SAAS,CAACU;AAAQ,GAAA,eAC1CL,KAAA,CAAAC,aAAA,CAACK,QAAa,EAAA;IAACC,KAAK,EAAEZ,SAAS,CAACa;AAAM,GAAA,eACpCR,KAAA,CAAAC,aAAA,CAACQ,WAAW,CAACC,QAAQ,EAAA;IAACxJ,KAAK,EAAEyI,SAAS,CAACgB;AAAY,GAAA,eACjDX,KAAA,CAAAC,aAAA,CAACW,YAAY,EAAA;AAACC,IAAAA,QAAQ,EAAElB,SAAS,CAACmB,MAAM,CAACxO;AAAI,GAAA,eAC3C0N,KAAA,CAAAC,aAAA,CAACc,kBAAkB,EAAA;AACjB5B,IAAAA,YAAY,EAAEQ,SAAS,CAACqB,UAAU,CAAC7B,YAAa;AAChD9H,IAAAA,OAAO,EAAEsI,SAAS,CAACqB,UAAU,CAAC3J,OAAQ;AACtCC,IAAAA,QAAQ,EAAEqI,SAAS,CAACqB,UAAU,CAAC1J,QAAS;AACxCuI,IAAAA,SAAS,EAAEA;AAAU,GAAA,eAErBG,KAAA,CAAAC,aAAA,CAACP,QAAQ,EAAA;IAACuB,MAAM,EAAErB,KAAK,CAACqB,MAAO;IAACC,UAAU,EAAEtB,KAAK,CAACsB;AAAW,GAAE,CAC7C,CACR,CACM,CACT,CACA,CACH,CACjB;;AAED;EACA,OAAO,EAAA,CAAApB,qBAAA,GAACH,SAAS,CAACwB,gBAAgB,MAAA,IAAA,IAAArB,qBAAA,KAAA,MAAA,IAA1BA,qBAAA,CAA4BpH,KAAK,IACrChB,GAAG,GACHiI,SAAS,CAACwB,gBAAgB,CAACzI,KAAK,CAAC0I,aAAa,CAAC1J,GAAG,CAAC;AACzD,CAAC;;ACtDD,MAAM2J,MAAM,GAAGA,CACbxQ,GAAY,EACZ6O,QAAkC,EAClC1I,MAIC,KACE;EACH,MAAM;AACJsK,IAAAA,SAAS,GAAG,IAAI;IAChBL,MAAM;IACNM,YAAY;IACZC,SAAS;IACTN,UAAU;IACVzD,WAAW;IACXlH,OAAO,GAAG,EAAE;AACZrC,IAAAA,gBAAgB,GAAG,QAAQ;IAC3ByB,qBAAqB;IACrB8I,aAAa;IACbD,YAAY;IACZiD,eAAe;IACfC,gBAAgB;IAChBC,eAAe;AACf9E,IAAAA,gBAAgB,GAAG;AACrB,GAAC,GAAG7F,MAAM;AACV,EAAA,MAAMzC,eAAe,GAAGyC,MAAM,CAACzC,eAAe,IAAIL,gBAAgB;AAElE,EAAA,IAAI0N,sBAAsB,GAAG5K,MAAM,CAAC6K,cAAc,IAAI,KAAK;AAE3D,EAAA,MAAMlG,UAAU,GAAGD,aAAa,CAAC1E,MAAM,EAAEzC,eAAe,CAAC;AAEzD,EAAA,MAAM0C,UAAU,GAAG+E,mBAAmB,CAACzF,OAAO,CAACU,UAAU,CAAC;AAC1DV,EAAAA,OAAO,CAACG,OAAO,GAAGH,OAAO,CAACG,OAAO,IAAIf,qBAAqB;EAE1D,IAAImM,eAAe,GAAG1K,cAAc;AACpC,EAAA,IAAI,OAAOuK,eAAe,KAAK,UAAU,EAAE;AACzCG,IAAAA,eAAe,GAAGH,eAAe;AACjCC,IAAAA,sBAAsB,GAAG,IAAI;AAC/B,EAAA;EAEA,IAAI/E,gBAAgB,KAAK,KAAK,EAAED,yBAAyB,CAACC,gBAAgB,CAAC,CAAC;;AAE5E,EAAA,MAAMH,WAAW,GAAGF,cAAc,CAACtI,gBAAgB,CAAC;AAEpDrD,EAAAA,GAAG,CAACG,GAAG,CACL,IAAI,EACJ+Q,iBAAiB,EAAE,EACnB,OACE1K,OAEC,EACDC,QAAkB,KACf;AACH,IAAA,MAAMhF,GAAG,GAAGqC,SAAS,CAAC0C,OAAO,CAAC/E,GAAG,CAAC;IAElC,MAAM0P,kBAAkB,GAAGC,WAAW,CACpChB,MAAM,CAACiB,YAAY,EACnB7K,OAAO,CAAC7D,IACV,CAAC;IACD,MAAM2O,aAAa,GAAGH,kBAAkB,IAAIA,kBAAkB,CAACpY,MAAM,GAAG,CAAC;AAEzE,IAAA,IAAIuY,aAAa,EAAE;MACjBC,iBAAiB,CAACJ,kBAAkB,CAAC;AACvC,IAAA;AAEA,IAAA,MAAMK,WAAqD,GACzDF,aAAa,GAAGH,kBAAkB,CAACM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI;;AAEzD;IACA,MAAMC,WAAW,GAAGF,WAAW,IAAIA,WAAW,CAACG,KAAK,CAACC,GAAG,KAAK,KAAK;IAClE,MAAMC,OAAO,GAAGL,WAAW,IAAIA,WAAW,CAACG,KAAK,CAACG,OAAO,KAAK,IAAI;AAEjE,IAAA,MAAMC,WAAW,GAAGC,CAAC,IAAKA,CAAC,IAAIA,CAAC,CAACC,WAAW,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,KAAM;;AAEzE;AACA,IAAA,MAAM3D,YAAY,GAAG4D,OAAO,CAG1B1L,OAAO,CAACtN,KAAK,EAAE;AACfsV,MAAAA,OAAO,EAAEA,CAAC;AAAE2D,QAAAA;AAAQ,OAAC,KAAKJ,WAAW,CAACI,OAAO,CAAC,IAAIT,WAAW;AAC7DU,MAAAA,KAAK,EAAEA,CAAC;AAAEzC,QAAAA;AAAM,OAAC,KAAKoC,WAAW,CAACpC,KAAK,CAAC;AACxClB,MAAAA,QAAQ,EAAEA,CAAC;AAAE3E,QAAAA;AAAS,OAAC,KAAKiI,WAAW,CAACjI,QAAQ,CAAC;AACjD4E,MAAAA,MAAM,EAAEA,CAAC;AAAE5L,QAAAA,MAAM,EAAEuD;AAAM,OAAC,KAAK0L,WAAW,CAAC1L,KAAK,CAAC,IAAIwL;AACvD,KAAC,CAAC;;AAEF;IACA,MAAMnC,KAAK,GAAG,MAAM2C,WAAW,CAC7B3B,YAAY,EACZ,EAAE,EACF4B,OAAO,CAAC;MACNC,cAAc,EAAE,CAAC9Q,GAAG;KACrB,CAAC,EACFgP,SACF,CAAC;;AAED;AACA,IAAA,MAAM/X,aAAa,GAAG8Z,WAAW,CAACC,0BAA0B,CAACjM,OAAO,CAAC;;AAErE;AACA;IACA,MAAMpE,QAAQ,GAAIoE,OAAO,CAACkM,OAAO,CAAC,aAAa,CAAC,IAC9ClM,OAAO,CAACpE,QAAmB;AAE7B/G,IAAAA,OAAO,CAACkP,IAAI,CACV,CAAA,YAAA,EAAe/D,OAAO,CAAC7D,IAAI,CAAA,WAAA,EAAcP,QAAQ,CAAA,gBAAA,EAAmB1J,aAAa,CAAA,CACnF,CAAC;AAEDgX,IAAAA,KAAK,CAACiD,QAAQ,CAACC,gBAAgB,CAACla,aAAa,CAAC,CAAC;AAC/CgX,IAAAA,KAAK,CAACiD,QAAQ,CAACE,UAAU,CAAChH,WAAW,CAACiH,SAAS,EAAEjH,WAAW,CAACkH,OAAO,CAAC,CAAC;IAEtE,MAAM3R,OAAO,GAAG4R,WAAW,CAAC5Q,QAAQ,EAAEoE,OAAO,CAACtN,KAAK,CAAC;AAEpD,IAAA,MAAM2T,MAAM,GAAGe,aAAa,IAAIA,aAAa,CAACxM,OAAO,CAAC;IACtDsO,KAAK,CAACiD,QAAQ,CAACM,iBAAiB,CAAC7R,OAAO,EAAEyL,MAAM,EAAEzK,QAAQ,CAAC,CAAC;AAE5D,IAAA,MAAM6I,iBAAiB,GAAGlB,uBAAuB,EAAE;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;IAEA,MAAMmJ,UAAU,GAAGrC,gBAAgB;AAC/B;AACA;AACArK,IAAAA,OAAO,CAAC2M,gBAAgB;AACxB;IACA,IAAIC,OAAO,EAAE;;AAEjB;AACA3M,IAAAA,QAAQ,CAACxD,MAAM,CAAC,GAAG,CAAC;;AAEpB;AACA;IACA,MAAMoQ,OAA0B,GAAG,EAAE;;AAErC;AACA,IAAA,MAAMC,gBAAgB,GAAG;AACvBhE,MAAAA,QAAQ,EAAE;QAAED,SAAS,EAAEpE,iBAAiB,CAACjB;OAAyB;AAClEwF,MAAAA,OAAO,EAAE0D,UAAU;AACnBvD,MAAAA,KAAK,EAAED,KAAK;AACZI,MAAAA,WAAW,EAAEuD,OAAO;AACpBpD,MAAAA,MAAM,EAAE;AAAExO,QAAAA;OAAK;AACf0O,MAAAA,UAAU,EAAE;QAAE7B,YAAY;QAAE9H,OAAO;AAAEC,QAAAA;AAAS;KAC/C;AACD;AACA,IAAA,MAAM8M,gBAAgB,GAAG;MAAEnD,MAAM;AAAEC,MAAAA;KAAY;;AAE/C;IACA,MAAM;AACJ1G,MAAAA,YAAY,GAAG,EAAE;AACjBE,MAAAA,oBAAoB,GAAG,EAAE;AACzBD,MAAAA,kBAAkB,GAAG;AACvB,KAAC,GAAGkB,UAAU,CAACC,OAAO,CAACvB,SAAS,IAAIsB,UAAU,CAACX,MAAM,CAACX,SAAS,IAAI,EAAE;;AAErE;IACA,IAAI8E,YAAY,CAACE,OAAO,EAAE;AACxB;AACA;AACA;AACA,MAAA,MAAMgF,cAAc,GAAG,CAAA,QAAA,EAAWpN,UAAU,CAAA,yBAAA,EAA4B1N,aAAa,CAAA,oCAAA,CAAsC;AAE3H,MAAA,MAAMmO,GAAG,GAAG+H,cAAc,CAACC,QAAQ,EAAE;AACnCC,QAAAA,SAAS,EAAEwE,gBAAgB;AAC3BvE,QAAAA,KAAK,EAAEwE,gBAAgB;AACvBvE,QAAAA,SAAS,EAAE;AACTyE,UAAAA,eAAe,EAAED;AACnB;AACF,OAAC,CAAC;MACFxC,cAAc,CAACnK,GAAG,CAAC;;AAEnB;AACA;MACA,MAAMoH,UAAU,GAAGjD,aAAa,CAC9BC,iBAAiB,EACjBvF,OAAO,EACPhC,eACF,CAAC;MACD,MAAMgQ,mBAAmB,GAAG1F,WAAW,CACrC;QACEC,UAAU;AACVtB,QAAAA,KAAK,EAAE6G,cAAc;QACrB7J,YAAY;AACZE,QAAAA;OACD,EACDyE,YACF,CAAC;;AAED;AACA;MACA7H,QAAQ,CAACY,SAAS,CAChB,mBAAmB,EACnB,CAAA,QAAA,EAAWrE,gBAAgB,CAAC,GAAG,CAAC,CAAA,CAClC,CAAC;AACDiO,MAAAA,eAAe,CAACzK,OAAO,EAAEC,QAAQ,EAAEiN,mBAAmB,CAAC;AACzD,IAAA;;AAEA;AACA,IAAA,IAAI,CAACpF,YAAY,CAACE,OAAO,EAAE;AACzBkB,MAAAA,KAAK,CACFiE,OAAO,CAACC,QAAQ,CAACjD,SAAS,CAAC,CAAC,CAC5BkD,SAAS,EAAE,CACXC,IAAI,CAAC,MAAM;AAAA,QAAA,IAAAC,oBAAA;AACV,QAAA,MAAMC,UAAU,GAAGtE,KAAK,CAACuE,QAAQ,EAAE;QACnC,IAAIC,WAAW,GAAGC,YAAY,CAAC;AAC7Ble,UAAAA,OAAO,EAAEme,QAAQ;AACjBC,UAAAA,SAAS,EAAED,QAAQ;AACnBE,UAAAA,MAAM,EAAEF,QAAQ;AAChBG,UAAAA,UAAU,EAAEC,IAAI;AAChBC,UAAAA,MAAM,EAAEL,QAAQ;AAChBM,UAAAA,aAAa,EAAEN,QAAQ;AACvBO,UAAAA,QAAQ,EAAEP,QAAQ;AAClBQ,UAAAA,WAAW,EAAEJ;AACf,SAAC,CAAC,CAACK,SAAS,CAACb,UAAU,CAAC,CAAC;AACzB;AACA;AACA,QAAA,IAAI,GAAAD,oBAAA,GAACe,mBAAmB,CAACd,UAAU,CAAC,MAAA,IAAA,IAAAD,oBAAA,KAAA,MAAA,IAA/BA,oBAAA,CAAiClW,QAAQ,CAAC,iBAAiB,CAAC,CAAA,EAAE;UACjE,IAAI4S,SAAS,KAAK,WAAW,EAC3ByD,WAAW,GAAGA,WAAW,CACtBa,QAAQ,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CACjCA,QAAQ,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,KACvC;AACH,YAAA,OAAOb,WAAW,CAACc,OAAO,CAAChI,QAAQ;AACnC,YAAA,OAAOkH,WAAW,CAACc,OAAO,CAAC5H,aAAa;AAC1C,UAAA;AACF,QAAA;AACA;QACA,IAAIqD,SAAS,KAAK,WAAW,EAAE;AAC7ByD,UAAAA,WAAW,GAAGA,WAAW,CAACe,MAAM,CAAC,MAAM,CAAC;AAC1C,QAAA,CAAC,MAAM,OAAOf,WAAW,CAACgB,IAAI;AAE9B,QAAA,IAAIC,mBAAmB,GAAGC,SAAS,CAAClB,WAAW,CAAC;AAChD,QAAA,IAAIb,OAAO,CAACrS,UAAU,KAAK,GAAG,EAAE;AAC9B;UACA,IAAIsN,YAAY,CAAC8D,KAAK,EAAE;AACtB1F,YAAAA,kBAAkB,CAACsH,UAAU,EAAEvN,QAAQ,EAAEmG,WAAW,EAAE;cACpDgB,aAAa;AACbD,cAAAA;AACF,aAAC,CAAC;YACFsD,eAAe,CAACzK,OAAO,EAAEC,QAAQ,EAAE0O,mBAAmB,EAAE,MAAM,CAAC;AAC/D,YAAA,OAAO,IAAI;AACb,UAAA;UACA,IAAI,CAACvE,eAAe,EAAE;AACpB;AACA;AACA;AACAuE,YAAAA,mBAAmB,GAAG,CAAA,QAAA,EAAW/O,UAAU,4BAA4B1N,aAAa,CAAA,uBAAA,EAA0Byc,mBAAmB,CAAA,SAAA,CAAW;AAC9I,UAAA;AACF,QAAA;;AAEA;AACAzI,QAAAA,kBAAkB,CAACsH,UAAU,EAAEvN,QAAQ,EAAEmG,WAAW,EAAE;UACpDgB,aAAa;AACbD,UAAAA;AACF,SAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAA,MAAM9F,KAAK,GAAG,IAAIwN,gBAAgB,EAAE;AACpC,QAAA,MAAMC,SAAS,GAAG1G,cAAc,CAACC,QAAQ,EAAE;AACzCC,UAAAA,SAAS,EAAE;AAAE,YAAA,GAAGwE,gBAAgB;AAAEhD,YAAAA,gBAAgB,EAAE;AAAEzI,cAAAA;AAAM;WAAG;AAC/DkH,UAAAA,KAAK,EAAEwE,gBAAgB;AACvBvE,UAAAA,SAAS,EAAE;AACT;AACA;AACA;AACA;AAAA;AAEJ,SAAC,CAAC;;AAEF;AACA;AACA,QAAA,MAAM7H,IAAI,GAAG6J,cAAc,CAACsE,SAAS,CAAC;AACtC;AACA;AACA,QAAA,MAAMC,MAAM,GAAGC,MAAM,CAACC,YAAY,EAAE;;AAEpC;AACA;AACA;;QAEA,MAAMvH,cAAc,GAAGqH,MAAM,CAACrH,cAAc,CAACrN,QAAQ,EAAE;QACvD,IAAIwN,KAAK,GAAGkH,MAAM,CAAClH,KAAK,CAACxN,QAAQ,EAAE;QACnC,MAAMsN,QAAQ,GAAGoH,MAAM,CAACG,IAAI,CACzB7U,QAAQ,EAAE,CACV8U,MAAM,CAACJ,MAAM,CAACK,IAAI,CAAC/U,QAAQ,EAAE,CAAC,CAC9B8U,MAAM,CAACJ,MAAM,CAACM,IAAI,CAAChV,QAAQ,EAAE,CAAC,CAC9B8U,MAAM,CAACJ,MAAM,CAACO,MAAM,CAACjV,QAAQ,EAAE,CAAC,CAChC8U,MAAM,CAACJ,MAAM,CAACQ,QAAQ,CAAClV,QAAQ,EAAE,CAAC;QAErC,IAAI;AACF;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;UACc,MAAM+F,cAAc,GAAGA,CACrBoP,OAAO,GAAG,KAAK,EACf5H,SAAkB,EAClB6H,iBAA0B,KACvB;YACH,IAAI5C,OAAO,CAAC5R,GAAG,EAAE;AACfgF,cAAAA,QAAQ,CAACyP,QAAQ,CAAC7C,OAAO,CAACrS,UAAU,IAAI,GAAG,EAAEqS,OAAO,CAAC5R,GAAG,CAAC;AACzD,cAAA,OAAO,EAAE;AACX,YAAA;;AAEA;YACA,IAAI,CAAC4R,OAAO,CAACrS,UAAU,IAAI,GAAG,KAAK,GAAG,EAAE;cACtCsN,YAAY,CAACI,MAAM,GAAG,IAAI;AAC5B,YAAA;YAEA,IAAI2E,OAAO,CAACrS,UAAU,KAAK,GAAG,EAC5BqN,KAAK,GAAG,mCAAmC;;AAE7C;AACA,YAAA,IAAI,OAAOgF,OAAO,CAACrS,UAAU,KAAK,QAAQ,EACxCyF,QAAQ,CAACxD,MAAM,CAACoQ,OAAO,CAACrS,UAAU,CAAC;AAErC,YAAA,MAAMiN,UAAU,GAAG+H,OAAO,GACtBhL,aAAa,CAACC,iBAAiB,EAAEvF,OAAO,EAAEhC,eAAe,CAAC,GAC1D,EAAE;YAEN,MAAMyD,IAAI,GAAG6G,WAAW,CACtB;cACEC,UAAU;AACV9G,cAAAA,IAAI,EAAE8O,iBAAiB;cACvB/H,cAAc;cACdC,QAAQ;AACRxB,cAAAA,KAAK,EAAEwI,mBAAmB;cAC1B/G,SAAS;cACTC,KAAK;cACL1E,YAAY;cACZE,oBAAoB;AACpBD,cAAAA;aACD,EACD0E,YACF,CAAC;AACD,YAAA,OAAOnH,IAAI;UACb,CAAC;AAED,UAAA,IAAI4J,sBAAsB,EAAE;AAC1B;AACA;AACA;AACA,YAAA,MAAM3C,SAAS,GAAGvG,KAAK,CAACsO,YAAY,EAAE;YACtC,MAAM5H,YAAY,GAAG3H,cAAc,CAAC,IAAI,EAAEwH,SAAS,EAAEjH,IAAI,CAAC;AAC1D8J,YAAAA,eAAe,CAACzK,OAAO,EAAEC,QAAQ,EAAE8H,YAAY,CAAC;AAClD,UAAA,CAAC,MAAM;YACL5H,YAAY,CACVC,cAAc,EACd0O,SAAS,EACT7O,QAAQ,EACRmB,sBAAsB,CAACC,KAAK,CAC9B,CAAC;AACH,UAAA;QACF,CAAC,CAAC,OAAOsE,GAAQ,EAAE;AACjB9Q,UAAAA,OAAO,CAACkP,IAAI,CAAC4B,GAAG,CAACK,OAAO,CAAC;AAC3B,QAAA;AACF,MAAA,CAAC,CAAC,CACD4J,KAAK,CAACjK,GAAG,IAAI;AACZ;AACA;AACA9Q,QAAAA,OAAO,CAACkP,IAAI,CAAC4B,GAAG,CAAC;AACjB1F,QAAAA,QAAQ,CAACxD,MAAM,CAAC,GAAG,CAAC;AACpBgO,QAAAA,eAAe,CACbzK,OAAO,EACPC,QAAQ,EACR,yBAAyB0F,GAAG,CAACkK,KAAK,CAAA,OAAA,EAAUlb,IAAI,CAACI,SAAS,CAAC4Q,GAAG,CAAC,EACjE,CAAC;AACH,MAAA,CAAC,CAAC;;AAEJ;AACA;AACA6E,MAAAA,cAAc,CACZpC,cAAc,CAACC,QAAQ,EAAE;AACvBC,QAAAA,SAAS,EAAEwE,gBAAgB;AAC3BvE,QAAAA,KAAK,EAAEwE;AACT,OAAC,CACH,CAAC;MAED7D,KAAK,CAAC4G,KAAK,EAAE;AACf,IAAA;AACF,EAAA,CACF,CAAC;AACH,CAAC;;ACnbD,MAAMtW,GAAG,GAAG8F,OAAO,EAAE;AAErB,MAAMyQ,MAAM,GAAGC,IAAI,CAACC,YAAY,CAACzW,GAAG,CAAC;AAErC,MAAM0W,KAAK,GAAGA,CACZ7H,QAAkC,EAClC1I,MAAoB,EACpBwQ,cAAsC,KACnC;AACHC,EAAAA,MAAM,CAACC,YAAY,GAAG1Q,MAAM,CAACyG,WAAW;AACxCgK,EAAAA,MAAM,CAACE,iBAAiB,GAAG3Q,MAAM,CAACyK,eAAe;AACjDgG,EAAAA,MAAM,CAACG,kBAAkB,GAAG5Q,MAAM,CAAC6Q,gBAAgB;EACnDJ,MAAM,CAACK,mBAAmB,GAAGld,MAAM,CAACoM,MAAM,CAACnE,iBAAiB,CAAC;AAE7DhC,EAAAA,GAAG,CAACkX,OAAO,CAAC,cAAc,CAAC;AAC3B;EACAhR,2BAA2B,CAACC,MAAM,CAAC;EAEnCwQ,cAAc,CAAC3W,GAAG,CAAC;AACnB;AACA;AACAmX,EAAAA,cAAuB,CAACnX,GAAG,EAAEmG,MAAM,CAACnE,iBAAiB,CAAC;AACtDoV,EAAAA,YAAiB,CAACpX,GAAG,EAAEmG,MAAM,CAAC;AAC9BkR,EAAAA,MAAe,CAACrX,GAAG,EAAE6O,QAAQ,EAAE1I,MAAM,CAAC;AAEtCnG,EAAAA,GAAG,CAAC0C,EAAE,CAAC,OAAO,EAAE,YAAY;AAC1B6T,IAAAA,MAAM,CAACe,MAAM,CAAC,IAAI,EAAE,MAAM;AACxBjc,MAAAA,OAAO,CAACkP,IAAI,CAAC,CAAA,oCAAA,CAAsC,CAAC;AACpD5C,MAAAA,UAAU,CAAC,YAAY;AACrB3H,QAAAA,GAAG,CAACuX,IAAI,CAAC,aAAa,CAAC;MACzB,CAAC,EAAE,GAAG,CAAC;AACT,IAAA,CAAC,CAAC;AACFvX,IAAAA,GAAG,CAAC0C,EAAE,CAAC,MAAM,EAAE,MAAM;MACnB6T,MAAM,CAACD,KAAK,CAAC,YAAY;AACvBjb,QAAAA,OAAO,CAACkP,IAAI,CAAC,YAAY,CAAC;QAC1B2B,OAAO,CAACsL,IAAI,EAAE;AAChB,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,CAAC;AACJ,CAAC;AAaD,qBAAe;EAAExX,GAAG;AAAE4C,EAAAA,QAAQ,EAAEd,aAAa;EAAEyU,MAAM;AAAEG,EAAAA;AAAM,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"contensis-react-base.js","sources":["../src/server/features/linkdepth-api/util.ts","../src/server/features/linkdepth-api/search.ts","../src/server/features/linkdepth-api/QueryLevelResults.ts","../src/server/features/linkdepth-api/LinkDepthSearchService.ts","../src/server/features/linkdepth-api/api.ts","../src/server/middleware/subsiteDebug.ts","../src/server/features/reverse-proxy/index.ts","../src/server/features/caching/cacheDuration.schema.ts","../src/server/util/staticPaths.ts","../src/server/middleware/bundleManipulation.ts","../src/server/middleware/resolveStartup.ts","../src/server/features/static-assets/index.ts","../src/server/util/displayStartupConfiguration.ts","../src/server/util/stringifyAttributes.ts","../src/server/features/response-handler/index.ts","../src/server/features/response-handler/render-stream.ts","../src/server/util/bundles.ts","../src/server/util/getVersionInfo.ts","../src/server/util/handleExceptions.ts","../src/server/util/headers.ts","../src/server/util/html.ts","../src/server/util/jsx.tsx","../src/server/webApp.tsx","../src/server/internalServer.ts"],"sourcesContent":["import { Entry } from 'contensis-delivery-api/lib/models';\nimport { PagedList } from 'contensis-core-api';\n/**\n * Util class holds our search results helper boilerplate methods\n */\nexport class Util {\n static GetIds(entries: Entry[], fieldId?: string) {\n if (fieldId) {\n return entries\n ?.map(e =>\n Array.isArray(e?.[fieldId])\n ? e?.[fieldId]?.map((f: Entry) => f?.sys?.id)\n : e?.[fieldId]?.sys?.id || ''\n )\n .flat();\n }\n return entries?.map(e => e?.sys?.id || '');\n }\n\n static GetItems(result: PagedList<Entry>) {\n return this.GetResults(result) ? result.items : [];\n }\n\n static GetResults(result: PagedList<Entry>) {\n if (result?.items) {\n return result;\n } else {\n return null;\n }\n }\n}\n\nexport const mergeResults = (\n results: Entry[],\n parentResults: Entry[],\n replaceContentTypeIds: string[],\n linkFieldId: string\n) =>\n results\n .map(r => {\n if (replaceContentTypeIds.some(c => c === r.sys.contentTypeId)) {\n const resolvedParent = parentResults?.find(e =>\n e[linkFieldId]?.some((l: Entry) => l.sys?.id === r.sys.id)\n );\n if (resolvedParent)\n return {\n ...resolvedParent,\n ...r,\n entryTitle: resolvedParent.entryTitle,\n entryDescription: resolvedParent.entryDescription,\n sys: resolvedParent.sys,\n originalSys: r.sys,\n };\n else return r;\n }\n return r;\n })\n .filter(r => r) as Entry[];\n","import {\n expressions as exp,\n FieldOperators,\n FilterExpression,\n LogicOperators,\n SearchQueryOptions,\n} from '~/search';\nimport { Op, Query } from 'contensis-core-api';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { cachedSearch } from '~/util/ContensisDeliveryApi';\nimport { LinkDepthApiFilters } from './api.d';\nimport { mergeResults, Util } from './util';\n\ntype WithOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\ntype SearchQueryArgs = WithOptional<\n SearchQueryOptions & {\n idFilters?: SearchQueryOptions['filters'];\n sharedFilters?: SearchQueryOptions['filters'];\n },\n | 'aggregations'\n | 'assetTypes'\n | 'customWhere'\n | 'dynamicOrderBy'\n | 'excludeIds'\n | 'featuredResults'\n | 'fieldLinkDepths'\n | 'fields'\n | 'includeInSearchFields'\n | 'languages'\n | 'omitDefaultSearchFields'\n | 'orderBy'\n | 'pageIndex'\n | 'searchTerm'\n | 'webpageTemplates'\n | 'weightedSearchFields'\n>;\n/**\n * Builds our complete Delivery API Query object from a set of provided arguments\n * @param queryParams\n * @returns Delivery API Query\n */\nexport const searchQuery = ({\n assetTypes,\n contentTypeIds,\n customWhere,\n fields,\n filters,\n idFilters = [],\n sharedFilters = [],\n pageSize,\n pageIndex = 0,\n orderBy,\n searchTerm,\n versionStatus = 'published',\n webpageTemplates,\n weightedSearchFields,\n}: SearchQueryArgs) => {\n const expressions = [\n ...exp.defaultExpressions(versionStatus),\n ...exp.contentTypeIdExpression(\n contentTypeIds,\n webpageTemplates,\n assetTypes\n ),\n ...exp.customWhereExpressions(customWhere),\n ...exp.filterExpressions(filters),\n ...exp.filterExpressions(idFilters),\n ...(sharedFilters?.length > 0\n ? [Op.or(...exp.filterExpressions(sharedFilters, true))]\n : []),\n ...exp.termExpressions(searchTerm || '', weightedSearchFields || []),\n ];\n\n const query = new Query(...expressions);\n\n query.orderBy = exp.orderByExpression(orderBy || []);\n\n if (fields && fields.length > 0) {\n (query as any).fields = fields;\n }\n\n // (query as any).includeArchived = true;\n // (query as any).includeDeleted = true;\n query.pageIndex = pageIndex;\n query.pageSize = pageSize;\n return query;\n};\n\nexport const appendSearchQueryFilters = (\n query: Query,\n idFilters: FilterExpression[]\n) => {\n query.where.addRange(exp.filterExpressions(idFilters));\n};\n\nexport const finalQuery = (\n {\n assetTypes,\n contentTypeIds,\n fields,\n filters,\n idFilters,\n sharedFilters,\n pageSize,\n pageIndex,\n orderBy,\n searchTerm,\n versionStatus = 'published',\n webpageTemplates,\n weightedSearchFields,\n }: SearchQueryArgs,\n children: Omit<SearchQueryArgs, 'pageSize' | 'pageIndex' | 'versionStatus'>[]\n) => {\n const expressions = [\n ...exp.defaultExpressions(versionStatus),\n Op.or(\n Op.and(\n ...exp.contentTypeIdExpression(\n contentTypeIds,\n webpageTemplates,\n assetTypes\n ),\n ...exp.filterExpressions(filters),\n ...exp.filterExpressions(idFilters || []),\n\n ...(sharedFilters?.length\n ? [\n Op.or(\n ...exp.filterExpressions(sharedFilters || [])\n // Op.and(\n // ...sharedFilters.map(sf =>\n // Op.not(exp.fieldExpression(sf.key, true, 'exists')[0])\n // ),\n // ...exp.filterExpressions(idFilters)\n // )\n ),\n ]\n : [])\n ),\n ...children.map(child =>\n Op.and(\n ...exp.contentTypeIdExpression(\n child.contentTypeIds,\n child.webpageTemplates,\n child.assetTypes\n ),\n ...exp.filterExpressions(child.sharedFilters || []),\n ...exp.filterExpressions(child.idFilters || [])\n )\n )\n ),\n ...exp.termExpressions(searchTerm || '', weightedSearchFields || []),\n ];\n\n const query = new Query(...expressions);\n\n query.orderBy = exp.orderByExpression(orderBy || []);\n\n if (fields && fields.length > 0) {\n (query as any).fields = fields;\n }\n\n // (query as any).includeArchived = true;\n // (query as any).includeDeleted = true;\n query.pageIndex = pageIndex || 0;\n query.pageSize = pageSize;\n return query;\n};\n\n/**\n * Create a filter expression from a provided filters configuration object\n * and populate them based on the presence of that key in params, filter\n * out any filter keys that do not have a value set in params\n * @param f filters configuration from any level\n * @param params request.query object from Express middleware\n * @returns FilterExpression[] we can use to use with searchQuery function\n */\nexport const makeFilterExpressions = (\n f: LinkDepthApiFilters,\n params: { [param: string]: string | undefined }\n): FilterExpression[] => {\n const expressions: FilterExpression[] = [];\n for (const [paramKey, filterConfig] of Object.entries(f)) {\n const filterValues = params[paramKey]?.split(',');\n if (typeof filterValues !== 'undefined')\n expressions.push({\n key:\n typeof filterConfig === 'object'\n ? filterConfig.fieldId\n : filterConfig,\n values: filterValues,\n fieldOperator:\n typeof filterConfig === 'object' && filterConfig.fieldOperator\n ? (filterConfig.fieldOperator as FieldOperators)\n : 'equalTo',\n logicOperator:\n typeof filterConfig === 'object' && filterConfig.logicOperator\n ? (filterConfig.logicOperator as LogicOperators)\n : 'or',\n });\n }\n return expressions;\n};\n\nexport const makeDerivedIdsFilterExpression = (\n prevFieldId: string,\n entries: Entry[],\n ownIds = false,\n alwaysApplyFilter = false\n) => {\n const previouslyDerivedIdsFilter = [] as FilterExpression[];\n const prevResultIds = Util.GetIds(entries);\n\n if (prevFieldId && prevResultIds?.length > 0)\n previouslyDerivedIdsFilter.push({\n key: ownIds ? 'sys.id' : `${prevFieldId}.sys.id`,\n values: prevResultIds,\n fieldOperator: 'in',\n logicOperator: 'or',\n });\n else if (alwaysApplyFilter)\n previouslyDerivedIdsFilter.push({\n key: 'intended-dud',\n values: ['1'],\n fieldOperator: 'in',\n logicOperator: 'or',\n });\n return previouslyDerivedIdsFilter;\n};\n\nexport const resolveParentEntries = async (\n parentContentTypeIds: string[],\n replaceContentTypeIds: string[],\n parentFieldId: string,\n results: Entry[],\n params: any,\n debug: boolean\n) => {\n // Build variables from query config to use in our Delivery API Query\n const previousIdsFilter = makeDerivedIdsFilterExpression(\n parentFieldId,\n results\n ) as any;\n\n const query = searchQuery({\n contentTypeIds: parentContentTypeIds,\n idFilters: previousIdsFilter,\n } as any);\n query.fields = params.fields\n ? [...(JSON.parse(params.fields) as unknown as string[]), parentFieldId]\n : [];\n\n if (debug)\n console.log(\n `\\nResolve parent entries query: \\n${JSON.stringify(\n query.toJSON()\n ).substring(0, 1000)}`\n );\n\n const parentResults = await cachedSearch.searchUsingPost(\n query,\n Number(params.linkDepth || 0),\n params.projectId\n );\n\n return mergeResults(\n results,\n Util.GetItems(parentResults),\n replaceContentTypeIds,\n parentFieldId\n );\n};\n","/* eslint-disable no-console */\nimport { PagedList } from 'contensis-core-api';\nimport { Query } from 'contensis-delivery-api';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { cachedSearch } from '~/util/ContensisDeliveryApi';\nimport {\n appendSearchQueryFilters,\n makeFilterExpressions,\n searchQuery,\n} from './search';\nimport { LinkDepthApiFilters, LinkFields } from './api.d';\nimport { Util } from './util';\n\nclass QueryLevelResults {\n level: number;\n contentTypeIds: string[];\n linkFieldIds: string[];\n linkFields: LinkFields;\n filters: LinkDepthApiFilters;\n sharedFilters: LinkDepthApiFilters;\n returnEntries: boolean;\n resolveFirstParent: boolean;\n\n validatedLinks: {\n contentTypeId: string;\n linkFieldId: string;\n entryIds: string[];\n }[] = [];\n\n parent: QueryLevelResults | undefined;\n children: QueryLevelResults[] = [];\n runFirstQuery: boolean;\n runFinalQuery: boolean;\n\n private params: { [key: string]: string | undefined } = {};\n private debug: boolean;\n\n private firstQuery: Query = new Query();\n private firstResults: PagedList<Entry> = {} as PagedList<Entry>;\n\n private finalQuery: Query = new Query();\n private finalResults: PagedList<Entry> = {} as PagedList<Entry>;\n\n constructor({\n level,\n contentTypeIds,\n linkFields,\n filters,\n sharedFilters,\n returnEntries,\n resolveFirstParent,\n params = {},\n parent,\n debug = false,\n }: {\n level: number;\n contentTypeIds: string[];\n linkFields: LinkFields;\n filters: LinkDepthApiFilters;\n sharedFilters: LinkDepthApiFilters;\n returnEntries?: boolean;\n resolveFirstParent?: boolean;\n params: { [key: string]: string | undefined };\n parent?: QueryLevelResults;\n debug?: boolean;\n }) {\n this.level = level;\n this.contentTypeIds = contentTypeIds;\n this.linkFields = linkFields;\n this.linkFieldIds = Object.keys(linkFields).map(fId => fId);\n this.filters = filters;\n this.sharedFilters = sharedFilters;\n this.returnEntries =\n typeof returnEntries === 'undefined' ? level === 0 : returnEntries;\n this.resolveFirstParent = resolveFirstParent || false;\n this.params = params;\n this.parent = parent;\n this.debug = debug;\n\n this.runFirstQuery = Object.keys(params).some(\n p =>\n Object.keys(filters).includes(p) ||\n Object.keys(sharedFilters).includes(p)\n );\n this.runFinalQuery = Object.keys(params).some(\n p =>\n Object.keys(filters).includes(p) ||\n Object.keys(sharedFilters).includes(p)\n );\n\n this.firstQuery = searchQuery({\n contentTypeIds,\n filters: makeFilterExpressions(filters, params),\n sharedFilters: makeFilterExpressions(sharedFilters, params),\n // idFilters: parent?.validatedLinks\n // ? makeFilterExpressions(parent.validatedLinks, params)\n // : [], // these dont exist yet\n fields: ['sys.id', ...this.linkFieldIds],\n pageSize: 2000,\n searchTerm: params.term,\n versionStatus: params.versionStatus as any,\n });\n\n this.finalQuery = searchQuery({\n contentTypeIds,\n filters: makeFilterExpressions(filters, params),\n sharedFilters: makeFilterExpressions(sharedFilters, params),\n fields: JSON.parse(params.fields || '[]'),\n pageIndex: level === 0 ? Number(params.pageIndex) : 0,\n pageSize: level === 0 ? Number(params.pageSize) : 2000,\n searchTerm: params.term,\n versionStatus: params.versionStatus as any,\n });\n }\n\n AddChild = ({ child }: { child: QueryLevelResults }) => {\n this.children.push(child);\n };\n\n RunFirstQuery = async () => {\n const { firstQuery: query, params, parent, runFirstQuery } = this;\n\n if (parent?.validatedLinks.length) {\n // add any idFilters derived from parent query results\n appendSearchQueryFilters(\n query,\n makeFilterExpressions(\n Object.fromEntries(\n parent.validatedLinks.map(vl => [\n vl.linkFieldId,\n { fieldId: `sys.id` },\n ])\n ),\n Object.fromEntries(\n parent.validatedLinks.map(vl => [\n vl.linkFieldId,\n vl.entryIds.join(',') || `no ids from parent ${parent.level}`,\n ])\n )\n )\n );\n }\n\n if (runFirstQuery) {\n if (this.debug)\n console.log(\n `\\nLevel ${this.level} - First query: \\n${JSON.stringify(\n query.toJSON()\n ).substring(0, 1000)}`\n );\n\n this.firstResults = await cachedSearch.searchUsingPost(\n query,\n 0,\n params.projectId\n );\n\n // mapResultsToValidatedLinks\n for (const linkFieldId of this.linkFieldIds) {\n this.validatedLinks.push({\n contentTypeId: this.linkFields[linkFieldId].contentTypeId || '',\n linkFieldId,\n entryIds: Util.GetIds(this.firstResults.items, linkFieldId),\n });\n }\n }\n };\n\n RunFinalQuery = async () => {\n const { level, children, finalQuery: query, params, runFinalQuery } = this;\n\n if (!children.some(c => c.returnEntries)) {\n const firstChild = children?.[0];\n // add any idFilters derived from child query results\n if (firstChild)\n appendSearchQueryFilters(\n query,\n makeFilterExpressions(\n Object.fromEntries(\n firstChild.validatedLinks.map(vl => [\n vl.linkFieldId,\n { fieldId: `${vl.linkFieldId}.sys.id` },\n ])\n ),\n Object.fromEntries(\n firstChild.validatedLinks.map(vl => [\n vl.linkFieldId,\n vl.entryIds.join(',') ||\n `no ids from child ${firstChild.level}`,\n ])\n )\n )\n );\n }\n\n if (level === 0 && this.returnEntries) {\n // This is the final query to be run and response returned to the caller\n // Only this bit cares about linkDepth, fields and pagination parameters\n query.fields = JSON.parse(params.fields || '[]') as unknown as string[];\n query.pageSize = params.pageSize as unknown as number;\n query.pageIndex = params.pageIndex as unknown as number;\n // query.orderBy = params.orderBy;\n }\n\n if (runFinalQuery) {\n if (this.debug)\n console.log(\n `\\nLevel ${this.level} - Final query: \\n${JSON.stringify(\n query.toJSON()\n ).substring(0, 1000)}`\n );\n this.finalResults = await cachedSearch.searchUsingPost(\n query,\n Number(params.linkDepth) || 0,\n params.projectId\n );\n if (this.parent) this.parent.runFinalQuery = true;\n\n // mapResultsToValidatedLinks\n for (const linkFieldId of this.parent?.linkFieldIds || []) {\n this.validatedLinks.push({\n contentTypeId:\n this.parent?.linkFields[linkFieldId].contentTypeId || '',\n linkFieldId,\n entryIds: Util.GetIds(this.finalResults.items),\n });\n }\n }\n };\n\n GetResultsEntries = () => {\n const { finalResults, firstResults } = this;\n return finalResults?.items?.length\n ? finalResults.items\n : firstResults.items;\n };\n\n GetResults = () => {\n const { finalResults, firstResults } = this;\n return typeof finalResults?.totalCount !== 'undefined'\n ? finalResults\n : firstResults;\n };\n}\n\nexport default QueryLevelResults;\n","/* eslint-disable no-console */\nimport { cachedSearch } from '~/util/ContensisDeliveryApi';\nimport { LinkDepthApiConfig, LinkDepthApiFilters, LinkFields } from './api.d';\nimport QueryLevelResults from './QueryLevelResults';\nimport {\n finalQuery,\n makeDerivedIdsFilterExpression,\n makeFilterExpressions,\n resolveParentEntries,\n} from './search';\n\nexport type LinkDepthSearchServiceConstuctorArgs =\n Partial<LinkDepthApiConfig> & {\n params: { [key: string]: string | undefined };\n debug?: boolean;\n };\n\nclass LinkDepthSearchService {\n contentTypeIds: string[];\n filters: LinkDepthApiFilters;\n sharedFilters: LinkDepthApiFilters;\n linkFields: LinkFields;\n params: { [key: string]: string | undefined };\n debug: boolean;\n\n queryLevels: QueryLevelResults[];\n\n constructor({\n contentTypeId = '',\n filters = {},\n sharedFilters = {},\n linkFields = {},\n params,\n debug = false,\n }: LinkDepthSearchServiceConstuctorArgs) {\n this.contentTypeIds = Array.isArray(contentTypeId)\n ? contentTypeId\n : [contentTypeId];\n this.filters = filters;\n this.sharedFilters = sharedFilters;\n this.linkFields = linkFields;\n this.params = params;\n this.debug = debug;\n\n this.queryLevels = this.InitQueryLevels();\n }\n\n DoSearch = async () => {\n // Run queries \"top-down\" through each level of `linkField`\n for (const queryLevel of this.queryLevels) {\n await queryLevel.RunFirstQuery();\n }\n\n // Run queries \"bottom-up\" through each level of `linkField`\n for (const queryLevel of [...this.queryLevels].reverse()) {\n await queryLevel.RunFinalQuery();\n }\n\n // Run a final query that will aggregate the results from all levels\n // adding all levels to the query that have `returnEntries` set true\n return await this.RunFinalQueries();\n };\n\n RunFinalQueries = async () => {\n const finalQueryLevels = this.queryLevels.filter(\n ql =>\n (ql.level > 0 && ql.returnEntries) ||\n (ql.level === 0 && ql.returnEntries !== false)\n );\n\n // Decide if we need a further final query if any child level(s) have had `returnEntries` set to true\n if (\n finalQueryLevels.length > 1 ||\n (finalQueryLevels.length === 1 && finalQueryLevels[0].level !== 0)\n ) {\n // Build final query\n const { contentTypeIds, filters, sharedFilters, params } = this;\n const derivedIds =\n finalQueryLevels[0].children\n .filter(ql => !ql.returnEntries)\n .map(ql => ql.validatedLinks)\n .flat() || [];\n const derivedIdFilters =\n derivedIds\n .map(vl =>\n makeFilterExpressions(\n {\n [vl.linkFieldId]: {\n fieldId: `${vl.linkFieldId}.sys.id`,\n },\n },\n {\n [vl.linkFieldId]:\n vl.entryIds.join(',') || 'no results for filter',\n }\n )\n )\n .flat() || [];\n // This is the final query to be run and response returned to the caller\n // Only this bit cares about linkDepth, fields and pagination parameters\n const query = finalQuery(\n {\n contentTypeIds,\n filters: makeFilterExpressions(filters, params),\n sharedFilters: makeFilterExpressions(sharedFilters, params),\n idFilters: derivedIdFilters,\n fields: params.fields\n ? [\n ...JSON.parse(params.fields),\n ...finalQueryLevels\n .map(l => l.parent?.linkFieldIds || [])\n .flat(),\n ]\n : [],\n orderBy: params.orderBy?.split(','),\n pageIndex: Number(params.pageIndex) || 0,\n pageSize:\n typeof Number(params.pageSize) === 'number'\n ? Number(params.pageSize)\n : 25,\n searchTerm: params.term,\n versionStatus: params.versionStatus as any,\n },\n finalQueryLevels?.[0].children\n .filter(ql => ql.returnEntries)\n .map(ql => {\n const entriesAtLevel =\n ql.GetResultsEntries() || ql.parent?.GetResultsEntries();\n const previousIdsFilter =\n ql.returnEntries || !!ql.children.some(qc => qc.returnEntries)\n ? ql.parent?.linkFieldIds\n .map(fieldId =>\n makeDerivedIdsFilterExpression(\n fieldId,\n entriesAtLevel,\n true,\n ql.runFinalQuery\n )\n )\n .flat()\n : [];\n return {\n contentTypeIds: ql.contentTypeIds,\n filters: makeFilterExpressions(ql.filters, params),\n sharedFilters: makeFilterExpressions(ql.sharedFilters, params),\n idFilters: previousIdsFilter,\n };\n }) || []\n );\n if (this.debug)\n console.log(\n `\\nFinal query: ${derivedIds.reduce(\n (accumulator, object) => accumulator + object.entryIds.length,\n 0\n )} derived ids \\n${JSON.stringify(query.toJSON()).substring(0, 1000)}`\n );\n\n const finalQueryResult = await cachedSearch.searchUsingPost(\n query,\n Number(params.linkDepth) || 0,\n params.projectId\n );\n\n // Resolve any parent entries\n\n const resolveParentLevels = finalQueryLevels.filter(\n ql => ql.resolveFirstParent\n );\n\n let entries = finalQueryResult.items;\n\n for (const resolveParents of resolveParentLevels) {\n entries = await resolveParentEntries(\n resolveParents.parent?.contentTypeIds || [],\n resolveParents.contentTypeIds,\n resolveParents.parent?.linkFieldIds[0] || 'unknown',\n finalQueryResult.items, // or entries?\n this.params,\n this.debug\n );\n }\n\n return { ...finalQueryResult, items: entries };\n } else {\n if (this.debug) console.log(`\\nNo further queries required\\n`);\n return this.queryLevels.find(ql => ql.level === 0)?.GetResults();\n }\n };\n\n private InitQueryLevels = () => {\n const createChildQueryLevels = (\n linkFields: LinkFields,\n parentQueryLevel: QueryLevelResults,\n level = 1\n ): QueryLevelResults[] => {\n return Object.entries(linkFields)\n .map(\n ([\n ,\n {\n contentTypeId = '',\n filters = {},\n linkFields = {},\n resolveFirstParent,\n returnEntries,\n sharedFilters = {},\n },\n ]) => {\n const thisLevel = new QueryLevelResults({\n level,\n contentTypeIds: Array.isArray(contentTypeId)\n ? contentTypeId\n : [contentTypeId],\n filters: Object.fromEntries(\n Object.entries(filters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n sharedFilters: Object.fromEntries(\n Object.entries(sharedFilters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n linkFields,\n parent: parentQueryLevel,\n params,\n resolveFirstParent,\n returnEntries,\n debug: this.debug,\n });\n\n parentQueryLevel.AddChild({ child: thisLevel });\n\n return [\n thisLevel,\n ...createChildQueryLevels(linkFields, thisLevel, level + 1),\n ];\n }\n )\n .flat();\n };\n const { contentTypeIds, filters, sharedFilters, linkFields, params } = this;\n\n const firstLevel = new QueryLevelResults({\n level: 0,\n contentTypeIds,\n filters: Object.fromEntries(\n Object.entries(filters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n sharedFilters: Object.fromEntries(\n Object.entries(sharedFilters).map(([fKey, fVal]) => [\n fKey,\n typeof fVal === 'string' ? { fieldId: fVal } : fVal,\n ])\n ),\n linkFields,\n params,\n debug: this.debug,\n });\n\n const queryLevels = [\n firstLevel,\n ...createChildQueryLevels(linkFields, firstLevel),\n ];\n // return queryLevels;\n\n // If we are only returning entries from level 0\n // we can skip running the first query and finalQuery will suffice\n if (queryLevels.find(ql => ql.returnEntries && ql.level !== 0))\n return queryLevels;\n else\n return queryLevels.map(ql => {\n ql.runFirstQuery = false;\n // ql.runFinalQuery = false;\n return ql;\n });\n };\n}\n\nexport default LinkDepthSearchService;\n","import { Express, RequestHandler } from 'express';\nimport LinkDepthSearchService from './LinkDepthSearchService';\nimport setCachingHeaders from '../caching/setCachingHeaders';\nimport { LinkDepthApiConfig } from './api.d';\n\n/**\n * Make a LinkDepth api at the uri specified in middlewareConfig.\n * The api supports a GET request and specified filters are supplied as query-string parameters.\n * The response should be a normal Delivery API response.\n * @param app Express app instance\n * @param middlewareConfig Middleware configuration that represents the content types we want to search within, any filters that are required and any linkFields we wish to search within to derive a set of search results from the entries that contain the linkFields. Each key inside of linkFields represents another \"linkDepth\" of entries and we can specify all the same contentTypeId, filters, and linkFields of their own. There is no currently no limit on how deep these linkFields can go\n * @returns Returns nothing if uri, contentTypeId or linkFields is not set in middlewareConfig\n */\nconst makeLinkDepthApi = (\n app: Express,\n middlewareConfig: LinkDepthApiConfig\n) => {\n const { uri, contentTypeId, linkFields } = middlewareConfig;\n if (!contentTypeId || !linkFields || !uri) return;\n\n app.get(uri, makeLinkDepthMiddleware(middlewareConfig));\n};\n\n/** Create a content type hierarchy from supplied config and produces\n * a RequestHandler function to serve our Express middleware */\nconst makeLinkDepthMiddleware = ({\n contentTypeId,\n filters = {},\n sharedFilters = {},\n linkFields,\n debug,\n}: LinkDepthApiConfig) => {\n try {\n // The runtime express request handler\n const linkDepthMiddleware: RequestHandler = async (req, res) => {\n try {\n // Short cache duration copied from canterbury project\n setCachingHeaders(res, {\n cacheControl: 'private',\n surrogateControl: '10',\n });\n\n // Gather all params from the request, we will use them at the right query levels later\n const params = Object.fromEntries(\n [...Object.entries(req.params), ...Object.entries(req.query)].map(\n ([k, v]) => [k, v?.toString()]\n )\n );\n\n const result = await new LinkDepthSearchService({\n contentTypeId,\n linkFields,\n filters,\n sharedFilters,\n params,\n debug,\n }).DoSearch();\n\n res.json(result);\n } catch (error) {\n // This is a runtime error encountered when processing a given request\n console.error(error);\n res.statusCode = 500;\n res.json(error);\n }\n };\n\n return linkDepthMiddleware;\n } catch (error) {\n // This will be an error building the middleware\n // we can only serve what the error was as the request handler instead\n console.error(error);\n const errorMiddleware: RequestHandler = async (req, res) => {\n res.statusCode = 500;\n res.json(JSON.stringify(error));\n };\n return errorMiddleware;\n }\n};\n\nexport default makeLinkDepthApi;\n","import { RequestHandler } from 'express';\n\n/**\n * Development proxy for Subsite PoC\n * Catch all routes before they hit CRB handlers\n * and rewrite them to include the subsite base path,\n * this allows us to run the subsite in a subfolder in development\n * In production we will handle this with a path rewrite in the Cloud Dashboard site configuration,\n * @param subsitePath the content base path we will rewrite to\n * @param exceptions an array of path prefixes to ignore when rewriting, useful for ignoring assets that do not live in the subsite base path\n */\nexport const subsiteDebugMiddleware =\n (subsitePath: string, exceptions: string[] = []): RequestHandler =>\n (req, res, next) => {\n if (\n !subsitePath ||\n req.hostname !== 'localhost' ||\n req.path.startsWith('/api/') ||\n exceptions.some(exception => req.path.startsWith(exception))\n )\n return next();\n\n if (!req.path.startsWith(`${subsitePath}/`)) {\n console.warn(\n `[subsite-debug-middleware] Rewriting (${subsitePath})${req.url}`\n );\n if (req.path === '/' || req.path === subsitePath) req.url = subsitePath;\n else req.url = `${subsitePath}${req.url}`;\n\n res.setHeader('x-crb-subsite-content-path', req.url);\n\n // Important to set the subsite_path header as this drives the subsite-scoped routing logic\n req.headers['subsite_path'] = subsitePath;\n }\n next();\n };\n","import { Express } from 'express';\nimport httpProxy from 'http-proxy';\nimport { shorten } from '~/util/errors';\nimport { urls } from '~/util/urls';\n\nconst servers = SERVERS; /* global SERVERS */\nconst project = PROJECT; /* global PROJECT */\nconst alias = ALIAS; /* global ALIAS */\nconst deliveryApiHostname = urls(alias, project).api;\n\nconst proxyTimeoutMs = 45_000;\n\nexport const assetProxy = httpProxy.createProxyServer();\nexport const deliveryProxy = httpProxy.createProxyServer();\n\nconst reverseProxies = (app: Express, reverseProxyPaths: string[] = []) => {\n deliveryApiProxy(deliveryProxy, app);\n\n app.all(\n reverseProxyPaths.map(proxyPath =>\n // Patch to update paths for express v5\n proxyPath.endsWith('/*')\n ? `${proxyPath.slice(0, -2)}/{*splat}`\n : proxyPath.endsWith('/**')\n ? `${proxyPath.slice(0, -3)}/{*splat}`\n : proxyPath\n ),\n (req, res) => {\n const target =\n req.hostname.includes('preview-') ||\n req.hostname.includes('preview.') ||\n req.hostname === 'localhost'\n ? servers.previewIis || servers.iis\n : servers.iis;\n\n assetProxy.web(req, res, {\n target,\n changeOrigin: true,\n proxyTimeout: proxyTimeoutMs,\n timeout: proxyTimeoutMs,\n });\n }\n );\n assetProxy.on('error', (e, req) => {\n console.log(\n `[assetProxy] \"${req.method} ${req.url}\" host: ${req.headers.host} failed with ${e}`\n );\n });\n};\n\nconst deliveryApiProxy = (apiProxy, app) => {\n // This is just here to stop cors requests on localhost. In Production this is mapped using varnish.\n app.all(\n [\n '/api/delivery/{*splat}',\n '/api/forms/{*splat}',\n '/api/image/{*splat}',\n '/authenticate/{*splat}',\n ],\n (req, res) => {\n console.log(\n `[apiProxy] \"${req.method} ${shorten(req.url)}\" target: ${servers.alias}`\n );\n apiProxy.web(req, res, {\n target: deliveryApiHostname,\n changeOrigin: true,\n proxyTimeout: proxyTimeoutMs,\n timeout: proxyTimeoutMs,\n });\n }\n );\n apiProxy.on('error', (e, req) => {\n console.log(\n `[apiProxy] \"${req.method} ${req.url}\" host: ${req.headers.host} failed with ${e}`\n );\n });\n};\n\nexport default reverseProxies;\n","export const CacheDuration = {\n 200: '3600',\n 404: '5',\n static: '31536000', // Believe it or not these two max ages are the same in runtime\n expressStatic: '31557600h', // Believe it or not these two max ages are the same in runtime\n};\n\nexport const getCacheDuration = (status = 200) => {\n if (status >= 400) return CacheDuration[404];\n return CacheDuration[200];\n};\n\nconst alias = ALIAS; /* global ALIAS */\n\nexport const anyUpdateHeader = `${alias}_any-update`;\n","export const replaceStaticPath = (str: string, staticFolderPath = 'static') =>\n str.replace(/static\\//g, `${staticFolderPath}/`);\n","import { RequestHandler } from 'express';\nimport fs from 'fs';\nimport path from 'path';\nimport { replaceStaticPath } from '../util/staticPaths';\n\nexport const bundleManipulationMiddleware =\n ({\n appRootPath,\n maxage,\n staticFolderPath,\n staticRoutePath,\n }: {\n appRootPath: string;\n maxage: string;\n staticFolderPath: string;\n staticRoutePath: string;\n }): RequestHandler =>\n (req, res, next) => {\n const filename = path.basename(encodeURI(req.path));\n const modernBundle = filename.endsWith('.mjs');\n const legacyBundle = filename.endsWith('.js');\n if ((legacyBundle || modernBundle) && filename.startsWith('runtime.')) {\n const jsRuntimeLocation = path.resolve(\n appRootPath,\n `dist/${staticFolderPath}/${\n modernBundle ? 'modern/js' : 'legacy/js'\n }/${filename}`\n );\n try {\n const jsRuntimeBundle = fs.readFileSync(jsRuntimeLocation, 'utf8');\n const modifiedBundle = replaceStaticPath(\n jsRuntimeBundle,\n staticRoutePath\n );\n if (maxage) res.set('Cache-Control', `public, max-age=${maxage}`);\n res.type('.js').send(modifiedBundle);\n return;\n } catch (readError) {\n console.log(\n `Unable to find js runtime bundle at '${jsRuntimeLocation}'`,\n readError\n );\n next();\n }\n } else {\n next();\n }\n };\n","import { RequestHandler } from 'express';\nimport fs from 'fs';\nimport path from 'path';\n\n/**\n *\n * @param { appRootPath: string; maxage: number; staticFolderPath: string, startupScriptFilename: string } args\n * @returns Response | next()\n * A middleware function to resolve /dist/static/startup.js under a supplied startupScriptFilename variable\n */\nexport const resolveStartupMiddleware =\n ({\n appRootPath,\n maxage,\n staticFolderPath,\n startupScriptFilename,\n }: {\n appRootPath: string;\n maxage: string;\n staticFolderPath: string;\n startupScriptFilename: string;\n }): RequestHandler =>\n async (req, res, next) => {\n if (\n startupScriptFilename !== 'startup.js' &&\n req.path === `/${startupScriptFilename}`\n ) {\n let startupFileLocation = '';\n try {\n const startupFilePaths = [\n `dist/static/startup.js`,\n `dist/${staticFolderPath}/startup.js`,\n ];\n let startupFilePath = '';\n startupFilePaths.forEach(async testPath => {\n try {\n fs.accessSync(testPath);\n startupFilePath = testPath;\n } catch (ex) {\n // Do nothing\n }\n });\n startupFileLocation = path.resolve(appRootPath, startupFilePath);\n\n if (maxage) res.set('Cache-Control', `public, max-age=${maxage}`);\n\n res.sendFile(startupFileLocation);\n } catch (sendFileError) {\n console.log(\n `Unable to send file startup.js at '${startupFileLocation}'`,\n sendFileError\n );\n res.status(404).send();\n }\n } else {\n next();\n }\n };\n","import express from 'express';\nimport { CacheDuration } from '~/server/features/caching/cacheDuration.schema';\nimport { bundleManipulationMiddleware } from '~/server/middleware/bundleManipulation';\nimport { resolveStartupMiddleware } from '~/server/middleware/resolveStartup';\n\nimport appRootPath from 'app-root-path';\nimport { ServerConfig } from '~/models';\n\n// Serving static assets\nconst { path: appPath } = appRootPath;\nconst staticAssets = (\n app: express.Express,\n {\n appRootPath = appPath,\n scripts = {} as NonNullable<ServerConfig['scripts']>,\n startupScriptFilename = 'startup.js',\n staticFolderPath = 'static',\n staticRoutePath = 'static',\n staticRoutePaths = [] as string[],\n }\n) => {\n app.use(\n [\n `/${staticRoutePath}`,\n ...staticRoutePaths.map(p => `/${p}`),\n `/${staticFolderPath}`,\n ],\n bundleManipulationMiddleware({\n appRootPath,\n // these maxage values are different in config but the same in runtime,\n // this one is the true value in seconds\n maxage: CacheDuration.static,\n staticFolderPath,\n staticRoutePath,\n }),\n resolveStartupMiddleware({\n appRootPath,\n maxage: CacheDuration.static,\n startupScriptFilename: scripts.startup || startupScriptFilename,\n staticFolderPath,\n }),\n express.static(`dist/${staticFolderPath}`, {\n // these maxage values are different in config but the same in runtime,\n // this one is somehow converted and should end up being the same as CacheDuration.static\n maxAge: CacheDuration.expressStatic,\n })\n );\n};\n\nexport default staticAssets;\n","const servers = SERVERS; /* global SERVERS */\nconst projects = PROJECTS; /* global PROJECTS */\n\nconst DisplayStartupConfiguration = config => {\n /* eslint-disable no-console */\n console.log();\n console.log(\n `Configured servers:\n`,\n JSON.stringify(servers, null, 2)\n );\n console.log();\n console.log(\n `Configured projects:\n`,\n JSON.stringify(projects, null, 2)\n );\n console.log();\n console.log(\n 'Reverse proxy paths: ',\n JSON.stringify(config.reverseProxyPaths, null, 2)\n );\n console.log();\n if (config.staticFolderPath)\n console.log(\n `Serving static assets from: \"/dist/${config.staticFolderPath}/\"`\n );\n /* eslint-enable no-console */\n};\n\nexport default DisplayStartupConfiguration;\n","export default (attributes = {}) =>\n Object.entries(attributes)\n .map(\n ([key, value], idx) =>\n `${idx !== 0 ? ' ' : ''}${key}${value ? `=\"${value}\"` : ''}`\n )\n .join(' ');\n","/* eslint-disable no-console */\nimport { Request, Response } from 'express';\nimport { ResponseMethod } from './types';\n\n/**\n * Web Application Response handler, sends a prepared express js response\n * with the supplied content sending in the specified manner\n * @param {response} request express js request object\n * @param {response} response express js response object\n * @param {string | object} content the content to send in the response body\n * @param {\"send\" | \"json\" | \"end\"} send the response function to call e.g res.send() res.json() res.end()\n */\nconst handleResponse = (\n request: Request,\n response: Response,\n content: any,\n send: keyof typeof ResponseMethod = 'send'\n) => {\n // console.log('---', response.statusCode, '---');\n response[send](content);\n};\n\nexport default handleResponse;\n","import { Request, Response } from 'express';\nimport { ReactNode } from 'react';\nimport { renderToPipeableStream } from 'react-dom/server';\nimport { Transform, Writable } from 'stream';\nimport { ServerStyleSheet } from 'styled-components';\n\n/**\n * Render React JSX (and surrounding HTML document) via React's\n * renderToPipeableStream method\n * @param getContextHtml a function to produce the correct HTML template that surrounds the JSX \"App\" with all available document assets injected\n * @param jsx the JSX to render via a streamed response\n * @param response the express Response object\n * @param stream all chunks are piped to this stream to add additional style elements to each streamed chunk\n */\nexport const renderStream = (\n getContextHtml: (isFinal?: boolean) => string,\n jsx: ReactNode,\n request: Request,\n response: Response,\n stream: Writable\n) => {\n // Store timeout reference for cleanup on normal or abnormal termination\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const disposeTimeout = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n // Only used for abnormal termination\n const abortCleanup = (err?: unknown) => {\n disposeTimeout();\n stream.destroy(err instanceof Error ? err : undefined);\n abort();\n };\n\n // Guard against client disconnect\n request.on('close', () => abortCleanup());\n\n // Guard against transform errors\n stream.on('error', err => {\n abortCleanup(err);\n if (!response.headersSent) response.destroy(err);\n });\n\n const { abort, pipe } = renderToPipeableStream(jsx, {\n onShellReady() {\n const html = getContextHtml(false);\n if (!html) {\n // this means we have finished with the response already\n abortCleanup();\n } else {\n const header = html.split('{{APP}}')[0];\n response.setHeader('content-type', 'text/html; charset=utf-8');\n stream.write(header);\n pipe(stream);\n }\n },\n onAllReady() {\n const footer = getContextHtml(true).split('{{APP}}')[1];\n stream.write(footer);\n disposeTimeout(); // Clear the timeout, let stream end naturally\n },\n onShellError(error: unknown) {\n abortCleanup(error); // Abnormal - destroy everything\n if (!response.headersSent) {\n response.statusCode = 500;\n response.setHeader('content-type', 'text/html; charset=utf-8');\n response.send('<h1>Something went wrong</h1>');\n }\n console.error(`[renderToPipeableStream:onShellError]`, error);\n },\n onError(error) {\n console.error(`[renderToPipeableStream:onError]`, error);\n },\n });\n\n // Abandon and switch to client rendering after 30s.\n // Try lowering this to see the client recover.\n timeoutId = setTimeout(() => {\n timeoutId = null;\n abortCleanup();\n }, 30_000);\n\n stream.pipe(response);\n};\n\n/**\n * Generate and add styled-components CSS to the streamed\n * chunks of rendered HTML via renderToPipeableStream\n *\n * Workaround for Styled Components issue: React 18 Streaming SSR #3658\n * https://github.com/styled-components/styled-components/issues/3658#issuecomment-2480721193\n * credit: https://github.com/rurquia/styled-components-ssr-3658/blob/main/server/render.js\n * @param sheet styled-components ServerStyleSheet\n * @returns Transform Stream\n */\nexport const styledComponentsStream = (sheet: ServerStyleSheet) => {\n const readerWriter = new Transform({\n objectMode: true,\n transform(\n chunk,\n /* encoding */\n _,\n callback\n ) {\n // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n // then reset its rules so we get only new ones for the next chunk\n const renderedHtml =\n typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk);\n const styledCSS = sheet._emitSheetCSS();\n const CLOSING_TAG_R = /<\\/[a-z]*>/i;\n\n sheet.instance.clearTag();\n\n // prepend style html to chunk, unless the start of the chunk is a\n // closing tag in which case append right after that\n if (/<\\/head>/.test(renderedHtml)) {\n const replacedHtml = renderedHtml.replace(\n '</head>',\n `${styledCSS}</head>`\n );\n this.push(replacedHtml);\n } else if (CLOSING_TAG_R.test(renderedHtml)) {\n const execResult = CLOSING_TAG_R.exec(renderedHtml) as RegExpExecArray;\n const endOfClosingTag = execResult.index + execResult.flat().length - 1;\n const before = renderedHtml.slice(0, endOfClosingTag);\n const after = renderedHtml.slice(endOfClosingTag);\n this.push(before + styledCSS + after);\n } else {\n this.push(styledCSS + renderedHtml);\n }\n callback();\n },\n destroy(err, callback) {\n // Called on both stream.destroy() and natural end\n // Stops the sheet intercepting styles & releases its references\n\n // try/catch is required if sheet.seal() throws for any reason,\n // callback(err) must still be called, as Node.js stream internals depend\n // on it to complete teardown. Omitting it causes the stream to hang.\n try {\n sheet.seal();\n } catch (sealErr) {\n // Catch any errors from sealing the sheet, we MUST always call the\n // callback to prevent hanging the stream\n\n console.error(\n '[styledComponentsStream] sheet.seal() failed - styles may leak:',\n sealErr\n );\n }\n callback(err);\n },\n });\n return readerWriter;\n};\n","import fs from 'fs';\nimport path from 'path';\nimport { ChunkExtractor } from '@loadable/server';\nimport { replaceStaticPath } from './staticPaths';\nimport { ServerConfig } from '~/models';\nimport stringifyAttributes from './stringifyAttributes';\n\nconst readFileSync = (path: string) => fs.readFileSync(path, 'utf8');\n\nexport const loadableBundleData = (\n { stats, templates }: ServerConfig,\n staticRoutePath: string,\n build?: string\n) => {\n const bundle: {\n stats?: string | null;\n templates?: {\n templateHTML: string;\n templateHTMLStatic: string;\n templateHTMLFragment: string;\n } | null;\n } = {};\n try {\n bundle.stats = stats\n ? JSON.parse(\n readFileSync(stats.replace('/target', build ? `/${build}` : ''))\n )\n : null;\n } catch (ex) {\n // console.info(ex);\n bundle.stats = null;\n }\n try {\n bundle.templates = {\n templateHTML: replaceStaticPath(\n readFileSync(\n templates.html.replace('/target', build ? `/${build}` : '')\n ),\n staticRoutePath\n ),\n templateHTMLStatic: replaceStaticPath(\n readFileSync(\n templates.static.replace('/target', build ? `/${build}` : '')\n ),\n staticRoutePath\n ),\n templateHTMLFragment: replaceStaticPath(\n readFileSync(\n templates.fragment.replace('/target', build ? `/${build}` : '')\n ),\n staticRoutePath\n ),\n };\n } catch (ex) {\n // console.info(ex);\n bundle.templates = null;\n }\n return bundle;\n};\n\ntype LoadableChunkExtractors = {\n legacy?: ChunkExtractor;\n modern?: ChunkExtractor;\n commonLoadableExtractor: ChunkExtractor;\n};\n\nexport const loadableChunkExtractors = () => {\n const commonLoadableExtractor = new ChunkExtractor({ stats: {} });\n try {\n let modern: ChunkExtractor | undefined;\n let legacy: ChunkExtractor | undefined;\n try {\n modern = new ChunkExtractor({\n entrypoints: ['app'],\n namespace: 'modern',\n statsFile: path.resolve('dist/modern/loadable-stats.json'),\n });\n } catch (e) {\n console.info('@loadable/server modern ChunkExtractor not available');\n }\n try {\n legacy = new ChunkExtractor({\n entrypoints: ['app'],\n namespace: 'legacy',\n statsFile: path.resolve('dist/legacy/loadable-stats.json'),\n });\n } catch (e) {\n // legacy bundling deprecated in v4\n // console.info('@loadable/server legacy ChunkExtractor not available');\n }\n\n (commonLoadableExtractor as any).addChunk = (chunk: any) => {\n (modern as any)?.addChunk(chunk);\n if (\n typeof (legacy as any)?.stats.assetsByChunkName[chunk] !== 'undefined'\n )\n (legacy as any)?.addChunk(chunk);\n };\n\n return {\n commonLoadableExtractor,\n modern,\n legacy,\n } as LoadableChunkExtractors;\n } catch (e) {\n console.info('@loadable/server no ChunkExtractor available');\n return { commonLoadableExtractor };\n }\n};\n\nexport const getBundleData = (\n config: ServerConfig,\n staticRoutePath: string\n) => {\n const bundleData = {\n default: loadableBundleData(config, staticRoutePath),\n legacy: loadableBundleData(config, staticRoutePath, 'legacy'),\n modern: loadableBundleData(config, staticRoutePath, 'modern'),\n };\n if (!bundleData.default || Object.keys(bundleData.default || {}).length === 0)\n bundleData.default = bundleData.legacy || bundleData.modern;\n return bundleData;\n};\n\n// export const buildBundleTags = (\n// bundles,\n// differentialBundles = false,\n// staticRoutePath = 'static',\n// attributes = ''\n// ) => {\n// // Take the bundles returned from Loadable.Capture\n// const bundleTags = bundles\n// .filter(b => b)\n// .map(bundle => {\n// if (bundle.publicPath.includes('/modern/'))\n// return differentialBundles\n// ? `<script ${attributes} type=\"module\" src=\"${replaceStaticPath(\n// bundle.publicPath,\n// staticRoutePath\n// )}\"></script>`\n// : null;\n// return `<script ${attributes}${\n// differentialBundles ? ' nomodule' : ''\n// } src=\"${replaceStaticPath(\n// bundle.publicPath,\n// staticRoutePath\n// )}\"></script>`;\n// })\n// .filter(f => f);\n\n// return bundleTags;\n// };\n\nexport const getBundleTags = (\n loadableExtractor: LoadableChunkExtractors,\n scripts: ServerConfig['scripts'],\n staticRoutePath = 'static'\n) => {\n let startupTag = '';\n // Add the static startup script to the bundleTags\n if (scripts?.startup)\n startupTag = `<script ${stringifyAttributes(\n scripts.attributes\n )} src=\"/${staticRoutePath}/${scripts.startup}\"></script>`;\n\n // Get the script tags from their respective extractor instances\n if (loadableExtractor) {\n const legacyScriptTags = loadableExtractor.legacy?.getScriptTags({\n nomodule: 'nomodule',\n });\n const modernScriptTags = loadableExtractor.modern?.getScriptTags({\n type: 'module',\n });\n const scriptTags = `${startupTag}${legacyScriptTags || ''}${\n modernScriptTags || ''\n }`.replace(/\"\\/static\\//g, `\"/${staticRoutePath}/`);\n return scriptTags;\n }\n return startupTag;\n};\n","import fs from 'fs';\n\nexport const getVersionInfo = (staticFolderPath: string) => {\n try {\n const versionData = fs.readFileSync(\n `dist/${staticFolderPath}/version.json`,\n 'utf8'\n );\n const versionInfo = JSON.parse(versionData);\n return versionInfo;\n } catch (ex) {\n console.error(`Unable to read from \"version.json\"`, ex);\n return {};\n }\n};\n","/* eslint-disable no-console */\nimport chalk from 'chalk';\n\n// Default exception types to add event listeners for\nconst handleDefaultEvents = ['uncaughtException', 'unhandledRejection'];\n\nexport const unhandledExceptionHandler = (\n handleExceptions: boolean | string[] = handleDefaultEvents\n) => {\n const exceptionTypes = Array.isArray(handleExceptions)\n ? handleExceptions\n : handleExceptions === false\n ? []\n : handleDefaultEvents;\n\n for (const type of exceptionTypes) {\n process.on(type, (err: Error) => {\n if (err && err instanceof Error) {\n // Print a message to inform admins and developers the error should not be ignored\n console.log(\n `${`[contensis-react-base] ❌ ${chalk.red.bold(\n `${type} - ${err.message}`\n )}`}`\n );\n console.log(\n chalk.gray` - you are seeing this because we have tried to prevent the app from completely crashing - you should not ignore this problem`\n );\n // Log the error to server console\n console.error(err);\n }\n });\n }\n};\n","import { Response } from 'express';\nimport {\n selectCurrentProject,\n selectRouteEntry,\n selectSsrApiCalls,\n selectSurrogateKeys,\n} from '~/routing/redux/selectors';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nimport {\n anyUpdateHeader,\n getCacheDuration,\n} from '../features/caching/cacheDuration.schema';\nimport { AppState } from '~/models';\n\nconst logPrefix = '[addHeaders]';\n\nexport const addStandardHeaders = (\n state: AppState,\n response: Response,\n packagejson: any,\n groups: { globalGroups?: any[]; allowedGroups?: any[] }\n) => {\n if (state) {\n try {\n const routingSurrogateKeys = selectSurrogateKeys(state);\n const apiCalls = selectSsrApiCalls(state);\n const anyApiError = !!apiCalls.find(([status]) => status >= 400);\n\n // Check length of surrogate keys and prevent potential header overflow errors in prod\n // Check for any error set in the page response\n // And check if we have seen any error in any of the Delivery API calls\n // - add `any-update` header that will indiscriminately\n // invalidate the SSR page cache when any content is updated\n const addAnyUpdateHeader =\n routingSurrogateKeys.length >= 2000 ||\n response.statusCode >= 400 ||\n anyApiError;\n\n console.info(\n `${logPrefix} ${\n addAnyUpdateHeader ? anyUpdateHeader : routingSurrogateKeys.length\n } surrogate keys for ${response.req.url}`\n );\n\n const surrogateKeys = addAnyUpdateHeader\n ? anyUpdateHeader\n : routingSurrogateKeys.join(' ');\n\n const surrogateKeyHeader = `${packagejson.name}-app ${surrogateKeys}`;\n\n response.setHeader('surrogate-key', surrogateKeyHeader);\n\n addVarnishAuthenticationHeaders(state, response, groups);\n\n response.setHeader(\n 'surrogate-control',\n `max-age=${getCacheDuration(response.statusCode)}`\n );\n } catch (e: any) {\n console.info(`${logPrefix} Error adding headers`, e.message);\n }\n }\n};\n\nexport const addVarnishAuthenticationHeaders = (\n state: AppState,\n response: Response,\n groups: { globalGroups?: any[]; allowedGroups?: any[] } = {}\n) => {\n if (state) {\n try {\n const stateEntry = selectRouteEntry(state);\n const project = selectCurrentProject(state);\n const { globalGroups, allowedGroups } = groups;\n let allGroups = Array.from((globalGroups && globalGroups[project]) || {});\n if (\n stateEntry &&\n getIn(stateEntry, ['authentication', 'isLoginRequired']) &&\n allowedGroups &&\n allowedGroups[project]\n ) {\n allGroups = [...allGroups, ...allowedGroups[project]];\n }\n response.header('x-contensis-viewer-groups', allGroups.join('|'));\n } catch (e) {\n console.info(`${logPrefix} Error adding authentication header`, e);\n }\n }\n};\n","import minifyCssString from 'minify-css-string';\n\n/**\n * Add assets to templateHTML in the positions represented\n * by replacing specific keys wrapped in handlebars depending\n * on the accessMethod(s) that have been set (or updated)\n * while processing the request\n */\nexport const replaceHtml = (\n {\n bundleTags = '',\n html = '',\n htmlAttributes = '',\n metadata = '',\n state = '',\n styleTags = '',\n title = '',\n templateHTML = '',\n templateHTMLFragment = '',\n templateHTMLStatic = '',\n },\n accessMethod: {\n DYNAMIC: boolean;\n REDUX: boolean;\n FRAGMENT: boolean;\n STATIC: boolean;\n }\n) => {\n let responseHTML = '';\n // Serve a blank HTML page with client scripts to load the app in the browser\n if (accessMethod.DYNAMIC) {\n responseHTML = templateHTML\n .replace('{{TITLE}}', '')\n .replace('{{SEO_CRITICAL_METADATA}}', '')\n .replace('{{CRITICAL_CSS}}', '')\n .replace('{{APP}}', '')\n // .replace('{{LOADABLE_CHUNKS}}', bundleTags)\n .replace('{{REDUX_DATA}}', state);\n }\n\n // Page fragment served with client scripts and redux data that hydrate the app client side\n else if (accessMethod.FRAGMENT && !accessMethod.STATIC) {\n responseHTML = templateHTMLFragment\n .replace('{{TITLE}}', title)\n .replace('{{SEO_CRITICAL_METADATA}}', metadata)\n .replace('{{CRITICAL_CSS}}', minifyCssString(styleTags))\n //.replace('{{APP}}', html)\n // .replace('{{LOADABLE_CHUNKS}}', bundleTags)\n .replace('{{REDUX_DATA}}', state);\n }\n\n // Full HTML page served statically\n else if (!accessMethod.FRAGMENT && accessMethod.STATIC) {\n responseHTML = templateHTMLStatic\n .replace('{{TITLE}}', title)\n .replace('{{SEO_CRITICAL_METADATA}}', metadata)\n .replace('{{CRITICAL_CSS}}', minifyCssString(styleTags))\n //.replace('{{APP}}', html)\n .replace('{{LOADABLE_CHUNKS}}', '');\n }\n\n // Full HTML page served with client scripts and redux data that hydrate the app client side\n else if (!accessMethod.FRAGMENT && !accessMethod.STATIC) {\n responseHTML = templateHTML\n .replace('{{TITLE}}', title)\n .replace('{{SEO_CRITICAL_METADATA}}', metadata)\n .replace('{{CRITICAL_CSS}}', styleTags)\n //.replace('{{APP}}', html)\n // .replace('{{LOADABLE_CHUNKS}}', bundleTags)\n .replace('{{REDUX_DATA}}', state);\n }\n\n // If react-helmet htmlAttributes are being used,\n // replace the html tag with those attributes sepcified\n // e.g. (lang, dir etc.)\n if (htmlAttributes) {\n responseHTML = responseHTML.replace(\n /<html?.+?>/,\n `<html ${htmlAttributes}>`\n );\n }\n responseHTML = html ? responseHTML.replace('{{APP}}', html) : responseHTML;\n\n // Only replace bundle tags at the very end when we have rendered and are\n // streaming out the HTML \"footer\"\n if (bundleTags)\n responseHTML = responseHTML.replace('{{LOADABLE_CHUNKS}}', bundleTags);\n\n return responseHTML;\n};\n","import {\n ChunkExtractor,\n ChunkExtractorManager,\n ChunkExtractorManagerProps,\n} from '@loadable/server';\nimport { Request, Response } from 'express';\nimport React, { ClassType, Component, ComponentClass } from 'react';\nimport { CookiesProvider } from 'react-cookie';\nimport { HelmetProvider, HelmetServerState } from 'react-helmet-async';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { StaticRouter } from 'react-router-dom/server';\nimport { ServerStyleSheet } from 'styled-components';\nimport Cookies from 'universal-cookie';\nimport { AppRoutes, SSRAccessMethod, WithEvents } from '~/models';\nimport { reduxStore } from '~/redux/store/store';\nimport { HttpContext, HttpContextValues } from '~/routing/httpContext';\nimport { SSRContextProvider } from '~/util';\n\n/**\n * Produce the JSX wrapped in the necessary Providers\n * to render the app in SSR\n * @param ReactApp the JSX to render\n * @param { providers, props, ssrAssets }\n * @returns the final JSX to render decorated with all Provider and App props\n */\nexport const ssrJsxProducer = (\n ReactApp: React.ComponentType<any>,\n {\n providers,\n props,\n // ssrAssets,\n }: {\n /** Providers enrich the JSX */\n providers: {\n loadable: { extractor: ChunkExtractor };\n cookies?: Cookies;\n helmet: Record<string, unknown>;\n redux: typeof reduxStore;\n httpContext: HttpContextValues;\n router: {\n url: string;\n };\n styledComponents?: { sheet: ServerStyleSheet };\n ssrContext: {\n accessMethod: SSRAccessMethod;\n request: Request;\n response: Response;\n };\n };\n /** Props are supplied to the ReactApp */\n props: {\n routes: AppRoutes;\n withEvents: WithEvents;\n };\n // /**\n // * SSR Assets are passed in here when they become available\n // * allowing the ReactApp to control the render for the\n // * entire HTML document\n // */\n // ssrAssets?: {\n // bundleTags?: string;\n // htmlAttributes?: string;\n // metadata?: string;\n // serializedState?: string;\n // styleTags?: string;\n // title?: string;\n // };\n }\n) => {\n type ChunkExtractorManagerPropsForReact18 = ChunkExtractorManagerProps & {\n children?: React.ReactNode;\n };\n // Recast ChunkExtractorManager to avoid TS error `Property 'children' does not exist on type...`\n const ChunkExtractor = ChunkExtractorManager as ClassType<\n ChunkExtractorManagerPropsForReact18,\n Component<ChunkExtractorManagerPropsForReact18>,\n ComponentClass<ChunkExtractorManagerPropsForReact18>\n >;\n\n const jsx = (\n <HelmetProvider context={providers.helmet}>\n <ChunkExtractor extractor={providers.loadable.extractor}>\n <CookiesProvider cookies={providers.cookies}>\n <ReduxProvider store={providers.redux}>\n <HttpContext.Provider value={providers.httpContext}>\n <StaticRouter\n location={providers.router.url}\n future={{\n v7_startTransition: true,\n v7_relativeSplatPath: true,\n }}\n >\n <SSRContextProvider\n accessMethod={providers.ssrContext.accessMethod}\n request={providers.ssrContext.request}\n response={providers.ssrContext.response}\n // ssrAssets={ssrAssets}\n >\n <ReactApp\n routes={props.routes}\n withEvents={props.withEvents}\n />\n </SSRContextProvider>\n </StaticRouter>\n </HttpContext.Provider>\n </ReduxProvider>\n </CookiesProvider>\n </ChunkExtractor>\n </HelmetProvider>\n );\n\n // Wrap the JSX in a StyleSheetManager if a ServerStyleSheet is provided\n return !providers.styledComponents?.sheet\n ? jsx\n : providers.styledComponents.sheet.collectStyles(jsx);\n};\n","import React from 'react';\nimport { renderToString } from 'react-dom/server';\nimport { matchRoutes, RouteObject } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport type { HelmetServerState } from 'react-helmet-async';\nimport { ServerStyleSheet } from 'styled-components';\nimport serialize from 'serialize-javascript';\nimport mapJson from 'jsonpath-mapper';\nimport { Express, Request, Response } from 'express';\nimport { identity, noop } from 'lodash';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { buildCleaner } from 'lodash-clean';\nimport Cookies from 'universal-cookie';\nimport cookiesMiddleware from 'universal-cookie-express';\n\nimport { createLocaleRoutes } from '~/i18n/routes';\nimport { actions } from '~/i18n';\n\nimport createStore from '~/redux/store/store';\nimport { history } from '~/redux/store/history';\nimport rootSaga from '~/redux/sagas';\n\nimport { setVersion, setVersionStatus } from '~/redux/actions/version';\nimport { HttpContextValues } from '~/routing/httpContext';\nimport { setCurrentProject } from '~/routing/redux/actions';\nimport { selectCurrentSearch } from '~/routing/redux/selectors';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport { mergeStaticRoutes } from '~/util/mergeStaticRoutes';\nimport pickProject from '~/util/pickProject';\nimport stringifyAttributes from './util/stringifyAttributes';\n\nimport { getCacheDuration } from './features/caching/cacheDuration.schema';\nimport handleResponse from './features/response-handler';\nimport {\n renderStream,\n styledComponentsStream,\n} from './features/response-handler/render-stream';\n\nimport {\n getBundleData,\n getBundleTags,\n loadableChunkExtractors,\n} from './util/bundles';\nimport { getVersionInfo } from './util/getVersionInfo';\nimport { unhandledExceptionHandler } from './util/handleExceptions';\nimport { addStandardHeaders } from './util/headers';\nimport { replaceHtml } from './util/html';\n\nimport { AppState, ServerConfig, MatchedRoute, StaticRoute } from '~/models';\nimport { ssrJsxProducer } from './util/jsx';\nimport { getSubsitePath } from '~/util/subsite';\n\nconst webApp = (\n app: Express,\n ReactApp: React.ComponentType<any>,\n config: ServerConfig & {\n allowedGroups?: string[];\n globalGroups?: string[];\n startupScriptFilename?: string;\n }\n) => {\n const {\n stateType = 'js',\n routes,\n withReducers,\n withSagas,\n withEvents,\n packagejson,\n scripts = {},\n staticFolderPath = 'static',\n startupScriptFilename,\n allowedGroups,\n globalGroups,\n disableSsrRedux,\n enableSsrCookies,\n handleResponses,\n handleExceptions = true,\n i18n,\n } = config;\n\n // process locales in static routes for i18n\n const localeRoutes = createLocaleRoutes(routes);\n\n const staticRoutePath = config.staticRoutePath || staticFolderPath;\n\n let isRenderingJsxToString = config.renderToString || false;\n\n const bundleData = getBundleData(config, staticRoutePath);\n\n const attributes = stringifyAttributes(scripts.attributes);\n scripts.startup = scripts.startup || startupScriptFilename;\n\n let responseHandler = handleResponse;\n if (typeof handleResponses === 'function') {\n responseHandler = handleResponses;\n isRenderingJsxToString = true;\n }\n\n if (handleExceptions !== false) unhandledExceptionHandler(handleExceptions); // Create `process.on` event handlers for unhandled exceptions (Node v15+)\n\n const versionInfo = getVersionInfo(staticFolderPath);\n\n app.get(\n '/{*splat}',\n cookiesMiddleware(),\n async (\n request: Request & {\n universalCookies?: Cookies;\n },\n response: Response\n ) => {\n /*\n * Do not inject url directly into HTML as it can lead to XSS attacks\n * CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')\n * CWE-96: Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)\n * Removed URL encoding as it causes inconsistencies when routes contain encoded characters in SSR\n * e.g. /search?category=sport%20and%20wellbeing becomes /search?category=sport%2520and%2520wellbeing\n * // const url = encodeURI(request.url);\n */\n const url = request.url;\n\n const matchedStaticRoute = matchRoutes(\n routes.StaticRoutes as RouteObject[],\n request.path\n );\n const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0;\n\n if (isStaticRoute) {\n mergeStaticRoutes(matchedStaticRoute);\n }\n\n const staticRoute: MatchedRoute<string, StaticRoute> | null =\n isStaticRoute ? matchedStaticRoute.pop() || null : null;\n\n // Allow certain routes to avoid SSR\n const onlyDynamic = staticRoute && staticRoute.route.ssr === false;\n const onlySSR = staticRoute && staticRoute.route.ssrOnly === true;\n\n const normaliseQs = q => (q && q.toLowerCase() === 'true' ? true : false);\n\n // Determine functional params from QueryString and set access methods\n const accessMethod = mapJson<\n any,\n { DYNAMIC: boolean; REDUX: boolean; FRAGMENT: boolean; STATIC: boolean }\n >(request.query, {\n DYNAMIC: ({ dynamic }) => normaliseQs(dynamic) || onlyDynamic,\n REDUX: ({ redux }) => normaliseQs(redux),\n FRAGMENT: ({ fragment }) => normaliseQs(fragment),\n STATIC: ({ static: value }) => normaliseQs(value) || onlySSR,\n });\n\n // Create a store (with a memory history) from our current url\n const store = await createStore(\n withReducers,\n {} as AppState,\n history({\n initialEntries: [url],\n }),\n stateType\n );\n\n // dispatch any global and non-saga related actions before calling our JSX\n const versionStatus = deliveryApi.getServerSideVersionStatus(request);\n\n // In server-side blocks world, the hostname requested by the client resides in the x-orig-host header\n // Because of this, we prioritize x-orig-host when setting our hostname\n const hostname = (request.headers['x-orig-host'] ||\n request.hostname) as string;\n const subsitePath = getSubsitePath(request);\n const subsitePathScript = subsitePath\n ? `window.subsitePath = ${serialize(subsitePath)};`\n : '';\n\n console.info(\n `[webApp] \"${request.method} ${request.path}\" hostname: ${hostname} versionStatus: ${versionStatus}`\n );\n\n store.dispatch(setVersionStatus(versionStatus));\n store.dispatch(setVersion(versionInfo.commitRef, versionInfo.buildNo));\n\n const project = pickProject(hostname, request.query);\n\n const groups = allowedGroups && allowedGroups[project];\n store.dispatch(setCurrentProject(project, groups, hostname));\n\n if (i18n) {\n store.dispatch(\n actions.INIT_LOCALES({\n locales: {},\n routes: localeRoutes,\n ...i18n,\n })\n );\n }\n\n const loadableExtractor = loadableChunkExtractors();\n\n const ssrCookies = enableSsrCookies\n ? // these cookies are managed by the cookiesMiddleware and contain listeners\n // when cookies are read or written in ssr can be added to the `set-cookie` response header\n request.universalCookies\n : // this is a stub cookie collection so cookie methods can be used in code\n new Cookies();\n\n // Track the current statusCode via the response object\n response.status(200);\n\n // Create the context we will pass to JSX HttpContext.Provider\n // and read back any context props set by the ReactApp\n const context: HttpContextValues = {};\n\n // Per-request helmet context object — populated by HelmetProvider during renderToString\n // Using a fresh object per request ensures thread safety under concurrent SSR requests\n const helmetContext = {} as Record<string, unknown>;\n\n // Amalgamate all props for the various Providers we wrap the ReactApp with\n const jsxProviderProps = {\n loadable: { extractor: loadableExtractor.commonLoadableExtractor },\n cookies: ssrCookies,\n helmet: helmetContext,\n redux: store,\n httpContext: context,\n router: { url },\n ssrContext: { accessMethod, request, response },\n };\n // These are the props we will pass to the ReactApp itself\n const jsxReactAppProps = { routes, withEvents };\n\n // Get the configured HTML templates provided by the consumer\n const {\n templateHTML = '',\n templateHTMLFragment = '',\n templateHTMLStatic = '',\n } = bundleData.default.templates || bundleData.legacy.templates || {};\n\n // Serve a blank HTML page with client scripts to load the app in the browser\n if (accessMethod.DYNAMIC) {\n // Dynamic doesn't need sagas\n // or styles, or any split component bundles\n // nor are we streaming responses\n const isDynamicHints = `<script ${attributes}>window.isDynamic = true; ${subsitePathScript}</script>`;\n\n const jsx = ssrJsxProducer(ReactApp, {\n providers: jsxProviderProps,\n props: jsxReactAppProps,\n });\n renderToString(jsx);\n\n // Dynamic page render has only the necessary bundles to start up the app\n // and does not include any react-loadable code-split bundles\n const bundleTags = getBundleTags(\n loadableExtractor,\n scripts,\n staticRoutePath\n );\n const responseHtmlDynamic = replaceHtml(\n {\n bundleTags,\n state: isDynamicHints,\n templateHTML,\n templateHTMLFragment,\n },\n accessMethod\n );\n\n // Dynamic pages always return a 200 so we can run\n // the app and serve up all errors inside the client\n response.setHeader(\n 'Surrogate-Control',\n `max-age=${getCacheDuration(200)}`\n );\n responseHandler(request, response, responseHtmlDynamic);\n }\n\n // Render the JSX server side and send response as per access method options\n if (!accessMethod.DYNAMIC) {\n store\n .runSaga(rootSaga(withSagas))\n .toPromise()\n .then(() => {\n const reduxState = store.getState();\n let clonedState = buildCleaner({\n isArray: identity,\n isBoolean: identity,\n isDate: identity,\n isFunction: noop,\n isNull: identity,\n isPlainObject: identity,\n isString: identity,\n isUndefined: noop,\n })(cloneDeep(reduxState));\n // These keys are used for preparing server-side response headers only\n // and are not required in the client at all except for debugging ssr\n if (!selectCurrentSearch(reduxState)?.includes('includeApiCalls')) {\n if (stateType === 'immutable')\n clonedState = clonedState\n .deleteIn(['routing', 'apiCalls'])\n .deleteIn(['routing', 'surrogateKeys']);\n else {\n delete clonedState.routing.apiCalls;\n delete clonedState.routing.surrogateKeys;\n }\n }\n // Reset user state to prevent user details from being cached in SSR\n if (stateType === 'immutable') {\n clonedState = clonedState.delete('user');\n } else delete clonedState.user;\n\n let serialisedReduxData = serialize(clonedState);\n if (context.statusCode !== 404) {\n // For a request that returns a redux state object as a response\n if (accessMethod.REDUX) {\n addStandardHeaders(reduxState, response, packagejson, {\n allowedGroups,\n globalGroups,\n });\n responseHandler(request, response, serialisedReduxData, 'json');\n return true;\n }\n if (!disableSsrRedux) {\n serialisedReduxData = `<script ${attributes}>${subsitePathScript} window.__USE_HYDRATE__ = true; window.REDUX_DATA = ${serialisedReduxData}</script>`;\n }\n }\n\n // Responses\n addStandardHeaders(reduxState, response, packagejson, {\n allowedGroups,\n globalGroups,\n });\n\n const sheet = new ServerStyleSheet();\n const styledJsx = ssrJsxProducer(ReactApp, {\n providers: { ...jsxProviderProps, styledComponents: { sheet } },\n props: jsxReactAppProps,\n });\n\n // We have to call renderToString() in order for all components to have\n // had chance to set the helmet metadata\n const html = renderToString(styledJsx);\n // Helmet.renderStatic() has to be called synchronously immediately after calling renderToString()\n // as it is not thread-safe (or specifically scoped to only this request)\n // TODO: deprecate `react-helmet`\n const helmet = Helmet.renderStatic();\n\n // helmetContext is populated synchronously by HelmetProvider during renderToString()\n // It is scoped per-request via the helmetContext object, making this thread-safe\n // under concurrent SSR requests (unlike the previous Helmet.renderStatic() global singleton)\n const { helmet: helmetAsync } = helmetContext as {\n helmet: HelmetServerState;\n };\n\n // Because we have had to call renderToString() here to reliably gather all helmet metadata\n // We could potentially call sheet.getStyleTags() here too and avoid piping a react-rendered\n // stream to a second stream to inject styled-components CSS\n\n const htmlAttributes =\n helmetAsync.htmlAttributes.toString() ||\n helmet.htmlAttributes.toString();\n let title = helmet.title.toString().includes('><')\n ? helmetAsync.title.toString()\n : helmet.title.toString();\n const metadata = helmetAsync.meta\n .toString()\n .concat(helmetAsync.base.toString())\n .concat(helmetAsync.priority.toString())\n .concat(helmetAsync.link.toString())\n .concat(helmetAsync.script.toString())\n .concat(helmetAsync.noscript.toString())\n .concat(helmet.meta.toString())\n .concat(helmet.base.toString())\n .concat(helmet.link.toString())\n .concat(helmet.script.toString())\n .concat(helmet.noscript.toString());\n\n try {\n /**\n * Loads all page assets into the provided templateHTML\n *\n * Is callable after the JSX has been rendered, as\n * JSX components may update the context via the\n * HttpContext.Provider which can influence whether\n * we render the page as STATIC or render nothing\n * if the context has requested a redirect\n * */\n const getContextHtml = (\n isFinal = false,\n styleTags?: string,\n renderedJsxMarkup?: string\n ) => {\n if (context.url) {\n response.redirect(context.statusCode || 302, context.url);\n return '';\n }\n\n // Make the page render statically if there is an error status code\n if ((context.statusCode || 200) >= 404) {\n accessMethod.STATIC = true;\n }\n\n if (context.statusCode === 404)\n title = '<title>404 page not found</title>';\n\n // Set response.status from React StaticRouter\n if (typeof context.statusCode === 'number')\n response.status(context.statusCode);\n\n const bundleTags = isFinal\n ? getBundleTags(loadableExtractor, scripts, staticRoutePath)\n : '';\n\n // Getting style tags generated by \"CSS Modules\" because they will be\n // available to loadable stats if we have built parts of the app with CSS\n // plugins that are not within styled-components\n const styles = loadableExtractor?.modern?.getStyleTags();\n\n const html = replaceHtml(\n {\n bundleTags,\n html: renderedJsxMarkup,\n htmlAttributes,\n metadata,\n state: serialisedReduxData,\n styleTags: `${styleTags || ''}${styles || ''}`,\n title,\n templateHTML,\n templateHTMLFragment,\n templateHTMLStatic,\n },\n accessMethod\n );\n return html;\n };\n\n if (isRenderingJsxToString) {\n // We have already (begrudgingly) rendered the JSX to a string above\n // so we can get all of the Helmet metadata out from any rendered component\n // const html = renderToString(styledJsx);\n const styleTags = sheet.getStyleTags();\n const responseHTML = getContextHtml(true, styleTags, html);\n responseHandler(request, response, responseHTML);\n } else {\n renderStream(\n getContextHtml,\n styledJsx,\n request,\n response,\n styledComponentsStream(sheet)\n );\n }\n } catch (err: any) {\n console.info(err.message);\n }\n })\n .catch(err => {\n // Handle any error that occurred in any of the previous\n // promises in the chain.\n console.info(err);\n response.status(500);\n responseHandler(\n request,\n response,\n `Error occurred: <br />${err.stack} <br />${JSON.stringify(err)}`\n );\n });\n\n // If this is removed we don't get the redux state populated\n // with the result of the actions RouteLoader component has dispatched\n renderToString(\n ssrJsxProducer(ReactApp, {\n providers: jsxProviderProps,\n props: jsxReactAppProps,\n })\n );\n\n store.close();\n }\n }\n );\n};\n\nexport default webApp;\n","import 'isomorphic-fetch';\nimport express, { Express } from 'express';\nimport http from 'http';\nimport React from 'react';\n\nimport ConfigureReverseProxies, {\n deliveryProxy,\n} from './features/reverse-proxy';\nimport ServeStaticAssets from './features/static-assets';\nimport DisplayStartupConfiguration from './util/displayStartupConfiguration';\nimport ConfigureWebApp from './webApp';\n\nimport { ServerConfig } from '~/models';\n\ndeclare let global: typeof globalThis & {\n DISABLE_SSR_REDUX: boolean | undefined;\n PACKAGE_JSON: any;\n PROXY_DELIVERY_API: boolean | undefined;\n REVERSE_PROXY_PATHS: string[];\n};\n\nconst app = express();\n\nconst server = http.createServer(app);\n\nconst start = (\n ReactApp: React.ComponentType<any>,\n config: ServerConfig,\n ServerFeatures: (app: Express) => void\n) => {\n global.PACKAGE_JSON = config.packagejson;\n global.DISABLE_SSR_REDUX = config.disableSsrRedux;\n global.PROXY_DELIVERY_API = config.proxyDeliveryApi;\n global.REVERSE_PROXY_PATHS = Object(config.reverseProxyPaths);\n\n app.disable('x-powered-by');\n // Output some information about the used build/startup configuration\n DisplayStartupConfiguration(config);\n\n ServerFeatures(app);\n // Set-up local proxy for images from cms, and delivery api requests\n // to save doing rewrites and extra code\n ConfigureReverseProxies(app, config.reverseProxyPaths);\n ServeStaticAssets(app, config);\n ConfigureWebApp(app, ReactApp, config);\n\n app.on('ready', async () => {\n server.listen(3001, () => {\n console.info(`HTTP server is listening @ port 3001`);\n setTimeout(function () {\n app.emit('app_started');\n }, 500);\n });\n app.on('stop', () => {\n server.close(function () {\n console.info('GoodBye :(');\n process.exit();\n });\n });\n });\n};\n\ntype Exporting = {\n app: Express;\n apiProxy: typeof deliveryProxy;\n server: http.Server;\n start: (\n ReactApp: React.ComponentType<any>,\n config: ServerConfig,\n ServerFeatures: (app: Express) => void | null | undefined\n ) => void;\n};\n\nexport default { app, apiProxy: deliveryProxy, server, start } as Exporting;\n"],"names":["Util","GetIds","entries","fieldId","map","e","_e$fieldId","_e$fieldId2","Array","isArray","f","_f$sys","sys","id","flat","_e$sys","GetItems","result","GetResults","items","mergeResults","results","parentResults","replaceContentTypeIds","linkFieldId","r","some","c","contentTypeId","resolvedParent","find","_e$linkFieldId","l","_l$sys","entryTitle","entryDescription","originalSys","filter","searchQuery","assetTypes","contentTypeIds","customWhere","fields","filters","idFilters","sharedFilters","pageSize","pageIndex","orderBy","searchTerm","versionStatus","webpageTemplates","weightedSearchFields","expressions","exp","length","Op","or","query","Query","appendSearchQueryFilters","where","addRange","finalQuery","children","and","child","makeFilterExpressions","params","paramKey","filterConfig","Object","_params$paramKey","filterValues","split","push","key","values","fieldOperator","logicOperator","makeDerivedIdsFilterExpression","prevFieldId","ownIds","alwaysApplyFilter","previouslyDerivedIdsFilter","prevResultIds","resolveParentEntries","parentContentTypeIds","parentFieldId","debug","previousIdsFilter","JSON","parse","console","log","stringify","toJSON","substring","cachedSearch","searchUsingPost","Number","linkDepth","projectId","QueryLevelResults","constructor","level","linkFields","returnEntries","resolveFirstParent","parent","validatedLinks","firstQuery","firstResults","finalResults","AddChild","RunFirstQuery","runFirstQuery","fromEntries","vl","entryIds","join","linkFieldIds","RunFinalQuery","runFinalQuery","firstChild","_this$parent","_this$parent2","GetResultsEntries","_finalResults$items","totalCount","keys","fId","p","includes","term","LinkDepthSearchService","DoSearch","queryLevel","queryLevels","reverse","RunFinalQueries","finalQueryLevels","ql","_params$orderBy","derivedIds","derivedIdFilters","_l$parent","_ql$parent","_ql$parent2","entriesAtLevel","qc","reduce","accumulator","object","finalQueryResult","resolveParentLevels","resolveParents","_resolveParents$paren","_resolveParents$paren2","_this$queryLevels$fin","InitQueryLevels","createChildQueryLevels","parentQueryLevel","thisLevel","fKey","fVal","firstLevel","makeLinkDepthApi","app","middlewareConfig","uri","get","makeLinkDepthMiddleware","linkDepthMiddleware","req","res","setCachingHeaders","cacheControl","surrogateControl","k","v","toString","json","error","statusCode","errorMiddleware","subsiteDebugMiddleware","subsitePath","exceptions","next","hostname","path","startsWith","exception","warn","url","setHeader","headers","servers","SERVERS","project","PROJECT","alias","ALIAS","deliveryApiHostname","urls","api","proxyTimeoutMs","assetProxy","httpProxy","createProxyServer","deliveryProxy","reverseProxies","reverseProxyPaths","deliveryApiProxy","all","proxyPath","endsWith","slice","target","previewIis","iis","web","changeOrigin","proxyTimeout","timeout","on","method","host","apiProxy","shorten","CacheDuration","static","expressStatic","getCacheDuration","status","anyUpdateHeader","replaceStaticPath","str","staticFolderPath","replace","bundleManipulationMiddleware","appRootPath","maxage","staticRoutePath","filename","basename","encodeURI","modernBundle","legacyBundle","jsRuntimeLocation","resolve","jsRuntimeBundle","fs","readFileSync","modifiedBundle","set","type","send","readError","resolveStartupMiddleware","startupScriptFilename","startupFileLocation","startupFilePaths","startupFilePath","forEach","testPath","accessSync","ex","sendFile","sendFileError","appPath","staticAssets","scripts","staticRoutePaths","use","startup","express","maxAge","projects","PROJECTS","DisplayStartupConfiguration","config","attributes","value","idx","handleResponse","request","response","content","renderStream","getContextHtml","jsx","stream","timeoutId","disposeTimeout","clearTimeout","abortCleanup","err","destroy","Error","undefined","abort","headersSent","pipe","renderToPipeableStream","onShellReady","html","header","write","onAllReady","footer","onShellError","onError","setTimeout","styledComponentsStream","sheet","readerWriter","Transform","objectMode","transform","chunk","_","callback","renderedHtml","TextDecoder","decode","styledCSS","_emitSheetCSS","CLOSING_TAG_R","instance","clearTag","test","replacedHtml","execResult","exec","endOfClosingTag","index","before","after","seal","sealErr","loadableBundleData","stats","templates","build","bundle","templateHTML","templateHTMLStatic","templateHTMLFragment","fragment","loadableChunkExtractors","commonLoadableExtractor","ChunkExtractor","modern","legacy","entrypoints","namespace","statsFile","info","addChunk","_modern","_legacy","_legacy2","assetsByChunkName","getBundleData","bundleData","default","getBundleTags","loadableExtractor","startupTag","stringifyAttributes","_loadableExtractor$le","_loadableExtractor$mo","legacyScriptTags","getScriptTags","nomodule","modernScriptTags","scriptTags","getVersionInfo","versionData","versionInfo","handleDefaultEvents","unhandledExceptionHandler","handleExceptions","exceptionTypes","process","chalk","red","bold","message","gray","logPrefix","addStandardHeaders","state","packagejson","groups","routingSurrogateKeys","selectSurrogateKeys","apiCalls","selectSsrApiCalls","anyApiError","addAnyUpdateHeader","surrogateKeys","surrogateKeyHeader","name","addVarnishAuthenticationHeaders","stateEntry","selectRouteEntry","selectCurrentProject","globalGroups","allowedGroups","allGroups","from","getIn","replaceHtml","bundleTags","htmlAttributes","metadata","styleTags","title","accessMethod","responseHTML","DYNAMIC","FRAGMENT","STATIC","minifyCssString","ssrJsxProducer","ReactApp","providers","props","_providers$styledComp","ChunkExtractorManager","React","createElement","HelmetProvider","context","helmet","extractor","loadable","CookiesProvider","cookies","ReduxProvider","store","redux","HttpContext","Provider","httpContext","StaticRouter","location","router","future","v7_startTransition","v7_relativeSplatPath","SSRContextProvider","ssrContext","routes","withEvents","styledComponents","collectStyles","webApp","stateType","withReducers","withSagas","disableSsrRedux","enableSsrCookies","handleResponses","i18n","localeRoutes","createLocaleRoutes","isRenderingJsxToString","renderToString","responseHandler","cookiesMiddleware","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","mergeStaticRoutes","staticRoute","pop","onlyDynamic","route","ssr","onlySSR","ssrOnly","normaliseQs","q","toLowerCase","mapJson","dynamic","REDUX","createStore","history","initialEntries","deliveryApi","getServerSideVersionStatus","getSubsitePath","subsitePathScript","serialize","dispatch","setVersionStatus","setVersion","commitRef","buildNo","pickProject","setCurrentProject","actions","INIT_LOCALES","locales","ssrCookies","universalCookies","Cookies","helmetContext","jsxProviderProps","jsxReactAppProps","isDynamicHints","responseHtmlDynamic","runSaga","rootSaga","toPromise","then","_selectCurrentSearch","reduxState","getState","clonedState","buildCleaner","identity","isBoolean","isDate","isFunction","noop","isNull","isPlainObject","isString","isUndefined","cloneDeep","selectCurrentSearch","deleteIn","routing","delete","user","serialisedReduxData","ServerStyleSheet","styledJsx","Helmet","renderStatic","helmetAsync","meta","concat","base","priority","link","script","noscript","isFinal","renderedJsxMarkup","redirect","styles","getStyleTags","catch","stack","close","server","http","createServer","start","ServerFeatures","global","PACKAGE_JSON","DISABLE_SSR_REDUX","PROXY_DELIVERY_API","proxyDeliveryApi","REVERSE_PROXY_PATHS","disable","ConfigureReverseProxies","ServeStaticAssets","ConfigureWebApp","listen","emit","exit"],"mappings":"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"}
|