@zengenti/contensis-react-base 3.0.2-beta.9 → 3.1.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 (141) hide show
  1. package/README.md +38 -2
  2. package/cjs/{App-81a45001.js → App-555eebb0.js} +70 -34
  3. package/cjs/App-555eebb0.js.map +1 -0
  4. package/cjs/{login-51b66359.js → ChangePassword.container-f3f94d8f.js} +246 -84
  5. package/cjs/ChangePassword.container-f3f94d8f.js.map +1 -0
  6. package/cjs/{ContensisDeliveryApi-de88df2a.js → ContensisDeliveryApi-ea5ffdc2.js} +162 -122
  7. package/cjs/ContensisDeliveryApi-ea5ffdc2.js.map +1 -0
  8. package/cjs/CookieConstants-000427db.js +10 -0
  9. package/cjs/CookieConstants-000427db.js.map +1 -0
  10. package/cjs/{RouteLoader-47d70a26.js → RouteLoader-014a95b9.js} +8 -5
  11. package/cjs/RouteLoader-014a95b9.js.map +1 -0
  12. package/cjs/{ToJs-61c03582.js → ToJs-64970869.js} +49 -2
  13. package/cjs/ToJs-64970869.js.map +1 -0
  14. package/cjs/_commonjsHelpers-b3309d7b.js +11 -0
  15. package/cjs/_commonjsHelpers-b3309d7b.js.map +1 -0
  16. package/cjs/client.js +14 -12
  17. package/cjs/client.js.map +1 -1
  18. package/cjs/contensis-react-base.js +47 -361
  19. package/cjs/contensis-react-base.js.map +1 -1
  20. package/cjs/forms.js +3495 -127
  21. package/cjs/forms.js.map +1 -1
  22. package/cjs/redux.js +3 -4
  23. package/cjs/redux.js.map +1 -1
  24. package/cjs/routing.js +4 -3
  25. package/cjs/routing.js.map +1 -1
  26. package/cjs/{sagas-6d12e7ca.js → sagas-e04b94c1.js} +44 -20
  27. package/cjs/sagas-e04b94c1.js.map +1 -0
  28. package/cjs/search.js +13 -13
  29. package/cjs/search.js.map +1 -1
  30. package/cjs/{selectors-c76c2676.js → selectors-8e56cc34.js} +14 -13
  31. package/cjs/selectors-8e56cc34.js.map +1 -0
  32. package/cjs/user.js +33 -159
  33. package/cjs/user.js.map +1 -1
  34. package/cjs/util.js +6 -4
  35. package/cjs/util.js.map +1 -1
  36. package/cjs/{version-886f49d8.js → version-91b90ee8.js} +3 -3
  37. package/cjs/{version-886f49d8.js.map → version-91b90ee8.js.map} +1 -1
  38. package/cjs/{version-38afaf2a.js → version-fb4ba30b.js} +16 -24
  39. package/cjs/version-fb4ba30b.js.map +1 -0
  40. package/esm/{App-5f914483.js → App-aaea6310.js} +64 -29
  41. package/esm/App-aaea6310.js.map +1 -0
  42. package/esm/{login-4d07c2de.js → ChangePassword.container-724c8e0a.js} +229 -78
  43. package/esm/ChangePassword.container-724c8e0a.js.map +1 -0
  44. package/esm/ContensisDeliveryApi-fe53fa10.js +265 -0
  45. package/esm/ContensisDeliveryApi-fe53fa10.js.map +1 -0
  46. package/esm/CookieConstants-3d3b6531.js +6 -0
  47. package/esm/CookieConstants-3d3b6531.js.map +1 -0
  48. package/esm/{RouteLoader-f5d5f733.js → RouteLoader-fe64ca81.js} +8 -5
  49. package/esm/RouteLoader-fe64ca81.js.map +1 -0
  50. package/esm/{ToJs-0066e629.js → ToJs-c75473e9.js} +49 -3
  51. package/esm/ToJs-c75473e9.js.map +1 -0
  52. package/esm/_commonjsHelpers-1789f0cf.js +8 -0
  53. package/esm/_commonjsHelpers-1789f0cf.js.map +1 -0
  54. package/esm/client.js +15 -13
  55. package/esm/client.js.map +1 -1
  56. package/esm/contensis-react-base.js +46 -361
  57. package/esm/contensis-react-base.js.map +1 -1
  58. package/esm/forms.js +3497 -129
  59. package/esm/forms.js.map +1 -1
  60. package/esm/redux.js +6 -7
  61. package/esm/redux.js.map +1 -1
  62. package/esm/routing.js +4 -3
  63. package/esm/routing.js.map +1 -1
  64. package/esm/{sagas-53d2aefb.js → sagas-933a8fc8.js} +44 -20
  65. package/esm/sagas-933a8fc8.js.map +1 -0
  66. package/esm/search.js +14 -14
  67. package/esm/search.js.map +1 -1
  68. package/esm/{selectors-3f0d804d.js → selectors-0fe67d47.js} +14 -14
  69. package/esm/selectors-0fe67d47.js.map +1 -0
  70. package/esm/user.js +21 -151
  71. package/esm/user.js.map +1 -1
  72. package/esm/util.js +4 -4
  73. package/esm/{version-dd31c7f0.js → version-7ea8bea8.js} +17 -24
  74. package/esm/version-7ea8bea8.js.map +1 -0
  75. package/esm/{version-f4629693.js → version-f42f7bdc.js} +3 -3
  76. package/esm/{version-f4629693.js.map → version-f42f7bdc.js.map} +1 -1
  77. package/models/client/client.d.ts +1 -1
  78. package/models/config.d.ts +4 -4
  79. package/models/redux/appstate.d.ts +2 -1
  80. package/models/routing/redux/actions.d.ts +10 -6
  81. package/models/routing/redux/selectors.d.ts +5 -4
  82. package/models/routing/redux/types.d.ts +0 -1
  83. package/models/routing/routes.d.ts +20 -17
  84. package/models/routing/util/queries.d.ts +3 -2
  85. package/models/search/models/Queries.d.ts +9 -10
  86. package/models/search/models/Search.d.ts +26 -24
  87. package/models/search/models/SearchActions.d.ts +36 -36
  88. package/models/search/models/SearchState.d.ts +11 -11
  89. package/models/search/models/SearchUtil.d.ts +1 -1
  90. package/models/search/models/WithSearch.d.ts +1 -1
  91. package/models/search/redux/actions.d.ts +7 -7
  92. package/models/search/redux/selectors.d.ts +27 -27
  93. package/models/search/redux/types.d.ts +21 -21
  94. package/models/search/redux/util.d.ts +2 -2
  95. package/models/search/search/ContensisDeliveryApi.d.ts +1 -1
  96. package/models/search/search/expressions.d.ts +4 -4
  97. package/models/search/search/util.d.ts +2 -2
  98. package/models/search/transformations/state-to-queryparams.mapper.d.ts +1 -1
  99. package/models/server/features/linkdepth-api/LinkDepthSearchService.d.ts +1 -1
  100. package/models/server/features/linkdepth-api/search.d.ts +3 -3
  101. package/models/server/internalServer.d.ts +7 -5
  102. package/models/server/util/bundles.d.ts +2 -2
  103. package/models/server/util/handleExceptions.d.ts +1 -1
  104. package/models/testImmer/redux/reducer.d.ts +1 -1
  105. package/models/user/components/Login.d.ts +2 -3
  106. package/models/user/containers/ChangePassword.container.d.ts +2 -2
  107. package/models/user/containers/ForgotPassword.container.d.ts +2 -2
  108. package/models/user/containers/Login.container.d.ts +2 -2
  109. package/models/user/containers/Registration.container.d.ts +2 -2
  110. package/models/user/hocs/withLogin.d.ts +5 -11
  111. package/models/user/hocs/withRegistration.d.ts +2 -8
  112. package/models/user/redux/actions.d.ts +2 -2
  113. package/models/user/redux/sagas/login.d.ts +9 -8
  114. package/models/user/redux/selectors.d.ts +4 -4
  115. package/models/user/util/CookieConstants.d.ts +8 -0
  116. package/models/user/util/CookieHelper.class.d.ts +15 -3
  117. package/models/user/util/LoginHelper.class.d.ts +27 -23
  118. package/models/util/CachedDeliveryApi.d.ts +25 -0
  119. package/models/util/ContensisDeliveryApi.d.ts +20 -44
  120. package/models/util/LruCache.d.ts +12 -0
  121. package/models/util/ToJs.d.ts +1 -1
  122. package/models/util/index.d.ts +1 -1
  123. package/models/util/json-mapper.d.ts +1 -1
  124. package/package.json +10 -11
  125. package/cjs/App-81a45001.js.map +0 -1
  126. package/cjs/ContensisDeliveryApi-de88df2a.js.map +0 -1
  127. package/cjs/RouteLoader-47d70a26.js.map +0 -1
  128. package/cjs/ToJs-61c03582.js.map +0 -1
  129. package/cjs/login-51b66359.js.map +0 -1
  130. package/cjs/sagas-6d12e7ca.js.map +0 -1
  131. package/cjs/selectors-c76c2676.js.map +0 -1
  132. package/cjs/version-38afaf2a.js.map +0 -1
  133. package/esm/App-5f914483.js.map +0 -1
  134. package/esm/ContensisDeliveryApi-ad06857d.js +0 -227
  135. package/esm/ContensisDeliveryApi-ad06857d.js.map +0 -1
  136. package/esm/RouteLoader-f5d5f733.js.map +0 -1
  137. package/esm/ToJs-0066e629.js.map +0 -1
  138. package/esm/login-4d07c2de.js.map +0 -1
  139. package/esm/sagas-53d2aefb.js.map +0 -1
  140. package/esm/selectors-3f0d804d.js.map +0 -1
  141. package/esm/version-dd31c7f0.js.map +0 -1
@@ -0,0 +1,265 @@
1
+ import { Client } from 'contensis-delivery-api';
2
+ import { parse } from 'query-string';
3
+ import { A as selectCurrentHostname, w as selectCurrentPath, o as selectCurrentSearch, B as setSurrogateKeys } from './selectors-0fe67d47.js';
4
+ import { r as reduxStore } from './version-7ea8bea8.js';
5
+ import { f as findLoginCookies } from './CookieConstants-3d3b6531.js';
6
+
7
+ class CacheNode {
8
+ constructor(key, value) {
9
+ this.key = key;
10
+ this.value = value;
11
+ this.next = null;
12
+ this.prev = null;
13
+ }
14
+ }
15
+ class LruCache {
16
+ constructor(limit = 100) {
17
+ this.map = {};
18
+ this.head = null;
19
+ this.tail = null;
20
+ this.limit = limit || 100;
21
+ this.size = 0;
22
+ }
23
+ get(key) {
24
+ if (this.map[key]) {
25
+ let value = this.map[key].value;
26
+ let node = new CacheNode(key, value);
27
+ this.remove(key);
28
+ this.setHead(node);
29
+ return value;
30
+ }
31
+ }
32
+ set(key, value) {
33
+ let node = new CacheNode(key, value);
34
+ if (this.map[key]) {
35
+ this.remove(key);
36
+ } else {
37
+ if (this.size >= this.limit) {
38
+ delete this.map[this.tail.key];
39
+ this.size--;
40
+ this.tail = this.tail.prev;
41
+ this.tail.next = null;
42
+ }
43
+ }
44
+ this.setHead(node);
45
+ }
46
+ setHead(node) {
47
+ node.next = this.head;
48
+ node.prev = null;
49
+ if (this.head) {
50
+ this.head.prev = node;
51
+ }
52
+ this.head = node;
53
+ if (!this.tail) {
54
+ this.tail = node;
55
+ }
56
+ this.size++;
57
+ this.map[node.key] = node;
58
+ }
59
+ remove(key) {
60
+ let node = this.map[key];
61
+ if (!node) return; // This is sometimes null and crashes the container without this check
62
+
63
+ if (node.prev) {
64
+ node.prev.next = node.next;
65
+ } else {
66
+ this.head = node.next;
67
+ }
68
+ if (node.next) {
69
+ node.next.prev = node.prev;
70
+ } else {
71
+ this.tail = node.prev;
72
+ }
73
+ delete this.map[key];
74
+ this.size--;
75
+ }
76
+ }
77
+
78
+ // CachedSearch does not cache results in SSR by design
79
+ class CachedSearch {
80
+ constructor(cookies) {
81
+ this.cache = new LruCache();
82
+ this.cookies = void 0;
83
+ this.cookies = cookies;
84
+ }
85
+ getClient(...args) {
86
+ return new DeliveryApi(this.cookies).getClient(...args);
87
+ }
88
+ search(query, linkDepth = 0, project) {
89
+ const client = Client.create(getClientConfig(project, this.cookies));
90
+ return this.request(`${project}+${JSON.stringify(query)}+${linkDepth}`, () => client.entries.search(query, linkDepth));
91
+ }
92
+ searchUsingPost(query, linkDepth = 0, project = '') {
93
+ const client = Client.create(getClientConfig(project, this.cookies));
94
+ return this.request(`${project}+${JSON.stringify(query)}+${linkDepth}`, () => client.entries.searchUsingPost(query, linkDepth));
95
+ }
96
+ get(id, linkDepth = 0, versionStatus = 'published', project) {
97
+ const client = Client.create(getClientConfig(project, this.cookies));
98
+ client.clientConfig.versionStatus = versionStatus;
99
+ return this.request(id, () => client.entries.get({
100
+ id,
101
+ linkDepth
102
+ }));
103
+ }
104
+ getContentType(id, project) {
105
+ const client = Client.create(getClientConfig(project, this.cookies));
106
+ return this.request(`[CONTENT TYPE] ${id} ${project}`, () => client.contentTypes.get(id));
107
+ }
108
+ getRootNode(options, project) {
109
+ const client = Client.create(getClientConfig(project, this.cookies));
110
+ return this.request(`${project} / ${JSON.stringify(options)}`, () => client.nodes.getRoot(options));
111
+ }
112
+ getNode(options, project) {
113
+ const client = Client.create(getClientConfig(project, this.cookies));
114
+ return this.request(`${project} ${options && typeof options !== 'string' ? 'path' in options ? options.path : options.id : options} ${JSON.stringify(options)}`, () => client.nodes.get(options));
115
+ }
116
+ getAncestors(options, project) {
117
+ const client = Client.create(getClientConfig(project, this.cookies));
118
+ return this.request(`${project} [A] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getAncestors(options));
119
+ }
120
+ getChildren(options, project) {
121
+ const client = Client.create(getClientConfig(project, this.cookies));
122
+ return this.request(`${project} [C] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getChildren(options));
123
+ }
124
+ getSiblings(options, project) {
125
+ const client = Client.create(getClientConfig(project, this.cookies));
126
+ return this.request(`${project} [S] ${options && typeof options !== 'string' && options.id || options} ${JSON.stringify(options)}`, () => client.nodes.getSiblings(options));
127
+ }
128
+ request(key, execute) {
129
+ // do not cache results in SSR
130
+ if (!this.cache.get(key) || typeof window == 'undefined') {
131
+ const promise = execute();
132
+ this.cache.set(key, promise);
133
+ promise.catch(() => {
134
+ this.cache.remove(key);
135
+ });
136
+ }
137
+ return this.cache.get(key);
138
+ }
139
+ }
140
+ const cachedSearch = new CachedSearch();
141
+ const cachedSearchWithCookies = cookies => new CachedSearch(cookies);
142
+
143
+ const mapCookieHeader = cookies => typeof cookies === 'object' ? Object.entries(cookies).map(([name, value]) => `${name}=${value}`).join('; ') : cookies;
144
+ const getSsrReferer = () => {
145
+ if (typeof window === 'undefined') {
146
+ const state = reduxStore.getState();
147
+ const referer = `${selectCurrentHostname(state)}${selectCurrentPath(state)}${selectCurrentSearch(state)}`;
148
+ return referer;
149
+ }
150
+ return '';
151
+ };
152
+ const storeSurrogateKeys = response => {
153
+ let keys = '';
154
+ if (response.status === 200) {
155
+ keys = response.headers.get ? response.headers.get('surrogate-key') : response.headers.map['surrogate-key'];
156
+ if (!keys) console.info(`[storeSurrogateKeys] No keys in ${response.url}`);
157
+ }
158
+ reduxStore === null || reduxStore === void 0 ? void 0 : reduxStore.dispatch(setSurrogateKeys(keys, response.url, response.status));
159
+ };
160
+ const getClientConfig = (project, cookies) => {
161
+ const config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */
162
+ config.responseHandler = {}; // TODO: this needs moving to be scoped at server level
163
+
164
+ if (project) {
165
+ config.projectId = project;
166
+ }
167
+
168
+ // we only want the surrogate key header in a server context
169
+ // TODO: this needs moving to be scoped at server level
170
+ if (typeof window === 'undefined') {
171
+ config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {
172
+ referer: getSsrReferer(),
173
+ 'x-require-surrogate-key': true,
174
+ 'x-crb-ssr': true // add this for support tracing
175
+ });
176
+ // config.responseHandler[200] = storeSurrogateKeys;
177
+ config.responseHandler['*'] = storeSurrogateKeys;
178
+ }
179
+ if (typeof window !== 'undefined' && PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */) {
180
+ // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)
181
+ config.rootUrl = '';
182
+ config.responseHandler[404] = () => null;
183
+ }
184
+ if (cookies) {
185
+ const cookieHeader = mapCookieHeader(findLoginCookies(cookies));
186
+ if (cookieHeader) {
187
+ config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {
188
+ Cookie: cookieHeader
189
+ });
190
+ }
191
+ }
192
+ return config;
193
+ };
194
+
195
+ // export * from 'contensis-delivery-api';
196
+
197
+ class DeliveryApi {
198
+ constructor(cookies) {
199
+ this.cookies = void 0;
200
+ this.getClientSideVersionStatus = () => {
201
+ if (typeof window !== 'undefined') {
202
+ // Allow overriding versionStatus with the querystring
203
+ const {
204
+ versionStatus
205
+ } = parse(window.location.search);
206
+ if (versionStatus) return versionStatus;
207
+ // Client-side we will have a global variable set if rendered by SSR in production
208
+ if (typeof window.versionStatus !== 'undefined') return window.versionStatus;
209
+ // For localhost development we can only work out versionStatus from the current hostname
210
+ const currentHostname = window.location.hostname;
211
+ return this.getVersionStatusFromHostname(currentHostname);
212
+ }
213
+ return null;
214
+ };
215
+ this.getServerSideVersionStatus = request => request.query.versionStatus || deliveryApi.getVersionStatusFromHeaders(request.headers) || deliveryApi.getVersionStatusFromHostname(request.hostname);
216
+ this.getVersionStatusFromHeaders = headers => {
217
+ const versionStatusHeader = headers['x-entry-versionstatus'];
218
+ if (typeof versionStatusHeader !== 'undefined') return versionStatusHeader;
219
+ return null;
220
+ };
221
+ this.getVersionStatusFromHostname = currentHostname => {
222
+ if (currentHostname.indexOf('localhost') > -1) return 'latest';
223
+ if (currentHostname.endsWith('contensis.cloud')) {
224
+ if (currentHostname.indexOf('preview.') > -1) {
225
+ return 'latest';
226
+ } else {
227
+ return 'published';
228
+ }
229
+ }
230
+ if (currentHostname.endsWith('cloud.contensis.com')) {
231
+ if (currentHostname.indexOf('preview-') > -1) {
232
+ return 'latest';
233
+ } else {
234
+ return 'published';
235
+ }
236
+ }
237
+ return 'published';
238
+ };
239
+ this.search = (query, linkDepth = 0, project) => {
240
+ const client = Client.create(getClientConfig(project, this.cookies));
241
+ return client.entries.search(query, typeof linkDepth !== 'undefined' ? linkDepth : 1);
242
+ };
243
+ this.getClient = (versionStatus = 'published', project) => {
244
+ const baseConfig = getClientConfig(project, this.cookies);
245
+ baseConfig.versionStatus = versionStatus;
246
+ return Client.create(baseConfig);
247
+ };
248
+ this.getEntry = (id, linkDepth = 0, versionStatus = 'published', project) => {
249
+ const baseConfig = getClientConfig(project, this.cookies);
250
+ baseConfig.versionStatus = versionStatus;
251
+ const client = Client.create(baseConfig);
252
+ // return client.entries.get(id, linkDepth);
253
+ return client.entries.get({
254
+ id,
255
+ linkDepth
256
+ });
257
+ };
258
+ this.cookies = cookies;
259
+ }
260
+ }
261
+ const deliveryApi = new DeliveryApi();
262
+ const deliveryApiWithCookies = cookies => new DeliveryApi(cookies);
263
+
264
+ export { cachedSearchWithCookies as a, deliveryApiWithCookies as b, cachedSearch as c, deliveryApi as d, getClientConfig as g };
265
+ //# sourceMappingURL=ContensisDeliveryApi-fe53fa10.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContensisDeliveryApi-fe53fa10.js","sources":["../src/util/LruCache.js","../src/util/CachedDeliveryApi.ts","../src/util/ContensisDeliveryApi.ts"],"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 { DeliveryApi, getClientConfig } 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\n constructor(cookies?: CookieObject) {\n this.cookies = cookies;\n }\n\n getClient(...args: Parameters<DeliveryApi['getClient']>) {\n return new DeliveryApi(this.cookies).getClient(...args);\n }\n\n search(query: Query, linkDepth = 0, project?: string) {\n const client = Client.create(getClientConfig(project, this.cookies));\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.cookies));\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(getClientConfig(project, this.cookies));\n client.clientConfig.versionStatus = versionStatus;\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.cookies));\n return this.request(`[CONTENT TYPE] ${id} ${project}`, () =>\n client.contentTypes.get(id)\n );\n }\n\n getRootNode(options: NodeGetRootOptions, project?: string) {\n const client = Client.create(getClientConfig(project, this.cookies));\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.cookies));\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.cookies));\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.cookies));\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.cookies));\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 = (cookies?: CookieObject) =>\n new CachedSearch(cookies);\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';\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 = (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 reduxStore?.dispatch(setSurrogateKeys(keys, response.url, response.status));\n};\n\nexport const getClientConfig = (project?: string, cookies?: CookieObject) => {\n const config: Config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */\n config.responseHandler = {}; // TODO: this needs moving to be scoped at server level\n\n if (project) {\n config.projectId = project;\n }\n\n // we only want the surrogate key header in a server context\n // TODO: this needs moving to be scoped at server level\n if (typeof window === 'undefined') {\n config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {\n referer: getSsrReferer(),\n 'x-require-surrogate-key': true,\n 'x-crb-ssr': true, // add this for support tracing\n });\n // config.responseHandler[200] = storeSurrogateKeys;\n config.responseHandler['*'] = storeSurrogateKeys;\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\n if (cookies) {\n const cookieHeader = mapCookieHeader(findLoginCookies(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\n constructor(cookies?: CookieObject) {\n this.cookies = cookies;\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.cookies));\n return client.entries.search(\n query,\n typeof linkDepth !== 'undefined' ? linkDepth : 1\n );\n };\n\n getClient = (versionStatus: VersionStatus = 'published', project) => {\n const baseConfig = getClientConfig(project, this.cookies);\n baseConfig.versionStatus = versionStatus;\n return Client.create(baseConfig);\n };\n\n getEntry = (\n id: string,\n linkDepth = 0,\n versionStatus: VersionStatus = 'published',\n project?: string\n ) => {\n const baseConfig = getClientConfig(project, this.cookies);\n baseConfig.versionStatus = versionStatus;\n const client = Client.create(baseConfig);\n // return client.entries.get(id, linkDepth);\n return client.entries.get({ id, linkDepth });\n };\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nexport const deliveryApiWithCookies = (cookies?: CookieObject) =>\n new DeliveryApi(cookies);\n\nexport * from './CachedDeliveryApi';\n"],"names":["CacheNode","constructor","key","value","next","prev","LruCache","limit","map","head","tail","size","get","node","remove","setHead","set","CachedSearch","cookies","cache","getClient","args","DeliveryApi","search","query","linkDepth","project","client","Client","create","getClientConfig","request","JSON","stringify","entries","searchUsingPost","id","versionStatus","clientConfig","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","dispatch","setSurrogateKeys","config","DELIVERY_API_CONFIG","responseHandler","projectId","defaultHeaders","assign","PROXY_DELIVERY_API","rootUrl","cookieHeader","findLoginCookies","Cookie","getClientSideVersionStatus","parse","location","currentHostname","hostname","getVersionStatusFromHostname","getServerSideVersionStatus","deliveryApi","getVersionStatusFromHeaders","versionStatusHeader","indexOf","endsWith","baseConfig","getEntry","deliveryApiWithCookies"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ const LOGIN_COOKIE = 'ContensisCMSUserName';
2
+ const REFRESH_TOKEN_COOKIE = 'RefreshToken';
3
+ const findLoginCookies = cookies => typeof cookies === 'object' ? Object.fromEntries(Object.entries(cookies).filter(([name]) => [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name))) : cookies;
4
+
5
+ export { LOGIN_COOKIE as L, REFRESH_TOKEN_COOKIE as R, findLoginCookies as f };
6
+ //# sourceMappingURL=CookieConstants-3d3b6531.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CookieConstants-3d3b6531.js","sources":["../src/user/util/CookieConstants.ts"],"sourcesContent":["export const LOGIN_COOKIE = 'ContensisCMSUserName';\nexport const REFRESH_TOKEN_COOKIE = 'RefreshToken';\n\nexport type CookieObject = { [name: string]: any };\n\nexport const findLoginCookies = (cookies: CookieObject | string) =>\n typeof cookies === 'object'\n ? Object.fromEntries(\n Object.entries(cookies).filter(([name]) =>\n [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name)\n )\n )\n : cookies;\n"],"names":["LOGIN_COOKIE","REFRESH_TOKEN_COOKIE","findLoginCookies","cookies","Object","fromEntries","entries","filter","name","includes"],"mappings":"AAAO,MAAMA,YAAY,GAAG,uBAAsB;AAC3C,MAAMC,oBAAoB,GAAG,eAAc;MAIrCC,gBAAgB,GAAIC,OAA8B,IAC7D,OAAOA,OAAO,KAAK,QAAQ,GACvBC,MAAM,CAACC,WAAW,CAChBD,MAAM,CAACE,OAAO,CAACH,OAAO,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,KACpC,CAACR,YAAY,EAAEC,oBAAoB,CAAC,CAACQ,QAAQ,CAACD,IAAI,CAAC,CACpD,CACF,GACDL;;;;"}
@@ -1,11 +1,12 @@
1
1
  import React, { useCallback, useEffect } from 'react';
2
+ import { useCookies } from 'react-cookie';
2
3
  import { connect } from 'react-redux';
3
4
  import { hot } from 'react-hot-loader';
4
5
  import { Route, useLocation, Redirect } from 'react-router-dom';
5
6
  import { matchRoutes, renderRoutes } from 'react-router-config';
6
7
  import { createSelector } from 'reselect';
7
- import { r as selectRouteEntryContentTypeId, a as selectRouteEntry, t as selectRouteIsError, u as selectIsNotFound, v as selectRouteLoading, k as selectMappedEntry, b as selectCurrentProject, w as selectCurrentPath, x as selectRouteStatusCode, y as selectRouteErrorMessage, z as setNavigationPath } from './selectors-3f0d804d.js';
8
- import { a as selectUserIsAuthenticated, b as selectUserGroups, t as toJS, m as matchUserGroup } from './ToJs-0066e629.js';
8
+ import { r as selectRouteEntryContentTypeId, a as selectRouteEntry, t as selectRouteIsError, u as selectIsNotFound, v as selectRouteLoading, k as selectMappedEntry, b as selectCurrentProject, w as selectCurrentPath, x as selectRouteStatusCode, y as selectRouteErrorMessage, z as setNavigationPath } from './selectors-0fe67d47.js';
9
+ import { a as selectUserIsAuthenticated, b as selectUserGroups, t as toJS, C as CookieHelper, m as matchUserGroup } from './ToJs-c75473e9.js';
9
10
 
10
11
  const NotFound = ({
11
12
  statusCode,
@@ -71,13 +72,14 @@ const RouteLoader = ({
71
72
  trailingSlashRedirectCode = 302
72
73
  }) => {
73
74
  const location = useLocation();
75
+ const cookies = new CookieHelper(...useCookies());
74
76
  // Always ensure paths are trimmed of trailing slashes so urls are always unique
75
77
  const trimmedPath = getTrimmedPath(location.pathname);
76
78
 
77
79
  // Match any Static Routes a developer has defined
78
80
  const matchedStaticRoute = () => matchRoutes(routes.StaticRoutes, location.pathname);
79
81
  const isStaticRoute = () => matchedStaticRoute().length > 0;
80
- const staticRoute = isStaticRoute() && matchedStaticRoute()[0];
82
+ const staticRoute = isStaticRoute() ? matchedStaticRoute()[0] : undefined;
81
83
  const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;
82
84
  const setPath = useCallback(() => {
83
85
  // Use serverPath to control the path we send to siteview node api to resolve a route
@@ -108,7 +110,7 @@ const RouteLoader = ({
108
110
  serverPath = (_route$path2 = route.path) === null || _route$path2 === void 0 ? void 0 : _route$path2.split('/').filter(p => !p.startsWith(':')).join('/');
109
111
  }
110
112
  }
111
- setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes);
113
+ setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, cookies);
112
114
  // eslint-disable-next-line react-hooks/exhaustive-deps
113
115
  }, [setNavigationPath,
114
116
  // staticRoute,
@@ -162,6 +164,7 @@ const RouteLoader = ({
162
164
  }
163
165
  const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;
164
166
  if (isNotFound || isError) {
167
+ console.info(`RouteLoader rendering NotFound component: statusCode ${statusCode}, isNotFound ${isNotFound}, isError ${isError}`);
165
168
  return /*#__PURE__*/React.createElement(Status, {
166
169
  code: statusCode
167
170
  }, /*#__PURE__*/React.createElement(NotFoundComponent, {
@@ -191,4 +194,4 @@ const mapDispatchToProps = {
191
194
  var RouteLoader$1 = hot(module)(connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader)));
192
195
 
193
196
  export { RouteLoader$1 as R };
194
- //# sourceMappingURL=RouteLoader-f5d5f733.js.map
197
+ //# sourceMappingURL=RouteLoader-fe64ca81.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-fe64ca81.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 { useCookies } from 'react-cookie';\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 { CookieHelper } from '~/user/util/CookieHelper.class';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, RouteComponentProps, RouteLoaderProps } from '../routes';\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 const cookies = new CookieHelper(...useCookies());\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 cookies\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","cookies","CookieHelper","useCookies","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,4 +1,4 @@
1
- import { g as getImmutableOrJS } from './selectors-3f0d804d.js';
1
+ import { g as getImmutableOrJS } from './selectors-0fe67d47.js';
2
2
  import React from 'react';
3
3
 
4
4
  const selectUserIsLoading = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isLoading']);
@@ -81,6 +81,52 @@ const matchUserGroup = (userGroups = [], requiredGroups = []) => {
81
81
  return groupMatch;
82
82
  };
83
83
 
84
+ const COOKIE_VALID_DAYS = 1; // 0 = Session cookie
85
+
86
+ // CookieHelper is a class that takes in and lets us pass around the methods provided
87
+ // by `useCookie` react hook in backend code that is connected to the universal-cookies
88
+ // instance created in SSR middleware (and provides browser cookies)
89
+ class CookieHelper {
90
+ get raw() {
91
+ return this.cookies;
92
+ }
93
+ constructor(cookies, setCookie, removeCookie) {
94
+ this.cookies = void 0;
95
+ this.setCookie = void 0;
96
+ this.removeCookie = void 0;
97
+ this.cookies = cookies;
98
+ this.setCookie = setCookie;
99
+ this.removeCookie = removeCookie;
100
+ }
101
+ GetCookie(name) {
102
+ const cookie = this.cookies[name];
103
+ if (typeof cookie === 'undefined') {
104
+ return null;
105
+ }
106
+ return cookie;
107
+ }
108
+ SetCookie(name, value, maxAgeDays = COOKIE_VALID_DAYS) {
109
+ // update local cookies object as this is provided as a clone of `req.universalCookies`
110
+ this.cookies[name] = value;
111
+
112
+ // call the passed setCookie method so we can update the `universal-cookie` instance
113
+ // with the change listener attached so the cookies can be set in SSR response
114
+ if (maxAgeDays === 0) this.setCookie(name, value);else this.setCookie(name, value, {
115
+ expires: addDays(new Date(), maxAgeDays)
116
+ });
117
+ }
118
+ DeleteCookie(name) {
119
+ // update local cookies object as this is provided as a clone of `req.universalCookies`
120
+ delete this.cookies[name];
121
+ this.removeCookie(name);
122
+ }
123
+ }
124
+ const addDays = (date = new Date(), days) => {
125
+ const result = new Date(date);
126
+ result.setDate(result.getDate() + days);
127
+ return result;
128
+ };
129
+
84
130
  /* eslint-disable react/display-name */
85
131
  const toJS = WrappedComponent => wrappedComponentProps => {
86
132
  const KEY = 0;
@@ -94,5 +140,5 @@ const toJS = WrappedComponent => wrappedComponentProps => {
94
140
  return /*#__PURE__*/React.createElement(WrappedComponent, propsJS);
95
141
  };
96
142
 
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-0066e629.js.map
143
+ export { CookieHelper as C, 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 };
144
+ //# sourceMappingURL=ToJs-c75473e9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToJs-c75473e9.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/user/util/CookieHelper.class.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","import { useCookies } from 'react-cookie';\n\nconst COOKIE_VALID_DAYS = 1; // 0 = Session cookie\n\ntype CookieHook = ReturnType<typeof useCookies>;\ntype Cookies = { [k: string]: string };\ntype SetCookie = CookieHook[1];\ntype RemoveCookie = CookieHook[2];\n\n// CookieHelper is a class that takes in and lets us pass around the methods provided\n// by `useCookie` react hook in backend code that is connected to the universal-cookies\n// instance created in SSR middleware (and provides browser cookies)\nexport class CookieHelper {\n private cookies: Cookies;\n private setCookie: SetCookie;\n private removeCookie: RemoveCookie;\n\n get raw() {\n return this.cookies;\n }\n\n constructor(\n cookies: { [k: string]: string },\n setCookie: CookieHelper['setCookie'],\n removeCookie: CookieHelper['removeCookie']\n ) {\n this.cookies = cookies;\n this.setCookie = setCookie;\n this.removeCookie = removeCookie;\n }\n\n GetCookie(name: string) {\n const cookie = this.cookies[name];\n if (typeof cookie === 'undefined') {\n return null;\n }\n return cookie;\n }\n\n SetCookie(name: string, value: string, maxAgeDays = COOKIE_VALID_DAYS) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n this.cookies[name] = value;\n\n // call the passed setCookie method so we can update the `universal-cookie` instance\n // with the change listener attached so the cookies can be set in SSR response\n if (maxAgeDays === 0) this.setCookie(name, value);\n else\n this.setCookie(name, value, {\n expires: addDays(new Date(), maxAgeDays),\n });\n }\n\n DeleteCookie(name: string) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n delete this.cookies[name];\n\n this.removeCookie(name);\n }\n}\nconst addDays = (date = new Date(), days: number) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const mapCookieHeader = cookies =>\n typeof cookies === 'object'\n ? Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n : cookies;\n","/* 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","COOKIE_VALID_DAYS","CookieHelper","raw","cookies","constructor","setCookie","removeCookie","GetCookie","cookie","SetCookie","value","maxAgeDays","expires","addDays","Date","DeleteCookie","date","days","result","setDate","getDate","toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","React","createElement"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
2
+
3
+ function getDefaultExportFromCjs (x) {
4
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
+ }
6
+
7
+ export { commonjsGlobal as c, getDefaultExportFromCjs as g };
8
+ //# sourceMappingURL=_commonjsHelpers-1789f0cf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers-1789f0cf.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
package/esm/client.js CHANGED
@@ -7,32 +7,34 @@ 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-dd31c7f0.js';
11
- import { s as setVersionStatus } from './version-f4629693.js';
12
- import { b as browserHistory, r as rootSaga, p as pickProject } from './App-5f914483.js';
13
- export { A as ReactApp } from './App-5f914483.js';
14
- import { c as setCurrentProject } from './selectors-3f0d804d.js';
15
- import { d as deliveryApi } from './ContensisDeliveryApi-ad06857d.js';
10
+ import { c as createStore, s as selectVersionStatus } from './version-7ea8bea8.js';
11
+ import { s as setVersionStatus } from './version-f42f7bdc.js';
12
+ import { b as browserHistory, r as rootSaga, p as pickProject } from './App-aaea6310.js';
13
+ export { A as ReactApp } from './App-aaea6310.js';
14
+ import { c as setCurrentProject } from './selectors-0fe67d47.js';
15
+ import { d as deliveryApi } from './ContensisDeliveryApi-fe53fa10.js';
16
16
  import 'redux';
17
17
  import 'redux-thunk';
18
18
  import 'redux-saga';
19
19
  import 'redux-injectors';
20
20
  import 'immer';
21
- import 'deepmerge';
22
21
  import './reducers-3d5c37d1.js';
23
22
  import '@redux-saga/core/effects';
24
23
  import 'history';
25
24
  import 'loglevel';
26
- import './login-4d07c2de.js';
27
- import './ToJs-0066e629.js';
28
- import 'jsonpath-mapper';
29
25
  import 'await-to-js';
30
- import 'js-cookie';
26
+ import './ChangePassword.container-724c8e0a.js';
27
+ import './ToJs-c75473e9.js';
28
+ import 'jsonpath-mapper';
29
+ import './CookieConstants-3d3b6531.js';
31
30
  import 'contensis-delivery-api';
32
- import './RouteLoader-f5d5f733.js';
31
+ import './RouteLoader-fe64ca81.js';
33
32
  import 'react-router-config';
34
33
  import 'reselect';
35
34
 
35
+ // Fix TS2769 error No overload matches this call
36
+ const Container = AppContainer; // as typeof AppContainer;
37
+
36
38
  class ClientApp {
37
39
  constructor(ReactApp, config) {
38
40
  const documentRoot = document.getElementById('root');
@@ -44,7 +46,7 @@ class ClientApp {
44
46
  withEvents
45
47
  } = config;
46
48
  const GetClientJSX = store => {
47
- const ClientJsx = /*#__PURE__*/React.createElement(AppContainer, null, /*#__PURE__*/React.createElement(CookiesProvider, null, /*#__PURE__*/React.createElement(Provider, {
49
+ const ClientJsx = /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(CookiesProvider, null, /*#__PURE__*/React.createElement(Provider, {
48
50
  store: store
49
51
  }, /*#__PURE__*/React.createElement(Router, {
50
52
  history: browserHistory