@zengenti/contensis-react-base 3.0.0-beta.4 → 3.0.0-beta.43

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 (147) hide show
  1. package/README.md +4 -4
  2. package/cjs/{App-581b6653.js → App-2ff001f6.js} +139 -124
  3. package/cjs/App-2ff001f6.js.map +1 -0
  4. package/cjs/{RouteLoader-282c03ab.js → RouteLoader-2ed14766.js} +44 -30
  5. package/cjs/RouteLoader-2ed14766.js.map +1 -0
  6. package/cjs/ToJs-09204afd.js +129 -0
  7. package/cjs/ToJs-09204afd.js.map +1 -0
  8. package/cjs/{actions-12871aca.js → actions-6b9ef168.js} +9 -8
  9. package/cjs/actions-6b9ef168.js.map +1 -0
  10. package/cjs/client.js +43 -22
  11. package/cjs/client.js.map +1 -1
  12. package/cjs/contensis-react-base.js +46 -49
  13. package/cjs/contensis-react-base.js.map +1 -1
  14. package/cjs/forms.js +275 -275
  15. package/cjs/forms.js.map +1 -1
  16. package/cjs/fromJSLeaveImmer-65d26804.js +28 -0
  17. package/cjs/fromJSLeaveImmer-65d26804.js.map +1 -0
  18. package/cjs/{login-81d7f9ef.js → login-d67b82aa.js} +113 -79
  19. package/cjs/login-d67b82aa.js.map +1 -0
  20. package/cjs/{reducers-fde41d6b.js → reducers-3a4f8971.js} +26 -25
  21. package/cjs/reducers-3a4f8971.js.map +1 -0
  22. package/cjs/redux.js +13 -14
  23. package/cjs/redux.js.map +1 -1
  24. package/cjs/routing.js +9 -8
  25. package/cjs/routing.js.map +1 -1
  26. package/cjs/search.js +418 -256
  27. package/cjs/search.js.map +1 -1
  28. package/cjs/{selectors-ed26ed97.js → selectors-2c1b1183.js} +8 -4
  29. package/cjs/selectors-2c1b1183.js.map +1 -0
  30. package/cjs/user.js +32 -23
  31. package/cjs/user.js.map +1 -1
  32. package/cjs/util.js +49 -46
  33. package/cjs/util.js.map +1 -1
  34. package/cjs/{version-f061e409.js → version-951bc80c.js} +58 -52
  35. package/cjs/version-951bc80c.js.map +1 -0
  36. package/cjs/{version-0c190929.js → version-dcfdafd9.js} +5 -5
  37. package/cjs/{version-0c190929.js.map → version-dcfdafd9.js.map} +1 -1
  38. package/esm/{App-122f28a3.js → App-7b3aee16.js} +120 -124
  39. package/esm/App-7b3aee16.js.map +1 -0
  40. package/esm/{RouteLoader-c2faac87.js → RouteLoader-d4b4d320.js} +37 -23
  41. package/esm/RouteLoader-d4b4d320.js.map +1 -0
  42. package/esm/ToJs-2627ce21.js +99 -0
  43. package/esm/ToJs-2627ce21.js.map +1 -0
  44. package/esm/{actions-3cc39599.js → actions-5437f43d.js} +8 -7
  45. package/esm/actions-5437f43d.js.map +1 -0
  46. package/esm/client.js +22 -20
  47. package/esm/client.js.map +1 -1
  48. package/esm/contensis-react-base.js +28 -31
  49. package/esm/contensis-react-base.js.map +1 -1
  50. package/esm/forms.js +5 -5
  51. package/esm/forms.js.map +1 -1
  52. package/esm/fromJSLeaveImmer-e2f0f331.js +26 -0
  53. package/esm/fromJSLeaveImmer-e2f0f331.js.map +1 -0
  54. package/esm/{login-92db44d1.js → login-f6dfbe1b.js} +97 -60
  55. package/esm/login-f6dfbe1b.js.map +1 -0
  56. package/esm/{reducers-d6c0edb1.js → reducers-8e5d6232.js} +26 -25
  57. package/esm/reducers-8e5d6232.js.map +1 -0
  58. package/esm/redux.js +14 -13
  59. package/esm/redux.js.map +1 -1
  60. package/esm/routing.js +9 -8
  61. package/esm/routing.js.map +1 -1
  62. package/esm/search.js +387 -244
  63. package/esm/search.js.map +1 -1
  64. package/esm/{selectors-82e71d8e.js → selectors-65f0f31c.js} +9 -6
  65. package/esm/selectors-65f0f31c.js.map +1 -0
  66. package/esm/user.js +31 -22
  67. package/esm/user.js.map +1 -1
  68. package/esm/util.js +18 -11
  69. package/esm/util.js.map +1 -1
  70. package/esm/version-696796d7.js +15 -0
  71. package/esm/{version-59c8f9be.js.map → version-696796d7.js.map} +1 -1
  72. package/esm/{version-cb9cd09d.js → version-b2ca1dab.js} +38 -31
  73. package/esm/version-b2ca1dab.js.map +1 -0
  74. package/models/redux/appstate.d.ts +5 -10
  75. package/models/redux/reducers/navigation.d.ts +1 -6
  76. package/models/redux/reducers/version.d.ts +1 -5
  77. package/models/redux/selectors/navigation.d.ts +2 -1
  78. package/models/routing/redux/actions.d.ts +1 -1
  79. package/models/routing/redux/reducers.d.ts +1 -21
  80. package/models/routing/redux/selectors.d.ts +1 -1
  81. package/models/routing/routes.d.ts +3 -2
  82. package/models/routing/util/expressions.d.ts +3 -2
  83. package/models/routing/util/queries.d.ts +1 -1
  84. package/models/search/containers/withListing.d.ts +1 -1
  85. package/models/search/containers/withSearch.d.ts +1 -1
  86. package/models/search/hooks/useListing.hook.d.ts +3 -0
  87. package/models/search/hooks/useMinilist.hook.d.ts +2 -9
  88. package/models/search/index.d.ts +1 -0
  89. package/models/search/models/Queries.d.ts +8 -5
  90. package/models/search/models/Search.d.ts +58 -26
  91. package/models/search/models/SearchActions.d.ts +4 -3
  92. package/models/search/models/SearchProps.d.ts +25 -2
  93. package/models/search/models/SearchState.d.ts +5 -1
  94. package/models/search/models/index.d.ts +2 -1
  95. package/models/search/redux/actions.d.ts +2 -1
  96. package/models/search/redux/reducers.d.ts +230 -314
  97. package/models/search/redux/sagas.d.ts +5 -5
  98. package/models/search/redux/selectors.d.ts +5 -10
  99. package/models/search/search/expressions.d.ts +2 -6
  100. package/models/search/transformations/entry-to-filteritem.mapper.d.ts +2 -1
  101. package/models/search/transformations/filter-to-filterexpression.mapper.d.ts +6 -0
  102. package/models/search/transformations/filters-to-filterexpressions.mapper.d.ts +3 -0
  103. package/models/search/transformations/index.d.ts +3 -0
  104. package/models/search/transformations/state-to-searchuri.d.ts +2 -13
  105. package/models/server/util/headers.d.ts +3 -2
  106. package/models/testImmer/redux/reducer.d.ts +1 -7
  107. package/models/user/components/Login.d.ts +1 -2
  108. package/models/user/components/LoginForm.d.ts +1 -2
  109. package/models/user/hocs/withLogin.d.ts +2 -2
  110. package/models/user/hooks/useChangePassword.d.ts +5 -5
  111. package/models/user/hooks/useForgotPassword.d.ts +6 -6
  112. package/models/user/hooks/useLogin.d.ts +9 -45
  113. package/models/user/hooks/useRegistration.d.ts +4 -4
  114. package/models/user/redux/reducers.d.ts +5 -32
  115. package/models/user/redux/sagas/login.d.ts +11 -8
  116. package/models/user/redux/selectors.d.ts +33 -71
  117. package/models/user/util/LoginHelper.class.d.ts +4 -3
  118. package/models/util/json-mapper.d.ts +9 -3
  119. package/models/util/merge.d.ts +1 -0
  120. package/package-lock.json +2006 -4796
  121. package/package.json +47 -48
  122. package/cjs/App-581b6653.js.map +0 -1
  123. package/cjs/RouteLoader-282c03ab.js.map +0 -1
  124. package/cjs/ToJs-87edc45d.js +0 -230
  125. package/cjs/ToJs-87edc45d.js.map +0 -1
  126. package/cjs/actions-12871aca.js.map +0 -1
  127. package/cjs/fromJSLeaveImmer-9b550c8e.js +0 -40
  128. package/cjs/fromJSLeaveImmer-9b550c8e.js.map +0 -1
  129. package/cjs/login-81d7f9ef.js.map +0 -1
  130. package/cjs/reducers-fde41d6b.js.map +0 -1
  131. package/cjs/selectors-ed26ed97.js.map +0 -1
  132. package/cjs/version-f061e409.js.map +0 -1
  133. package/esm/App-122f28a3.js.map +0 -1
  134. package/esm/RouteLoader-c2faac87.js.map +0 -1
  135. package/esm/ToJs-52fee252.js +0 -199
  136. package/esm/ToJs-52fee252.js.map +0 -1
  137. package/esm/actions-3cc39599.js.map +0 -1
  138. package/esm/fromJSLeaveImmer-e44d1a91.js +0 -38
  139. package/esm/fromJSLeaveImmer-e44d1a91.js.map +0 -1
  140. package/esm/login-92db44d1.js.map +0 -1
  141. package/esm/reducers-d6c0edb1.js.map +0 -1
  142. package/esm/selectors-82e71d8e.js.map +0 -1
  143. package/esm/version-59c8f9be.js +0 -15
  144. package/esm/version-cb9cd09d.js.map +0 -1
  145. package/models/search/transformations/filters-to-filterexpression.d.ts +0 -1
  146. package/models/search/transformations/filters-to-filterexpression.mapper.d.ts +0 -2
  147. package/models/server/features/caching/cacheHashing.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-d4b4d320.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';\n\nimport { toJS } from '~/util/ToJs';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, RouteComponentProps, RouteLoaderProps } from '../routes';\n\nconst getTrimmedPath = path => {\n if (path !== '/') {\n const nextPath = path.replace(/\\/\\//, '/');\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}: AppRootProps & RouteLoaderProps & IReduxProps) => {\n const location = useLocation();\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];\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 {\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 );\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 <Redirect to={trimmedPath} />;\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 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\n// const mapStateToProps = state => {\n// return {\n// contentTypeId: selectRouteEntryContentTypeId(state),\n// entry: selectRouteEntry(state),\n// isError: selectRouteIsError(state),\n// isNotFound: selectIsNotFound(state),\n// isLoading: selectRouteLoading(state),\n// isLoggedIn: selectUserIsAuthenticated(state),\n// mappedEntry: selectMappedEntry(state),\n// projectId: selectCurrentProject(state),\n// statePath: selectCurrentPath(state),\n// statusCode: selectRouteStatusCode(state),\n// statusText: selectRouteErrorMessage(state),\n// userGroups: selectUserGroups(state),\n// };\n// };\n\nconst mapDispatchToProps = {\n setNavigationPath,\n};\n\nexport default hot(module)(\n connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader))\n);\n"],"names":["NotFound","statusCode","statusText","background","color","fontSize","padding","Status","code","children","staticContext","getTrimmedPath","path","nextPath","replace","lastChar","length","substring","RouteLoader","contentTypeId","entry","isError","isLoading","isLoggedIn","isNotFound","loadingComponent","mappedEntry","notFoundComponent","projectId","routes","setNavigationPath","statePath","userGroups","withEvents","location","useLocation","trimmedPath","pathname","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","staticRoute","routeRequiresLogin","route","requireLogin","setPath","useCallback","serverPath","match","isExact","includes","url","fetchNodeLevel","split","splice","join","filter","p","startsWith","window","useEffect","matchUserGroup","renderRoutes","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","NotFoundComponent","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","hot","module","connect","toJS"],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { g as getImmutableOrJS } from './selectors-65f0f31c.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
+ * DEPRECATED 12/2021 - use selectUserErrorMessage instead
10
+ * @param state AppState
11
+ * @returns string
12
+ */
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
+
77
+ if (requiredGroup.name === userGroup.name) {
78
+ return true;
79
+ }
80
+ });
81
+ });
82
+ return groupMatch;
83
+ };
84
+
85
+ /* eslint-disable react/display-name */
86
+ const toJS = WrappedComponent => wrappedComponentProps => {
87
+ const KEY = 0;
88
+ const VALUE = 1;
89
+ const propsJS = Object.entries(wrappedComponentProps).reduce((newProps, wrappedComponentProp) => {
90
+ const propKey = wrappedComponentProp[KEY];
91
+ const propValue = wrappedComponentProp[VALUE];
92
+ newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
93
+ return newProps;
94
+ }, {});
95
+ return /*#__PURE__*/React.createElement(WrappedComponent, propsJS);
96
+ };
97
+
98
+ 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 };
99
+ //# sourceMappingURL=ToJs-2627ce21.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToJs-2627ce21.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/util/ToJs.tsx"],"sourcesContent":["import { StateType } from '~/config';\nimport { AppState } from '~/redux/appstate';\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 '~/routing/routes';\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 ): React.ComponentType<Props> =>\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"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { p as action } from './selectors-82e71d8e.js';
1
+ import { r as action } from './selectors-65f0f31c.js';
2
2
 
3
3
  const ROUTING_PREFIX = '@ROUTING/';
4
4
  const GET_ENTRY = `${ROUTING_PREFIX}_GET_ENTRY`;
@@ -14,7 +14,7 @@ const SET_TARGET_PROJECT = `${ROUTING_PREFIX}_SET_TARGET_PROJECT`;
14
14
  const SET_ROUTE = `${ROUTING_PREFIX}_SET_ROUTE`;
15
15
  const UPDATE_LOADING_STATE = `${ROUTING_PREFIX}_UPDATE_LOADING_STATE`;
16
16
 
17
- var routing = /*#__PURE__*/Object.freeze({
17
+ var routing$1 = /*#__PURE__*/Object.freeze({
18
18
  __proto__: null,
19
19
  GET_ENTRY: GET_ENTRY,
20
20
  SET_ENTRY: SET_ENTRY,
@@ -53,11 +53,12 @@ const setRoute = (path, state) => action(SET_ROUTE, {
53
53
  const setRouteEntry = entry => action(SET_ENTRY, {
54
54
  entry
55
55
  });
56
- const setSurrogateKeys = keys => action(SET_SURROGATE_KEYS, {
57
- keys
56
+ const setSurrogateKeys = (keys, url) => action(SET_SURROGATE_KEYS, {
57
+ keys,
58
+ url
58
59
  });
59
60
 
60
- var routing$1 = /*#__PURE__*/Object.freeze({
61
+ var routing = /*#__PURE__*/Object.freeze({
61
62
  __proto__: null,
62
63
  setNotFound: setNotFound,
63
64
  setNavigationPath: setNavigationPath,
@@ -67,5 +68,5 @@ var routing$1 = /*#__PURE__*/Object.freeze({
67
68
  setSurrogateKeys: setSurrogateKeys
68
69
  });
69
70
 
70
- export { SET_NAVIGATION_PATH as S, UPDATE_LOADING_STATE as U, setSurrogateKeys as a, SET_ROUTE as b, SET_ENTRY as c, SET_ANCESTORS as d, SET_SIBLINGS as e, setRoute as f, setNavigationPath as g, SET_TARGET_PROJECT as h, SET_SURROGATE_KEYS as i, routing$1 as j, routing as r, setCurrentProject as s };
71
- //# sourceMappingURL=actions-3cc39599.js.map
71
+ export { SET_NAVIGATION_PATH as S, UPDATE_LOADING_STATE as U, setSurrogateKeys as a, SET_ROUTE as b, SET_ENTRY as c, SET_ANCESTORS as d, SET_SIBLINGS as e, setRoute as f, setNavigationPath as g, SET_TARGET_PROJECT as h, SET_SURROGATE_KEYS as i, routing as j, routing$1 as r, setCurrentProject as s };
72
+ //# sourceMappingURL=actions-5437f43d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-5437f43d.js","sources":["../src/routing/redux/types.ts","../src/routing/redux/actions.ts"],"sourcesContent":["const ROUTING_PREFIX = '@ROUTING/';\nexport const GET_ENTRY = `${ROUTING_PREFIX}_GET_ENTRY`;\nexport const SET_ENTRY = `${ROUTING_PREFIX}_SET_ENTRY`;\nexport const SET_NODE = `${ROUTING_PREFIX}_SET_NODE`;\nexport const SET_ANCESTORS = `${ROUTING_PREFIX}_SET_ANCESTORS`;\nexport const SET_SIBLINGS = `${ROUTING_PREFIX}_SET_SIBLINGS`;\nexport const SET_ENTRY_ID = `${ROUTING_PREFIX}_SET_ENTRY_ID`;\nexport const SET_SURROGATE_KEYS = `${ROUTING_PREFIX}_SET_SURROGATE_KEYS`;\n\nexport const SET_NAVIGATION_NOT_FOUND = `${ROUTING_PREFIX}_SET_NOT_FOUND`;\nexport const SET_NAVIGATION_PATH = `${ROUTING_PREFIX}_SET_NAVIGATION_PATH`;\n\nexport const SET_TARGET_PROJECT = `${ROUTING_PREFIX}_SET_TARGET_PROJECT`;\n\nexport const SET_ROUTE = `${ROUTING_PREFIX}_SET_ROUTE`;\n\nexport const UPDATE_LOADING_STATE = `${ROUTING_PREFIX}_UPDATE_LOADING_STATE`;\n","import { action } from '~/redux/util';\nimport {\n SET_ENTRY,\n SET_NAVIGATION_NOT_FOUND,\n SET_NAVIGATION_PATH,\n SET_TARGET_PROJECT,\n SET_ROUTE,\n SET_SURROGATE_KEYS,\n} from './types';\n\nexport const setNotFound = notFound =>\n action(SET_NAVIGATION_NOT_FOUND, { notFound });\nexport const setNavigationPath = (\n path,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes\n) =>\n action(SET_NAVIGATION_PATH, {\n path,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes,\n });\nexport const setCurrentProject = (project, allowedGroups, hostname) =>\n action(SET_TARGET_PROJECT, { project, allowedGroups, hostname });\nexport const setRoute = (path, state) => action(SET_ROUTE, { path, state });\nexport const setRouteEntry = entry => action(SET_ENTRY, { entry });\nexport const setSurrogateKeys = (keys, url) =>\n action(SET_SURROGATE_KEYS, { keys, url });\n"],"names":["ROUTING_PREFIX","GET_ENTRY","SET_ENTRY","SET_NODE","SET_ANCESTORS","SET_SIBLINGS","SET_ENTRY_ID","SET_SURROGATE_KEYS","SET_NAVIGATION_NOT_FOUND","SET_NAVIGATION_PATH","SET_TARGET_PROJECT","SET_ROUTE","UPDATE_LOADING_STATE","setNotFound","notFound","action","setNavigationPath","path","location","staticRoute","withEvents","statePath","routes","setCurrentProject","project","allowedGroups","hostname","setRoute","state","setRouteEntry","entry","setSurrogateKeys","keys","url"],"mappings":";;AAAA,MAAMA,cAAc,GAAG,WAAvB;AACO,MAAMC,SAAS,GAAI,GAAED,cAAe,YAApC;MACME,SAAS,GAAI,GAAEF,cAAe;AACpC,MAAMG,QAAQ,GAAI,GAAEH,cAAe,WAAnC;MACMI,aAAa,GAAI,GAAEJ,cAAe;MAClCK,YAAY,GAAI,GAAEL,cAAe;AACvC,MAAMM,YAAY,GAAI,GAAEN,cAAe,eAAvC;MACMO,kBAAkB,GAAI,GAAEP,cAAe;AAE7C,MAAMQ,wBAAwB,GAAI,GAAER,cAAe,gBAAnD;MACMS,mBAAmB,GAAI,GAAET,cAAe;MAExCU,kBAAkB,GAAI,GAAEV,cAAe;MAEvCW,SAAS,GAAI,GAAEX,cAAe;MAE9BY,oBAAoB,GAAI,GAAEZ,cAAe;;;;;;;;;;;;;;;;;;ACN/C,MAAMa,WAAW,GAAGC,QAAQ,IACjCC,MAAM,CAACP,wBAAD,EAA2B;AAAEM,EAAAA;AAAF,CAA3B,CADD;MAEME,iBAAiB,GAAG,CAC/BC,IAD+B,EAE/BC,QAF+B,EAG/BC,WAH+B,EAI/BC,UAJ+B,EAK/BC,SAL+B,EAM/BC,MAN+B,KAQ/BP,MAAM,CAACN,mBAAD,EAAsB;AAC1BQ,EAAAA,IAD0B;AAE1BC,EAAAA,QAF0B;AAG1BC,EAAAA,WAH0B;AAI1BC,EAAAA,UAJ0B;AAK1BC,EAAAA,SAL0B;AAM1BC,EAAAA;AAN0B,CAAtB;MAQKC,iBAAiB,GAAG,CAACC,OAAD,EAAUC,aAAV,EAAyBC,QAAzB,KAC/BX,MAAM,CAACL,kBAAD,EAAqB;AAAEc,EAAAA,OAAF;AAAWC,EAAAA,aAAX;AAA0BC,EAAAA;AAA1B,CAArB;MACKC,QAAQ,GAAG,CAACV,IAAD,EAAOW,KAAP,KAAiBb,MAAM,CAACJ,SAAD,EAAY;AAAEM,EAAAA,IAAF;AAAQW,EAAAA;AAAR,CAAZ;AACxC,MAAMC,aAAa,GAAGC,KAAK,IAAIf,MAAM,CAACb,SAAD,EAAY;AAAE4B,EAAAA;AAAF,CAAZ,CAArC;MACMC,gBAAgB,GAAG,CAACC,IAAD,EAAOC,GAAP,KAC9BlB,MAAM,CAACR,kBAAD,EAAqB;AAAEyB,EAAAA,IAAF;AAAQC,EAAAA;AAAR,CAArB;;;;;;;;;;;;;;"}
package/esm/client.js CHANGED
@@ -1,34 +1,36 @@
1
1
  import 'isomorphic-fetch';
2
2
  import React from 'react';
3
- import { Router } from 'react-router-dom';
3
+ import { hydrate, render } from 'react-dom';
4
+ import { AppContainer } from 'react-hot-loader';
4
5
  import { Provider } from 'react-redux';
5
- import 'react-router-config';
6
+ import { Router } from 'react-router-dom';
7
+ import { loadableReady } from '@loadable/component';
8
+ import * as queryString from 'query-string';
9
+ import { c as createStore, s as setVersionStatus } from './version-b2ca1dab.js';
10
+ import { d as deliveryApi, b as browserHistory, r as rootSaga, p as pickProject } from './App-7b3aee16.js';
11
+ export { A as ReactApp } from './App-7b3aee16.js';
12
+ import { s as setCurrentProject } from './actions-5437f43d.js';
13
+ import './selectors-65f0f31c.js';
6
14
  import 'jsonpath-mapper';
15
+ import '@redux-saga/core/effects';
7
16
  import 'redux';
8
17
  import 'redux-thunk';
9
18
  import 'redux-saga';
10
19
  import 'redux-injectors';
11
20
  import 'immer';
12
- import { c as createStore, s as setVersionStatus } from './version-cb9cd09d.js';
13
- import { s as setCurrentProject } from './actions-3cc39599.js';
14
- import './reducers-d6c0edb1.js';
21
+ import 'deepmerge';
22
+ import './reducers-8e5d6232.js';
15
23
  import 'history';
16
- import { d as deliveryApi, b as browserHistory, r as rootSaga, p as pickProject } from './App-122f28a3.js';
17
- export { A as ReactApp } from './App-122f28a3.js';
18
- import '@redux-saga/core/effects';
19
24
  import 'contensis-delivery-api';
20
- import './selectors-82e71d8e.js';
21
- import './version-59c8f9be.js';
22
- import { parse } from 'query-string';
25
+ import './version-696796d7.js';
23
26
  import 'loglevel';
24
- import './ToJs-52fee252.js';
25
- import './login-92db44d1.js';
27
+ import './login-f6dfbe1b.js';
28
+ import './ToJs-2627ce21.js';
26
29
  import 'await-to-js';
27
30
  import 'js-cookie';
28
- import { AppContainer } from 'react-hot-loader';
29
- import './RouteLoader-c2faac87.js';
30
- import { hydrate, render } from 'react-dom';
31
- import { loadableReady } from '@loadable/component';
31
+ import './RouteLoader-d4b4d320.js';
32
+ import 'react-router-config';
33
+ import 'reselect';
32
34
 
33
35
  class ClientApp {
34
36
  constructor(ReactApp, config) {
@@ -76,7 +78,7 @@ class ClientApp {
76
78
  }
77
79
  };
78
80
 
79
- const qs = parse(window.location.search);
81
+ const qs = queryString.parse(window.location.search);
80
82
  const versionStatusFromHostname = deliveryApi.getClientSideVersionStatus();
81
83
 
82
84
  if (window.isDynamic || window.REDUX_DATA || process.env.NODE_ENV !== 'production') {
@@ -104,7 +106,7 @@ class ClientApp {
104
106
  createStore(withReducers, ssRedux, browserHistory, stateType).then(store => {
105
107
  // store.dispatch(setVersionStatus(versionStatusFromHostname));
106
108
  store.runSaga(rootSaga(withSagas));
107
- store.dispatch(setCurrentProject(pickProject(window.location.hostname, parse(window.location.search)), [], window.location.hostname)); // if (typeof window != 'undefined') {
109
+ store.dispatch(setCurrentProject(pickProject(window.location.hostname, queryString.parse(window.location.search)), [], window.location.hostname)); // if (typeof window != 'undefined') {
108
110
  // store.dispatch(checkUserLoggedIn());
109
111
  // }
110
112
 
@@ -117,5 +119,5 @@ class ClientApp {
117
119
 
118
120
  }
119
121
 
120
- export default ClientApp;
122
+ export { ClientApp as default };
121
123
  //# sourceMappingURL=client.js.map
package/esm/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../src/client/client.tsx"],"sourcesContent":["import 'isomorphic-fetch';\nimport React from 'react';\nimport { render, hydrate } from 'react-dom';\nimport { AppContainer } from 'react-hot-loader';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { Router } from 'react-router-dom';\nimport { loadableReady } from '@loadable/component';\nimport * as queryString from 'query-string';\n\nimport { setVersionStatus } from '~/redux/actions/version';\nimport rootSaga from '~/redux/sagas';\nimport { browserHistory as history } from '~/redux/store/history';\nimport createStore from '~/redux/store/store';\n\nimport { setCurrentProject } from '~/routing/redux/actions';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport pickProject from '~/util/pickProject';\n\nimport { AppConfig } from '~/config';\n\ndeclare let window: typeof globalThis & {\n isDynamic;\n REDUX_DATA;\n};\n\ntype ReactAppProps = { routes: any; withEvents: any };\n\nclass ClientApp {\n constructor(ReactApp: React.ComponentType<ReactAppProps>, config: AppConfig) {\n const documentRoot = document.getElementById('root');\n\n const {\n stateType = 'immutable',\n routes,\n withReducers,\n withSagas,\n withEvents,\n } = config;\n\n const GetClientJSX = store => {\n const ClientJsx = (\n <AppContainer>\n <ReduxProvider store={store}>\n <Router history={history}>\n <ReactApp routes={routes} withEvents={withEvents} />\n </Router>\n </ReduxProvider>\n </AppContainer>\n );\n return ClientJsx;\n };\n\n const isProduction = !(process.env.NODE_ENV !== 'production');\n\n /**\n * Webpack HMR Setup.\n */\n const HMRRenderer = Component => {\n if (isProduction)\n loadableReady(\n () => {\n hydrate(Component, documentRoot);\n },\n { namespace: 'modern' }\n );\n else render(Component, documentRoot);\n };\n\n const hmr = store => {\n // webpack Hot Module Replacement API\n if (module.hot) {\n module.hot.accept(ReactApp as unknown as string, () => {\n // if you are using harmony modules ({modules:false})\n HMRRenderer(GetClientJSX(store));\n });\n }\n };\n\n const qs = queryString.parse(window.location.search);\n const versionStatusFromHostname = deliveryApi.getClientSideVersionStatus();\n\n if (\n window.isDynamic ||\n window.REDUX_DATA ||\n process.env.NODE_ENV !== 'production'\n ) {\n createStore(withReducers, window.REDUX_DATA, history, stateType).then(\n store => {\n store.dispatch(\n setVersionStatus(qs.versionStatus || versionStatusFromHostname)\n );\n\n /* eslint-disable no-console */\n console.log('Hydrating from inline Redux');\n /* eslint-enable no-console */\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n delete window.REDUX_DATA;\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n }\n );\n } else {\n fetch(`${window.location.pathname}?redux=true`)\n .then(response => response.json())\n .then(data => {\n /* eslint-disable no-console */\n // console.log('Got Data Back');\n // console.log(data);\n /* eslint-enable no-console */\n const ssRedux = JSON.parse(data);\n createStore(withReducers, ssRedux, history, stateType).then(store => {\n // store.dispatch(setVersionStatus(versionStatusFromHostname));\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(\n window.location.hostname,\n queryString.parse(window.location.search)\n ),\n [],\n window.location.hostname\n )\n );\n // if (typeof window != 'undefined') {\n // store.dispatch(checkUserLoggedIn());\n // }\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n });\n });\n }\n }\n}\n\nexport default ClientApp;\n"],"names":["ClientApp","constructor","ReactApp","config","documentRoot","document","getElementById","stateType","routes","withReducers","withSagas","withEvents","GetClientJSX","store","ClientJsx","ReduxProvider","history","isProduction","process","env","NODE_ENV","HMRRenderer","Component","loadableReady","hydrate","namespace","render","hmr","module","hot","accept","qs","queryString","window","location","search","versionStatusFromHostname","deliveryApi","getClientSideVersionStatus","isDynamic","REDUX_DATA","createStore","then","dispatch","setVersionStatus","versionStatus","console","log","runSaga","rootSaga","setCurrentProject","pickProject","hostname","fetch","pathname","response","json","data","ssRedux","JSON","parse"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sources":["../src/client/client.tsx"],"sourcesContent":["import 'isomorphic-fetch';\nimport React from 'react';\nimport { render, hydrate } from 'react-dom';\nimport { AppContainer } from 'react-hot-loader';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { Router } from 'react-router-dom';\nimport { loadableReady } from '@loadable/component';\nimport * as queryString from 'query-string';\n\nimport { setVersionStatus } from '~/redux/actions/version';\nimport rootSaga from '~/redux/sagas';\nimport { browserHistory as history } from '~/redux/store/history';\nimport createStore from '~/redux/store/store';\n\nimport { setCurrentProject } from '~/routing/redux/actions';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport pickProject from '~/util/pickProject';\n\nimport { AppConfig } from '~/config';\n\ndeclare let window: typeof globalThis & {\n isDynamic;\n REDUX_DATA;\n};\n\ntype ReactAppProps = { routes: any; withEvents: any };\n\nclass ClientApp {\n constructor(ReactApp: React.ComponentType<ReactAppProps>, config: AppConfig) {\n const documentRoot = document.getElementById('root');\n\n const {\n stateType = 'immutable',\n routes,\n withReducers,\n withSagas,\n withEvents,\n } = config;\n\n const GetClientJSX = store => {\n const ClientJsx = (\n <AppContainer>\n <ReduxProvider store={store}>\n <Router history={history}>\n <ReactApp routes={routes} withEvents={withEvents} />\n </Router>\n </ReduxProvider>\n </AppContainer>\n );\n return ClientJsx;\n };\n\n const isProduction = !(process.env.NODE_ENV !== 'production');\n\n /**\n * Webpack HMR Setup.\n */\n const HMRRenderer = Component => {\n if (isProduction)\n loadableReady(\n () => {\n hydrate(Component, documentRoot);\n },\n { namespace: 'modern' }\n );\n else render(Component, documentRoot);\n };\n\n const hmr = store => {\n // webpack Hot Module Replacement API\n if (module.hot) {\n module.hot.accept(ReactApp as unknown as string, () => {\n // if you are using harmony modules ({modules:false})\n HMRRenderer(GetClientJSX(store));\n });\n }\n };\n\n const qs = queryString.parse(window.location.search);\n const versionStatusFromHostname = deliveryApi.getClientSideVersionStatus();\n\n if (\n window.isDynamic ||\n window.REDUX_DATA ||\n process.env.NODE_ENV !== 'production'\n ) {\n createStore(withReducers, window.REDUX_DATA, history, stateType).then(\n store => {\n store.dispatch(\n setVersionStatus(qs.versionStatus || versionStatusFromHostname)\n );\n\n /* eslint-disable no-console */\n console.log('Hydrating from inline Redux');\n /* eslint-enable no-console */\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n delete window.REDUX_DATA;\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n }\n );\n } else {\n fetch(`${window.location.pathname}?redux=true`)\n .then(response => response.json())\n .then(data => {\n /* eslint-disable no-console */\n // console.log('Got Data Back');\n // console.log(data);\n /* eslint-enable no-console */\n const ssRedux = JSON.parse(data);\n createStore(withReducers, ssRedux, history, stateType).then(store => {\n // store.dispatch(setVersionStatus(versionStatusFromHostname));\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(\n window.location.hostname,\n queryString.parse(window.location.search)\n ),\n [],\n window.location.hostname\n )\n );\n // if (typeof window != 'undefined') {\n // store.dispatch(checkUserLoggedIn());\n // }\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n });\n });\n }\n }\n}\n\nexport default ClientApp;\n"],"names":["ClientApp","constructor","ReactApp","config","documentRoot","document","getElementById","stateType","routes","withReducers","withSagas","withEvents","GetClientJSX","store","ClientJsx","ReduxProvider","history","isProduction","process","env","NODE_ENV","HMRRenderer","Component","loadableReady","hydrate","namespace","render","hmr","module","hot","accept","qs","queryString","parse","window","location","search","versionStatusFromHostname","deliveryApi","getClientSideVersionStatus","isDynamic","REDUX_DATA","createStore","then","dispatch","setVersionStatus","versionStatus","console","log","runSaga","rootSaga","setCurrentProject","pickProject","hostname","fetch","pathname","response","json","data","ssRedux","JSON"],"mappings":"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"}
@@ -15,31 +15,33 @@ import serialize from 'serialize-javascript';
15
15
  import minifyCssString from 'minify-css-string';
16
16
  import mapJson from 'jsonpath-mapper';
17
17
  import { ChunkExtractor, ChunkExtractorManager } from '@loadable/server';
18
+ import { c as createStore, s as setVersionStatus, a as setVersion } from './version-b2ca1dab.js';
19
+ import { h as history, d as deliveryApi, p as pickProject, r as rootSaga } from './App-7b3aee16.js';
20
+ export { A as ReactApp } from './App-7b3aee16.js';
21
+ import { s as setCurrentProject } from './actions-5437f43d.js';
22
+ import { s as selectSurrogateKeys, a as selectRouteEntry, b as selectCurrentProject, g as getImmutableOrJS } from './selectors-65f0f31c.js';
23
+ import '@redux-saga/core/effects';
18
24
  import 'redux';
19
25
  import 'redux-thunk';
20
26
  import 'redux-saga';
21
27
  import 'redux-injectors';
22
28
  import 'immer';
23
- import { c as createStore, s as setVersionStatus, a as setVersion } from './version-cb9cd09d.js';
24
- import { s as setCurrentProject } from './actions-3cc39599.js';
25
- import './reducers-d6c0edb1.js';
29
+ import 'deepmerge';
30
+ import './reducers-8e5d6232.js';
26
31
  import 'history';
27
- import { h as history, d as deliveryApi, p as pickProject, r as rootSaga } from './App-122f28a3.js';
28
- export { A as ReactApp } from './App-122f28a3.js';
29
- import '@redux-saga/core/effects';
30
32
  import 'contensis-delivery-api';
31
- import { g as getImmutableOrJS, s as selectRouteEntry, a as selectCurrentProject } from './selectors-82e71d8e.js';
32
- import './version-59c8f9be.js';
33
- import 'query-string';
33
+ import './version-696796d7.js';
34
34
  import 'loglevel';
35
- import './ToJs-52fee252.js';
36
- import './login-92db44d1.js';
35
+ import './login-f6dfbe1b.js';
36
+ import './ToJs-2627ce21.js';
37
37
  import 'await-to-js';
38
38
  import 'js-cookie';
39
39
  import 'react-hot-loader';
40
- import './RouteLoader-c2faac87.js';
40
+ import 'query-string';
41
+ import './RouteLoader-d4b4d320.js';
42
+ import 'reselect';
41
43
 
42
- const servers = SERVERS;
44
+ const servers$1 = SERVERS;
43
45
  /* global SERVERS */
44
46
 
45
47
  const projects = PROJECTS;
@@ -49,7 +51,7 @@ const DisplayStartupConfiguration = config => {
49
51
  /* eslint-disable no-console */
50
52
  console.log();
51
53
  console.log(`Configured servers:
52
- `, JSON.stringify(servers, null, 2));
54
+ `, JSON.stringify(servers$1, null, 2));
53
55
  console.log();
54
56
  console.log(`Configured projects:
55
57
  `, JSON.stringify(projects, null, 2));
@@ -59,7 +61,7 @@ const DisplayStartupConfiguration = config => {
59
61
  /* eslint-enable no-console */
60
62
  };
61
63
 
62
- const servers$1 = SERVERS;
64
+ const servers = SERVERS;
63
65
  /* global SERVERS */
64
66
 
65
67
  const apiProxy = httpProxy.createProxyServer();
@@ -67,7 +69,7 @@ const apiProxy = httpProxy.createProxyServer();
67
69
  const reverseProxies = (app, reverseProxyPaths = []) => {
68
70
  deliveryApiProxy(apiProxy, app);
69
71
  app.all(reverseProxyPaths, (req, res) => {
70
- const target = req.hostname.indexOf('preview-') || req.hostname.indexOf('preview.') || req.hostname === 'localhost' ? servers$1.previewIis || servers$1.iis : servers$1.iis;
72
+ const target = req.hostname.indexOf('preview-') || req.hostname.indexOf('preview.') || req.hostname === 'localhost' ? servers.previewIis || servers.iis : servers.iis;
71
73
  apiProxy.web(req, res, {
72
74
  target,
73
75
  changeOrigin: true
@@ -84,8 +86,8 @@ const deliveryApiProxy = (apiProxy, app) => {
84
86
  // This is just here to stop cors requests on localhost. In Production this is mapped using varnish.
85
87
  app.all(['/api/delivery/*', '/api/image/*'], (req, res) => {
86
88
  /* eslint-disable no-console */
87
- const target = servers$1.cms;
88
- console.log(`Proxying api request to ${servers$1.alias}`);
89
+ const target = servers.cms;
90
+ console.log(`Proxying api request to ${servers.alias}`);
89
91
  apiProxy.web(req, res, {
90
92
  target,
91
93
  changeOrigin: true
@@ -293,7 +295,8 @@ const getBundleTags = (loadableExtractor, scripts, staticRoutePath = 'static') =
293
295
  const modernScriptTags = loadableExtractor === null || loadableExtractor === void 0 ? void 0 : loadableExtractor.modern.getScriptTags({
294
296
  type: 'module'
295
297
  });
296
- return `${startupTag}${legacyScriptTags || ''}${modernScriptTags || ''}`;
298
+ const scriptTags = `${startupTag}${legacyScriptTags || ''}${modernScriptTags || ''}`.replace(/"\/static\//g, `"/${staticRoutePath}/`);
299
+ return scriptTags;
297
300
  }
298
301
 
299
302
  return startupTag;
@@ -303,7 +306,7 @@ const addStandardHeaders = (state, response, packagejson, groups) => {
303
306
  if (state) {
304
307
  try {
305
308
  console.info('About to add headers');
306
- const routingSurrogateKeys = getImmutableOrJS(state, ['routing', 'surrogateKeys'], '');
309
+ const routingSurrogateKeys = selectSurrogateKeys(state);
307
310
  const surrogateKeyHeader = ` ${packagejson.name}-app ${routingSurrogateKeys}`;
308
311
  response.header('surrogate-key', surrogateKeyHeader);
309
312
  addVarnishAuthenticationHeaders(state, response, groups);
@@ -427,7 +430,7 @@ const webApp = (app, ReactApp, config) => {
427
430
  renderToString(jsx); // Dynamic page render has only the necessary bundles to start up the app
428
431
  // and does not include any react-loadable code-split bundles
429
432
 
430
- const bundleTags = getBundleTags(loadableExtractor, scripts);
433
+ const bundleTags = getBundleTags(loadableExtractor, scripts, staticRoutePath);
431
434
  const isDynamicHint = `<script ${attributes}>window.isDynamic = true;</script>`;
432
435
  const responseHtmlDynamic = templateHTML.replace('{{TITLE}}', '').replace('{{SEO_CRITICAL_METADATA}}', '').replace('{{CRITICAL_CSS}}', '').replace('{{APP}}', '').replace('{{LOADABLE_CHUNKS}}', bundleTags).replace('{{REDUX_DATA}}', isDynamicHint); // Dynamic pages always return a 200 so we can run
433
436
  // the app and serve up all errors inside the client
@@ -445,7 +448,7 @@ const webApp = (app, ReactApp, config) => {
445
448
  Helmet.rewind();
446
449
  const htmlAttributes = helmet.htmlAttributes.toString();
447
450
  let title = helmet.title.toString();
448
- const metadata = helmet.meta.toString();
451
+ const metadata = helmet.meta.toString().concat(helmet.link.toString());
449
452
 
450
453
  if (context.url) {
451
454
  return response.redirect(302, context.url);
@@ -455,15 +458,12 @@ const webApp = (app, ReactApp, config) => {
455
458
  const styleTags = sheet.getStyleTags(); // After running rootSaga there should be an additional react-loadable
456
459
  // code-split bundles for any page components as well as core app bundles
457
460
 
458
- const bundleTags = getBundleTags(loadableExtractor, scripts);
459
- let serialisedReduxData = '';
461
+ const bundleTags = getBundleTags(loadableExtractor, scripts, staticRoutePath);
462
+ let serialisedReduxData = serialize(reduxState);
460
463
 
461
464
  if (context.statusCode !== 404) {
462
465
  // For a request that returns a redux state object as a response
463
466
  if (accessMethod.REDUX) {
464
- serialisedReduxData = serialize(reduxState, {
465
- ignoreFunction: true
466
- });
467
467
  addStandardHeaders(reduxState, response, packagejson, {
468
468
  allowedGroups,
469
469
  globalGroups
@@ -473,9 +473,6 @@ const webApp = (app, ReactApp, config) => {
473
473
  }
474
474
 
475
475
  if (!disableSsrRedux) {
476
- serialisedReduxData = serialize(reduxState, {
477
- ignoreFunction: true
478
- });
479
476
  serialisedReduxData = `<script ${attributes}>window.REDUX_DATA = ${serialisedReduxData}</script>`;
480
477
  }
481
478
  }
@@ -578,5 +575,5 @@ var internalServer = {
578
575
  start
579
576
  };
580
577
 
581
- export default internalServer;
578
+ export { internalServer as default };
582
579
  //# sourceMappingURL=contensis-react-base.js.map