@zengenti/contensis-react-base 3.1.1-beta.9 → 3.2.1-beta.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-50a16d58.js} +9 -7
  25. package/cjs/sagas-50a16d58.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-cf693497.js} +9 -7
  61. package/esm/sagas-cf693497.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,12 +1,12 @@
1
1
  import React, { useCallback, useEffect } from 'react';
2
- import { useCookies } from 'react-cookie';
3
2
  import { connect } from 'react-redux';
4
3
  import { hot } from 'react-hot-loader';
5
4
  import { Route, useLocation, Redirect } from 'react-router-dom';
6
5
  import { matchRoutes, renderRoutes } from 'react-router-config';
7
6
  import { createSelector } from 'reselect';
8
- import { r as selectRouteEntryContentTypeId, a as selectRouteEntry, t as selectRouteIsError, u as selectIsNotFound, v as selectRouteLoading, l as selectMappedEntry, b as selectCurrentProject, w as selectCurrentPath, x as selectRouteStatusCode, y as selectRouteErrorMessage, z as setNavigationPath } from './selectors-1f0cc787.js';
9
- import { a as selectUserIsAuthenticated, b as selectUserGroups, t as toJS, c as CookieHelper, m as matchUserGroup } from './ToJs-48b1f586.js';
7
+ import { H as selectRouteEntryContentTypeId, b as selectRouteEntry, I as selectRouteIsError, J as selectIsNotFound, K as selectRouteLoading, m as selectMappedEntry, c as selectCurrentProject, L as selectCurrentPath, M as selectRouteStatusCode, N as selectRouteErrorMessage, O as setNavigationPath } from './selectors-d2bdfe22.js';
8
+ import { a as selectUserIsAuthenticated, b as selectUserGroups, t as toJS, m as matchUserGroup } from './ToJs-67b34be1.js';
9
+ import { u as useSSRContext } from './SSRContext-88841734.js';
10
10
 
11
11
  const NotFound = ({
12
12
  statusCode,
@@ -72,7 +72,11 @@ const RouteLoader = ({
72
72
  trailingSlashRedirectCode = 302
73
73
  }) => {
74
74
  const location = useLocation();
75
- const cookies = new CookieHelper(...useCookies());
75
+
76
+ // In SSR pass references to things in backing sagas
77
+ // we cannot access in a global scope
78
+ const ssrContext = useSSRContext();
79
+
76
80
  // Always ensure paths are trimmed of trailing slashes so urls are always unique
77
81
  const trimmedPath = getTrimmedPath(location.pathname);
78
82
 
@@ -110,7 +114,7 @@ const RouteLoader = ({
110
114
  serverPath = (_route$path2 = route.path) === null || _route$path2 === void 0 ? void 0 : _route$path2.split('/').filter(p => !p.startsWith(':')).join('/');
111
115
  }
112
116
  }
113
- setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, cookies);
117
+ setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, ssrContext);
114
118
  // eslint-disable-next-line react-hooks/exhaustive-deps
115
119
  }, [setNavigationPath,
116
120
  // staticRoute,
@@ -194,4 +198,4 @@ const mapDispatchToProps = {
194
198
  var RouteLoader$1 = hot(module)(connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader)));
195
199
 
196
200
  export { RouteLoader$1 as R };
197
- //# sourceMappingURL=RouteLoader-487b5a9b.js.map
201
+ //# sourceMappingURL=RouteLoader-94ca1c51.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-94ca1c51.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,8 +1,11 @@
1
+ import React, { useState, useContext, createContext } from 'react';
2
+ import { useCookies } from 'react-cookie';
3
+ import { useDispatch } from 'react-redux';
1
4
  import { Client } from 'contensis-delivery-api';
2
5
  import { parse } from 'query-string';
3
- import { A as selectCurrentHostname, w as selectCurrentPath, d as selectCurrentSearch, B as setSurrogateKeys } from './selectors-1f0cc787.js';
4
- import { r as reduxStore } from './version-f6660b69.js';
5
- import { f as findLoginCookies } from './CookieConstants-3d3b6531.js';
6
+ import { P as setSurrogateKeys, Q as selectCurrentHostname, L as selectCurrentPath, e as selectCurrentSearch } from './selectors-d2bdfe22.js';
7
+ import { r as reduxStore } from './store-f524c50d.js';
8
+ import { f as findLoginCookies, a as CookieHelper } from './CookieHelper.class-6d649751.js';
6
9
 
7
10
  class CacheNode {
8
11
  constructor(key, value) {
@@ -77,52 +80,60 @@ class LruCache {
77
80
 
78
81
  // CachedSearch does not cache results in SSR by design
79
82
  class CachedSearch {
80
- constructor(cookies) {
83
+ constructor(ssr) {
84
+ var _this$ssr;
81
85
  this.cache = new LruCache();
82
86
  this.cookies = void 0;
83
- this.cookies = cookies;
87
+ this.ssr = void 0;
88
+ this.ssr = ssr;
89
+ this.cookies = (_this$ssr = this.ssr) === null || _this$ssr === void 0 ? void 0 : _this$ssr.cookies.raw;
84
90
  }
85
91
  getClient(...args) {
86
- return new DeliveryApi(this.cookies).getClient(...args);
92
+ return new DeliveryApi(this.ssr).getClient(...args);
87
93
  }
88
94
  search(query, linkDepth = 0, project) {
89
- const client = Client.create(getClientConfig(project, this.cookies));
95
+ const client = Client.create(getClientConfig(project, this.ssr));
90
96
  return this.request(`${project}+${JSON.stringify(query)}+${linkDepth}`, () => client.entries.search(query, linkDepth));
91
97
  }
92
98
  searchUsingPost(query, linkDepth = 0, project = '') {
93
- const client = Client.create(getClientConfig(project, this.cookies));
99
+ const client = Client.create(getClientConfig(project, this.ssr));
94
100
  return this.request(`${project}+${JSON.stringify(query)}+${linkDepth}`, () => client.entries.searchUsingPost(query, linkDepth));
95
101
  }
96
102
  get(id, linkDepth = 0, versionStatus = 'published', project) {
97
- const client = Client.create(getClientConfig(project, this.cookies));
98
- client.clientConfig.versionStatus = versionStatus;
103
+ const client = Client.create({
104
+ ...getClientConfig(project, this.ssr),
105
+ versionStatus
106
+ });
99
107
  return this.request(id, () => client.entries.get({
100
108
  id,
101
109
  linkDepth
102
110
  }));
103
111
  }
104
112
  getContentType(id, project) {
105
- const client = Client.create(getClientConfig(project, this.cookies));
113
+ const client = Client.create(getClientConfig(project, this.ssr));
106
114
  return this.request(`[CONTENT TYPE] ${id} ${project}`, () => client.contentTypes.get(id));
107
115
  }
108
- getRootNode(options, project) {
109
- const client = Client.create(getClientConfig(project, this.cookies));
116
+ getRootNode(options, versionStatus = 'published', project) {
117
+ const client = Client.create({
118
+ ...getClientConfig(project, this.ssr),
119
+ versionStatus
120
+ });
110
121
  return this.request(`${project} / ${JSON.stringify(options)}`, () => client.nodes.getRoot(options));
111
122
  }
112
123
  getNode(options, project) {
113
- const client = Client.create(getClientConfig(project, this.cookies));
124
+ const client = Client.create(getClientConfig(project, this.ssr));
114
125
  return this.request(`${project} ${options && typeof options !== 'string' ? 'path' in options ? options.path : options.id : options} ${JSON.stringify(options)}`, () => client.nodes.get(options));
115
126
  }
116
127
  getAncestors(options, project) {
117
- const client = Client.create(getClientConfig(project, this.cookies));
128
+ const client = Client.create(getClientConfig(project, this.ssr));
118
129
  return this.request(`${project} [A] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getAncestors(options));
119
130
  }
120
131
  getChildren(options, project) {
121
- const client = Client.create(getClientConfig(project, this.cookies));
132
+ const client = Client.create(getClientConfig(project, this.ssr));
122
133
  return this.request(`${project} [C] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getChildren(options));
123
134
  }
124
135
  getSiblings(options, project) {
125
- const client = Client.create(getClientConfig(project, this.cookies));
136
+ const client = Client.create(getClientConfig(project, this.ssr));
126
137
  return this.request(`${project} [S] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getSiblings(options));
127
138
  }
128
139
  request(key, execute) {
@@ -138,7 +149,7 @@ class CachedSearch {
138
149
  }
139
150
  }
140
151
  const cachedSearch = new CachedSearch();
141
- const cachedSearchWithCookies = cookies => new CachedSearch(cookies);
152
+ const cachedSearchWithCookies = ssr => new CachedSearch(ssr);
142
153
 
143
154
  const mapCookieHeader = cookies => typeof cookies === 'object' ? Object.entries(cookies).map(([name, value]) => `${name}=${value}`).join('; ') : cookies;
144
155
  const getSsrReferer = () => {
@@ -149,15 +160,16 @@ const getSsrReferer = () => {
149
160
  }
150
161
  return '';
151
162
  };
152
- const storeSurrogateKeys = response => {
163
+ const storeSurrogateKeys = ssr => response => {
153
164
  let keys = '';
154
165
  if (response.status === 200) {
155
166
  keys = response.headers.get ? response.headers.get('surrogate-key') : response.headers.map['surrogate-key'];
156
167
  if (!keys) console.info(`[storeSurrogateKeys] No keys in ${response.url}`);
157
168
  }
158
- reduxStore === null || reduxStore === void 0 ? void 0 : reduxStore.dispatch(setSurrogateKeys(keys, response.url, response.status));
169
+ const put = (ssr === null || ssr === void 0 ? void 0 : ssr.dispatch) || (reduxStore === null || reduxStore === void 0 ? void 0 : reduxStore.dispatch);
170
+ put === null || put === void 0 ? void 0 : put(setSurrogateKeys(keys, response.url, response.status));
159
171
  };
160
- const deliveryApiConfig = () => {
172
+ const deliveryApiConfig = ssr => {
161
173
  const config = {
162
174
  ...DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */
163
175
  };
@@ -170,7 +182,7 @@ const deliveryApiConfig = () => {
170
182
 
171
183
  if (reduxStore) config.defaultHeaders.referer = getSsrReferer();
172
184
  config.responseHandler = {
173
- ['*']: storeSurrogateKeys
185
+ [200]: storeSurrogateKeys(ssr)
174
186
  };
175
187
  }
176
188
  if (typeof window !== 'undefined' && PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */) {
@@ -182,13 +194,13 @@ const deliveryApiConfig = () => {
182
194
  }
183
195
  return config;
184
196
  };
185
- const getClientConfig = (project, cookies) => {
186
- const config = deliveryApiConfig();
197
+ const getClientConfig = (project, ssr) => {
198
+ const config = deliveryApiConfig(ssr);
187
199
  if (project) {
188
200
  config.projectId = project;
189
201
  }
190
- if (cookies) {
191
- const cookieHeader = mapCookieHeader(findLoginCookies(cookies));
202
+ if (ssr !== null && ssr !== void 0 && ssr.cookies) {
203
+ const cookieHeader = mapCookieHeader(findLoginCookies(ssr.cookies));
192
204
  if (cookieHeader) {
193
205
  config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {
194
206
  Cookie: cookieHeader
@@ -201,8 +213,9 @@ const getClientConfig = (project, cookies) => {
201
213
  // export * from 'contensis-delivery-api';
202
214
 
203
215
  class DeliveryApi {
204
- constructor(cookies) {
216
+ constructor(ssr) {
205
217
  this.cookies = void 0;
218
+ this.ssr = void 0;
206
219
  this.getClientSideVersionStatus = () => {
207
220
  if (typeof window !== 'undefined') {
208
221
  // Allow overriding versionStatus with the querystring
@@ -243,29 +256,70 @@ class DeliveryApi {
243
256
  return 'published';
244
257
  };
245
258
  this.search = (query, linkDepth = 0, project) => {
246
- const client = Client.create(getClientConfig(project, this.cookies));
259
+ const client = Client.create(getClientConfig(project, this.ssr));
247
260
  return client.entries.search(query, typeof linkDepth !== 'undefined' ? linkDepth : 1);
248
261
  };
249
- this.getClient = (versionStatus = 'published', project) => {
250
- const baseConfig = getClientConfig(project, this.cookies);
251
- baseConfig.versionStatus = versionStatus;
252
- return Client.create(baseConfig);
253
- };
262
+ this.getClient = (versionStatus = 'published', project) => Client.create({
263
+ ...getClientConfig(project, this.ssr),
264
+ versionStatus
265
+ });
254
266
  this.getEntry = (id, linkDepth = 0, versionStatus = 'published', project) => {
255
- const baseConfig = getClientConfig(project, this.cookies);
256
- baseConfig.versionStatus = versionStatus;
257
- const client = Client.create(baseConfig);
258
- // return client.entries.get(id, linkDepth);
267
+ const client = Client.create({
268
+ ...getClientConfig(project, this.ssr),
269
+ versionStatus
270
+ });
259
271
  return client.entries.get({
260
272
  id,
261
273
  linkDepth
262
274
  });
263
275
  };
264
- this.cookies = cookies;
276
+ this.ssr = ssr;
277
+ this.cookies = ssr === null || ssr === void 0 ? void 0 : ssr.cookies.raw;
265
278
  }
266
279
  }
267
280
  const deliveryApi = new DeliveryApi();
268
- const deliveryApiWithCookies = cookies => new DeliveryApi(cookies);
281
+ const deliveryApiWithCookies = ssr => new DeliveryApi(ssr);
282
+
283
+ const SSRContext = /*#__PURE__*/createContext(null);
284
+
285
+ /** SSRContextProvider allows us to hold and access request-scoped references
286
+ * throughout the component tree
287
+ *
288
+ * adding this in client side allows consumers to write universal code and use
289
+ * the same helpers and refs as in SSR */
290
+ const SSRContextProvider = ({
291
+ children,
292
+ request,
293
+ response
294
+ }) => {
295
+ // In SSR pass references to things in backing sagas
296
+ // we cannot access in a global scope
297
+ const dispatch = useDispatch();
298
+ const cookies = new CookieHelper(...useCookies());
299
+ const api = cachedSearchWithCookies({
300
+ cookies,
301
+ dispatch
302
+ });
303
+ const [context] = useState({
304
+ api,
305
+ cookies,
306
+ dispatch,
307
+ request,
308
+ response
309
+ });
310
+ return /*#__PURE__*/React.createElement(SSRContext.Provider, {
311
+ value: {
312
+ ...context
313
+ }
314
+ }, children);
315
+ };
316
+ const useSSRContext = () => useContext(SSRContext);
317
+ const useDeliveryApi = () => {
318
+ const {
319
+ api
320
+ } = useSSRContext();
321
+ return api;
322
+ };
269
323
 
270
- export { cachedSearchWithCookies as a, deliveryApiWithCookies as b, cachedSearch as c, deliveryApi as d, getClientConfig as g };
271
- //# sourceMappingURL=ContensisDeliveryApi-7b71bb3e.js.map
324
+ export { SSRContextProvider as S, cachedSearchWithCookies as a, deliveryApiWithCookies as b, cachedSearch as c, deliveryApi as d, useDeliveryApi as e, getClientConfig as g, useSSRContext as u };
325
+ //# sourceMappingURL=SSRContext-88841734.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSRContext-88841734.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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"}
@@ -0,0 +1,98 @@
1
+ import { g as getImmutableOrJS } from './selectors-d2bdfe22.js';
2
+ import React from 'react';
3
+
4
+ const selectUserIsLoading = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isLoading']);
5
+ const selectUserIsAuthenticated = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticated']);
6
+ const selectUserIsAuthenticationError = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticationError']);
7
+ const selectUserIsError = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isError']);
8
+
9
+ /**
10
+ * DEPRECATED 12/2021 - use selectUserErrorMessage instead
11
+ * @param state AppState
12
+ * @returns string
13
+ */
14
+ const selectUserAuthenticationErrorMessage = state => getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
15
+ const selectUserErrorMessage = state => getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
16
+ const selectClientCredentials = (state, returnType) => getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials'], {}, returnType);
17
+ const selectUser = (state, returnType) => getImmutableOrJS(state, 'user', {}, returnType);
18
+ const selectUserIsZengentiStaff = state => getImmutableOrJS(state, ['user', 'isZengentiStaff']);
19
+ const selectUserGuid = state => getImmutableOrJS(state, ['user', 'id']);
20
+ const selectUsername = state => getImmutableOrJS(state, ['user', 'username']);
21
+ const selectUserEmail = state => getImmutableOrJS(state, ['user', 'email']);
22
+ const selectUserGroups = (state, returnType) => getImmutableOrJS(state, ['user', 'groups'], [], returnType);
23
+ const selectUserSecurityToken = state => getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials', 'contensisClassicToken']);
24
+ const selectUserRegistration = (state, returnType) => getImmutableOrJS(state, ['user', 'registration'], {}, returnType);
25
+ const selectUserRegistrationError = state => getImmutableOrJS(state, ['user', 'registration', 'error'], false);
26
+ const selectUserRegistrationIsLoading = state => getImmutableOrJS(state, ['user', 'registration', 'isLoading'], false);
27
+ const selectUserRegistrationIsSuccess = state => getImmutableOrJS(state, ['user', 'registration', 'success'], false);
28
+ const selectPasswordResetRequestSending = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'isSending']);
29
+ const selectPasswordResetRequestSent = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'sent']);
30
+ const selectPasswordResetRequestError = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'error']);
31
+ const selectResetPasswordSending = state => getImmutableOrJS(state, ['user', 'resetPassword', 'isSending']);
32
+ const selectResetPasswordSent = state => getImmutableOrJS(state, ['user', 'resetPassword', 'sent']);
33
+ const selectResetPasswordError = state => getImmutableOrJS(state, ['user', 'resetPassword', 'error']);
34
+ const selectChangePasswordSending = state => getImmutableOrJS(state, ['user', 'changePassword', 'isSending']);
35
+ const selectChangePasswordSent = state => getImmutableOrJS(state, ['user', 'changePassword', 'sent']);
36
+ const selectChangePasswordError = state => getImmutableOrJS(state, ['user', 'changePassword', 'error']);
37
+
38
+ var selectors = /*#__PURE__*/Object.freeze({
39
+ __proto__: null,
40
+ selectUserIsLoading: selectUserIsLoading,
41
+ selectUserIsAuthenticated: selectUserIsAuthenticated,
42
+ selectUserIsAuthenticationError: selectUserIsAuthenticationError,
43
+ selectUserIsError: selectUserIsError,
44
+ selectUserAuthenticationErrorMessage: selectUserAuthenticationErrorMessage,
45
+ selectUserErrorMessage: selectUserErrorMessage,
46
+ selectClientCredentials: selectClientCredentials,
47
+ selectUser: selectUser,
48
+ selectUserIsZengentiStaff: selectUserIsZengentiStaff,
49
+ selectUserGuid: selectUserGuid,
50
+ selectUsername: selectUsername,
51
+ selectUserEmail: selectUserEmail,
52
+ selectUserGroups: selectUserGroups,
53
+ selectUserSecurityToken: selectUserSecurityToken,
54
+ selectUserRegistration: selectUserRegistration,
55
+ selectUserRegistrationError: selectUserRegistrationError,
56
+ selectUserRegistrationIsLoading: selectUserRegistrationIsLoading,
57
+ selectUserRegistrationIsSuccess: selectUserRegistrationIsSuccess,
58
+ selectPasswordResetRequestSending: selectPasswordResetRequestSending,
59
+ selectPasswordResetRequestSent: selectPasswordResetRequestSent,
60
+ selectPasswordResetRequestError: selectPasswordResetRequestError,
61
+ selectResetPasswordSending: selectResetPasswordSending,
62
+ selectResetPasswordSent: selectResetPasswordSent,
63
+ selectResetPasswordError: selectResetPasswordError,
64
+ selectChangePasswordSending: selectChangePasswordSending,
65
+ selectChangePasswordSent: selectChangePasswordSent,
66
+ selectChangePasswordError: selectChangePasswordError
67
+ });
68
+
69
+ const matchUserGroup = (userGroups = [], requiredGroups = []) => {
70
+ if (!Array.isArray(requiredGroups) || Array.isArray(requiredGroups) && requiredGroups.length === 0) return true;
71
+ const groupMatch = requiredGroups.some(requiredGroup => {
72
+ return userGroups.some(userGroup => {
73
+ if (requiredGroup.id === userGroup.id) {
74
+ return true;
75
+ }
76
+ if (requiredGroup.name === userGroup.name) {
77
+ return true;
78
+ }
79
+ });
80
+ });
81
+ return groupMatch;
82
+ };
83
+
84
+ /* eslint-disable react/display-name */
85
+ const toJS = WrappedComponent => wrappedComponentProps => {
86
+ const KEY = 0;
87
+ const VALUE = 1;
88
+ const propsJS = Object.entries(wrappedComponentProps).reduce((newProps, wrappedComponentProp) => {
89
+ const propKey = wrappedComponentProp[KEY];
90
+ const propValue = wrappedComponentProp[VALUE];
91
+ newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
92
+ return newProps;
93
+ }, {});
94
+ return /*#__PURE__*/React.createElement(WrappedComponent, propsJS);
95
+ };
96
+
97
+ export { selectUserIsAuthenticated as a, selectUserGroups as b, selectUserErrorMessage as c, selectUserIsAuthenticationError as d, selectUserIsError as e, selectUserIsLoading as f, selectUser as g, selectUserRegistrationError as h, selectUserRegistrationIsLoading as i, selectUserRegistrationIsSuccess as j, selectUserRegistration as k, selectPasswordResetRequestSending as l, matchUserGroup as m, selectPasswordResetRequestSent as n, selectPasswordResetRequestError as o, selectResetPasswordSending as p, selectResetPasswordSent as q, selectResetPasswordError as r, selectClientCredentials as s, toJS as t, selectChangePasswordSending as u, selectChangePasswordSent as v, selectUserGuid as w, selectChangePasswordError as x, selectors as y };
98
+ //# sourceMappingURL=ToJs-67b34be1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToJs-67b34be1.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/util/ToJs.tsx"],"sourcesContent":["import { AppState, StateType } from '~/models';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const selectUserIsLoading = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isLoading']);\n\nexport const selectUserIsAuthenticated = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticated']);\n\nexport const selectUserIsAuthenticationError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticationError']);\n\nexport const selectUserIsError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isError']);\n\n/**\n * DEPRECATED 12/2021 - use selectUserErrorMessage instead\n * @param state AppState\n * @returns string\n */\nexport const selectUserAuthenticationErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectUserErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectClientCredentials = (\n state: AppState,\n returnType?: StateType\n) =>\n getIn(\n state,\n ['user', 'authenticationState', 'clientCredentials'],\n {},\n returnType\n );\n\nexport const selectUser = (state: AppState, returnType?: StateType) =>\n getIn(state, 'user', {}, returnType);\n\nexport const selectUserIsZengentiStaff = (state: AppState) =>\n getIn(state, ['user', 'isZengentiStaff']);\n\nexport const selectUserGuid = (state: AppState) => getIn(state, ['user', 'id']);\n\nexport const selectUsername = (state: AppState) =>\n getIn(state, ['user', 'username']);\n\nexport const selectUserEmail = (state: AppState) =>\n getIn(state, ['user', 'email']);\n\nexport const selectUserGroups = (state: AppState, returnType?: StateType) =>\n getIn(state, ['user', 'groups'], [], returnType);\n\nexport const selectUserSecurityToken = (state: AppState) =>\n getIn(state, [\n 'user',\n 'authenticationState',\n 'clientCredentials',\n 'contensisClassicToken',\n ]);\n\nexport const selectUserRegistration = (\n state: AppState,\n returnType?: StateType\n) => getIn(state, ['user', 'registration'], {}, returnType);\n\nexport const selectUserRegistrationError = (state: AppState) =>\n getIn(state, ['user', 'registration', 'error'], false);\n\nexport const selectUserRegistrationIsLoading = (state: AppState) =>\n getIn(state, ['user', 'registration', 'isLoading'], false);\n\nexport const selectUserRegistrationIsSuccess = (state: AppState) =>\n getIn(state, ['user', 'registration', 'success'], false);\n\nexport const selectPasswordResetRequestSending = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'isSending']);\n\nexport const selectPasswordResetRequestSent = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'sent']);\n\nexport const selectPasswordResetRequestError = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'error']);\n\nexport const selectResetPasswordSending = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'isSending']);\n\nexport const selectResetPasswordSent = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'sent']);\n\nexport const selectResetPasswordError = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'error']);\n\nexport const selectChangePasswordSending = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'isSending']);\n\nexport const selectChangePasswordSent = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'sent']);\n\nexport const selectChangePasswordError = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'error']);\n","import { Group } from 'contensis-management-api/lib/models';\nimport { RequireLogin } from '~/models';\n\nexport const matchUserGroup = (\n userGroups: Group[] = [],\n requiredGroups: RequireLogin = []\n) => {\n if (\n !Array.isArray(requiredGroups) ||\n (Array.isArray(requiredGroups) && requiredGroups.length === 0)\n )\n return true;\n\n const groupMatch = requiredGroups.some(requiredGroup => {\n return userGroups.some(userGroup => {\n if (requiredGroup.id === userGroup.id) {\n return true;\n }\n if (requiredGroup.name === userGroup.name) {\n return true;\n }\n });\n });\n return groupMatch;\n};\n","/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ) =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n const propKey = wrappedComponentProp[KEY];\n const propValue = wrappedComponentProp[VALUE];\n newProps[propKey] =\n propValue && typeof propValue === 'object' && 'toJS' in propValue\n ? propValue.toJS()\n : propValue;\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n"],"names":["selectUserIsLoading","state","getIn","selectUserIsAuthenticated","selectUserIsAuthenticationError","selectUserIsError","selectUserAuthenticationErrorMessage","selectUserErrorMessage","selectClientCredentials","returnType","selectUser","selectUserIsZengentiStaff","selectUserGuid","selectUsername","selectUserEmail","selectUserGroups","selectUserSecurityToken","selectUserRegistration","selectUserRegistrationError","selectUserRegistrationIsLoading","selectUserRegistrationIsSuccess","selectPasswordResetRequestSending","selectPasswordResetRequestSent","selectPasswordResetRequestError","selectResetPasswordSending","selectResetPasswordSent","selectResetPasswordError","selectChangePasswordSending","selectChangePasswordSent","selectChangePasswordError","matchUserGroup","userGroups","requiredGroups","Array","isArray","length","groupMatch","some","requiredGroup","userGroup","id","name","toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","React","createElement"],"mappings":"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"}
package/esm/client.js CHANGED
@@ -7,30 +7,30 @@ import { Router } from 'react-router-dom';
7
7
  import { loadableReady } from '@loadable/component';
8
8
  import { parse } from 'query-string';
9
9
  import { CookiesProvider } from 'react-cookie';
10
- import { c as createStore, s as selectVersionStatus } from './version-f6660b69.js';
11
- import { s as setVersionStatus } from './version-5a0b9406.js';
12
- import { b as browserHistory, r as rootSaga, p as pickProject } from './App-b8c75933.js';
13
- export { A as ReactApp } from './App-b8c75933.js';
14
- import { c as setCurrentProject } from './selectors-1f0cc787.js';
15
- import { d as deliveryApi } from './ContensisDeliveryApi-7b71bb3e.js';
16
- import 'redux';
17
- import 'redux-thunk';
18
- import 'redux-saga';
19
- import 'redux-injectors';
20
- import 'immer';
21
- import './reducers-919da5e0.js';
10
+ import { s as selectVersionStatus } from './version-7f50b694.js';
11
+ import { s as setVersionStatus } from './version-dcc28b32.js';
12
+ import { b as browserHistory, r as rootSaga, p as pickProject } from './App-91d81f0c.js';
13
+ export { A as ReactApp } from './App-91d81f0c.js';
14
+ import { c as createStore } from './store-f524c50d.js';
15
+ import { d as setCurrentProject } from './selectors-d2bdfe22.js';
16
+ import { d as deliveryApi, S as SSRContextProvider } from './SSRContext-88841734.js';
22
17
  import '@redux-saga/core/effects';
23
18
  import 'history';
24
19
  import 'loglevel';
25
20
  import 'await-to-js';
26
- import './ChangePassword.container-6a1c60f3.js';
27
- import './ToJs-48b1f586.js';
21
+ import './ChangePassword.container-96dab474.js';
22
+ import './ToJs-67b34be1.js';
28
23
  import 'jsonpath-mapper';
29
- import './CookieConstants-3d3b6531.js';
24
+ import './CookieHelper.class-6d649751.js';
30
25
  import 'contensis-delivery-api';
31
- import './RouteLoader-487b5a9b.js';
26
+ import './RouteLoader-94ca1c51.js';
32
27
  import 'react-router-config';
33
28
  import 'reselect';
29
+ import 'redux';
30
+ import 'redux-thunk';
31
+ import 'redux-saga';
32
+ import 'redux-injectors';
33
+ import 'immer';
34
34
 
35
35
  // Fix TS2769 error No overload matches this call
36
36
  const Container = AppContainer; // as typeof AppContainer;
@@ -50,10 +50,10 @@ class ClientApp {
50
50
  store: store
51
51
  }, /*#__PURE__*/React.createElement(Router, {
52
52
  history: browserHistory
53
- }, /*#__PURE__*/React.createElement(ReactApp, {
53
+ }, /*#__PURE__*/React.createElement(SSRContextProvider, null, /*#__PURE__*/React.createElement(ReactApp, {
54
54
  routes: routes,
55
55
  withEvents: withEvents
56
- })))));
56
+ }))))));
57
57
  return ClientJsx;
58
58
  };
59
59
  const isProduction = !(process.env.NODE_ENV !== 'production');