@zengenti/contensis-react-base 3.1.1-beta.8 → 3.2.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.
Files changed (148) hide show
  1. package/README.md +36 -0
  2. package/cjs/{App-4c9e6d1b.js → App-8a2f85d5.js} +90 -74
  3. package/cjs/App-8a2f85d5.js.map +1 -0
  4. package/cjs/{ChangePassword.container-15acbce2.js → ChangePassword.container-efcb1fcd.js} +27 -28
  5. package/cjs/ChangePassword.container-efcb1fcd.js.map +1 -0
  6. package/{esm/ToJs-48b1f586.js → cjs/CookieHelper.class-34994aa1.js} +11 -97
  7. package/cjs/CookieHelper.class-34994aa1.js.map +1 -0
  8. package/cjs/{RouteLoader-190ac009.js → RouteLoader-4fb33db9.js} +10 -6
  9. package/cjs/RouteLoader-4fb33db9.js.map +1 -0
  10. package/cjs/{ContensisDeliveryApi-d63b3d39.js → SSRContext-433c53e4.js} +103 -42
  11. package/cjs/SSRContext-433c53e4.js.map +1 -0
  12. package/cjs/ToJs-7f965106.js +128 -0
  13. package/cjs/ToJs-7f965106.js.map +1 -0
  14. package/cjs/client.js +20 -20
  15. package/cjs/client.js.map +1 -1
  16. package/cjs/contensis-react-base.js +44 -34
  17. package/cjs/contensis-react-base.js.map +1 -1
  18. package/cjs/forms.js +54 -14
  19. package/cjs/forms.js.map +1 -1
  20. package/cjs/redux.js +16 -16
  21. package/cjs/redux.js.map +1 -1
  22. package/cjs/routing.js +13 -4
  23. package/cjs/routing.js.map +1 -1
  24. package/cjs/{sagas-e04b94c1.js → sagas-4e8b68f0.js} +8 -4
  25. package/cjs/sagas-4e8b68f0.js.map +1 -0
  26. package/cjs/search.js +1 -1
  27. package/cjs/{selectors-8e56cc34.js → selectors-e3f1fd85.js} +240 -3
  28. package/cjs/selectors-e3f1fd85.js.map +1 -0
  29. package/cjs/{version-bb4a3418.js → store-665c229b.js} +7 -23
  30. package/cjs/store-665c229b.js.map +1 -0
  31. package/cjs/user.js +9 -10
  32. package/cjs/user.js.map +1 -1
  33. package/cjs/util.js +14 -10
  34. package/cjs/util.js.map +1 -1
  35. package/cjs/{version-c2a37225.js → version-3b05d6c8.js} +17 -17
  36. package/cjs/{version-c2a37225.js.map → version-3b05d6c8.js.map} +1 -1
  37. package/cjs/version-7b43af3e.js +20 -0
  38. package/cjs/version-7b43af3e.js.map +1 -0
  39. package/esm/{App-b8c75933.js → App-91d81f0c.js} +59 -43
  40. package/esm/App-91d81f0c.js.map +1 -0
  41. package/esm/{ChangePassword.container-6a1c60f3.js → ChangePassword.container-96dab474.js} +4 -5
  42. package/esm/ChangePassword.container-96dab474.js.map +1 -0
  43. package/{cjs/ToJs-374a7fbd.js → esm/CookieHelper.class-6d649751.js} +5 -129
  44. package/esm/CookieHelper.class-6d649751.js.map +1 -0
  45. package/esm/{RouteLoader-487b5a9b.js → RouteLoader-94ca1c51.js} +10 -6
  46. package/esm/RouteLoader-94ca1c51.js.map +1 -0
  47. package/esm/{ContensisDeliveryApi-7b71bb3e.js → SSRContext-88841734.js} +95 -41
  48. package/esm/SSRContext-88841734.js.map +1 -0
  49. package/esm/ToJs-67b34be1.js +98 -0
  50. package/esm/ToJs-67b34be1.js.map +1 -0
  51. package/esm/client.js +18 -18
  52. package/esm/client.js.map +1 -1
  53. package/esm/contensis-react-base.js +31 -21
  54. package/esm/contensis-react-base.js.map +1 -1
  55. package/esm/forms.js +54 -14
  56. package/esm/forms.js.map +1 -1
  57. package/esm/redux.js +7 -7
  58. package/esm/routing.js +13 -4
  59. package/esm/routing.js.map +1 -1
  60. package/esm/{sagas-933a8fc8.js → sagas-66c305a8.js} +8 -4
  61. package/esm/sagas-66c305a8.js.map +1 -0
  62. package/esm/search.js +2 -2
  63. package/esm/selectors-d2bdfe22.js +396 -0
  64. package/esm/selectors-d2bdfe22.js.map +1 -0
  65. package/esm/{version-f6660b69.js → store-f524c50d.js} +4 -16
  66. package/esm/store-f524c50d.js.map +1 -0
  67. package/esm/user.js +7 -8
  68. package/esm/user.js.map +1 -1
  69. package/esm/util.js +6 -5
  70. package/esm/util.js.map +1 -1
  71. package/esm/version-7f50b694.js +15 -0
  72. package/esm/version-7f50b694.js.map +1 -0
  73. package/esm/{version-5a0b9406.js → version-dcc28b32.js} +3 -3
  74. package/esm/{version-5a0b9406.js.map → version-dcc28b32.js.map} +1 -1
  75. package/models/app/App.d.ts +1 -1
  76. package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +1 -1
  77. package/models/client/client.d.ts +1 -1
  78. package/models/index.d.ts +1 -2
  79. package/models/models/AppRouteProps.d.ts +11 -0
  80. package/models/{redux/appstate.d.ts → models/AppState.d.ts} +1 -1
  81. package/models/models/ContentTypeMapping.d.ts +29 -0
  82. package/models/models/EntryMapper.d.ts +3 -0
  83. package/models/models/GetRouteActionArgs.d.ts +15 -0
  84. package/models/models/ReduxInjector.d.ts +5 -0
  85. package/models/models/RequireLogin.d.ts +6 -0
  86. package/models/models/RouteComponent.d.ts +2 -0
  87. package/models/models/RouteComponentProps.d.ts +9 -0
  88. package/models/models/RouteLoaderProps.d.ts +6 -0
  89. package/models/models/RouteNode.d.ts +5 -0
  90. package/models/models/SSRContext.d.ts +11 -0
  91. package/models/models/StaticRoute.d.ts +28 -0
  92. package/models/models/WithEvents.d.ts +29 -0
  93. package/models/models/config/AppConfig.d.ts +12 -0
  94. package/models/{config.d.ts → models/config/ServerConfig.d.ts} +2 -12
  95. package/models/models/config/StateType.d.ts +1 -0
  96. package/models/models/config/index.d.ts +3 -0
  97. package/models/models/index.d.ts +15 -0
  98. package/models/redux/sagas/navigation.d.ts +1 -3
  99. package/models/redux/store/injectors.d.ts +4 -4
  100. package/models/redux/store/store.d.ts +1 -2
  101. package/models/routing/components/RouteLoader.d.ts +1 -1
  102. package/models/routing/redux/actions.d.ts +2 -3
  103. package/models/routing/redux/selectors.d.ts +2 -2
  104. package/models/routing/util/find-contenttype-mapping.d.ts +1 -1
  105. package/models/routing/util/queries.d.ts +2 -2
  106. package/models/search/models/Queries.d.ts +2 -1
  107. package/models/search/models/Search.d.ts +3 -0
  108. package/models/search/search/ContensisDeliveryApi.d.ts +2 -2
  109. package/models/server/features/caching/cacheDuration.schema.d.ts +1 -0
  110. package/models/server/features/linkdepth-api/search.d.ts +1 -1
  111. package/models/server/internalServer.d.ts +1 -1
  112. package/models/server/util/bundles.d.ts +1 -1
  113. package/models/server/util/headers.d.ts +1 -1
  114. package/models/server/webApp.d.ts +1 -1
  115. package/models/user/redux/selectors.d.ts +1 -2
  116. package/models/user/util/matchGroups.d.ts +1 -1
  117. package/models/util/CachedDeliveryApi.d.ts +11 -10
  118. package/models/util/ContensisDeliveryApi.d.ts +9 -6
  119. package/models/util/SSRContext.d.ts +30 -0
  120. package/models/util/index.d.ts +1 -0
  121. package/models/util/json-mapper.d.ts +1 -2
  122. package/package.json +3 -3
  123. package/cjs/App-4c9e6d1b.js.map +0 -1
  124. package/cjs/ChangePassword.container-15acbce2.js.map +0 -1
  125. package/cjs/ContensisDeliveryApi-d63b3d39.js.map +0 -1
  126. package/cjs/CookieConstants-000427db.js +0 -10
  127. package/cjs/CookieConstants-000427db.js.map +0 -1
  128. package/cjs/RouteLoader-190ac009.js.map +0 -1
  129. package/cjs/ToJs-374a7fbd.js.map +0 -1
  130. package/cjs/reducers-ea1b2dc0.js +0 -236
  131. package/cjs/reducers-ea1b2dc0.js.map +0 -1
  132. package/cjs/sagas-e04b94c1.js.map +0 -1
  133. package/cjs/selectors-8e56cc34.js.map +0 -1
  134. package/cjs/version-bb4a3418.js.map +0 -1
  135. package/esm/App-b8c75933.js.map +0 -1
  136. package/esm/ChangePassword.container-6a1c60f3.js.map +0 -1
  137. package/esm/ContensisDeliveryApi-7b71bb3e.js.map +0 -1
  138. package/esm/CookieConstants-3d3b6531.js +0 -6
  139. package/esm/CookieConstants-3d3b6531.js.map +0 -1
  140. package/esm/RouteLoader-487b5a9b.js.map +0 -1
  141. package/esm/ToJs-48b1f586.js.map +0 -1
  142. package/esm/reducers-919da5e0.js +0 -213
  143. package/esm/reducers-919da5e0.js.map +0 -1
  144. package/esm/sagas-933a8fc8.js.map +0 -1
  145. package/esm/selectors-1f0cc787.js +0 -182
  146. package/esm/selectors-1f0cc787.js.map +0 -1
  147. package/esm/version-f6660b69.js.map +0 -1
  148. package/models/routing/routes.d.ts +0 -127
@@ -1,5 +1,8 @@
1
- import { g as getImmutableOrJS } from './selectors-1f0cc787.js';
2
- import React from 'react';
1
+ 'use strict';
2
+
3
+ const LOGIN_COOKIE = 'ContensisCMSUserName';
4
+ const REFRESH_TOKEN_COOKIE = 'RefreshToken';
5
+ const findLoginCookies = cookies => typeof cookies === 'object' ? Object.fromEntries(Object.entries(cookies).filter(([name]) => [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name))) : cookies;
3
6
 
4
7
  /*!
5
8
  * cookie
@@ -327,71 +330,6 @@ var Cookies = /** @class */ (function () {
327
330
  }());
328
331
  var Cookies$1 = Cookies;
329
332
 
330
- const selectUserIsLoading = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isLoading']);
331
- const selectUserIsAuthenticated = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticated']);
332
- const selectUserIsAuthenticationError = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticationError']);
333
- const selectUserIsError = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isError']);
334
-
335
- /**
336
- * DEPRECATED 12/2021 - use selectUserErrorMessage instead
337
- * @param state AppState
338
- * @returns string
339
- */
340
- const selectUserAuthenticationErrorMessage = state => getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
341
- const selectUserErrorMessage = state => getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
342
- const selectClientCredentials = (state, returnType) => getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials'], {}, returnType);
343
- const selectUser = (state, returnType) => getImmutableOrJS(state, 'user', {}, returnType);
344
- const selectUserIsZengentiStaff = state => getImmutableOrJS(state, ['user', 'isZengentiStaff']);
345
- const selectUserGuid = state => getImmutableOrJS(state, ['user', 'id']);
346
- const selectUsername = state => getImmutableOrJS(state, ['user', 'username']);
347
- const selectUserEmail = state => getImmutableOrJS(state, ['user', 'email']);
348
- const selectUserGroups = (state, returnType) => getImmutableOrJS(state, ['user', 'groups'], [], returnType);
349
- const selectUserSecurityToken = state => getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials', 'contensisClassicToken']);
350
- const selectUserRegistration = (state, returnType) => getImmutableOrJS(state, ['user', 'registration'], {}, returnType);
351
- const selectUserRegistrationError = state => getImmutableOrJS(state, ['user', 'registration', 'error'], false);
352
- const selectUserRegistrationIsLoading = state => getImmutableOrJS(state, ['user', 'registration', 'isLoading'], false);
353
- const selectUserRegistrationIsSuccess = state => getImmutableOrJS(state, ['user', 'registration', 'success'], false);
354
- const selectPasswordResetRequestSending = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'isSending']);
355
- const selectPasswordResetRequestSent = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'sent']);
356
- const selectPasswordResetRequestError = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'error']);
357
- const selectResetPasswordSending = state => getImmutableOrJS(state, ['user', 'resetPassword', 'isSending']);
358
- const selectResetPasswordSent = state => getImmutableOrJS(state, ['user', 'resetPassword', 'sent']);
359
- const selectResetPasswordError = state => getImmutableOrJS(state, ['user', 'resetPassword', 'error']);
360
- const selectChangePasswordSending = state => getImmutableOrJS(state, ['user', 'changePassword', 'isSending']);
361
- const selectChangePasswordSent = state => getImmutableOrJS(state, ['user', 'changePassword', 'sent']);
362
- const selectChangePasswordError = state => getImmutableOrJS(state, ['user', 'changePassword', 'error']);
363
-
364
- var selectors = /*#__PURE__*/Object.freeze({
365
- __proto__: null,
366
- selectUserIsLoading: selectUserIsLoading,
367
- selectUserIsAuthenticated: selectUserIsAuthenticated,
368
- selectUserIsAuthenticationError: selectUserIsAuthenticationError,
369
- selectUserIsError: selectUserIsError,
370
- selectUserAuthenticationErrorMessage: selectUserAuthenticationErrorMessage,
371
- selectUserErrorMessage: selectUserErrorMessage,
372
- selectClientCredentials: selectClientCredentials,
373
- selectUser: selectUser,
374
- selectUserIsZengentiStaff: selectUserIsZengentiStaff,
375
- selectUserGuid: selectUserGuid,
376
- selectUsername: selectUsername,
377
- selectUserEmail: selectUserEmail,
378
- selectUserGroups: selectUserGroups,
379
- selectUserSecurityToken: selectUserSecurityToken,
380
- selectUserRegistration: selectUserRegistration,
381
- selectUserRegistrationError: selectUserRegistrationError,
382
- selectUserRegistrationIsLoading: selectUserRegistrationIsLoading,
383
- selectUserRegistrationIsSuccess: selectUserRegistrationIsSuccess,
384
- selectPasswordResetRequestSending: selectPasswordResetRequestSending,
385
- selectPasswordResetRequestSent: selectPasswordResetRequestSent,
386
- selectPasswordResetRequestError: selectPasswordResetRequestError,
387
- selectResetPasswordSending: selectResetPasswordSending,
388
- selectResetPasswordSent: selectResetPasswordSent,
389
- selectResetPasswordError: selectResetPasswordError,
390
- selectChangePasswordSending: selectChangePasswordSending,
391
- selectChangePasswordSent: selectChangePasswordSent,
392
- selectChangePasswordError: selectChangePasswordError
393
- });
394
-
395
333
  const COOKIE_VALID_DAYS = 1; // 0 = Session cookie
396
334
 
397
335
  // CookieHelper is a class that takes in and lets us pass around the methods provided
@@ -447,33 +385,9 @@ const addDays = (date = new Date(), days) => {
447
385
  return result;
448
386
  };
449
387
 
450
- const matchUserGroup = (userGroups = [], requiredGroups = []) => {
451
- if (!Array.isArray(requiredGroups) || Array.isArray(requiredGroups) && requiredGroups.length === 0) return true;
452
- const groupMatch = requiredGroups.some(requiredGroup => {
453
- return userGroups.some(userGroup => {
454
- if (requiredGroup.id === userGroup.id) {
455
- return true;
456
- }
457
- if (requiredGroup.name === userGroup.name) {
458
- return true;
459
- }
460
- });
461
- });
462
- return groupMatch;
463
- };
464
-
465
- /* eslint-disable react/display-name */
466
- const toJS = WrappedComponent => wrappedComponentProps => {
467
- const KEY = 0;
468
- const VALUE = 1;
469
- const propsJS = Object.entries(wrappedComponentProps).reduce((newProps, wrappedComponentProp) => {
470
- const propKey = wrappedComponentProp[KEY];
471
- const propValue = wrappedComponentProp[VALUE];
472
- newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
473
- return newProps;
474
- }, {});
475
- return /*#__PURE__*/React.createElement(WrappedComponent, propsJS);
476
- };
477
-
478
- export { Cookies$1 as C, selectUserIsAuthenticated as a, selectUserGroups as b, CookieHelper as c, selectUserErrorMessage as d, selectUserIsAuthenticationError as e, selectUserIsError as f, selectUserIsLoading as g, selectUser as h, selectUserRegistrationError as i, selectUserRegistrationIsLoading as j, selectUserRegistrationIsSuccess as k, selectUserRegistration as l, matchUserGroup as m, selectPasswordResetRequestSending as n, selectPasswordResetRequestSent as o, selectPasswordResetRequestError as p, selectResetPasswordSending as q, selectResetPasswordSent as r, selectClientCredentials as s, toJS as t, selectResetPasswordError as u, selectChangePasswordSending as v, selectChangePasswordSent as w, selectUserGuid as x, selectChangePasswordError as y, selectors as z };
479
- //# sourceMappingURL=ToJs-48b1f586.js.map
388
+ exports.CookieHelper = CookieHelper;
389
+ exports.Cookies = Cookies$1;
390
+ exports.LOGIN_COOKIE = LOGIN_COOKIE;
391
+ exports.REFRESH_TOKEN_COOKIE = REFRESH_TOKEN_COOKIE;
392
+ exports.findLoginCookies = findLoginCookies;
393
+ //# sourceMappingURL=CookieHelper.class-34994aa1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CookieHelper.class-34994aa1.js","sources":["../src/user/util/CookieConstants.ts","../node_modules/cookie/index.js","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../src/user/util/CookieHelper.class.ts"],"sourcesContent":["export const LOGIN_COOKIE = 'ContensisCMSUserName';\nexport const REFRESH_TOKEN_COOKIE = 'RefreshToken';\n\nexport type CookieObject = { [name: string]: any };\n\nexport const findLoginCookies = (cookies: CookieObject | string) =>\n typeof cookies === 'object'\n ? Object.fromEntries(\n Object.entries(cookies).filter(([name]) =>\n [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name)\n )\n )\n : cookies;\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import { useCookies } from 'react-cookie';\nimport FallbackCookies from 'universal-cookie';\n\nconst COOKIE_VALID_DAYS = 1; // 0 = Session cookie\n\ntype CookieHook = ReturnType<typeof useCookies>;\ntype Cookies = { [k: string]: string };\ntype SetCookie = CookieHook[1];\ntype RemoveCookie = CookieHook[2];\n\n// CookieHelper is a class that takes in and lets us pass around the methods provided\n// by `useCookie` react hook in backend code that is connected to the universal-cookies\n// instance created in SSR middleware (and provides browser cookies)\nexport class CookieHelper {\n private cookies: Cookies;\n private set?: SetCookie;\n private remove?: RemoveCookie;\n private fallback!: FallbackCookies;\n\n get raw() {\n return this.cookies;\n }\n\n get cookie(): FallbackCookies {\n return (this.set ? this : this.fallback) as FallbackCookies;\n }\n\n constructor(\n cookies?: { [k: string]: string },\n setCookie?: CookieHelper['set'],\n removeCookie?: CookieHelper['remove']\n ) {\n // Add fallback methods if global cookies not supplied\n if (!cookies || !setCookie || !removeCookie)\n this.fallback = new FallbackCookies();\n\n this.cookies = cookies || this.fallback.getAll();\n if (setCookie) this.set = setCookie;\n if (removeCookie) this.remove = removeCookie;\n }\n\n GetCookie(name: string) {\n const cookie = this.cookies[name];\n if (typeof cookie === 'undefined') {\n return null;\n }\n return cookie;\n }\n\n SetCookie(name: string, value: string, maxAgeDays = COOKIE_VALID_DAYS) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n this.cookies[name] = value;\n\n // call the passed setCookie method so we can update the `universal-cookie` instance\n // with the change listener attached so the cookies can be set in SSR response\n if (maxAgeDays === 0) this.cookie.set(name, value);\n else\n this.cookie.set(name, value, {\n expires: addDays(new Date(), maxAgeDays),\n path: '/',\n });\n }\n\n DeleteCookie(name: string) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n delete this.cookies[name];\n\n this.cookie.remove(name, {\n path: '/',\n });\n }\n}\nconst addDays = (date = new Date(), days: number) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const mapCookieHeader = cookies =>\n typeof cookies === 'object'\n ? Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n : cookies;\n"],"names":["LOGIN_COOKIE","REFRESH_TOKEN_COOKIE","findLoginCookies","cookies","Object","fromEntries","entries","filter","name","includes","cookie.parse","this","cookie.serialize","COOKIE_VALID_DAYS","CookieHelper","raw","cookie","set","fallback","constructor","setCookie","removeCookie","remove","FallbackCookies","getAll","GetCookie","SetCookie","value","maxAgeDays","expires","addDays","Date","path","DeleteCookie","date","days","result","setDate","getDate"],"mappings":";;AAAO,MAAMA,YAAY,GAAG,uBAAsB;AAC3C,MAAMC,oBAAoB,GAAG,eAAc;MAIrCC,gBAAgB,GAAIC,OAA8B,IAC7D,OAAOA,OAAO,KAAK,QAAQ,GACvBC,MAAM,CAACC,WAAW,CAChBD,MAAM,CAACE,OAAO,CAACH,OAAO,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,KACpC,CAACR,YAAY,EAAEC,oBAAoB,CAAC,CAACQ,QAAQ,CAACD,IAAI,CAAC,CACpD,CACF,GACDL;;;;;;;;ACJN;AACA;AACA;AACA;AACA;AACA;AACA,IAAa,OAAA,GAAG,KAAK,CAAC;AACtB,IAAiB,WAAA,GAAG,SAAS,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,kBAAkB,CAAC;AAChC,IAAI,MAAM,GAAG,kBAAkB,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,GAAG,uCAAuC,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE;AAC7B,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,GAAE;AACd,EAAE,IAAI,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC;AAC5B,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AACjC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAC;AACjC;AACA;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,SAAS;AACf,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAE;AAC7C;AACA;AACA,IAAI,IAAI,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AAC/B,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAE;AAC7D;AACA;AACA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1B,QAAQ,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;AAC9B,OAAO;AACP;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;AACvC,EAAE,IAAI,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AACjC;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACjC,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtC,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB;AACA,EAAE,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAChD,IAAI,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;AACnD,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;AAC/B;AACA,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC;AACrD,KAAK;AACL;AACA,IAAI,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE;AAClB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC9C,MAAM,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACtD,KAAK;AACL;AACA,IAAI,GAAG,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;AACpC,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE;AAChB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5C,MAAM,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,GAAG,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE;AACnB,IAAI,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE;AACvD,MAAM,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;AACvD,KAAK;AACL;AACA,IAAI,GAAG,IAAI,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACpD,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE;AACpB,IAAI,GAAG,IAAI,YAAY,CAAC;AACxB,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE;AAClB,IAAI,GAAG,IAAI,UAAU,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE;AACpB,IAAI,IAAI,QAAQ,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;AACnD,QAAQ,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC;AAClD;AACA,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,IAAI;AACf,QAAQ,GAAG,IAAI,mBAAmB,CAAC;AACnC,QAAQ,MAAM;AACd,MAAM,KAAK,KAAK;AAChB,QAAQ,GAAG,IAAI,gBAAgB,CAAC;AAChC,QAAQ,MAAM;AACd,MAAM,KAAK,QAAQ;AACnB,QAAQ,GAAG,IAAI,mBAAmB,CAAC;AACnC,QAAQ,MAAM;AACd,MAAM,KAAK,MAAM;AACjB,QAAQ,GAAG,IAAI,iBAAiB,CAAC;AACjC,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE;AAChC,EAAE,IAAI;AACN,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;;ACxMO,SAAS,iBAAiB,GAAG;AACpC;AACA,IAAI,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC/E,CAAC;AAQM,SAAS,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAOO,OAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9D,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,CAAC;AACM,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;AACnD,IAAI,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AAC3C;AACA,QAAQ,UAAU;AAClB,YAAY,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,CAAC;AACvB,CAAC;AACM,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3C,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,IAAI,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI,IAAI,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE;AACzD,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC;AACA,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvD,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB;;ACpDA,IAAI,QAAQ,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,QAAQ,KAAK,YAAY;AACtD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AAGF,IAAI,OAAO,kBAAkB,YAAY;AACzC,IAAI,SAAS,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;AACvC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACtD,QAAQ,IAAI,OAAO,CAAC,YAAY;AAChC,YAAY,KAAK,CAAC,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;AAC5D,SAAS,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,YAAY,EAAE;AACrE,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAGD,OAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACnE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;AACtD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9D,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE;AACnE,QAAQ,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AACjD,QAAQ,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAChD,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACvD,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,YAAY,EAAE;AAChE,QAAQ,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AACjD,QAAQ,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAChD,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACzC,YAAY,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AAC5D,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;AAC7F,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,QAAQ,CAAC,MAAM,GAAGE,WAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AACzE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AACxD,QAAQ,IAAI,YAAY,IAAI,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9H,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAClD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,QAAQ,CAAC,MAAM,GAAGA,WAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,QAAQ,EAAE;AAC9D,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,QAAQ,EAAE;AACjE,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzD,QAAQ,IAAI,GAAG,IAAI,CAAC,EAAE;AACtB,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC;AACL,gBAAe,OAAO;;AC5EtB,MAAMC,iBAAiB,GAAG,CAAC,CAAC;;AAO5B;AACA;AACA;AACO,MAAMC,YAAY,CAAC;EAMxB,IAAIC,GAAGA,GAAG;IACR,OAAO,IAAI,CAACZ,OAAO,CAAA;AACrB,GAAA;EAEA,IAAIa,MAAMA,GAAoB;IAC5B,OAAQ,IAAI,CAACC,GAAG,GAAG,IAAI,GAAG,IAAI,CAACC,QAAQ,CAAA;AACzC,GAAA;AAEAC,EAAAA,WAAWA,CACThB,OAAiC,EACjCiB,SAA+B,EAC/BC,YAAqC,EACrC;AAAA,IAAA,IAAA,CAjBMlB,OAAO,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACPc,GAAG,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACHK,MAAM,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACNJ,QAAQ,GAAA,KAAA,CAAA,CAAA;AAed;AACA,IAAA,IAAI,CAACf,OAAO,IAAI,CAACiB,SAAS,IAAI,CAACC,YAAY,EACzC,IAAI,CAACH,QAAQ,GAAG,IAAIK,SAAe,EAAE,CAAA;IAEvC,IAAI,CAACpB,OAAO,GAAGA,OAAO,IAAI,IAAI,CAACe,QAAQ,CAACM,MAAM,EAAE,CAAA;AAChD,IAAA,IAAIJ,SAAS,EAAE,IAAI,CAACH,GAAG,GAAGG,SAAS,CAAA;AACnC,IAAA,IAAIC,YAAY,EAAE,IAAI,CAACC,MAAM,GAAGD,YAAY,CAAA;AAC9C,GAAA;EAEAI,SAASA,CAACjB,IAAY,EAAE;AACtB,IAAA,MAAMQ,MAAM,GAAG,IAAI,CAACb,OAAO,CAACK,IAAI,CAAC,CAAA;AACjC,IAAA,IAAI,OAAOQ,MAAM,KAAK,WAAW,EAAE;AACjC,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AACA,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;EAEAU,SAASA,CAAClB,IAAY,EAAEmB,KAAa,EAAEC,UAAU,GAAGf,iBAAiB,EAAE;AACrE;AACA,IAAA,IAAI,CAACV,OAAO,CAACK,IAAI,CAAC,GAAGmB,KAAK,CAAA;;AAE1B;AACA;IACA,IAAIC,UAAU,KAAK,CAAC,EAAE,IAAI,CAACZ,MAAM,CAACC,GAAG,CAACT,IAAI,EAAEmB,KAAK,CAAC,CAAC,KAEjD,IAAI,CAACX,MAAM,CAACC,GAAG,CAACT,IAAI,EAAEmB,KAAK,EAAE;MAC3BE,OAAO,EAAEC,OAAO,CAAC,IAAIC,IAAI,EAAE,EAAEH,UAAU,CAAC;AACxCI,MAAAA,IAAI,EAAE,GAAA;AACR,KAAC,CAAC,CAAA;AACN,GAAA;EAEAC,YAAYA,CAACzB,IAAY,EAAE;AACzB;AACA,IAAA,OAAO,IAAI,CAACL,OAAO,CAACK,IAAI,CAAC,CAAA;AAEzB,IAAA,IAAI,CAACQ,MAAM,CAACM,MAAM,CAACd,IAAI,EAAE;AACvBwB,MAAAA,IAAI,EAAE,GAAA;AACR,KAAC,CAAC,CAAA;AACJ,GAAA;AACF,CAAA;AACA,MAAMF,OAAO,GAAGA,CAACI,IAAI,GAAG,IAAIH,IAAI,EAAE,EAAEI,IAAY,KAAK;AACnD,EAAA,MAAMC,MAAM,GAAG,IAAIL,IAAI,CAACG,IAAI,CAAC,CAAA;EAC7BE,MAAM,CAACC,OAAO,CAACD,MAAM,CAACE,OAAO,EAAE,GAAGH,IAAI,CAAC,CAAA;AACvC,EAAA,OAAOC,MAAM,CAAA;AACf,CAAC;;;;;;;;"}
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var reactCookie = require('react-cookie');
5
4
  var reactRedux = require('react-redux');
6
5
  var reactHotLoader = require('react-hot-loader');
7
6
  var reactRouterDom = require('react-router-dom');
8
7
  var reactRouterConfig = require('react-router-config');
9
8
  var reselect = require('reselect');
10
- var selectors = require('./selectors-8e56cc34.js');
11
- var ToJs = require('./ToJs-374a7fbd.js');
9
+ var selectors = require('./selectors-e3f1fd85.js');
10
+ var ToJs = require('./ToJs-7f965106.js');
11
+ var SSRContext = require('./SSRContext-433c53e4.js');
12
12
 
13
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
14
 
@@ -78,7 +78,11 @@ const RouteLoader = ({
78
78
  trailingSlashRedirectCode = 302
79
79
  }) => {
80
80
  const location = reactRouterDom.useLocation();
81
- const cookies = new ToJs.CookieHelper(...reactCookie.useCookies());
81
+
82
+ // In SSR pass references to things in backing sagas
83
+ // we cannot access in a global scope
84
+ const ssrContext = SSRContext.useSSRContext();
85
+
82
86
  // Always ensure paths are trimmed of trailing slashes so urls are always unique
83
87
  const trimmedPath = getTrimmedPath(location.pathname);
84
88
 
@@ -116,7 +120,7 @@ const RouteLoader = ({
116
120
  serverPath = (_route$path2 = route.path) === null || _route$path2 === void 0 ? void 0 : _route$path2.split('/').filter(p => !p.startsWith(':')).join('/');
117
121
  }
118
122
  }
119
- setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, cookies);
123
+ setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, ssrContext);
120
124
  // eslint-disable-next-line react-hooks/exhaustive-deps
121
125
  }, [setNavigationPath,
122
126
  // staticRoute,
@@ -200,4 +204,4 @@ const mapDispatchToProps = {
200
204
  var RouteLoader$1 = reactHotLoader.hot(module)(reactRedux.connect(mapStateToPropsMemoized, mapDispatchToProps)(ToJs.toJS(RouteLoader)));
201
205
 
202
206
  exports.RouteLoader = RouteLoader$1;
203
- //# sourceMappingURL=RouteLoader-190ac009.js.map
207
+ //# sourceMappingURL=RouteLoader-4fb33db9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-4fb33db9.js","sources":["../src/routing/components/NotFound.tsx","../src/routing/components/Status.tsx","../src/routing/components/RouteLoader.tsx"],"sourcesContent":["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, { PropsWithChildren } from 'react';\nimport { Route } from 'react-router-dom';\n\nexport const Status = ({\n code,\n children,\n}: PropsWithChildren<{ code: number }>) => {\n return (\n <Route\n render={({ staticContext }) => {\n if (staticContext) staticContext.statusCode = code;\n return children;\n }}\n />\n );\n};\n","import React, { useEffect, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { hot } from 'react-hot-loader';\nimport { Redirect, useLocation } from 'react-router-dom';\nimport { renderRoutes, matchRoutes, RouteConfig } from 'react-router-config';\nimport { createSelector } from 'reselect';\n\nimport NotFound from './NotFound';\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 { toJS } from '~/util/ToJs';\nimport { useSSRContext } from '~/util/SSRContext';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, RouteComponentProps, RouteLoaderProps } 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 => {\n if (path !== '/') {\n const nextPath = replaceDoubleSlashRecursive(path);\n const lastChar = nextPath[nextPath.length - 1];\n if (lastChar === '/') {\n return nextPath.substring(0, nextPath.length - 1);\n }\n }\n return path;\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 // Match any Static Routes a developer has defined\n const matchedStaticRoute = () =>\n matchRoutes(routes.StaticRoutes as RouteConfig[], location.pathname);\n const isStaticRoute = () => matchedStaticRoute().length > 0;\n\n const staticRoute = isStaticRoute() ? matchedStaticRoute()[0] : undefined;\n const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;\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.match && staticRoute.match.isExact) {\n const { match, route } = staticRoute;\n\n if (route.path?.includes('*')) {\n // Send the whole url to api if we have matched route containing wildcard\n serverPath = match.url;\n } else if (typeof route.fetchNodeLevel === 'number') {\n // Send all url parts to a specified level to api\n serverPath = match.url\n .split('/')\n .splice(0, route.fetchNodeLevel + 1)\n .join('/');\n } else if (route.fetchNode?.params) {\n const fetchNodeParams: string[] = route.fetchNode.params;\n const routeParams: { [key: string]: string } = match.params;\n\n const regexExp = new RegExp(\n Object.keys(routeParams)\n .map(p => `:${p}`)\n .join('|'),\n 'g'\n );\n\n serverPath = match.path\n .replace(/\\?/g, '')\n .replace(regexExp, matched => {\n const param = matched.replace(':', '');\n if (fetchNodeParams.includes(param)) return routeParams[param];\n else return '';\n })\n .replace(/\\/$/, '');\n } else {\n // Send all non-parameterised url parts to api\n serverPath = (route.path as string)\n ?.split('/')\n .filter(p => !p.startsWith(':'))\n .join('/');\n }\n }\n\n setNavigationPath(\n serverPath || trimmedPath,\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 <Status code={trailingSlashRedirectCode}>\n <Redirect to={`${trimmedPath}${location.search}${location.hash}`} />\n </Status>\n );\n }\n\n // Render any Static Routes a developer has defined\n if (isStaticRoute() && !(!isLoggedIn && routeRequiresLogin)) {\n if (matchUserGroup(userGroups, routeRequiresLogin))\n return renderRoutes(\n routes.StaticRoutes as RouteConfig[],\n {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n } as RouteComponentProps\n );\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 hot(module)(\n connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader as any))\n) as unknown as (props: AppRootProps & RouteLoaderProps) => JSX.Element;\n"],"names":["NotFound","statusCode","statusText","React","createElement","Fragment","style","background","color","fontSize","padding","Status","code","children","Route","render","staticContext","replaceDoubleSlashRecursive","path","nextPath","replace","match","getTrimmedPath","lastChar","length","substring","RouteLoader","contentTypeId","entry","isError","isLoading","isLoggedIn","isNotFound","loadingComponent","mappedEntry","notFoundComponent","projectId","routes","setNavigationPath","statePath","userGroups","withEvents","trailingSlashRedirectCode","location","useLocation","ssrContext","useSSRContext","trimmedPath","pathname","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","staticRoute","undefined","routeRequiresLogin","route","requireLogin","setPath","useCallback","serverPath","isExact","_route$path","_route$fetchNode","includes","url","fetchNodeLevel","split","splice","join","fetchNode","params","fetchNodeParams","routeParams","regexExp","RegExp","Object","keys","map","p","matched","param","_route$path2","filter","startsWith","window","useEffect","Redirect","to","search","hash","matchUserGroup","renderRoutes","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","component","NotFoundComponent","console","info","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","hot","module","connect","toJS"],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  'use strict';
2
2
 
3
+ var React = require('react');
4
+ var reactCookie = require('react-cookie');
5
+ var reactRedux = require('react-redux');
3
6
  var contensisDeliveryApi = require('contensis-delivery-api');
4
7
  var queryString = require('query-string');
5
- var selectors = require('./selectors-8e56cc34.js');
6
- var version = require('./version-bb4a3418.js');
7
- var CookieConstants = require('./CookieConstants-000427db.js');
8
+ var selectors = require('./selectors-e3f1fd85.js');
9
+ var store = require('./store-665c229b.js');
10
+ var CookieHelper_class = require('./CookieHelper.class-34994aa1.js');
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
8
15
 
9
16
  class CacheNode {
10
17
  constructor(key, value) {
@@ -79,52 +86,60 @@ class LruCache {
79
86
 
80
87
  // CachedSearch does not cache results in SSR by design
81
88
  class CachedSearch {
82
- constructor(cookies) {
89
+ constructor(ssr) {
90
+ var _this$ssr;
83
91
  this.cache = new LruCache();
84
92
  this.cookies = void 0;
85
- this.cookies = cookies;
93
+ this.ssr = void 0;
94
+ this.ssr = ssr;
95
+ this.cookies = (_this$ssr = this.ssr) === null || _this$ssr === void 0 ? void 0 : _this$ssr.cookies.raw;
86
96
  }
87
97
  getClient(...args) {
88
- return new DeliveryApi(this.cookies).getClient(...args);
98
+ return new DeliveryApi(this.ssr).getClient(...args);
89
99
  }
90
100
  search(query, linkDepth = 0, project) {
91
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
101
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
92
102
  return this.request(`${project}+${JSON.stringify(query)}+${linkDepth}`, () => client.entries.search(query, linkDepth));
93
103
  }
94
104
  searchUsingPost(query, linkDepth = 0, project = '') {
95
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
105
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
96
106
  return this.request(`${project}+${JSON.stringify(query)}+${linkDepth}`, () => client.entries.searchUsingPost(query, linkDepth));
97
107
  }
98
108
  get(id, linkDepth = 0, versionStatus = 'published', project) {
99
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
100
- client.clientConfig.versionStatus = versionStatus;
109
+ const client = contensisDeliveryApi.Client.create({
110
+ ...getClientConfig(project, this.ssr),
111
+ versionStatus
112
+ });
101
113
  return this.request(id, () => client.entries.get({
102
114
  id,
103
115
  linkDepth
104
116
  }));
105
117
  }
106
118
  getContentType(id, project) {
107
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
119
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
108
120
  return this.request(`[CONTENT TYPE] ${id} ${project}`, () => client.contentTypes.get(id));
109
121
  }
110
- getRootNode(options, project) {
111
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
122
+ getRootNode(options, versionStatus = 'published', project) {
123
+ const client = contensisDeliveryApi.Client.create({
124
+ ...getClientConfig(project, this.ssr),
125
+ versionStatus
126
+ });
112
127
  return this.request(`${project} / ${JSON.stringify(options)}`, () => client.nodes.getRoot(options));
113
128
  }
114
129
  getNode(options, project) {
115
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
130
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
116
131
  return this.request(`${project} ${options && typeof options !== 'string' ? 'path' in options ? options.path : options.id : options} ${JSON.stringify(options)}`, () => client.nodes.get(options));
117
132
  }
118
133
  getAncestors(options, project) {
119
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
134
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
120
135
  return this.request(`${project} [A] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getAncestors(options));
121
136
  }
122
137
  getChildren(options, project) {
123
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
138
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
124
139
  return this.request(`${project} [C] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getChildren(options));
125
140
  }
126
141
  getSiblings(options, project) {
127
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
142
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
128
143
  return this.request(`${project} [S] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getSiblings(options));
129
144
  }
130
145
  request(key, execute) {
@@ -140,26 +155,27 @@ class CachedSearch {
140
155
  }
141
156
  }
142
157
  const cachedSearch = new CachedSearch();
143
- const cachedSearchWithCookies = cookies => new CachedSearch(cookies);
158
+ const cachedSearchWithCookies = ssr => new CachedSearch(ssr);
144
159
 
145
160
  const mapCookieHeader = cookies => typeof cookies === 'object' ? Object.entries(cookies).map(([name, value]) => `${name}=${value}`).join('; ') : cookies;
146
161
  const getSsrReferer = () => {
147
162
  if (typeof window === 'undefined') {
148
- const state = version.reduxStore.getState();
163
+ const state = store.reduxStore.getState();
149
164
  const referer = `${selectors.selectCurrentHostname(state)}${selectors.selectCurrentPath(state)}${selectors.selectCurrentSearch(state)}`;
150
165
  return referer;
151
166
  }
152
167
  return '';
153
168
  };
154
- const storeSurrogateKeys = response => {
169
+ const storeSurrogateKeys = ssr => response => {
155
170
  let keys = '';
156
171
  if (response.status === 200) {
157
172
  keys = response.headers.get ? response.headers.get('surrogate-key') : response.headers.map['surrogate-key'];
158
173
  if (!keys) console.info(`[storeSurrogateKeys] No keys in ${response.url}`);
159
174
  }
160
- version.reduxStore === null || version.reduxStore === void 0 ? void 0 : version.reduxStore.dispatch(selectors.setSurrogateKeys(keys, response.url, response.status));
175
+ const put = (ssr === null || ssr === void 0 ? void 0 : ssr.dispatch) || (store.reduxStore === null || store.reduxStore === void 0 ? void 0 : store.reduxStore.dispatch);
176
+ put === null || put === void 0 ? void 0 : put(selectors.setSurrogateKeys(keys, response.url, response.status));
161
177
  };
162
- const deliveryApiConfig = () => {
178
+ const deliveryApiConfig = ssr => {
163
179
  const config = {
164
180
  ...DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */
165
181
  };
@@ -170,9 +186,9 @@ const deliveryApiConfig = () => {
170
186
  'x-crb-ssr': 'true' // add this for support tracing
171
187
  };
172
188
 
173
- if (version.reduxStore) config.defaultHeaders.referer = getSsrReferer();
189
+ if (store.reduxStore) config.defaultHeaders.referer = getSsrReferer();
174
190
  config.responseHandler = {
175
- ['*']: storeSurrogateKeys
191
+ [200]: storeSurrogateKeys(ssr)
176
192
  };
177
193
  }
178
194
  if (typeof window !== 'undefined' && PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */) {
@@ -184,13 +200,13 @@ const deliveryApiConfig = () => {
184
200
  }
185
201
  return config;
186
202
  };
187
- const getClientConfig = (project, cookies) => {
188
- const config = deliveryApiConfig();
203
+ const getClientConfig = (project, ssr) => {
204
+ const config = deliveryApiConfig(ssr);
189
205
  if (project) {
190
206
  config.projectId = project;
191
207
  }
192
- if (cookies) {
193
- const cookieHeader = mapCookieHeader(CookieConstants.findLoginCookies(cookies));
208
+ if (ssr !== null && ssr !== void 0 && ssr.cookies) {
209
+ const cookieHeader = mapCookieHeader(CookieHelper_class.findLoginCookies(ssr.cookies));
194
210
  if (cookieHeader) {
195
211
  config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {
196
212
  Cookie: cookieHeader
@@ -203,8 +219,9 @@ const getClientConfig = (project, cookies) => {
203
219
  // export * from 'contensis-delivery-api';
204
220
 
205
221
  class DeliveryApi {
206
- constructor(cookies) {
222
+ constructor(ssr) {
207
223
  this.cookies = void 0;
224
+ this.ssr = void 0;
208
225
  this.getClientSideVersionStatus = () => {
209
226
  if (typeof window !== 'undefined') {
210
227
  // Allow overriding versionStatus with the querystring
@@ -245,33 +262,77 @@ class DeliveryApi {
245
262
  return 'published';
246
263
  };
247
264
  this.search = (query, linkDepth = 0, project) => {
248
- const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.cookies));
265
+ const client = contensisDeliveryApi.Client.create(getClientConfig(project, this.ssr));
249
266
  return client.entries.search(query, typeof linkDepth !== 'undefined' ? linkDepth : 1);
250
267
  };
251
- this.getClient = (versionStatus = 'published', project) => {
252
- const baseConfig = getClientConfig(project, this.cookies);
253
- baseConfig.versionStatus = versionStatus;
254
- return contensisDeliveryApi.Client.create(baseConfig);
255
- };
268
+ this.getClient = (versionStatus = 'published', project) => contensisDeliveryApi.Client.create({
269
+ ...getClientConfig(project, this.ssr),
270
+ versionStatus
271
+ });
256
272
  this.getEntry = (id, linkDepth = 0, versionStatus = 'published', project) => {
257
- const baseConfig = getClientConfig(project, this.cookies);
258
- baseConfig.versionStatus = versionStatus;
259
- const client = contensisDeliveryApi.Client.create(baseConfig);
260
- // return client.entries.get(id, linkDepth);
273
+ const client = contensisDeliveryApi.Client.create({
274
+ ...getClientConfig(project, this.ssr),
275
+ versionStatus
276
+ });
261
277
  return client.entries.get({
262
278
  id,
263
279
  linkDepth
264
280
  });
265
281
  };
266
- this.cookies = cookies;
282
+ this.ssr = ssr;
283
+ this.cookies = ssr === null || ssr === void 0 ? void 0 : ssr.cookies.raw;
267
284
  }
268
285
  }
269
286
  const deliveryApi = new DeliveryApi();
270
- const deliveryApiWithCookies = cookies => new DeliveryApi(cookies);
287
+ const deliveryApiWithCookies = ssr => new DeliveryApi(ssr);
288
+
289
+ const SSRContext = /*#__PURE__*/React.createContext(null);
290
+
291
+ /** SSRContextProvider allows us to hold and access request-scoped references
292
+ * throughout the component tree
293
+ *
294
+ * adding this in client side allows consumers to write universal code and use
295
+ * the same helpers and refs as in SSR */
296
+ const SSRContextProvider = ({
297
+ children,
298
+ request,
299
+ response
300
+ }) => {
301
+ // In SSR pass references to things in backing sagas
302
+ // we cannot access in a global scope
303
+ const dispatch = reactRedux.useDispatch();
304
+ const cookies = new CookieHelper_class.CookieHelper(...reactCookie.useCookies());
305
+ const api = cachedSearchWithCookies({
306
+ cookies,
307
+ dispatch
308
+ });
309
+ const [context] = React.useState({
310
+ api,
311
+ cookies,
312
+ dispatch,
313
+ request,
314
+ response
315
+ });
316
+ return /*#__PURE__*/React__default["default"].createElement(SSRContext.Provider, {
317
+ value: {
318
+ ...context
319
+ }
320
+ }, children);
321
+ };
322
+ const useSSRContext = () => React.useContext(SSRContext);
323
+ const useDeliveryApi = () => {
324
+ const {
325
+ api
326
+ } = useSSRContext();
327
+ return api;
328
+ };
271
329
 
330
+ exports.SSRContextProvider = SSRContextProvider;
272
331
  exports.cachedSearch = cachedSearch;
273
332
  exports.cachedSearchWithCookies = cachedSearchWithCookies;
274
333
  exports.deliveryApi = deliveryApi;
275
334
  exports.deliveryApiWithCookies = deliveryApiWithCookies;
276
335
  exports.getClientConfig = getClientConfig;
277
- //# sourceMappingURL=ContensisDeliveryApi-d63b3d39.js.map
336
+ exports.useDeliveryApi = useDeliveryApi;
337
+ exports.useSSRContext = useSSRContext;
338
+ //# sourceMappingURL=SSRContext-433c53e4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSRContext-433c53e4.js","sources":["../src/util/LruCache.js","../src/util/CachedDeliveryApi.ts","../src/util/ContensisDeliveryApi.ts","../src/util/SSRContext.tsx"],"sourcesContent":["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\nclass 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 ) {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return this.request(id, () => client.entries.get({ id, linkDepth }));\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\nexport const cachedSearch = new CachedSearch();\nexport const cachedSearchWithCookies = (ssr?: SSRContext) =>\n new CachedSearch(ssr);\n","import { VersionStatus } from 'contensis-core-api';\nimport { Client, Query } from 'contensis-delivery-api';\nimport { Config } from 'contensis-delivery-api/lib/models';\nimport { parse } from 'query-string';\nimport { setSurrogateKeys } from '~/routing/redux/actions';\nimport { reduxStore } from '~/redux/store/store';\nimport {\n selectCurrentHostname,\n selectCurrentPath,\n selectCurrentSearch,\n} from '~/routing/redux/selectors';\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 = () => {\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\nconst storeSurrogateKeys = (ssr?: SSRContext) => (response: any) => {\n let keys = '';\n if (response.status === 200) {\n keys = response.headers.get\n ? response.headers.get('surrogate-key')\n : response.headers.map['surrogate-key'];\n if (!keys) console.info(`[storeSurrogateKeys] No keys in ${response.url}`);\n }\n const put = ssr?.dispatch || reduxStore?.dispatch;\n put?.(setSurrogateKeys(keys, response.url, response.status));\n};\n\nconst deliveryApiConfig = (ssr?: SSRContext) => {\n const config: Config = {\n ...DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */,\n };\n\n if (typeof window === 'undefined') {\n config.defaultHeaders = {\n 'x-require-surrogate-key': 'true',\n 'x-crb-ssr': 'true', // add this for support tracing\n };\n if (reduxStore) config.defaultHeaders.referer = getSsrReferer();\n\n config.responseHandler = { [200]: storeSurrogateKeys(ssr) };\n }\n\n if (\n typeof window !== 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = '';\n config.responseHandler = { [404]: () => null };\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 request.query.versionStatus ||\n deliveryApi.getVersionStatusFromHeaders(request.headers) ||\n deliveryApi.getVersionStatusFromHostname(request.hostname);\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","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 { SSRContext as SSRContextType } from '~/models';\nimport { cachedSearchWithCookies } from '~/util/CachedDeliveryApi';\nimport { CookieHelper } from '~/user/util/CookieHelper.class';\n\nconst SSRContext = createContext<SSRContextType | null>(null);\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 refs as in SSR */\nexport const SSRContextProvider = ({\n children,\n request,\n response,\n}: PropsWithChildren<{ request?: Request; response?: Response }>) => {\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 = cachedSearchWithCookies({ cookies, dispatch });\n\n const [context] = useState<SSRContextType>({\n api,\n cookies,\n dispatch,\n request,\n response,\n });\n\n return (\n <SSRContext.Provider value={{ ...context }}>{children}</SSRContext.Provider>\n );\n};\n\nexport const useSSRContext = () => useContext(SSRContext) as SSRContextType;\n\nexport const useDeliveryApi = () => {\n const { api } = useSSRContext();\n return api;\n};\n"],"names":["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","getContentType","contentTypes","getRootNode","options","nodes","getRoot","getNode","path","getAncestors","getChildren","getSiblings","execute","window","promise","catch","cachedSearch","cachedSearchWithCookies","mapCookieHeader","Object","name","join","getSsrReferer","state","reduxStore","getState","referer","selectCurrentHostname","selectCurrentPath","selectCurrentSearch","storeSurrogateKeys","response","keys","status","headers","console","info","url","put","dispatch","setSurrogateKeys","deliveryApiConfig","config","DELIVERY_API_CONFIG","defaultHeaders","responseHandler","PROXY_DELIVERY_API","rootUrl","projectId","cookieHeader","findLoginCookies","assign","Cookie","getClientSideVersionStatus","parse","location","currentHostname","hostname","getVersionStatusFromHostname","getServerSideVersionStatus","deliveryApi","getVersionStatusFromHeaders","versionStatusHeader","indexOf","endsWith","getEntry","deliveryApiWithCookies","SSRContext","createContext","SSRContextProvider","children","useDispatch","CookieHelper","useCookies","api","context","useState","React","createElement","Provider","useSSRContext","useContext","useDeliveryApi"],"mappings":"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"}