@zengenti/contensis-react-base 4.0.1-beta.1 → 4.0.1-beta.10

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.
Files changed (113) hide show
  1. package/cjs/{App-Bg1MzW4V.js → App-95IjaQXT.js} +26 -22
  2. package/cjs/App-95IjaQXT.js.map +1 -0
  3. package/cjs/{ChangePassword.container-C4Du3Wb1.js → ChangePassword.container-CVwXfQjB.js} +7 -5
  4. package/cjs/ChangePassword.container-CVwXfQjB.js.map +1 -0
  5. package/cjs/{ContensisDeliveryApi-MfcvdfDR.js → ContensisDeliveryApi-vsHVQ_Ci.js} +46 -21
  6. package/cjs/ContensisDeliveryApi-vsHVQ_Ci.js.map +1 -0
  7. package/cjs/{RouteLoader-DJeM8cym.js → RouteLoader-NjuQ0VMn.js} +11 -7
  8. package/cjs/RouteLoader-NjuQ0VMn.js.map +1 -0
  9. package/cjs/{SSRContext-tMufQDHY.js → SSRContext-WPN0QwEg.js} +2 -2
  10. package/cjs/{SSRContext-tMufQDHY.js.map → SSRContext-WPN0QwEg.js.map} +1 -1
  11. package/cjs/{VersionInfo-zFPsvS8q.js → VersionInfo-BygZuA9D.js} +3 -3
  12. package/cjs/{VersionInfo-zFPsvS8q.js.map → VersionInfo-BygZuA9D.js.map} +1 -1
  13. package/cjs/build.js +219 -0
  14. package/cjs/build.js.map +1 -0
  15. package/cjs/client.js +13 -13
  16. package/cjs/contensis-react-base.js +27 -23
  17. package/cjs/contensis-react-base.js.map +1 -1
  18. package/cjs/dev-server-globals.js +21 -0
  19. package/cjs/dev-server-globals.js.map +1 -0
  20. package/cjs/{matchGroups-dqONU-vY.js → matchGroups-D8QZEd1p.js} +2 -2
  21. package/cjs/{matchGroups-dqONU-vY.js.map → matchGroups-D8QZEd1p.js.map} +1 -1
  22. package/cjs/redux.js +7 -7
  23. package/cjs/redux.js.map +1 -1
  24. package/cjs/routing.js +10 -10
  25. package/cjs/{sagas-BCy9u6zA.js → sagas-BG31QdkC.js} +8 -6
  26. package/cjs/sagas-BG31QdkC.js.map +1 -0
  27. package/cjs/search.js +6 -6
  28. package/cjs/{selectors-BrxJ8-F8.js → selectors-BnaBk5xL.js} +24 -20
  29. package/cjs/selectors-BnaBk5xL.js.map +1 -0
  30. package/cjs/{store-B7SJs5Hf.js → store-Ccwrx5Do.js} +14 -8
  31. package/cjs/store-Ccwrx5Do.js.map +1 -0
  32. package/cjs/user.js +3 -3
  33. package/cjs/{util-eOjxDjxF.js → util-LE7KTRCU.js} +5 -2
  34. package/cjs/util-LE7KTRCU.js.map +1 -0
  35. package/cjs/util.js +6 -6
  36. package/cjs/{version-yjHMrfVz.js → version-AE19NqSo.js} +3 -3
  37. package/cjs/{version-yjHMrfVz.js.map → version-AE19NqSo.js.map} +1 -1
  38. package/cjs/{version-rFG9Y6_B.js → version-CaRCM9vq.js} +2 -2
  39. package/cjs/{version-rFG9Y6_B.js.map → version-CaRCM9vq.js.map} +1 -1
  40. package/esm/{App-Bplaqueq.js → App-DvfrUH4b.js} +27 -23
  41. package/esm/App-DvfrUH4b.js.map +1 -0
  42. package/esm/{ChangePassword.container-CUBtn82K.js → ChangePassword.container-BlSy5eHk.js} +8 -6
  43. package/esm/ChangePassword.container-BlSy5eHk.js.map +1 -0
  44. package/esm/{ContensisDeliveryApi-LWYXevZ1.js → ContensisDeliveryApi-Czq1gBOi.js} +46 -21
  45. package/esm/ContensisDeliveryApi-Czq1gBOi.js.map +1 -0
  46. package/esm/{RouteLoader-CzrlySZf.js → RouteLoader-CAVJs2rj.js} +14 -10
  47. package/esm/RouteLoader-CAVJs2rj.js.map +1 -0
  48. package/esm/{SSRContext-Bxtg1KGv.js → SSRContext-DqqZUlqT.js} +2 -2
  49. package/esm/{SSRContext-Bxtg1KGv.js.map → SSRContext-DqqZUlqT.js.map} +1 -1
  50. package/esm/{VersionInfo-By2ZCZOh.js → VersionInfo-BinQYaU1.js} +6 -6
  51. package/esm/{VersionInfo-By2ZCZOh.js.map → VersionInfo-BinQYaU1.js.map} +1 -1
  52. package/esm/build.js +208 -0
  53. package/esm/build.js.map +1 -0
  54. package/esm/client.js +15 -15
  55. package/esm/contensis-react-base.js +29 -25
  56. package/esm/contensis-react-base.js.map +1 -1
  57. package/esm/dev-server-globals.js +15 -0
  58. package/esm/dev-server-globals.js.map +1 -0
  59. package/esm/i18n.js +2 -2
  60. package/esm/{matchGroups-_w8BwzCC.js → matchGroups-C2_rxOIO.js} +3 -3
  61. package/esm/{matchGroups-_w8BwzCC.js.map → matchGroups-C2_rxOIO.js.map} +1 -1
  62. package/esm/redux.js +7 -7
  63. package/esm/routing.js +7 -7
  64. package/esm/{sagas-Fr9yRduO.js → sagas-BN4gNmmc.js} +10 -8
  65. package/esm/sagas-BN4gNmmc.js.map +1 -0
  66. package/esm/search.js +9 -9
  67. package/esm/{selectors-DcmvOeX2.js → selectors-D4ulaTom.js} +2 -2
  68. package/esm/{selectors-DcmvOeX2.js.map → selectors-D4ulaTom.js.map} +1 -1
  69. package/esm/{selectors-8ROQrTd7.js → selectors-Dj45vPZR.js} +21 -13
  70. package/esm/selectors-Dj45vPZR.js.map +1 -0
  71. package/esm/{store-B4IrBYHm.js → store-Cxe7mlLh.js} +16 -10
  72. package/esm/store-Cxe7mlLh.js.map +1 -0
  73. package/esm/user.js +5 -5
  74. package/esm/{util-Bl2u6LpY.js → util-DHWbLSvO.js} +6 -3
  75. package/esm/util-DHWbLSvO.js.map +1 -0
  76. package/esm/util.js +6 -6
  77. package/esm/{version-CA9Mdm3A.js → version-Cy-gb20a.js} +4 -4
  78. package/esm/{version-CA9Mdm3A.js.map → version-Cy-gb20a.js.map} +1 -1
  79. package/esm/{version-BQAL8sQO.js → version-hQnuV0n7.js} +3 -3
  80. package/esm/{version-BQAL8sQO.js.map → version-hQnuV0n7.js.map} +1 -1
  81. package/models/build/cli.d.ts +2 -0
  82. package/models/build/dev-server-runtime-globals.d.ts +1 -0
  83. package/models/build/dev-server.d.ts +12 -0
  84. package/models/i18n/redux/slice.d.ts +170 -60
  85. package/models/models/config/ServerConfig.d.ts +9 -0
  86. package/models/routing/redux/actions.d.ts +17 -1
  87. package/models/routing/redux/selectors.d.ts +4 -4
  88. package/models/routing/redux/types.d.ts +1 -1
  89. package/models/search/redux/sagas.d.ts +1 -1
  90. package/models/server/features/reverse-proxy/index.d.ts +3 -2
  91. package/models/user/redux/sagas/login.d.ts +1 -1
  92. package/models/user/util/OidcUserManager.d.ts +2 -18
  93. package/models/util/ContensisDeliveryApi.d.ts +1 -1
  94. package/models/util/donotuse_useHistory.d.ts +3 -3
  95. package/models/util/env.d.ts +1 -0
  96. package/models/util/navigation.d.ts +1 -1
  97. package/package.json +53 -36
  98. package/cjs/App-Bg1MzW4V.js.map +0 -1
  99. package/cjs/ChangePassword.container-C4Du3Wb1.js.map +0 -1
  100. package/cjs/ContensisDeliveryApi-MfcvdfDR.js.map +0 -1
  101. package/cjs/RouteLoader-DJeM8cym.js.map +0 -1
  102. package/cjs/sagas-BCy9u6zA.js.map +0 -1
  103. package/cjs/selectors-BrxJ8-F8.js.map +0 -1
  104. package/cjs/store-B7SJs5Hf.js.map +0 -1
  105. package/cjs/util-eOjxDjxF.js.map +0 -1
  106. package/esm/App-Bplaqueq.js.map +0 -1
  107. package/esm/ChangePassword.container-CUBtn82K.js.map +0 -1
  108. package/esm/ContensisDeliveryApi-LWYXevZ1.js.map +0 -1
  109. package/esm/RouteLoader-CzrlySZf.js.map +0 -1
  110. package/esm/sagas-Fr9yRduO.js.map +0 -1
  111. package/esm/selectors-8ROQrTd7.js.map +0 -1
  112. package/esm/store-B4IrBYHm.js.map +0 -1
  113. package/esm/util-Bl2u6LpY.js.map +0 -1
@@ -1,9 +1,11 @@
1
1
  import { Client } from 'contensis-delivery-api';
2
2
  import { parse } from 'query-string';
3
- import { c as setSurrogateKeys } from './selectors-8ROQrTd7.js';
4
- import { r as reduxStore } from './store-B4IrBYHm.js';
3
+ import { a3 as setApiMetrics } from './selectors-Dj45vPZR.js';
4
+ import { r as reduxStore } from './store-Cxe7mlLh.js';
5
5
  import { f as findLoginCookies } from './CookieConstants-DEmbwzYr.js';
6
6
 
7
+ const isSSR = typeof window === 'undefined';
8
+
7
9
  class CacheNode {
8
10
  constructor(key, value) {
9
11
  this.key = key;
@@ -185,19 +187,44 @@ const getSsrReferer = ({
185
187
  };
186
188
 
187
189
  /**
188
- * Store the surrogate-key header contents in redux state to output in SSR response
190
+ * Record API call metrics in Redux state.
191
+ * Metrics are collected on both SSR and client-side.
192
+ * Surrogate keys are only included during SSR.
189
193
  */
190
- const storeSurrogateKeys = ssr => response => {
191
- let keys = '';
192
- if (response.status === 200) {
193
- keys = response.headers.get ? response.headers.get('surrogate-key') : response.headers.map['surrogate-key'];
194
- if (!keys) console.info(`[storeSurrogateKeys] No keys in ${response.url}`);
194
+ const recordApiResponse = (ssr, startTime = Date.now()) => response => {
195
+ var _performance$getEntri;
196
+ // Duration: Performance API client-side, closure timestamp best-effort fallback for SSR
197
+ const duration = Math.round(((_performance$getEntri = performance.getEntriesByName(response.url, 'resource')) === null || _performance$getEntri === void 0 || (_performance$getEntri = _performance$getEntri[0]) === null || _performance$getEntri === void 0 ? void 0 : _performance$getEntri.duration) || Date.now() - startTime);
198
+ const contentLength = Number(response.headers.get('Content-Length'));
199
+ if (contentLength > 100_000)
200
+ // > 100 KB
201
+ console.warn(`[crb] 🚛 Large response (${contentLength} bytes) from ${response.url}`);
202
+ if (duration > 5_000_000)
203
+ // > 5 seconds
204
+ console.warn(`[crb] 🐌 Slow response (${duration} ms) from ${response.url}`);
205
+ const metrics = {
206
+ context: isSSR ? 'ssr' : 'client',
207
+ statusCode: response.status,
208
+ contentLength,
209
+ duration,
210
+ url: response.url
211
+ };
212
+
213
+ // Surrogate keys are only meaningful during SSR
214
+ if (isSSR) {
215
+ const surrogateKeyHeader = response.headers.get('surrogate-key');
216
+ if (surrogateKeyHeader) {
217
+ metrics.surrogateKeys = surrogateKeyHeader.split(' ').filter(Boolean);
218
+ } else if (response.status === 200) {
219
+ console.info(`[recordApiResponse] No surrogate-key header in ${response.url}`);
220
+ }
195
221
  }
222
+
196
223
  // Using imported reduxStore in SSR is unreliable during high
197
224
  // concurrent loads and exists here as a best effort fallback
198
225
  // in case the SSRContext is not provided
199
226
  const put = (ssr === null || ssr === void 0 ? void 0 : ssr.dispatch) || (reduxStore === null || reduxStore === void 0 ? void 0 : reduxStore.dispatch);
200
- put === null || put === void 0 || put(setSurrogateKeys(keys, response.url, response.status));
227
+ put === null || put === void 0 || put(setApiMetrics(metrics));
201
228
  };
202
229
 
203
230
  /**
@@ -207,26 +234,24 @@ const deliveryApiConfig = ssr => {
207
234
  const config = {
208
235
  ...DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */
209
236
  };
237
+ config.responseHandler = {
238
+ // Record metrics on both SSR and client-side;
239
+ // surrogate keys are only captured during SSR.
240
+ [200]: recordApiResponse(ssr)
241
+ };
210
242
 
211
243
  // Add SSR headers and handlers
212
- if (typeof window === 'undefined') {
244
+ if (isSSR) {
213
245
  config.defaultHeaders = {
214
246
  'x-require-surrogate-key': 'true',
215
247
  // request surrogate-key response header
216
248
  'x-crb-ssr': 'true' // add this for support tracing
217
249
  };
218
250
  if (ssr) config.defaultHeaders.referer = getSsrReferer(ssr); // add this for support tracing
219
-
220
- config.responseHandler = {
221
- [200]: storeSurrogateKeys(ssr)
222
- }; // for handling page cache invalidation
223
- }
224
- if (typeof window !== 'undefined' && PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */) {
225
- // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)
251
+ } else if (PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */) {
252
+ // ensure a relative url is used client-side to bypass the need for CORS (separate OPTIONS calls)
226
253
  config.rootUrl = '';
227
- config.responseHandler = {
228
- [404]: () => null
229
- };
254
+ config.responseHandler[404] = () => null;
230
255
  }
231
256
  return config;
232
257
  };
@@ -326,4 +351,4 @@ const deliveryApi = new DeliveryApi();
326
351
  const deliveryApiWithCookies = ssr => new DeliveryApi(ssr);
327
352
 
328
353
  export { LruCache as L, cachedSearchWithContext as a, cachedSearchWithCookies as b, cachedSearch as c, deliveryApi as d, deliveryApiWithCookies as e, getClientConfig as g };
329
- //# sourceMappingURL=ContensisDeliveryApi-LWYXevZ1.js.map
354
+ //# sourceMappingURL=ContensisDeliveryApi-Czq1gBOi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContensisDeliveryApi-Czq1gBOi.js","sources":["../src/util/env.ts","../src/util/LruCache.js","../src/util/CachedDeliveryApi.ts","../src/util/ContensisDeliveryApi.ts"],"sourcesContent":["export const isSSR = typeof window === 'undefined';\n","class CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nexport class LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (!node) return; // This is sometimes null and crashes the container without this check\n\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n","import { VersionStatus } from 'contensis-core-api';\nimport { Client, Query } from 'contensis-delivery-api';\nimport {\n INodeOperations,\n NodeGetRootOptions,\n} from 'contensis-delivery-api/lib/models';\n\nimport {\n DeliveryApi,\n SSRContext,\n getClientConfig,\n} from './ContensisDeliveryApi';\nimport { LruCache } from './LruCache';\nimport { CookieObject } from '~/user/util/CookieConstants';\n\n// CachedSearch does not cache results in SSR by design\nexport class CachedSearch {\n cache = new LruCache();\n cookies?: CookieObject;\n ssr?: SSRContext;\n\n constructor(ssr?: SSRContext) {\n this.ssr = ssr;\n this.cookies = this.ssr?.cookies.raw;\n }\n\n getClient(...args: Parameters<DeliveryApi['getClient']>) {\n return new DeliveryApi(this.ssr).getClient(...args);\n }\n\n search(query: Query, linkDepth = 0, project?: string) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project}+${JSON.stringify(query)}+${linkDepth}`,\n () => client.entries.search(query, linkDepth)\n );\n }\n\n searchUsingPost(query: Query, linkDepth = 0, project = '') {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project}+${JSON.stringify(query)}+${linkDepth}`,\n () => (client.entries as any).searchUsingPost(query, linkDepth)\n );\n }\n\n get(\n id: string,\n linkDepth = 0,\n versionStatus: VersionStatus = 'published',\n project?: string,\n fields?: string[]\n ) {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return this.request(id, () =>\n client.entries.get({ id, linkDepth, fields })\n );\n }\n\n getContentType(id: string, project?: string) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(`[CONTENT TYPE] ${id} ${project}`, () =>\n client.contentTypes.get(id)\n );\n }\n\n getRootNode(\n options: NodeGetRootOptions,\n versionStatus: VersionStatus = 'published',\n project?: string\n ) {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return this.request(`${project} / ${JSON.stringify(options)}`, () =>\n client.nodes.getRoot(options)\n );\n }\n\n getNode(options: Parameters<INodeOperations['get']>[0], project?: string) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} ${\n options && typeof options !== 'string'\n ? 'path' in options\n ? options.path\n : options.id\n : options\n } ${JSON.stringify(options)}`,\n () => client.nodes.get(options)\n );\n }\n\n getAncestors(\n options: Parameters<INodeOperations['getAncestors']>[0],\n project?: string\n ) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} [A] ${\n (options && typeof options !== 'string' && options.id) || options\n } ${JSON.stringify(options)}`,\n () => client.nodes.getAncestors(options)\n );\n }\n\n getChildren(\n options: Parameters<INodeOperations['getChildren']>[0],\n project?: string\n ) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} [C] ${\n (options && typeof options !== 'string' && options.id) || options\n } ${JSON.stringify(options)}`,\n () => client.nodes.getChildren(options)\n );\n }\n\n getSiblings(\n options: Parameters<INodeOperations['getSiblings']>[0],\n project?: string\n ) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} [S] ${\n (options && typeof options !== 'string' && options.id) || options\n } ${JSON.stringify(options)}`,\n () => client.nodes.getSiblings(options)\n );\n }\n\n request<T extends () => Promise<any>>(key: string, execute: T) {\n // do not cache results in SSR\n if (!this.cache.get(key) || typeof window == 'undefined') {\n const promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key) as ReturnType<T>;\n }\n\n /** Use the cached API for fetch requests */\n fetch(uri: RequestInfo, opts: RequestInit = {}) {\n return this.request(`[FETCH] ${uri} ${JSON.stringify(opts)}`, () =>\n fetch(uri, opts)\n );\n }\n}\n\nexport const cachedSearch = new CachedSearch();\n\n/** Create a cached search instance attached to the current environment\n * SSR context and connected to your environment via global variable\n * `DELIVERY_API_CONFIG` */\nexport const cachedSearchWithContext = (ssr?: SSRContext) =>\n new CachedSearch(ssr);\n\n/** @deprecated Use cachedSearchWithContext instead */\nexport const cachedSearchWithCookies = cachedSearchWithContext;\n","import { VersionStatus } from 'contensis-core-api';\nimport { Client, Config, Query } from 'contensis-delivery-api';\n// [query-string v8+] When upgrading to v8+: ESM-only, no default export, requires Node >=20.19.0\nimport { parse } from 'query-string';\nimport { ApiMetrics, setApiMetrics } from '~/routing/redux/actions';\nimport { reduxStore } from '~/redux/store/store';\nimport { isSSR } from './env';\n\nimport { CookieObject, findLoginCookies } from '~/user/util/CookieConstants';\nimport { Request } from 'express';\nimport { IncomingHttpHeaders } from 'http';\nimport { SSRContext as SSRContextType } from '~/models';\n\nexport type SSRContext = Omit<SSRContextType, 'api'>;\n\nconst mapCookieHeader = (cookies: CookieObject | string) =>\n typeof cookies === 'object'\n ? Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n : cookies;\n\nconst getSsrReferer = ({ request }: SSRContext) => {\n if (request) {\n try {\n const url = new URL(\n request.url,\n `${request.protocol || `http`}://${request.headers.host}`\n );\n return url.href;\n } catch (ex: unknown) {\n console.error(\n `getSsrReferer cannot parse url ${request.url} and host ${request.headers.host}`\n );\n\n return request.url;\n }\n }\n\n // if (typeof window === 'undefined') {\n // const state = reduxStore.getState();\n // const referer = `${selectCurrentHostname(state)}${selectCurrentPath(\n // state\n // )}${selectCurrentSearch(state)}`;\n\n // return referer;\n // }\n return '';\n};\n\n/**\n * Record API call metrics in Redux state.\n * Metrics are collected on both SSR and client-side.\n * Surrogate keys are only included during SSR.\n */\nconst recordApiResponse =\n (ssr?: SSRContext, startTime = Date.now()) =>\n (response: any) => {\n // Duration: Performance API client-side, closure timestamp best-effort fallback for SSR\n const duration = Math.round(\n performance.getEntriesByName(response.url, 'resource')?.[0]?.duration ||\n Date.now() - startTime\n );\n const contentLength = Number(response.headers.get('Content-Length'));\n\n if (contentLength > 100_000)\n // > 100 KB\n console.warn(\n `[crb] 🚛 Large response (${contentLength} bytes) from ${response.url}`\n );\n if (duration > 5_000_000)\n // > 5 seconds\n console.warn(\n `[crb] 🐌 Slow response (${duration} ms) from ${response.url}`\n );\n\n const metrics: ApiMetrics = {\n context: isSSR ? 'ssr' : 'client',\n statusCode: response.status,\n contentLength,\n duration,\n url: response.url,\n };\n\n // Surrogate keys are only meaningful during SSR\n if (isSSR) {\n const surrogateKeyHeader = response.headers.get('surrogate-key');\n\n if (surrogateKeyHeader) {\n metrics.surrogateKeys = surrogateKeyHeader.split(' ').filter(Boolean);\n } else if (response.status === 200) {\n console.info(\n `[recordApiResponse] No surrogate-key header in ${response.url}`\n );\n }\n }\n\n // Using imported reduxStore in SSR is unreliable during high\n // concurrent loads and exists here as a best effort fallback\n // in case the SSRContext is not provided\n const put = ssr?.dispatch || reduxStore?.dispatch;\n put?.(setApiMetrics(metrics));\n };\n\n/**\n * Create a new Config object to create a DeliveryAPI Client\n */\nconst deliveryApiConfig = (ssr?: SSRContext) => {\n const config: Config = {\n ...DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */,\n };\n\n config.responseHandler = {\n // Record metrics on both SSR and client-side;\n // surrogate keys are only captured during SSR.\n [200]: recordApiResponse(ssr),\n };\n\n // Add SSR headers and handlers\n if (isSSR) {\n config.defaultHeaders = {\n 'x-require-surrogate-key': 'true', // request surrogate-key response header\n 'x-crb-ssr': 'true', // add this for support tracing\n };\n if (ssr) config.defaultHeaders.referer = getSsrReferer(ssr); // add this for support tracing\n } else if (PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */) {\n // ensure a relative url is used client-side to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = '';\n config.responseHandler[404] = () => null;\n }\n\n return config;\n};\n\nexport const getClientConfig = (project?: string, ssr?: SSRContext) => {\n const config = deliveryApiConfig(ssr);\n\n if (project) {\n config.projectId = project;\n }\n\n if (ssr?.cookies) {\n const cookieHeader = mapCookieHeader(findLoginCookies(ssr.cookies));\n if (cookieHeader) {\n config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {\n Cookie: cookieHeader,\n });\n }\n }\n\n return config;\n};\n\n// export * from 'contensis-delivery-api';\n\ndeclare let window: Window &\n typeof globalThis & {\n versionStatus?: VersionStatus;\n };\n\nexport class DeliveryApi {\n cookies?: CookieObject;\n ssr?: SSRContext;\n\n constructor(ssr?: SSRContext) {\n this.ssr = ssr;\n this.cookies = ssr?.cookies.raw;\n }\n\n getClientSideVersionStatus = () => {\n if (typeof window !== 'undefined') {\n // Allow overriding versionStatus with the querystring\n const { versionStatus } = parse(window.location.search);\n if (versionStatus) return versionStatus;\n // Client-side we will have a global variable set if rendered by SSR in production\n if (typeof window.versionStatus !== 'undefined')\n return window.versionStatus;\n // For localhost development we can only work out versionStatus from the current hostname\n const currentHostname = window.location.hostname;\n return this.getVersionStatusFromHostname(currentHostname);\n }\n return null;\n };\n\n getServerSideVersionStatus = (request: Request) => {\n const rawStatus =\n request.query.versionStatus ??\n deliveryApi.getVersionStatusFromHeaders(request.headers) ??\n deliveryApi.getVersionStatusFromHostname(request.hostname);\n\n const status =\n typeof rawStatus === 'string' ? rawStatus.trim().toLowerCase() : '';\n\n // Validate the status to only allow known values and ignore any others\n // to prevent malicious injection\n if (['latest', 'published'].includes(status)) {\n return status as 'latest' | 'published';\n }\n\n return undefined;\n };\n\n getVersionStatusFromHeaders = (headers: IncomingHttpHeaders) => {\n const versionStatusHeader = headers['x-entry-versionstatus'];\n if (typeof versionStatusHeader !== 'undefined') return versionStatusHeader;\n return null;\n };\n\n getVersionStatusFromHostname = (currentHostname: string) => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n };\n\n search = (query: Query, linkDepth = 0, project?: string) => {\n const client = Client.create(getClientConfig(project, this.ssr));\n return client.entries.search(\n query,\n typeof linkDepth !== 'undefined' ? linkDepth : 1\n );\n };\n\n getClient = (versionStatus: VersionStatus = 'published', project?: string) =>\n Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n\n getEntry = (\n id: string,\n linkDepth = 0,\n versionStatus: VersionStatus = 'published',\n project?: string\n ) => {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return client.entries.get({ id, linkDepth });\n };\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nexport const deliveryApiWithCookies = (ssr?: SSRContext) =>\n new DeliveryApi(ssr);\n\nexport * from './CachedDeliveryApi';\n"],"names":["isSSR","window","CacheNode","constructor","key","value","next","prev","LruCache","limit","map","head","tail","size","get","node","remove","setHead","set","CachedSearch","ssr","_this$ssr","cache","cookies","raw","getClient","args","DeliveryApi","search","query","linkDepth","project","client","Client","create","getClientConfig","request","JSON","stringify","entries","searchUsingPost","id","versionStatus","fields","getContentType","contentTypes","getRootNode","options","nodes","getRoot","getNode","path","getAncestors","getChildren","getSiblings","execute","promise","catch","fetch","uri","opts","cachedSearch","cachedSearchWithContext","cachedSearchWithCookies","mapCookieHeader","Object","name","join","getSsrReferer","url","URL","protocol","headers","host","href","ex","console","error","recordApiResponse","startTime","Date","now","response","_performance$getEntri","duration","Math","round","performance","getEntriesByName","contentLength","Number","warn","metrics","context","statusCode","status","surrogateKeyHeader","surrogateKeys","split","filter","Boolean","info","put","dispatch","reduxStore","setApiMetrics","deliveryApiConfig","config","DELIVERY_API_CONFIG","responseHandler","defaultHeaders","referer","PROXY_DELIVERY_API","rootUrl","projectId","cookieHeader","findLoginCookies","assign","Cookie","getClientSideVersionStatus","parse","location","currentHostname","hostname","getVersionStatusFromHostname","getServerSideVersionStatus","_ref","_request$query$versio","rawStatus","deliveryApi","getVersionStatusFromHeaders","trim","toLowerCase","includes","undefined","versionStatusHeader","indexOf","endsWith","getEntry","deliveryApiWithCookies"],"mappings":"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"}
@@ -2,9 +2,9 @@ import React, { useContext, createContext, useCallback, useEffect, cloneElement
2
2
  import { connect } from 'react-redux';
3
3
  import { Navigate, useRoutes, useLocation, matchRoutes } from 'react-router-dom';
4
4
  import { createSelector } from 'reselect';
5
- import { h as selectRouteEntryContentTypeId, j as selectRouteEntry, k as selectRouteIsError, l as selectIsNotFound, m as selectRouteLoading, n as selectMappedEntry, f as selectCurrentProject, o as selectCurrentPath, p as selectRouteStatusCode, q as selectRouteErrorMessage, u as setNavigationPath } from './selectors-8ROQrTd7.js';
6
- import { d as selectUserIsAuthenticated, k as selectUserGroups, m as matchUserGroup } from './matchGroups-_w8BwzCC.js';
7
- import { a as useSSRContext, t as transformPathForSubsite } from './SSRContext-Bxtg1KGv.js';
5
+ import { Q as selectRouteEntryContentTypeId, O as selectRouteEntry, Z as selectRouteIsError, M as selectIsNotFound, _ as selectRouteLoading, N as selectMappedEntry, I as selectCurrentProject, H as selectCurrentPath, $ as selectRouteStatusCode, Y as selectRouteErrorMessage, a5 as setNavigationPath } from './selectors-Dj45vPZR.js';
6
+ import { o as selectUserIsAuthenticated, l as selectUserGroups, m as matchUserGroup } from './matchGroups-C2_rxOIO.js';
7
+ import { a as useSSRContext, t as transformPathForSubsite } from './SSRContext-DqqZUlqT.js';
8
8
  import { t as toJS } from './ToJs-BnRRHk6f.js';
9
9
 
10
10
  const mergeStaticRoutes = matchedStaticRoute => {
@@ -93,10 +93,14 @@ const replaceDoubleSlashRecursive = path => {
93
93
  };
94
94
  const getTrimmedPath = path => {
95
95
  if (path !== '/') {
96
- const nextPath = replaceDoubleSlashRecursive(path);
97
- const lastChar = nextPath[nextPath.length - 1];
96
+ const cleanedPath = replaceDoubleSlashRecursive(path);
97
+ const lastChar = cleanedPath[cleanedPath.length - 1];
98
98
  if (lastChar === '/') {
99
- return nextPath.substring(0, nextPath.length - 1);
99
+ // Trim trailing slash from path to ensure urls are always unique
100
+ return cleanedPath.substring(0, cleanedPath.length - 1);
101
+ } else {
102
+ // Return path with any double slashes removed
103
+ return cleanedPath;
100
104
  }
101
105
  }
102
106
  return path;
@@ -138,7 +142,7 @@ const processStaticRoutes = (staticRoutes, componentProps) => {
138
142
  return route;
139
143
  });
140
144
  };
141
- const RouteLoader = ({
145
+ const RouteLoader$1 = ({
142
146
  contentTypeId,
143
147
  entry,
144
148
  isError,
@@ -299,7 +303,7 @@ const mapStateToPropsMemoized = createSelector(selectRouteEntryContentTypeId, se
299
303
  const mapDispatchToProps = {
300
304
  setNavigationPath
301
305
  };
302
- var RouteLoader$1 = connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader));
306
+ var RouteLoader = connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader$1));
303
307
 
304
- export { HttpContext as H, Redirect as R, Status as S, RouteLoader$1 as a, mergeStaticRoutes as m, useHttpContext as u };
305
- //# sourceMappingURL=RouteLoader-CzrlySZf.js.map
308
+ export { HttpContext as H, Redirect as R, Status as S, RouteLoader as a, mergeStaticRoutes as m, useHttpContext as u };
309
+ //# sourceMappingURL=RouteLoader-CAVJs2rj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-CAVJs2rj.js","sources":["../src/util/mergeStaticRoutes.ts","../src/routing/httpContext.ts","../src/routing/components/Redirect.tsx","../src/routing/components/Status.tsx","../src/routing/components/NotFound.tsx","../src/routing/components/StaticRouteLoader.tsx","../src/routing/components/RouteLoader.tsx"],"sourcesContent":["import { StaticRoute } from '../';\n\nexport const mergeStaticRoutes = matchedStaticRoute => {\n let finalRoute: StaticRoute = {};\n for (const [i, route] of matchedStaticRoute.entries()) {\n const staticRouteCopy = { ...route.route };\n if (i === matchedStaticRoute.length - 1) {\n finalRoute = {\n ...finalRoute,\n ...staticRouteCopy,\n fullPath: `${finalRoute.fullPath || ''}${\n route.route.path ? route.route.path : ''\n }`,\n };\n matchedStaticRoute[i].route = finalRoute;\n } else {\n delete staticRouteCopy.children;\n delete staticRouteCopy.index;\n delete staticRouteCopy.path;\n delete staticRouteCopy.component;\n delete staticRouteCopy.element;\n finalRoute = {\n ...finalRoute,\n ...staticRouteCopy,\n fullPath: `${finalRoute.fullPath || ''}${\n route.route.path\n ? route.route.path.endsWith('/')\n ? route.route.path\n : route.route.path + '/'\n : ''\n }`,\n };\n }\n }\n};\n","import { createContext, useContext } from 'react';\n\nexport type HttpContextValues = {\n statusCode?: number;\n url?: string;\n};\n\nexport const HttpContext = createContext<HttpContextValues>({});\nexport const useHttpContext = () => {\n return useContext(HttpContext);\n};\n","import React, { PropsWithChildren } from 'react';\nimport { Navigate } from 'react-router-dom';\nimport { useHttpContext } from '../httpContext';\n\nexport const Redirect = ({\n code,\n to,\n}: PropsWithChildren<{ code: 301 | 302; to: string }>) => {\n const httpContext = useHttpContext();\n if (httpContext) {\n httpContext.statusCode = code;\n httpContext.url = to;\n }\n return <Navigate to={to} />;\n};\n","import React, { PropsWithChildren } from 'react';\nimport { useHttpContext } from '../httpContext';\n\nexport const Status = ({\n code,\n children,\n}: PropsWithChildren<{ code: number }>) => {\n const httpContext = useHttpContext();\n if (httpContext) {\n httpContext.statusCode = code;\n }\n return <>{children}</>;\n};\n","import React from 'react';\n\nconst NotFound = ({\n statusCode,\n statusText,\n}: {\n statusCode: number;\n statusText: string;\n}) => (\n <>\n <header>\n <h1>{statusCode || '404'} Page Not Found</h1>\n {statusText && (\n <h2\n style={{\n background: '#eee',\n color: '#666',\n fontSize: '100%',\n padding: '10px',\n }}\n >\n {statusText}\n </h2>\n )}\n </header>\n </>\n);\n\nexport default NotFound;\n","import React from 'react';\nimport { RouteObject, useRoutes } from 'react-router-dom';\nimport type { StaticRoute } from '~/models';\n\nexport interface StaticRouteLoaderProps {\n staticRoutes: StaticRoute[];\n}\n\nexport const StaticRouteLoader = ({ staticRoutes }: StaticRouteLoaderProps) => {\n const staticRouteElement = useRoutes(staticRoutes as RouteObject[]);\n return <>{staticRouteElement}</>;\n};\n","import React, { useEffect, useCallback, cloneElement } from 'react';\nimport { connect } from 'react-redux';\nimport { useLocation, matchRoutes, RouteObject } from 'react-router-dom';\n\nimport { createSelector } from 'reselect';\n\nimport NotFound from './NotFound';\nimport { Redirect } from './Redirect';\nimport { StaticRouteLoader } from './StaticRouteLoader';\nimport { Status } from './Status';\n\nimport {\n selectCurrentPath,\n selectCurrentProject,\n selectIsNotFound,\n selectMappedEntry,\n selectRouteEntry,\n selectRouteEntryContentTypeId,\n selectRouteErrorMessage,\n selectRouteIsError,\n selectRouteLoading,\n selectRouteStatusCode,\n} from '../redux/selectors';\nimport { setNavigationPath } from '../redux/actions';\n\nimport {\n selectUserGroups,\n selectUserIsAuthenticated,\n} from '~/user/redux/selectors';\nimport { matchUserGroup } from '~/user/util/matchGroups';\nimport { mergeStaticRoutes } from '~/util/mergeStaticRoutes';\nimport { useSSRContext } from '~/util/SSRContext';\nimport { transformPathForSubsite } from '~/util/subsite';\nimport { toJS } from '~/util/ToJs';\n\nimport type { Entry } from 'contensis-delivery-api/lib/models';\nimport type {\n AppRootProps,\n MatchedRoute,\n RouteLoaderProps,\n StaticRoute,\n} from '~/models';\n\nconst replaceDoubleSlashRecursive = (path: string) => {\n const nextPath = path.replace(/\\/\\//, '/');\n\n if (nextPath.match(/\\/\\//)) {\n return replaceDoubleSlashRecursive(nextPath);\n }\n\n return nextPath;\n};\n\nconst getTrimmedPath = (path: string) => {\n if (path !== '/') {\n const cleanedPath = replaceDoubleSlashRecursive(path);\n const lastChar = cleanedPath[cleanedPath.length - 1];\n if (lastChar === '/') {\n // Trim trailing slash from path to ensure urls are always unique\n return cleanedPath.substring(0, cleanedPath.length - 1);\n } else {\n // Return path with any double slashes removed\n return cleanedPath;\n }\n }\n return path;\n};\n\nconst processStaticRoutes = (\n staticRoutes: StaticRoute[],\n componentProps: Partial<IReduxProps>\n) => {\n const { projectId, contentTypeId, entry, mappedEntry, isLoggedIn } =\n componentProps;\n return staticRoutes.map(x => {\n const route = { ...x };\n if (route.component) {\n route.element = (\n <route.component\n projectId={projectId}\n contentTypeId={contentTypeId ? contentTypeId : undefined}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n delete route.component;\n }\n if (route.element) {\n route.element = cloneElement(route.element as React.ReactElement<any>, {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n });\n }\n if (route.children) {\n route.children = processStaticRoutes(route.children, componentProps);\n }\n return route;\n });\n};\n\ninterface IReduxProps {\n contentTypeId: string | null;\n entry: Entry | null;\n isError: boolean;\n isNotFound: boolean;\n isLoading: boolean;\n isLoggedIn: boolean;\n mappedEntry: any;\n projectId: string;\n setNavigationPath: typeof setNavigationPath;\n statePath: string;\n statusCode: any;\n statusText: string;\n userGroups: any;\n}\n\nconst RouteLoader = ({\n contentTypeId,\n entry,\n isError,\n isLoading,\n isLoggedIn,\n isNotFound,\n loadingComponent,\n mappedEntry,\n notFoundComponent,\n projectId,\n routes,\n setNavigationPath,\n statePath,\n statusCode,\n statusText,\n userGroups,\n withEvents,\n trailingSlashRedirectCode = 302,\n}: AppRootProps & RouteLoaderProps & IReduxProps) => {\n const location = useLocation();\n\n // In SSR pass references to things in backing sagas\n // we cannot access in a global scope\n const ssrContext = useSSRContext();\n\n // Always ensure paths are trimmed of trailing slashes so urls are always unique\n const trimmedPath = getTrimmedPath(location.pathname);\n\n // Convert any react-router-v5 style routes to react-router-v6 style routes.\n const staticRoutes = processStaticRoutes(routes.StaticRoutes, {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n });\n\n // Match any Static Routes a developer has defined\n const matchedStaticRoute = matchRoutes(\n staticRoutes as RouteObject[],\n location\n );\n const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0;\n\n // Combine custom params for all static routes, with the furthest config taking precedence.\n if (isStaticRoute) {\n mergeStaticRoutes(matchedStaticRoute);\n }\n\n const staticRoute: MatchedRoute<string, StaticRoute> | undefined =\n isStaticRoute ? matchedStaticRoute.pop() || undefined : undefined;\n\n const routeRequiresLogin = staticRoute\n ? staticRoute.route.requireLogin\n : undefined;\n\n const setPath = useCallback(() => {\n // Use serverPath to control the path we send to siteview node api to resolve a route\n let serverPath = '';\n if (staticRoute && staticRoute.pathname === staticRoute.pathnameBase) {\n const { route, pathname, params } = staticRoute;\n\n if (route.path?.includes('*')) {\n // Send the whole url to api if we have matched route containing wildcard\n serverPath = pathname;\n } else if (typeof route.fetchNodeLevel === 'number') {\n // Send all url parts to a specified level to api\n serverPath = pathname\n .split('/')\n .splice(0, route.fetchNodeLevel + 1)\n .join('/');\n } else if (\n typeof route.fetchNode === 'object' &&\n route.fetchNode?.params\n ) {\n const fetchNodeParams: string[] = route.fetchNode.params;\n const routeParams = params;\n\n const regexExp = new RegExp(\n Object.keys(routeParams)\n .map(p => `:${p}`)\n .join('|'),\n 'g'\n );\n\n serverPath = pathname\n .replace(/\\?/g, '')\n .replace(regexExp, matched => {\n const param = matched.replace(':', '');\n if (fetchNodeParams.includes(param))\n return routeParams[param] || '';\n else return '';\n })\n .replace(/\\/$/, '');\n } else {\n // Send all non-parameterised url parts to api\n serverPath = (route.fullPath as string)\n ?.split('/')\n .filter(p => !p.startsWith(':'))\n .join('/');\n }\n }\n\n const { clientPath, contentPath } = transformPathForSubsite(\n serverPath || trimmedPath,\n ssrContext.request\n );\n\n setNavigationPath(\n clientPath,\n contentPath,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes,\n ssrContext\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n setNavigationPath,\n // staticRoute,\n withEvents,\n location,\n routes,\n // statePath,\n trimmedPath,\n ]);\n\n if (typeof window == 'undefined') setPath();\n\n useEffect(() => {\n setPath();\n }, [location, setPath]);\n\n // Need to redirect when url endswith a /\n if (location.pathname.length > trimmedPath.length) {\n return (\n <Redirect\n code={trailingSlashRedirectCode || 302}\n to={`${trimmedPath}${location.search}${location.hash}`}\n />\n );\n }\n\n // Render any Static Routes a developer has defined\n if (isStaticRoute && !(!isLoggedIn && routeRequiresLogin)) {\n if (matchUserGroup(userGroups, routeRequiresLogin))\n return <StaticRouteLoader staticRoutes={staticRoutes} />;\n }\n\n // Render a supplied Loading component if the route\n // is not a static route and is in a loading state\n if (isLoading && !isNotFound && loadingComponent) {\n const LoadingComponent = loadingComponent;\n return <LoadingComponent />;\n }\n\n // Match any defined Content Type Mappings\n if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {\n const MatchedComponent = routes.ContentTypeMappings.find(\n item => item.contentTypeID === contentTypeId\n );\n\n if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {\n if (matchUserGroup(userGroups, MatchedComponent.requireLogin))\n return (\n <MatchedComponent.component\n projectId={projectId}\n contentTypeId={contentTypeId}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n }\n }\n\n const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;\n if (isNotFound || isError) {\n // console.info(\n // `RouteLoader rendering NotFound component: statusCode ${statusCode}, isNotFound ${isNotFound}, isError ${isError}`\n // );\n\n return (\n <Status code={statusCode}>\n <NotFoundComponent statusCode={statusCode} statusText={statusText} />\n </Status>\n );\n }\n\n return null;\n};\nconst mapStateToPropsMemoized = createSelector(\n selectRouteEntryContentTypeId,\n selectRouteEntry,\n selectRouteIsError,\n selectIsNotFound,\n selectRouteLoading,\n selectUserIsAuthenticated,\n selectMappedEntry,\n selectCurrentProject,\n selectCurrentPath,\n selectRouteStatusCode,\n selectRouteErrorMessage,\n selectUserGroups,\n (\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups\n ) => ({\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups,\n })\n);\n\nconst mapDispatchToProps = {\n setNavigationPath,\n};\n\nexport default connect(\n mapStateToPropsMemoized,\n mapDispatchToProps\n)(toJS(RouteLoader as any)) as unknown as (\n props: AppRootProps & RouteLoaderProps\n) => React.JSX.Element;\n"],"names":["mergeStaticRoutes","matchedStaticRoute","finalRoute","i","route","entries","staticRouteCopy","length","fullPath","path","children","index","component","element","endsWith","HttpContext","createContext","useHttpContext","useContext","Redirect","code","to","httpContext","statusCode","url","React","createElement","Navigate","Status","Fragment","NotFound","statusText","style","background","color","fontSize","padding","StaticRouteLoader","staticRoutes","staticRouteElement","useRoutes","replaceDoubleSlashRecursive","nextPath","replace","match","getTrimmedPath","cleanedPath","lastChar","substring","processStaticRoutes","componentProps","projectId","contentTypeId","entry","mappedEntry","isLoggedIn","map","x","undefined","cloneElement","RouteLoader","isError","isLoading","isNotFound","loadingComponent","notFoundComponent","routes","setNavigationPath","statePath","userGroups","withEvents","trailingSlashRedirectCode","location","useLocation","ssrContext","useSSRContext","trimmedPath","pathname","StaticRoutes","matchRoutes","isStaticRoute","staticRoute","pop","routeRequiresLogin","requireLogin","setPath","useCallback","serverPath","pathnameBase","_route$path","_route$fetchNode","params","includes","fetchNodeLevel","split","splice","join","fetchNode","fetchNodeParams","routeParams","regexExp","RegExp","Object","keys","p","matched","param","_route$fullPath","filter","startsWith","clientPath","contentPath","transformPathForSubsite","request","window","useEffect","search","hash","matchUserGroup","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","NotFoundComponent","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","connect","toJS"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React, { useContext, createContext, useState } from 'react';
2
2
  import { useCookies } from 'react-cookie';
3
3
  import { useDispatch } from 'react-redux';
4
- import { a as cachedSearchWithContext } from './ContensisDeliveryApi-LWYXevZ1.js';
4
+ import { a as cachedSearchWithContext } from './ContensisDeliveryApi-Czq1gBOi.js';
5
5
  import { C as CookieHelper } from './CookieHelper.class-C6rTRl_1.js';
6
6
 
7
7
  const isSSR = typeof window === 'undefined';
@@ -103,4 +103,4 @@ const useDeliveryApi = () => {
103
103
  };
104
104
 
105
105
  export { SSRContextProvider as S, useSSRContext as a, getSubsitePath as g, transformPathForSubsite as t, useDeliveryApi as u };
106
- //# sourceMappingURL=SSRContext-Bxtg1KGv.js.map
106
+ //# sourceMappingURL=SSRContext-DqqZUlqT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SSRContext-Bxtg1KGv.js","sources":["../src/util/subsite.ts","../src/util/SSRContext.tsx"],"sourcesContent":["import type { Request } from 'express';\n\ndeclare let window: typeof globalThis & {\n subsitePath: string | undefined;\n};\n\nconst isSSR = typeof window === 'undefined';\n\nconst ensureLeadingSlash = (value: string) =>\n value.startsWith('/') ? value : `/${value}`;\n\nconst trimTrailingSlash = (value: string) =>\n value.length > 1 && value.endsWith('/') ? value.slice(0, -1) : value;\n\nconst normalizeSubsitePath = (path?: string) => {\n const trimmed = `${path || ''}`.trim();\n if (!trimmed || trimmed === '/') return '';\n return trimTrailingSlash(ensureLeadingSlash(trimmed));\n};\n\nconst addSubsitePath = (path: string, subsitePath: string) => {\n if (!path || path === '/') return subsitePath;\n if (path.startsWith(subsitePath)) return path;\n return `${subsitePath}${path.startsWith('/') ? '' : '/'}${path}`;\n};\n\nconst trimSubsitePath = (path: string, subsitePath: string) => {\n if (!path.startsWith(subsitePath)) return path;\n const stripped = path.slice(subsitePath.length);\n return stripped ? stripped : '/';\n};\n\n/**\n * Retrieves a subsite path from the request headers in SSR or the global window object in CSR.\n * @param request The SSR request.\n * @returns The normalized subsite path.\n */\nexport const getSubsitePath = (request?: Request) =>\n isSSR\n ? normalizeSubsitePath(request?.headers?.['subsite_path'] as string)\n : window.subsitePath;\n\nexport const transformPathForSubsite = (\n path: string,\n request?: Request\n): {\n clientPath: string;\n contentPath: string;\n subsitePath?: string;\n} => {\n const subsitePath = getSubsitePath(request);\n if (!subsitePath) return { clientPath: path, contentPath: path };\n\n return {\n clientPath: isSSR ? trimSubsitePath(path, subsitePath) : path,\n contentPath: isSSR ? path : addSubsitePath(path, subsitePath),\n subsitePath,\n };\n};\n","import { Request, Response } from 'express';\nimport React, {\n PropsWithChildren,\n createContext,\n useContext,\n useState,\n} from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useDispatch } from 'react-redux';\nimport { SSRAccessMethod, SSRContext as SSRContextType } from '~/models';\nimport { cachedSearchWithContext } from '~/util/CachedDeliveryApi';\nimport { CookieHelper } from '~/user/util/CookieHelper.class';\nimport { getSubsitePath } from './subsite';\n\nconst SSRContext = createContext<SSRContextType | null>(null);\n\n/**\n * SSRContextProvider allows us to hold and access request-scoped references\n * throughout the component tree\n *\n * adding this in client side allows consumers to write universal code and use\n * the same helpers and request-scoped refs for api, cookies and redux dispatcher\n * as in SSR */\nexport const SSRContextProvider = ({\n accessMethod,\n children,\n request,\n response,\n}: PropsWithChildren<{\n accessMethod?: SSRAccessMethod;\n request?: Request;\n response?: Response;\n}>) => {\n // In SSR pass references to things in backing sagas\n // we cannot access in a global scope\n const dispatch = useDispatch();\n const cookies = new CookieHelper(...useCookies());\n const api = cachedSearchWithContext({ cookies, dispatch, request, response });\n const subsitePath = getSubsitePath(request);\n\n const [context] = useState<SSRContextType>({\n accessMethod,\n api,\n cookies,\n dispatch,\n request,\n response,\n subsitePath,\n });\n\n return (\n <SSRContext.Provider value={{ ...context }}>{children}</SSRContext.Provider>\n );\n};\n\n/**\n * Server side usage provides access to request-scoped references throughout the component tree\n *\n * Client side usage allows consumers to write universal code, using the same\n * helpers and request-scoped refs for api, cookies and redux dispatcher as in SSR\n * @returns SSRContextType\n */\nexport const useSSRContext = () => useContext(SSRContext) as SSRContextType;\n\nexport const useDeliveryApi = () => {\n const { api } = useSSRContext();\n return api;\n};\n"],"names":["isSSR","window","ensureLeadingSlash","value","startsWith","trimTrailingSlash","length","endsWith","slice","normalizeSubsitePath","path","trimmed","trim","addSubsitePath","subsitePath","trimSubsitePath","stripped","getSubsitePath","request","_request$headers","headers","transformPathForSubsite","clientPath","contentPath","SSRContext","createContext","SSRContextProvider","accessMethod","children","response","dispatch","useDispatch","cookies","CookieHelper","useCookies","api","cachedSearchWithContext","context","useState","React","createElement","Provider","useSSRContext","useContext","useDeliveryApi"],"mappings":"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"}
1
+ {"version":3,"file":"SSRContext-DqqZUlqT.js","sources":["../src/util/subsite.ts","../src/util/SSRContext.tsx"],"sourcesContent":["import type { Request } from 'express';\n\ndeclare let window: typeof globalThis & {\n subsitePath: string | undefined;\n};\n\nconst isSSR = typeof window === 'undefined';\n\nconst ensureLeadingSlash = (value: string) =>\n value.startsWith('/') ? value : `/${value}`;\n\nconst trimTrailingSlash = (value: string) =>\n value.length > 1 && value.endsWith('/') ? value.slice(0, -1) : value;\n\nconst normalizeSubsitePath = (path?: string) => {\n const trimmed = `${path || ''}`.trim();\n if (!trimmed || trimmed === '/') return '';\n return trimTrailingSlash(ensureLeadingSlash(trimmed));\n};\n\nconst addSubsitePath = (path: string, subsitePath: string) => {\n if (!path || path === '/') return subsitePath;\n if (path.startsWith(subsitePath)) return path;\n return `${subsitePath}${path.startsWith('/') ? '' : '/'}${path}`;\n};\n\nconst trimSubsitePath = (path: string, subsitePath: string) => {\n if (!path.startsWith(subsitePath)) return path;\n const stripped = path.slice(subsitePath.length);\n return stripped ? stripped : '/';\n};\n\n/**\n * Retrieves a subsite path from the request headers in SSR or the global window object in CSR.\n * @param request The SSR request.\n * @returns The normalized subsite path.\n */\nexport const getSubsitePath = (request?: Request) =>\n isSSR\n ? normalizeSubsitePath(request?.headers?.['subsite_path'] as string)\n : window.subsitePath;\n\nexport const transformPathForSubsite = (\n path: string,\n request?: Request\n): {\n clientPath: string;\n contentPath: string;\n subsitePath?: string;\n} => {\n const subsitePath = getSubsitePath(request);\n if (!subsitePath) return { clientPath: path, contentPath: path };\n\n return {\n clientPath: isSSR ? trimSubsitePath(path, subsitePath) : path,\n contentPath: isSSR ? path : addSubsitePath(path, subsitePath),\n subsitePath,\n };\n};\n","import { Request, Response } from 'express';\nimport React, {\n PropsWithChildren,\n createContext,\n useContext,\n useState,\n} from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useDispatch } from 'react-redux';\nimport { SSRAccessMethod, SSRContext as SSRContextType } from '~/models';\nimport { cachedSearchWithContext } from '~/util/CachedDeliveryApi';\nimport { CookieHelper } from '~/user/util/CookieHelper.class';\nimport { getSubsitePath } from './subsite';\n\nconst SSRContext = createContext<SSRContextType | null>(null);\n\n/**\n * SSRContextProvider allows us to hold and access request-scoped references\n * throughout the component tree\n *\n * adding this in client side allows consumers to write universal code and use\n * the same helpers and request-scoped refs for api, cookies and redux dispatcher\n * as in SSR */\nexport const SSRContextProvider = ({\n accessMethod,\n children,\n request,\n response,\n}: PropsWithChildren<{\n accessMethod?: SSRAccessMethod;\n request?: Request;\n response?: Response;\n}>) => {\n // In SSR pass references to things in backing sagas\n // we cannot access in a global scope\n const dispatch = useDispatch();\n const cookies = new CookieHelper(...useCookies());\n const api = cachedSearchWithContext({ cookies, dispatch, request, response });\n const subsitePath = getSubsitePath(request);\n\n const [context] = useState<SSRContextType>({\n accessMethod,\n api,\n cookies,\n dispatch,\n request,\n response,\n subsitePath,\n });\n\n return (\n <SSRContext.Provider value={{ ...context }}>{children}</SSRContext.Provider>\n );\n};\n\n/**\n * Server side usage provides access to request-scoped references throughout the component tree\n *\n * Client side usage allows consumers to write universal code, using the same\n * helpers and request-scoped refs for api, cookies and redux dispatcher as in SSR\n * @returns SSRContextType\n */\nexport const useSSRContext = () => useContext(SSRContext) as SSRContextType;\n\nexport const useDeliveryApi = () => {\n const { api } = useSSRContext();\n return api;\n};\n"],"names":["isSSR","window","ensureLeadingSlash","value","startsWith","trimTrailingSlash","length","endsWith","slice","normalizeSubsitePath","path","trimmed","trim","addSubsitePath","subsitePath","trimSubsitePath","stripped","getSubsitePath","request","_request$headers","headers","transformPathForSubsite","clientPath","contentPath","SSRContext","createContext","SSRContextProvider","accessMethod","children","response","dispatch","useDispatch","cookies","CookieHelper","useCookies","api","cachedSearchWithContext","context","useState","React","createElement","Provider","useSSRContext","useContext","useDeliveryApi"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { g as getDefaultExportFromCjs } from './_commonjsHelpers-BFTU3MAI.js';
2
2
  import React from 'react';
3
3
  import { connect } from 'react-redux';
4
4
  import mapJson from 'jsonpath-mapper';
5
- import { f as selectCurrentProject } from './selectors-8ROQrTd7.js';
6
- import { s as selectVersionStatus, a as selectCommitRef, b as selectBuildNumber } from './version-BQAL8sQO.js';
5
+ import { I as selectCurrentProject } from './selectors-Dj45vPZR.js';
6
+ import { b as selectVersionStatus, a as selectCommitRef, s as selectBuildNumber } from './version-hQnuV0n7.js';
7
7
  import styled from 'styled-components';
8
8
 
9
9
  var stringifyStrings_1;
@@ -90,7 +90,7 @@ const VersionInfoStyledTable = styled.table.withConfig({
90
90
  componentId: "sc-ogujr7-0"
91
91
  })(["font-family:'Source Sans Pro',Helvetica,Arial,sans-serif;font-size:1.6rem;line-height:1.5rem;border-bottom:4px solid #8892bf;border-collapse:separate;margin:0 auto;width:80%;th{text-align:left;background-color:#c4c9df;border-bottom:#8892bf 2px solid;border-bottom-color:#8892bf;border-top:20px solid #fff;}td{border-bottom:1px solid #eee;}td,th{padding:0.5rem 0.75rem;vertical-align:top;}.left{width:25%;}tr th{border-right:hidden;border-spacing:0 15px;}.green{background-color:#9c9;border-bottom:1px solid #696;}.red{background-color:#c99;border-bottom:1px solid #966;}.small{font-size:100%;line-height:2.4rem;}"]);
92
92
 
93
- const VersionInfo = ({
93
+ const VersionInfo$1 = ({
94
94
  deliveryApi,
95
95
  devEnv,
96
96
  disableSsrRedux,
@@ -167,7 +167,7 @@ const VersionInfo = ({
167
167
  key: key
168
168
  }, "[ ", k, ": ", v, " ]"))))));
169
169
  };
170
- var VersionInfo$1 = connect(mapStateToVersionInfo)(VersionInfo);
170
+ var VersionInfo = connect(mapStateToVersionInfo)(VersionInfo$1);
171
171
 
172
- export { VersionInfo$1 as V, stringifyStrings as s };
173
- //# sourceMappingURL=VersionInfo-By2ZCZOh.js.map
172
+ export { VersionInfo as V, stringifyStrings as s };
173
+ //# sourceMappingURL=VersionInfo-BinQYaU1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionInfo-By2ZCZOh.js","sources":["../src/util/stringifyStrings.js","../src/app/pages/VersionInfo/transformations/state-to-versioninfoprops.mapper.ts","../src/app/pages/VersionInfo/components/VersionInfo.styled.tsx","../src/app/pages/VersionInfo/components/VersionInfo.tsx"],"sourcesContent":["const stringifyStrings = obj => {\n const returnObj = Array.isArray(obj) ? [] : {};\n Object.entries(obj).forEach(([key, value]) => {\n switch (typeof value) {\n case 'string':\n returnObj[key] = JSON.stringify(value);\n break;\n case 'object':\n returnObj[key] = stringifyStrings(value);\n break;\n default:\n returnObj[key] = value;\n break;\n }\n });\n return returnObj;\n};\n\nmodule.exports = stringifyStrings;\n","import { default as mapJson } from '~/util/json-mapper';\nimport { selectCurrentProject } from '~/routing/redux/selectors';\nimport {\n selectBuildNumber,\n selectCommitRef,\n selectVersionStatus,\n} from '~/redux/selectors/version';\nimport { IVersionInfoProps } from '../components/VersionInfo';\n\nconst context = (\n typeof window != 'undefined' ? window : global\n) as typeof globalThis & {\n DISABLE_SSR_REDUX: any;\n PACKAGE_JSON: any;\n PROJECTS: any;\n PROXY_DELIVERY_API: any;\n PUBLIC_URI: any;\n REVERSE_PROXY_PATHS: string[];\n SERVERS: any;\n};\n\nconst isDev = process.env.NODE_ENV === 'development';\n\nconst pj = () =>\n isDev\n ? PACKAGE_JSON /* global PACKAGE_JSON */\n : context.PACKAGE_JSON || { name: 'packagejson not found', repository: '' };\n\nconst versionInfoProps = {\n packageDetail: () => {\n const pkg = pj();\n return { name: pkg.name, version: pkg.version, repository: pkg.repository };\n },\n uris: {\n gitRepo: () => pj().repository,\n commit: state => {\n const commitRef = selectCommitRef(state);\n return `${pj().repository}/commit/${commitRef ? commitRef : ''}`;\n },\n pipeline: state => {\n const buildNumber = selectBuildNumber(state);\n return `${pj().repository}/${\n pj().repository.includes('github.com') ? 'actions/runs' : 'pipelines'\n }/${buildNumber ? buildNumber : ''}`;\n },\n },\n zenPackageVersions: () => [\n ...(Object.entries(pj().devDependencies || {}).filter(\n ([pkg]) => pkg.includes('zengenti') || pkg.includes('contensis')\n ) || []),\n ...(Object.entries(pj().dependencies || {}).filter(\n ([pkg]) => pkg.includes('zengenti') || pkg.includes('contensis')\n ) || []),\n ],\n deliveryApi: () =>\n JSON.parse(\n JSON.stringify(DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */)\n ),\n devEnv: () =>\n typeof DEV_ENV !== 'undefined' /* global DEV_ENV */ ? DEV_ENV : null,\n disableSsrRedux: () =>\n isDev\n ? DISABLE_SSR_REDUX /* global DISABLE_SSR_REDUX*/\n : context.DISABLE_SSR_REDUX || false,\n nodeEnv: () => process.env.NODE_ENV || 'production',\n packagejson: () => pj() || {},\n projects: () => (isDev ? PROJECTS /* global PROJECTS */ : context.PROJECTS),\n proxyDeliveryApi: () =>\n isDev\n ? PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n : context.PROXY_DELIVERY_API || false,\n publicUri: () =>\n isDev ? PUBLIC_URI /* global PUBLIC_URI */ : context.PUBLIC_URI || null,\n project: state => selectCurrentProject(state),\n reverseProxyPaths: () =>\n isDev\n ? REVERSE_PROXY_PATHS /* global REVERSE_PROXY_PATHS */\n : context.REVERSE_PROXY_PATHS || {},\n servers: () => (isDev ? SERVERS /* global SERVERS */ : context.SERVERS),\n version: {\n buildNumber: state => selectBuildNumber(state),\n commitRef: state => selectCommitRef(state),\n contensisVersionStatus: state => selectVersionStatus(state),\n },\n};\n\nconst mapStateToVersionInfo = state => {\n const mappedProps = mapJson(state, versionInfoProps);\n return mappedProps as IVersionInfoProps;\n};\n\nexport default mapStateToVersionInfo;\n","import styled from 'styled-components';\n\nexport const VersionInfoStyledTable = styled.table`\n font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;\n font-size: 1.6rem;\n line-height: 1.5rem;\n border-bottom: 4px solid #8892bf;\n border-collapse: separate;\n margin: 0 auto;\n width: 80%;\n th {\n text-align: left;\n background-color: #c4c9df;\n border-bottom: #8892bf 2px solid;\n border-bottom-color: #8892bf;\n border-top: 20px solid #fff;\n }\n td {\n border-bottom: 1px solid #eee;\n }\n td,\n th {\n padding: 0.5rem 0.75rem;\n vertical-align: top;\n }\n .left {\n width: 25%;\n }\n tr th {\n border-right: hidden;\n border-spacing: 0 15px;\n }\n .green {\n background-color: #9c9;\n border-bottom: 1px solid #696;\n }\n .red {\n background-color: #c99;\n border-bottom: 1px solid #966;\n }\n .small {\n font-size: 100%;\n line-height: 2.4rem;\n }\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport mapStateToVersionInfo from '../transformations/state-to-versioninfoprops.mapper';\n\nimport { VersionInfoStyledTable } from './VersionInfo.styled';\n\nexport interface IVersionInfoProps {\n deliveryApi: {\n rootUrl: string;\n accessToken: string;\n projectId: string;\n livePublishingRootUrl: string;\n };\n devEnv: { [k: string]: string };\n disableSsrRedux: boolean;\n nodeEnv: string;\n packageDetail: any;\n project: string;\n projects;\n proxyDeliveryApi;\n publicUri: string;\n reverseProxyPaths: string[];\n servers: {\n alias: string;\n api: string;\n cms: string;\n web: string;\n iis: string;\n previewIis: string;\n previewWeb: string;\n };\n uris: {\n gitRepo: string;\n commit: string;\n pipeline: string;\n };\n version: {\n buildNumber: string;\n commitRef: string;\n contensisVersionStatus: string;\n };\n zenPackageVersions: string[];\n}\n\nconst VersionInfo = ({\n deliveryApi,\n devEnv,\n disableSsrRedux,\n nodeEnv,\n packageDetail,\n project,\n projects,\n proxyDeliveryApi,\n publicUri,\n reverseProxyPaths,\n servers,\n uris,\n version,\n zenPackageVersions,\n}: IVersionInfoProps) => {\n return (\n <VersionInfoStyledTable>\n <thead>\n <tr>\n <td colSpan={2}>\n <h1>\n <a href=\"/\">Version Information</a>\n </h1>\n </td>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th colSpan={2}>Package detail</th>\n </tr>\n <tr>\n <td className=\"left\">Name</td>\n <td>{packageDetail.name}</td>\n </tr>\n <tr>\n <td className=\"left\">Version</td>\n <td>{packageDetail.version}</td>\n </tr>\n <tr>\n <th colSpan={2}>Version info (state)</th>\n </tr>\n <tr>\n <td>Git repo url: </td>\n <td>\n <a\n href={packageDetail.repository}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {packageDetail.repository}\n </a>\n </td>\n </tr>\n <tr>\n <td>Pipeline: </td>\n <td>\n <a href={uris.pipeline} target=\"_blank\" rel=\"noopener noreferrer\">\n {version.buildNumber}\n </a>\n </td>\n </tr>\n <tr>\n <td>Commit: </td>\n <td>\n <a href={uris.commit} target=\"_blank\" rel=\"noopener noreferrer\">\n {version.commitRef}\n </a>\n </td>\n </tr>\n {/* <tr>\n <td>Last release ref: </td>\n <td></td>\n </tr>\n <tr>\n <td>Number of commits since last release: </td>\n <td></td>\n </tr> */}\n <tr>\n <td>Project</td>\n <td className={project === 'unknown' ? 'red' : ''}>{project}</td>\n </tr>\n <tr>\n <td>Contensis version status: </td>\n <td\n className={\n version.contensisVersionStatus === 'published' ? 'green' : 'red'\n }\n >\n {version.contensisVersionStatus}\n </td>\n </tr>\n <tr>\n <th colSpan={2}>Build configuration</th>\n </tr>\n <tr>\n <td>Environment</td>\n <td>{servers.alias}</td>\n </tr>\n <tr>\n <td>Public uri</td>\n <td>{publicUri}</td>\n </tr>\n <tr>\n <td>Zengenti packages</td>\n <td>\n {zenPackageVersions.map(([pkg, ver], idx) => (\n <div key={idx}>\n {pkg}: {ver}\n </div>\n ))}\n </td>\n </tr>\n <tr>\n <td>Servers</td>\n <td className=\"small\">\n <div>web: {servers.web}</div>\n <div>preview: {servers.previewWeb}</div>\n <div>api: {servers.api}</div>\n <div>cms: {servers.cms}</div>\n <div>iis: {servers.iis}</div>\n <div>iis preview: {servers.previewIis}</div>\n </td>\n </tr>\n <tr>\n <td>Reverse proxy paths</td>\n <td>\n {Object.entries(reverseProxyPaths).map(([, path], key) => (\n <span key={key}>[ {path} ] </span>\n ))}\n </td>\n </tr>\n <tr>\n <td>Projects</td>\n <td>\n {Object.entries(\n projects as {\n id: string;\n publicUri: string;\n }[]\n ).map(([, project], key) => (\n <div key={key}>\n [ {project.id}: {project.publicUri} ]\n </div>\n ))}\n </td>\n </tr>\n <tr>\n <td>Delivery API</td>\n <td className=\"small\">\n <ul style={{ margin: 0, padding: 0 }}>\n {Object.entries(deliveryApi).map(\n ([key, value]: [string, any], idx) => {\n if (typeof value === 'object') return null;\n return (\n <li key={idx} style={{ listStyleType: 'none' }}>\n {key}: <span>{value}</span>\n </li>\n );\n }\n )}\n </ul>\n </td>\n </tr>\n <tr>\n <td>Proxy Delivery API requests</td>\n <td className={proxyDeliveryApi ? 'green' : 'red'}>\n {proxyDeliveryApi.toString()}\n </td>\n </tr>\n <tr>\n <td>Disable SSR inline-redux</td>\n <td>{disableSsrRedux.toString()}</td>\n </tr>\n <tr>\n <td>NODE_ENV</td>\n <td className={nodeEnv === 'production' ? 'green' : 'red'}>\n {nodeEnv.toString()}\n </td>\n </tr>\n {devEnv && (\n <tr>\n <td>process.env</td>\n <td>\n {Object.entries(devEnv).map(([k, v], key) => (\n <div key={key}>\n [ {k}: {v} ]\n </div>\n ))}\n </td>\n </tr>\n )}\n </tbody>\n </VersionInfoStyledTable>\n );\n};\n\nexport default connect(mapStateToVersionInfo)(VersionInfo);\n"],"names":["stringifyStrings","obj","returnObj","Array","isArray","Object","entries","forEach","key","value","JSON","stringify","module","context","window","global","isDev","process","env","NODE_ENV","pj","PACKAGE_JSON","name","repository","versionInfoProps","packageDetail","pkg","version","uris","gitRepo","commit","state","commitRef","selectCommitRef","pipeline","buildNumber","selectBuildNumber","includes","zenPackageVersions","devDependencies","filter","dependencies","deliveryApi","parse","DELIVERY_API_CONFIG","devEnv","DEV_ENV","disableSsrRedux","DISABLE_SSR_REDUX","nodeEnv","packagejson","projects","PROJECTS","proxyDeliveryApi","PROXY_DELIVERY_API","publicUri","PUBLIC_URI","project","selectCurrentProject","reverseProxyPaths","REVERSE_PROXY_PATHS","servers","SERVERS","contensisVersionStatus","selectVersionStatus","mapStateToVersionInfo","mappedProps","mapJson","VersionInfoStyledTable","styled","table","withConfig","displayName","componentId","VersionInfo","React","createElement","colSpan","href","className","target","rel","alias","map","ver","idx","web","previewWeb","api","cms","iis","previewIis","path","id","style","margin","padding","listStyleType","toString","k","v","connect"],"mappings":"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"}
1
+ {"version":3,"file":"VersionInfo-BinQYaU1.js","sources":["../src/util/stringifyStrings.js","../src/app/pages/VersionInfo/transformations/state-to-versioninfoprops.mapper.ts","../src/app/pages/VersionInfo/components/VersionInfo.styled.tsx","../src/app/pages/VersionInfo/components/VersionInfo.tsx"],"sourcesContent":["const stringifyStrings = obj => {\n const returnObj = Array.isArray(obj) ? [] : {};\n Object.entries(obj).forEach(([key, value]) => {\n switch (typeof value) {\n case 'string':\n returnObj[key] = JSON.stringify(value);\n break;\n case 'object':\n returnObj[key] = stringifyStrings(value);\n break;\n default:\n returnObj[key] = value;\n break;\n }\n });\n return returnObj;\n};\n\nmodule.exports = stringifyStrings;\n","import { default as mapJson } from '~/util/json-mapper';\nimport { selectCurrentProject } from '~/routing/redux/selectors';\nimport {\n selectBuildNumber,\n selectCommitRef,\n selectVersionStatus,\n} from '~/redux/selectors/version';\nimport { IVersionInfoProps } from '../components/VersionInfo';\n\nconst context = (\n typeof window != 'undefined' ? window : global\n) as typeof globalThis & {\n DISABLE_SSR_REDUX: any;\n PACKAGE_JSON: any;\n PROJECTS: any;\n PROXY_DELIVERY_API: any;\n PUBLIC_URI: any;\n REVERSE_PROXY_PATHS: string[];\n SERVERS: any;\n};\n\nconst isDev = process.env.NODE_ENV === 'development';\n\nconst pj = () =>\n isDev\n ? PACKAGE_JSON /* global PACKAGE_JSON */\n : context.PACKAGE_JSON || { name: 'packagejson not found', repository: '' };\n\nconst versionInfoProps = {\n packageDetail: () => {\n const pkg = pj();\n return { name: pkg.name, version: pkg.version, repository: pkg.repository };\n },\n uris: {\n gitRepo: () => pj().repository,\n commit: state => {\n const commitRef = selectCommitRef(state);\n return `${pj().repository}/commit/${commitRef ? commitRef : ''}`;\n },\n pipeline: state => {\n const buildNumber = selectBuildNumber(state);\n return `${pj().repository}/${\n pj().repository.includes('github.com') ? 'actions/runs' : 'pipelines'\n }/${buildNumber ? buildNumber : ''}`;\n },\n },\n zenPackageVersions: () => [\n ...(Object.entries(pj().devDependencies || {}).filter(\n ([pkg]) => pkg.includes('zengenti') || pkg.includes('contensis')\n ) || []),\n ...(Object.entries(pj().dependencies || {}).filter(\n ([pkg]) => pkg.includes('zengenti') || pkg.includes('contensis')\n ) || []),\n ],\n deliveryApi: () =>\n JSON.parse(\n JSON.stringify(DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */)\n ),\n devEnv: () =>\n typeof DEV_ENV !== 'undefined' /* global DEV_ENV */ ? DEV_ENV : null,\n disableSsrRedux: () =>\n isDev\n ? DISABLE_SSR_REDUX /* global DISABLE_SSR_REDUX*/\n : context.DISABLE_SSR_REDUX || false,\n nodeEnv: () => process.env.NODE_ENV || 'production',\n packagejson: () => pj() || {},\n projects: () => (isDev ? PROJECTS /* global PROJECTS */ : context.PROJECTS),\n proxyDeliveryApi: () =>\n isDev\n ? PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n : context.PROXY_DELIVERY_API || false,\n publicUri: () =>\n isDev ? PUBLIC_URI /* global PUBLIC_URI */ : context.PUBLIC_URI || null,\n project: state => selectCurrentProject(state),\n reverseProxyPaths: () =>\n isDev\n ? REVERSE_PROXY_PATHS /* global REVERSE_PROXY_PATHS */\n : context.REVERSE_PROXY_PATHS || {},\n servers: () => (isDev ? SERVERS /* global SERVERS */ : context.SERVERS),\n version: {\n buildNumber: state => selectBuildNumber(state),\n commitRef: state => selectCommitRef(state),\n contensisVersionStatus: state => selectVersionStatus(state),\n },\n};\n\nconst mapStateToVersionInfo = state => {\n const mappedProps = mapJson(state, versionInfoProps);\n return mappedProps as IVersionInfoProps;\n};\n\nexport default mapStateToVersionInfo;\n","import styled from 'styled-components';\n\nexport const VersionInfoStyledTable = styled.table`\n font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif;\n font-size: 1.6rem;\n line-height: 1.5rem;\n border-bottom: 4px solid #8892bf;\n border-collapse: separate;\n margin: 0 auto;\n width: 80%;\n th {\n text-align: left;\n background-color: #c4c9df;\n border-bottom: #8892bf 2px solid;\n border-bottom-color: #8892bf;\n border-top: 20px solid #fff;\n }\n td {\n border-bottom: 1px solid #eee;\n }\n td,\n th {\n padding: 0.5rem 0.75rem;\n vertical-align: top;\n }\n .left {\n width: 25%;\n }\n tr th {\n border-right: hidden;\n border-spacing: 0 15px;\n }\n .green {\n background-color: #9c9;\n border-bottom: 1px solid #696;\n }\n .red {\n background-color: #c99;\n border-bottom: 1px solid #966;\n }\n .small {\n font-size: 100%;\n line-height: 2.4rem;\n }\n`;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport mapStateToVersionInfo from '../transformations/state-to-versioninfoprops.mapper';\n\nimport { VersionInfoStyledTable } from './VersionInfo.styled';\n\nexport interface IVersionInfoProps {\n deliveryApi: {\n rootUrl: string;\n accessToken: string;\n projectId: string;\n livePublishingRootUrl: string;\n };\n devEnv: { [k: string]: string };\n disableSsrRedux: boolean;\n nodeEnv: string;\n packageDetail: any;\n project: string;\n projects;\n proxyDeliveryApi;\n publicUri: string;\n reverseProxyPaths: string[];\n servers: {\n alias: string;\n api: string;\n cms: string;\n web: string;\n iis: string;\n previewIis: string;\n previewWeb: string;\n };\n uris: {\n gitRepo: string;\n commit: string;\n pipeline: string;\n };\n version: {\n buildNumber: string;\n commitRef: string;\n contensisVersionStatus: string;\n };\n zenPackageVersions: string[];\n}\n\nconst VersionInfo = ({\n deliveryApi,\n devEnv,\n disableSsrRedux,\n nodeEnv,\n packageDetail,\n project,\n projects,\n proxyDeliveryApi,\n publicUri,\n reverseProxyPaths,\n servers,\n uris,\n version,\n zenPackageVersions,\n}: IVersionInfoProps) => {\n return (\n <VersionInfoStyledTable>\n <thead>\n <tr>\n <td colSpan={2}>\n <h1>\n <a href=\"/\">Version Information</a>\n </h1>\n </td>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th colSpan={2}>Package detail</th>\n </tr>\n <tr>\n <td className=\"left\">Name</td>\n <td>{packageDetail.name}</td>\n </tr>\n <tr>\n <td className=\"left\">Version</td>\n <td>{packageDetail.version}</td>\n </tr>\n <tr>\n <th colSpan={2}>Version info (state)</th>\n </tr>\n <tr>\n <td>Git repo url: </td>\n <td>\n <a\n href={packageDetail.repository}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {packageDetail.repository}\n </a>\n </td>\n </tr>\n <tr>\n <td>Pipeline: </td>\n <td>\n <a href={uris.pipeline} target=\"_blank\" rel=\"noopener noreferrer\">\n {version.buildNumber}\n </a>\n </td>\n </tr>\n <tr>\n <td>Commit: </td>\n <td>\n <a href={uris.commit} target=\"_blank\" rel=\"noopener noreferrer\">\n {version.commitRef}\n </a>\n </td>\n </tr>\n {/* <tr>\n <td>Last release ref: </td>\n <td></td>\n </tr>\n <tr>\n <td>Number of commits since last release: </td>\n <td></td>\n </tr> */}\n <tr>\n <td>Project</td>\n <td className={project === 'unknown' ? 'red' : ''}>{project}</td>\n </tr>\n <tr>\n <td>Contensis version status: </td>\n <td\n className={\n version.contensisVersionStatus === 'published' ? 'green' : 'red'\n }\n >\n {version.contensisVersionStatus}\n </td>\n </tr>\n <tr>\n <th colSpan={2}>Build configuration</th>\n </tr>\n <tr>\n <td>Environment</td>\n <td>{servers.alias}</td>\n </tr>\n <tr>\n <td>Public uri</td>\n <td>{publicUri}</td>\n </tr>\n <tr>\n <td>Zengenti packages</td>\n <td>\n {zenPackageVersions.map(([pkg, ver], idx) => (\n <div key={idx}>\n {pkg}: {ver}\n </div>\n ))}\n </td>\n </tr>\n <tr>\n <td>Servers</td>\n <td className=\"small\">\n <div>web: {servers.web}</div>\n <div>preview: {servers.previewWeb}</div>\n <div>api: {servers.api}</div>\n <div>cms: {servers.cms}</div>\n <div>iis: {servers.iis}</div>\n <div>iis preview: {servers.previewIis}</div>\n </td>\n </tr>\n <tr>\n <td>Reverse proxy paths</td>\n <td>\n {Object.entries(reverseProxyPaths).map(([, path], key) => (\n <span key={key}>[ {path} ] </span>\n ))}\n </td>\n </tr>\n <tr>\n <td>Projects</td>\n <td>\n {Object.entries(\n projects as {\n id: string;\n publicUri: string;\n }[]\n ).map(([, project], key) => (\n <div key={key}>\n [ {project.id}: {project.publicUri} ]\n </div>\n ))}\n </td>\n </tr>\n <tr>\n <td>Delivery API</td>\n <td className=\"small\">\n <ul style={{ margin: 0, padding: 0 }}>\n {Object.entries(deliveryApi).map(\n ([key, value]: [string, any], idx) => {\n if (typeof value === 'object') return null;\n return (\n <li key={idx} style={{ listStyleType: 'none' }}>\n {key}: <span>{value}</span>\n </li>\n );\n }\n )}\n </ul>\n </td>\n </tr>\n <tr>\n <td>Proxy Delivery API requests</td>\n <td className={proxyDeliveryApi ? 'green' : 'red'}>\n {proxyDeliveryApi.toString()}\n </td>\n </tr>\n <tr>\n <td>Disable SSR inline-redux</td>\n <td>{disableSsrRedux.toString()}</td>\n </tr>\n <tr>\n <td>NODE_ENV</td>\n <td className={nodeEnv === 'production' ? 'green' : 'red'}>\n {nodeEnv.toString()}\n </td>\n </tr>\n {devEnv && (\n <tr>\n <td>process.env</td>\n <td>\n {Object.entries(devEnv).map(([k, v], key) => (\n <div key={key}>\n [ {k}: {v} ]\n </div>\n ))}\n </td>\n </tr>\n )}\n </tbody>\n </VersionInfoStyledTable>\n );\n};\n\nexport default connect(mapStateToVersionInfo)(VersionInfo);\n"],"names":["stringifyStrings","obj","returnObj","Array","isArray","Object","entries","forEach","key","value","JSON","stringify","module","context","window","global","isDev","process","env","NODE_ENV","pj","PACKAGE_JSON","name","repository","versionInfoProps","packageDetail","pkg","version","uris","gitRepo","commit","state","commitRef","selectCommitRef","pipeline","buildNumber","selectBuildNumber","includes","zenPackageVersions","devDependencies","filter","dependencies","deliveryApi","parse","DELIVERY_API_CONFIG","devEnv","DEV_ENV","disableSsrRedux","DISABLE_SSR_REDUX","nodeEnv","packagejson","projects","PROJECTS","proxyDeliveryApi","PROXY_DELIVERY_API","publicUri","PUBLIC_URI","project","selectCurrentProject","reverseProxyPaths","REVERSE_PROXY_PATHS","servers","SERVERS","contensisVersionStatus","selectVersionStatus","mapStateToVersionInfo","mappedProps","mapJson","VersionInfoStyledTable","styled","table","withConfig","displayName","componentId","VersionInfo","React","createElement","colSpan","href","className","target","rel","alias","map","ver","idx","web","previewWeb","api","cms","iis","previewIis","path","id","style","margin","padding","listStyleType","toString","k","v","connect"],"mappings":"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"}