@zengenti/contensis-react-base 3.0.2-beta.22 → 3.0.2-beta.24

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 (126) hide show
  1. package/cjs/{App-21a7d836.js → App-a9f4effe.js} +48 -21
  2. package/cjs/App-a9f4effe.js.map +1 -0
  3. package/cjs/{ContensisDeliveryApi-c079b03a.js → ContensisDeliveryApi-76de5ca9.js} +55 -34
  4. package/cjs/ContensisDeliveryApi-76de5ca9.js.map +1 -0
  5. package/cjs/CookieConstants-000427db.js +10 -0
  6. package/cjs/CookieConstants-000427db.js.map +1 -0
  7. package/cjs/CookieHelper.class-daeb09dd.js +52 -0
  8. package/cjs/CookieHelper.class-daeb09dd.js.map +1 -0
  9. package/cjs/{RouteLoader-7f0d107a.js → RouteLoader-005d7f4e.js} +9 -5
  10. package/cjs/RouteLoader-005d7f4e.js.map +1 -0
  11. package/cjs/{ToJs-6e9cfa69.js → ToJs-5169fe56.js} +2 -2
  12. package/cjs/ToJs-5169fe56.js.map +1 -0
  13. package/cjs/client.js +15 -11
  14. package/cjs/client.js.map +1 -1
  15. package/cjs/contensis-react-base.js +18 -343
  16. package/cjs/contensis-react-base.js.map +1 -1
  17. package/cjs/{login-2a6b5be0.js → login-c94a3369.js} +86 -80
  18. package/cjs/login-c94a3369.js.map +1 -0
  19. package/cjs/redux.js +3 -3
  20. package/cjs/routing.js +5 -3
  21. package/cjs/routing.js.map +1 -1
  22. package/cjs/{selectors-bcca60f4.js → selectors-bb991331.js} +4 -9
  23. package/cjs/selectors-bb991331.js.map +1 -0
  24. package/cjs/user.js +30 -15
  25. package/cjs/user.js.map +1 -1
  26. package/cjs/util.js +5 -3
  27. package/cjs/util.js.map +1 -1
  28. package/cjs/{version-4077e706.js → version-153ec9ef.js} +2 -2
  29. package/cjs/{version-4077e706.js.map → version-153ec9ef.js.map} +1 -1
  30. package/cjs/{version-fe28099e.js → version-963a7634.js} +3 -3
  31. package/cjs/{version-fe28099e.js.map → version-963a7634.js.map} +1 -1
  32. package/esm/{App-2af18a99.js → App-cdcedf62.js} +47 -21
  33. package/esm/App-cdcedf62.js.map +1 -0
  34. package/esm/{ContensisDeliveryApi-5660ee0e.js → ContensisDeliveryApi-91398551.js} +55 -35
  35. package/esm/ContensisDeliveryApi-91398551.js.map +1 -0
  36. package/esm/CookieConstants-3d3b6531.js +6 -0
  37. package/esm/CookieConstants-3d3b6531.js.map +1 -0
  38. package/esm/CookieHelper.class-4d6ee27b.js +49 -0
  39. package/esm/CookieHelper.class-4d6ee27b.js.map +1 -0
  40. package/esm/{RouteLoader-6eac364e.js → RouteLoader-d36840dd.js} +9 -5
  41. package/esm/RouteLoader-d36840dd.js.map +1 -0
  42. package/esm/{ToJs-9b30636a.js → ToJs-e1af7030.js} +2 -2
  43. package/esm/ToJs-e1af7030.js.map +1 -0
  44. package/esm/client.js +16 -12
  45. package/esm/client.js.map +1 -1
  46. package/esm/contensis-react-base.js +18 -344
  47. package/esm/contensis-react-base.js.map +1 -1
  48. package/esm/{login-71ff3fcb.js → login-950e0b92.js} +79 -72
  49. package/esm/login-950e0b92.js.map +1 -0
  50. package/esm/redux.js +6 -6
  51. package/esm/routing.js +5 -3
  52. package/esm/routing.js.map +1 -1
  53. package/esm/{selectors-74de49a3.js → selectors-1a3c1725.js} +4 -9
  54. package/esm/selectors-1a3c1725.js.map +1 -0
  55. package/esm/user.js +27 -16
  56. package/esm/user.js.map +1 -1
  57. package/esm/util.js +5 -3
  58. package/esm/util.js.map +1 -1
  59. package/esm/{version-ef107106.js → version-6cc0418c.js} +2 -2
  60. package/esm/{version-ef107106.js.map → version-6cc0418c.js.map} +1 -1
  61. package/esm/{version-b15807c5.js → version-ec722079.js} +3 -3
  62. package/esm/{version-b15807c5.js.map → version-ec722079.js.map} +1 -1
  63. package/models/client/client.d.ts +2 -2
  64. package/models/client/index.d.ts +1 -1
  65. package/models/config.d.ts +3 -3
  66. package/models/index.d.ts +5 -5
  67. package/models/redux/actions/index.d.ts +1 -1
  68. package/models/redux/appstate.d.ts +2 -2
  69. package/models/redux/selectors/index.d.ts +1 -1
  70. package/models/redux/store/store.d.ts +1 -1
  71. package/models/redux/types/index.d.ts +1 -1
  72. package/models/routing/redux/actions.d.ts +10 -6
  73. package/models/routing/redux/selectors.d.ts +5 -5
  74. package/models/routing/redux/types.d.ts +0 -1
  75. package/models/routing/routes.d.ts +21 -18
  76. package/models/routing/util/queries.d.ts +1 -1
  77. package/models/search/models/Queries.d.ts +8 -10
  78. package/models/search/models/Search.d.ts +24 -24
  79. package/models/search/models/SearchActions.d.ts +33 -33
  80. package/models/search/models/SearchState.d.ts +11 -11
  81. package/models/search/models/SearchUtil.d.ts +1 -1
  82. package/models/search/models/WithSearch.d.ts +1 -1
  83. package/models/search/redux/actions.d.ts +4 -4
  84. package/models/search/redux/selectors.d.ts +27 -27
  85. package/models/search/redux/util.d.ts +1 -1
  86. package/models/search/search/expressions.d.ts +4 -4
  87. package/models/search/search/util.d.ts +2 -2
  88. package/models/search/transformations/state-to-queryparams.mapper.d.ts +1 -1
  89. package/models/server/features/linkdepth-api/LinkDepthSearchService.d.ts +1 -1
  90. package/models/server/features/linkdepth-api/search.d.ts +3 -3
  91. package/models/server/internalServer.d.ts +8 -6
  92. package/models/server/util/bundles.d.ts +3 -3
  93. package/models/server/util/headers.d.ts +1 -1
  94. package/models/server/webApp.d.ts +1 -1
  95. package/models/testImmer/redux/reducer.d.ts +1 -1
  96. package/models/user/components/Login.d.ts +2 -3
  97. package/models/user/containers/ChangePassword.container.d.ts +2 -2
  98. package/models/user/containers/ForgotPassword.container.d.ts +2 -2
  99. package/models/user/containers/Login.container.d.ts +2 -2
  100. package/models/user/containers/Registration.container.d.ts +2 -2
  101. package/models/user/hocs/withLogin.d.ts +5 -11
  102. package/models/user/hocs/withRegistration.d.ts +2 -8
  103. package/models/user/redux/actions.d.ts +2 -2
  104. package/models/user/redux/sagas/login.d.ts +9 -8
  105. package/models/user/redux/selectors.d.ts +6 -6
  106. package/models/user/util/CookieConstants.d.ts +7 -0
  107. package/models/user/util/CookieHelper.class.d.ts +15 -3
  108. package/models/user/util/LoginHelper.class.d.ts +26 -23
  109. package/models/user/util/matchGroups.d.ts +1 -1
  110. package/models/util/ContensisDeliveryApi.d.ts +21 -14
  111. package/models/util/ToJs.d.ts +1 -1
  112. package/models/util/index.d.ts +2 -2
  113. package/models/util/json-mapper.d.ts +3 -3
  114. package/package.json +8 -8
  115. package/cjs/App-21a7d836.js.map +0 -1
  116. package/cjs/ContensisDeliveryApi-c079b03a.js.map +0 -1
  117. package/cjs/RouteLoader-7f0d107a.js.map +0 -1
  118. package/cjs/ToJs-6e9cfa69.js.map +0 -1
  119. package/cjs/login-2a6b5be0.js.map +0 -1
  120. package/cjs/selectors-bcca60f4.js.map +0 -1
  121. package/esm/App-2af18a99.js.map +0 -1
  122. package/esm/ContensisDeliveryApi-5660ee0e.js.map +0 -1
  123. package/esm/RouteLoader-6eac364e.js.map +0 -1
  124. package/esm/ToJs-9b30636a.js.map +0 -1
  125. package/esm/login-71ff3fcb.js.map +0 -1
  126. package/esm/selectors-74de49a3.js.map +0 -1
@@ -2,11 +2,11 @@
2
2
 
3
3
  var effects = require('@redux-saga/core/effects');
4
4
  var reducers = require('./reducers-9afb5f89.js');
5
- var ToJs = require('./ToJs-6e9cfa69.js');
6
- var selectors = require('./selectors-bcca60f4.js');
5
+ var ToJs = require('./ToJs-5169fe56.js');
6
+ var selectors = require('./selectors-bb991331.js');
7
7
  var mapJson = require('jsonpath-mapper');
8
- var awaitToJs = require('await-to-js');
9
- var JSCookie = require('js-cookie');
8
+ var to = require('await-to-js');
9
+ var CookieConstants = require('./CookieConstants-000427db.js');
10
10
 
11
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
12
 
@@ -29,7 +29,6 @@ function _interopNamespace(e) {
29
29
  }
30
30
 
31
31
  var mapJson__default = /*#__PURE__*/_interopDefaultLegacy(mapJson);
32
- var JSCookie__default = /*#__PURE__*/_interopDefaultLegacy(JSCookie);
33
32
 
34
33
  const findContentTypeMapping = (ContentTypeMappings, contentTypeId) => ContentTypeMappings.find(ct => ct.contentTypeID === contentTypeId);
35
34
 
@@ -77,9 +76,15 @@ const getManagementApiClient = async ({
77
76
  }
78
77
  };
79
78
  }
80
- const {
79
+ let {
81
80
  Client
82
81
  } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('contensis-management-api')); });
82
+ if (typeof window === 'undefined') {
83
+ const {
84
+ UniversalClient
85
+ } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('contensis-management-api')); });
86
+ Client = UniversalClient;
87
+ }
83
88
  const client = Client.create({
84
89
  ...config,
85
90
  projectId,
@@ -93,32 +98,6 @@ const getManagementApiClient = async ({
93
98
  return client;
94
99
  };
95
100
 
96
- const COOKIE_VALID_DAYS = 1; // 0 = Session cookie
97
-
98
- // Override the default js-cookie conversion / encoding
99
- // methods so the written values work with Contensis sites
100
- const Cookies = JSCookie__default["default"].withConverter({
101
- read: value => decodeURIComponent(value),
102
- write: value => encodeURIComponent(value)
103
- });
104
- class CookieHelper {
105
- static GetCookie(name) {
106
- const cookie = Cookies.get(name);
107
- if (typeof cookie === 'undefined') {
108
- return null;
109
- }
110
- return cookie;
111
- }
112
- static SetCookie(name, value, maxAgeDays = COOKIE_VALID_DAYS) {
113
- if (maxAgeDays === 0) Cookies.set(name, value);else Cookies.set(name, value, {
114
- expires: maxAgeDays
115
- });
116
- }
117
- static DeleteCookie(name) {
118
- Cookies.remove(name);
119
- }
120
- }
121
-
122
101
  const context$1 = typeof window != 'undefined' ? window : global;
123
102
  const requireOidc = process.env.NODE_ENV === 'development' ? WSFED_LOGIN === 'true' /* global WSFED_LOGIN */ : context$1.WSFED_LOGIN === 'true';
124
103
  const servers = SERVERS; /* global SERVERS */
@@ -146,30 +125,32 @@ const createUserManager = async config => {
146
125
  };
147
126
 
148
127
  /* eslint-disable require-atomic-updates */
149
- const LOGIN_COOKIE = 'ContensisCMSUserName';
150
- const REFRESH_TOKEN_COOKIE = 'RefreshToken';
151
128
  const context = typeof window != 'undefined' ? window : global;
152
129
  class LoginHelper {
153
- static SetLoginCookies({
130
+ constructor(cookies) {
131
+ this.cookies = void 0;
132
+ this.cookies = cookies;
133
+ }
134
+ SetLoginCookies({
154
135
  contensisClassicToken,
155
136
  refreshToken
156
137
  }) {
157
- console.info('SetLoginCookies:', LOGIN_COOKIE, contensisClassicToken, REFRESH_TOKEN_COOKIE, refreshToken);
158
- if (contensisClassicToken) CookieHelper.SetCookie(LOGIN_COOKIE, contensisClassicToken);
159
- if (refreshToken) CookieHelper.SetCookie(REFRESH_TOKEN_COOKIE, refreshToken);
138
+ console.info('SetLoginCookies:', CookieConstants.LOGIN_COOKIE, contensisClassicToken, CookieConstants.REFRESH_TOKEN_COOKIE, refreshToken);
139
+ if (contensisClassicToken) this.cookies.SetCookie(CookieConstants.LOGIN_COOKIE, contensisClassicToken);
140
+ if (refreshToken) this.cookies.SetCookie(CookieConstants.REFRESH_TOKEN_COOKIE, refreshToken);
160
141
  }
161
- static GetCachedCredentials() {
142
+ GetCachedCredentials() {
162
143
  return {
163
144
  bearerToken: null,
164
145
  bearerTokenExpiryDate: null,
165
- refreshToken: CookieHelper.GetCookie(REFRESH_TOKEN_COOKIE),
146
+ refreshToken: this.cookies.GetCookie(CookieConstants.REFRESH_TOKEN_COOKIE),
166
147
  refreshTokenExpiryDate: null,
167
- contensisClassicToken: CookieHelper.GetCookie(LOGIN_COOKIE)
148
+ contensisClassicToken: this.cookies.GetCookie(CookieConstants.LOGIN_COOKIE)
168
149
  };
169
150
  }
170
- static ClearCachedCredentials() {
171
- CookieHelper.DeleteCookie(LOGIN_COOKIE);
172
- CookieHelper.DeleteCookie(REFRESH_TOKEN_COOKIE);
151
+ ClearCachedCredentials() {
152
+ this.cookies.DeleteCookie(CookieConstants.LOGIN_COOKIE);
153
+ this.cookies.DeleteCookie(CookieConstants.REFRESH_TOKEN_COOKIE);
173
154
  if (LoginHelper.WSFED_LOGIN && typeof window !== 'undefined') {
174
155
  // remove any oidc keys left over in localStorage
175
156
  const {
@@ -183,7 +164,7 @@ class LoginHelper {
183
164
  keys.forEach(key => localStorage.removeItem(key));
184
165
  }
185
166
  }
186
- static async LoginUser({
167
+ async LoginUser({
187
168
  username,
188
169
  password,
189
170
  clientCredentials
@@ -205,7 +186,7 @@ class LoginHelper {
205
186
  });
206
187
 
207
188
  // Ensure the client has requested a bearer token
208
- const [loginError, clientBearerToken] = await awaitToJs.to(transientClient.ensureBearerToken());
189
+ const [loginError, clientBearerToken] = await to.to(transientClient.ensureBearerToken());
209
190
 
210
191
  // Problem getting token with username and password
211
192
  if (loginError) {
@@ -216,14 +197,14 @@ class LoginHelper {
216
197
  isAuthenticationError: loginError.name.includes('ContensisAuthenticationError'),
217
198
  isError: true
218
199
  };
219
- LoginHelper.ClearCachedCredentials();
200
+ this.ClearCachedCredentials();
220
201
  }
221
202
 
222
203
  // Got a token using username and password
223
204
  if (clientBearerToken) {
224
205
  // Set credentials so we can continue to GetUserDetails
225
206
  credentials = mapClientCredentials(transientClient);
226
- LoginHelper.SetLoginCookies(credentials);
207
+ this.SetLoginCookies(credentials);
227
208
  authenticationState = {
228
209
  clientCredentials: credentials,
229
210
  isAuthenticated: true,
@@ -247,11 +228,11 @@ class LoginHelper {
247
228
  isAuthenticationError: false,
248
229
  isError: true
249
230
  };
250
- LoginHelper.ClearCachedCredentials();
231
+ this.ClearCachedCredentials();
251
232
  } else {
252
233
  // Ensure we get latest refreshToken and contensisClassicToken from the latest client
253
234
  const latestCredentials = mapClientCredentials(client);
254
- LoginHelper.SetLoginCookies(latestCredentials);
235
+ this.SetLoginCookies(latestCredentials);
255
236
  user = userDetails;
256
237
  authenticationState = {
257
238
  clientCredentials: latestCredentials,
@@ -266,8 +247,8 @@ class LoginHelper {
266
247
  user
267
248
  };
268
249
  }
269
- static LogoutUser(redirectPath) {
270
- LoginHelper.ClearCachedCredentials();
250
+ LogoutUser(redirectPath) {
251
+ this.ClearCachedCredentials();
271
252
  if (LoginHelper.WSFED_LOGIN) {
272
253
  LoginHelper.WsFedLogout(redirectPath);
273
254
  } else {
@@ -289,6 +270,7 @@ class LoginHelper {
289
270
  }
290
271
  }
291
272
  static async ClientRedirectToSignInPage(redirectPath) {
273
+ if (typeof location === 'undefined') return;
292
274
  if (LoginHelper.WSFED_LOGIN) {
293
275
  await LoginHelper.WsFedLogout();
294
276
  await LoginHelper.WsFedLogin();
@@ -339,7 +321,7 @@ class LoginHelper {
339
321
  }
340
322
  }
341
323
  static async GetCredentialsForSecurityToken(securityToken) {
342
- const [error, response] = await awaitToJs.to(fetch(`${LoginHelper.CMS_URL}/REST/Contensis/Security/IsAuthenticated`, {
324
+ const [error, response] = await to.to(fetch(`${LoginHelper.CMS_URL}/REST/Contensis/Security/IsAuthenticated`, {
343
325
  method: 'POST',
344
326
  headers: {
345
327
  Accept: 'application/json',
@@ -353,13 +335,14 @@ class LoginHelper {
353
335
  message: 'Failed to fetch credentials'
354
336
  }];
355
337
  if (response.ok) {
356
- const [parseError, body] = await awaitToJs.to(response.json());
338
+ const [parseError, body] = await to.to(response.json());
357
339
  if (parseError) return [parseError];
358
340
  const {
359
341
  LogonResult,
360
342
  ApplicationData = []
361
343
  } = body;
362
344
  if (LogonResult !== 0) {
345
+ console.info(`Security token is invalid - LogonResult: ${LogonResult}`);
363
346
  return [{
364
347
  message: 'Security token is invalid',
365
348
  data: ApplicationData
@@ -402,14 +385,15 @@ LoginHelper.CMS_URL = SERVERS.cms /* global SERVERS */;
402
385
  LoginHelper.WSFED_LOGIN = process.env.NODE_ENV === 'development' ? WSFED_LOGIN === 'true' /* global WSFED_LOGIN */ : context.WSFED_LOGIN === 'true';
403
386
  LoginHelper.LOGIN_ROUTE = '/account/login';
404
387
  LoginHelper.ACCESS_DENIED_ROUTE = '/account/access-denied';
388
+ LoginHelper.withCookies = cookieHelper => new LoginHelper(cookieHelper);
405
389
  LoginHelper.GetUserDetails = async client => {
406
390
  let userError,
407
391
  groupsError,
408
392
  user = {},
409
393
  groupsResult;
410
- [userError, user] = await awaitToJs.to(client.security.users.getCurrent());
394
+ [userError, user] = await to.to(client.security.users.getCurrent());
411
395
  if (user && user.id) {
412
- [groupsError, groupsResult] = await awaitToJs.to(client.security.users.getUserGroups({
396
+ [groupsError, groupsResult] = await to.to(client.security.users.getUserGroups({
413
397
  userId: user.id,
414
398
  includeInherited: true,
415
399
  pageOptions: {
@@ -431,7 +415,9 @@ const loginSagas = [effects.takeEvery(reducers.LOGIN_USER, loginUserSaga), effec
431
415
  function* handleRequiresLoginSaga(action) {
432
416
  var _entry$sys;
433
417
  const {
418
+ cookies,
434
419
  entry,
420
+ path,
435
421
  requireLogin,
436
422
  routes: {
437
423
  ContentTypeMappings
@@ -460,14 +446,18 @@ function* handleRequiresLoginSaga(action) {
460
446
  // If cookies or securityToken are found on any route change
461
447
  // always validate and login the user
462
448
  if (routeRequiresLogin) {
449
+ console.info(`Route requires login: ${path}`);
463
450
  // If routeRequiresLogin do a blocking call that returns userLoggedIn
464
451
  userLoggedIn = yield effects.call(validateUserSaga, {
452
+ cookies,
465
453
  securityToken
466
454
  });
455
+ console.info(`User logged in: ${userLoggedIn}`);
467
456
  }
468
457
  // otherwise do a non blocking put to handle validation in the background
469
458
  else yield effects.put({
470
459
  type: reducers.VALIDATE_USER,
460
+ cookies,
471
461
  securityToken
472
462
  });
473
463
  }
@@ -482,13 +472,16 @@ function* handleRequiresLoginSaga(action) {
482
472
  if (!groupMatch) LoginHelper.ClientRedirectToAccessDeniedPage(action.location.pathname);
483
473
  }
484
474
  }
475
+ return userLoggedIn;
485
476
  }
486
477
  function* validateUserSaga({
478
+ cookies,
487
479
  securityToken
488
480
  }) {
481
+ const login = LoginHelper.withCookies(cookies);
489
482
  // Check for refreshToken in cookies
490
- let clientCredentials = LoginHelper.GetCachedCredentials();
491
- if (securityToken || clientCredentials.refreshToken) {
483
+ let clientCredentials = login.GetCachedCredentials();
484
+ if (securityToken || clientCredentials.securityToken || clientCredentials.refreshToken) {
492
485
  // We only attempt to validate the user if one of the stored
493
486
  // tokens are found, in this case we set loading state manually
494
487
  // so we don't need to set and unset loading if there are no stored
@@ -500,26 +493,36 @@ function* validateUserSaga({
500
493
  });
501
494
  // If we have just a security token we will call a CMS endpoint
502
495
  // and provide us with a RefreshToken cookie we can use during login
503
- const [error, refreshToken] = yield LoginHelper.GetCredentialsForSecurityToken(securityToken);
504
- if (refreshToken) {
505
- // Set cookies and reload values
506
- LoginHelper.SetLoginCookies({
507
- contensisClassicToken: securityToken,
508
- refreshToken
509
- });
510
- clientCredentials = LoginHelper.GetCachedCredentials();
496
+ if (securityToken || clientCredentials.securityToken && !clientCredentials.refreshToken) {
497
+ const [error, refreshToken] = yield LoginHelper.GetCredentialsForSecurityToken(securityToken || clientCredentials.securityToken);
498
+ if (refreshToken) {
499
+ // Set cookies and reload values
500
+ login.SetLoginCookies({
501
+ contensisClassicToken: securityToken,
502
+ refreshToken
503
+ });
504
+ clientCredentials = login.GetCachedCredentials();
505
+ }
506
+ if (error) {
507
+ login.ClearCachedCredentials();
508
+ yield effects.put({
509
+ type: reducers.SET_AUTHENTICATION_STATE,
510
+ authenticationState: {
511
+ isError: true,
512
+ errorMessage: (error === null || error === void 0 ? void 0 : error.message) || error && 'toString' in error && error.toString()
513
+ }
514
+ });
515
+ }
511
516
  }
512
517
 
513
518
  // Log the user in if a refreshToken is found
514
- if (clientCredentials.refreshToken) yield effects.call(loginUserSaga, {
515
- clientCredentials
516
- });else if (error) yield effects.put({
517
- type: reducers.SET_AUTHENTICATION_STATE,
518
- authenticationState: {
519
- isError: true,
520
- errorMessage: (error === null || error === void 0 ? void 0 : error.message) || error && 'toString' in error && error.toString()
521
- }
522
- });
519
+ if (clientCredentials.refreshToken) {
520
+ console.info(`Login user with refreshToken ${clientCredentials.refreshToken}`);
521
+ yield effects.call(loginUserSaga, {
522
+ clientCredentials,
523
+ cookies: login.cookies
524
+ });
525
+ }
523
526
  }
524
527
 
525
528
  // Tell any callers have we successfully logged in?
@@ -529,8 +532,10 @@ function* loginUserSaga(action = {}) {
529
532
  const {
530
533
  username,
531
534
  password,
532
- clientCredentials
535
+ clientCredentials,
536
+ cookies
533
537
  } = action;
538
+ const login = LoginHelper.withCookies(cookies);
534
539
 
535
540
  // If a WSFED_LOGIN site has dispatched the loginUser action
536
541
  // just redirect them to the Identity Provider sign in
@@ -538,7 +543,7 @@ function* loginUserSaga(action = {}) {
538
543
  const {
539
544
  authenticationState,
540
545
  user
541
- } = yield LoginHelper.LoginUser({
546
+ } = yield login.LoginUser({
542
547
  username,
543
548
  password,
544
549
  clientCredentials
@@ -574,13 +579,14 @@ function* redirectAfterSuccessfulLoginSaga() {
574
579
  }
575
580
  }
576
581
  function* logoutUserSaga({
577
- redirectPath
582
+ redirectPath,
583
+ cookies
578
584
  }) {
579
585
  yield effects.put({
580
586
  type: reducers.SET_AUTHENTICATION_STATE,
581
587
  user: null
582
588
  });
583
- yield LoginHelper.LogoutUser(redirectPath);
589
+ yield LoginHelper.withCookies(cookies).LogoutUser(redirectPath);
584
590
  }
585
591
  function* refreshSecurityToken() {
586
592
  const clientCredentials = yield effects.select(ToJs.selectClientCredentials, 'js');
@@ -602,4 +608,4 @@ exports.getManagementApiClient = getManagementApiClient;
602
608
  exports.handleRequiresLoginSaga = handleRequiresLoginSaga;
603
609
  exports.loginSagas = loginSagas;
604
610
  exports.refreshSecurityToken = refreshSecurityToken;
605
- //# sourceMappingURL=login-2a6b5be0.js.map
611
+ //# sourceMappingURL=login-c94a3369.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-c94a3369.js","sources":["../src/routing/util/find-contenttype-mapping.ts","../src/user/transformations/mapClientCredentials.js","../src/user/util/ContensisManagementApi.js","../src/user/util/OidcUserManager.ts","../src/user/util/LoginHelper.class.js","../src/user/redux/sagas/login.js"],"sourcesContent":["import { ContentTypeMapping } from '../routes';\n\nexport const findContentTypeMapping = (\n ContentTypeMappings: ContentTypeMapping[],\n contentTypeId: string\n) => ContentTypeMappings.find(ct => ct.contentTypeID === contentTypeId);\n","import { mapJson } from '~/util/json-mapper';\n\nconst clientCredentials = {\n bearerToken: 'bearerToken',\n bearerTokenExpiryDate: ({ bearerTokenExpiryDate }) =>\n bearerTokenExpiryDate.toISOString(),\n refreshToken: 'refreshToken',\n refreshTokenExpiryDate: ({ refreshTokenExpiryDate }) =>\n refreshTokenExpiryDate.toISOString(),\n contensisClassicToken: 'contensisClassicToken',\n};\nexport default obj => mapJson(obj, clientCredentials);\n","// import { Client } from 'contensis-management-api';\n\nexport const getManagementApiClient = async ({\n bearerToken,\n bearerTokenExpiryDate,\n refreshToken,\n refreshTokenExpiryDate,\n contensisClassicToken,\n username,\n password,\n}) => {\n const rootUrl = SERVERS.api || SERVERS.cms; /* global SERVERS */\n const projectId = PROJECTS[0].id; /* global PROJECTS */\n\n let config = {};\n if (refreshToken) {\n config = {\n clientType: 'contensis_classic_refresh_token',\n clientDetails: {\n refreshToken,\n },\n };\n } else {\n config = {\n clientType: 'contensis_classic',\n clientDetails: {\n username,\n password,\n },\n };\n }\n\n let { Client } = await import('contensis-management-api');\n\n if (typeof window === 'undefined') {\n const { UniversalClient } = await import('contensis-management-api');\n Client = UniversalClient;\n }\n\n const client = Client.create({\n ...config,\n projectId,\n rootUrl,\n });\n\n if (bearerToken) client.bearerToken = bearerToken;\n if (bearerTokenExpiryDate)\n client.bearerTokenExpiryDate = bearerTokenExpiryDate;\n if (refreshToken) client.refreshToken = refreshToken;\n if (refreshTokenExpiryDate)\n client.refreshTokenExpiryDate = refreshTokenExpiryDate;\n if (contensisClassicToken)\n client.contensisClassicToken = contensisClassicToken;\n\n return client;\n};\n","import { UserManagerSettings } from 'oidc-client';\n\nconst context = (\n typeof window != 'undefined' ? window : global\n) as typeof globalThis & {\n WSFED_LOGIN: string;\n};\n\nconst requireOidc =\n process.env.NODE_ENV === 'development'\n ? WSFED_LOGIN === 'true' /* global WSFED_LOGIN */\n : context.WSFED_LOGIN === 'true';\n\nconst servers = SERVERS; /* global SERVERS */\n\nexport const userManagerConfig =\n typeof window !== 'undefined'\n ? {\n authority: `${servers.cms}/authenticate/`,\n client_id: 'WebsiteAdfsClient',\n redirect_uri: window.location.toString(),\n post_logout_redirect_uri: window.location.toString(),\n response_type: 'id_token',\n scope: 'openid',\n filterProtocolClaims: false,\n }\n : {};\n\nexport const createUserManager = async (config: UserManagerSettings) => {\n if (typeof window !== 'undefined' && requireOidc) {\n try {\n const { UserManager } = await import(\n /* webpackChunkName: \"oidcclient\" */ 'oidc-client'\n );\n return new UserManager(config);\n } catch (e) {\n console.error('Exception in createUserManager: ', e);\n }\n } else return {};\n};\n","/* eslint-disable require-atomic-updates */\nimport { to } from 'await-to-js';\n\nimport { getManagementApiClient } from './ContensisManagementApi';\n\nimport mapClientCredentials from '../transformations/mapClientCredentials';\nimport { createUserManager, userManagerConfig } from './OidcUserManager';\nimport { LOGIN_COOKIE, REFRESH_TOKEN_COOKIE } from './CookieConstants';\n\nconst context = typeof window != 'undefined' ? window : global;\n\nexport class LoginHelper {\n static CMS_URL = SERVERS.cms /* global SERVERS */;\n static WSFED_LOGIN =\n process.env.NODE_ENV === 'development'\n ? WSFED_LOGIN === 'true' /* global WSFED_LOGIN */\n : context.WSFED_LOGIN === 'true';\n static LOGIN_ROUTE = '/account/login';\n static ACCESS_DENIED_ROUTE = '/account/access-denied';\n\n cookies;\n constructor(cookies) {\n this.cookies = cookies;\n }\n\n SetLoginCookies({ contensisClassicToken, refreshToken }) {\n console.info(\n 'SetLoginCookies:',\n LOGIN_COOKIE,\n contensisClassicToken,\n REFRESH_TOKEN_COOKIE,\n refreshToken\n );\n\n if (contensisClassicToken)\n this.cookies.SetCookie(LOGIN_COOKIE, contensisClassicToken);\n\n if (refreshToken)\n this.cookies.SetCookie(REFRESH_TOKEN_COOKIE, refreshToken);\n }\n\n GetCachedCredentials() {\n return {\n bearerToken: null,\n bearerTokenExpiryDate: null,\n refreshToken: this.cookies.GetCookie(REFRESH_TOKEN_COOKIE),\n refreshTokenExpiryDate: null,\n contensisClassicToken: this.cookies.GetCookie(LOGIN_COOKIE),\n };\n }\n\n ClearCachedCredentials() {\n this.cookies.DeleteCookie(LOGIN_COOKIE);\n this.cookies.DeleteCookie(REFRESH_TOKEN_COOKIE);\n\n if (LoginHelper.WSFED_LOGIN && typeof window !== 'undefined') {\n // remove any oidc keys left over in localStorage\n const { localStorage } = window;\n const keys = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (typeof key === 'string' && key.startsWith('oidc.'))\n keys.push(localStorage.key(i));\n }\n keys.forEach(key => localStorage.removeItem(key));\n }\n }\n\n async LoginUser({ username, password, clientCredentials }) {\n let credentials = clientCredentials;\n let authenticationState = {\n clientCredentials: null,\n isAuthenticated: false,\n isAuthenticationError: false,\n isError: false,\n };\n let transientClient;\n let user;\n\n if (username && password) {\n // Get a management client with username and password\n transientClient = await getManagementApiClient({\n username,\n password,\n });\n\n // Ensure the client has requested a bearer token\n const [loginError, clientBearerToken] = await to(\n transientClient.ensureBearerToken()\n );\n\n // Problem getting token with username and password\n if (loginError) {\n authenticationState = {\n clientCredentials: null,\n errorMessage: loginError.message || null,\n isAuthenticated: false,\n isAuthenticationError: loginError.name.includes(\n 'ContensisAuthenticationError'\n ),\n isError: true,\n };\n this.ClearCachedCredentials();\n }\n\n // Got a token using username and password\n if (clientBearerToken) {\n // Set credentials so we can continue to GetUserDetails\n credentials = mapClientCredentials(transientClient);\n this.SetLoginCookies(credentials);\n authenticationState = {\n clientCredentials: credentials,\n isAuthenticated: true,\n isAuthenticationError: false,\n isError: false,\n };\n }\n }\n\n // If we have credentials supplied by a successful username and password login\n // or clientCredentials supplied in the options argument we can continue to\n // fetch the user's details\n if (credentials) {\n const client =\n transientClient || (await getManagementApiClient(credentials));\n const [error, userDetails] = await LoginHelper.GetUserDetails(client);\n\n if (error) {\n authenticationState = {\n clientCredentials: null,\n errorMessage: error.message,\n isAuthenticated: false,\n isAuthenticationError: false,\n isError: true,\n };\n this.ClearCachedCredentials();\n } else {\n // Ensure we get latest refreshToken and contensisClassicToken from the latest client\n const latestCredentials = mapClientCredentials(client);\n this.SetLoginCookies(latestCredentials);\n\n user = userDetails;\n authenticationState = {\n clientCredentials: latestCredentials,\n isAuthenticated: true,\n isAuthenticationError: false,\n isError: false,\n };\n }\n }\n\n return { authenticationState, user };\n }\n\n LogoutUser(redirectPath) {\n this.ClearCachedCredentials();\n if (LoginHelper.WSFED_LOGIN) {\n LoginHelper.WsFedLogout(redirectPath);\n } else {\n if (redirectPath) LoginHelper.ClientRedirectToPath(redirectPath);\n else LoginHelper.ClientRedirectToSignInPage();\n }\n }\n\n static withCookies = cookieHelper => new LoginHelper(cookieHelper);\n\n static GetUserDetails = async client => {\n let userError,\n groupsError,\n user = {},\n groupsResult;\n\n [userError, user] = await to(client.security.users.getCurrent());\n if (user && user.id) {\n [groupsError, groupsResult] = await to(\n client.security.users.getUserGroups({\n userId: user.id,\n includeInherited: true,\n pageOptions: { pageSize: 100 },\n })\n );\n // Set groups attribute in user object to be the items\n // array from the getUserGroups result\n if (groupsResult && groupsResult.items) user.groups = groupsResult.items;\n\n //If groups call fails then log the error but allow the user to login still\n // eslint-disable-next-line no-console\n if (groupsError) console.log(groupsError);\n }\n return [userError, user];\n };\n\n static ClientRedirectToHome(location) {\n if (typeof window != 'undefined') {\n let url = '/';\n if (location) {\n const { search, hash } = location;\n url = search ? `${url}${search}` : url;\n url = hash ? `${url}${hash}` : url;\n }\n window.location.href = url;\n }\n }\n\n static async ClientRedirectToSignInPage(redirectPath) {\n if (typeof location === 'undefined') return;\n if (LoginHelper.WSFED_LOGIN) {\n await LoginHelper.WsFedLogout();\n await LoginHelper.WsFedLogin();\n } else {\n // Standard Contensis Login\n let url = LoginHelper.LOGIN_ROUTE;\n if (typeof redirectPath === 'string')\n url = `${url}?redirect_uri=${redirectPath}`;\n if (\n typeof location !== 'undefined' &&\n redirectPath !== LoginHelper.LOGIN_ROUTE\n )\n location.replace(url);\n }\n }\n\n static ClientRedirectToAccessDeniedPage(originalPath) {\n let url = LoginHelper.ACCESS_DENIED_ROUTE;\n if (originalPath === url) return;\n\n if (typeof originalPath === 'string')\n url = `${url}?original_uri=${originalPath}`;\n if (typeof location !== 'undefined') location.href = url;\n }\n\n static ClientRedirectToPath(redirectPath) {\n if (typeof redirectPath === 'string') {\n if (typeof location !== 'undefined') window.location.href = redirectPath;\n } else LoginHelper.ClientRedirectToHome();\n }\n\n static async WsFedLogin(redirectUri) {\n const userManager = await createUserManager(userManagerConfig);\n userManager.signinRedirect({\n scope: 'openid',\n response_type: 'id_token',\n redirect_uri: redirectUri || window.location.toString(),\n });\n }\n\n static RemoveSecurityTokenQuery() {\n const params = new URLSearchParams(window.location.search);\n if (params.has('securitytoken') || params.has('securityToken')) {\n params.delete('securitytoken');\n params.delete('securityToken');\n window.location = `${window.location.pathname}${\n params.toString() ? `?${params}` : ''\n }`;\n }\n }\n\n static async WsFedLogout(redirectPath) {\n await fetch(\n `${LoginHelper.CMS_URL}/authenticate/logout?jsonResponseRequired=true`,\n {\n credentials: 'include',\n }\n );\n if (redirectPath) {\n window.location = redirectPath;\n } else {\n // Explicitly check and remove any stale\n // security token that may be in the query string\n LoginHelper.RemoveSecurityTokenQuery();\n }\n }\n\n static async GetCredentialsForSecurityToken(securityToken) {\n const [error, response] = await to(\n fetch(`${LoginHelper.CMS_URL}/REST/Contensis/Security/IsAuthenticated`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n securityToken: encodeURIComponent(securityToken),\n }),\n })\n );\n if (error) return [{ message: 'Failed to fetch credentials' }];\n if (response.ok) {\n const [parseError, body] = await to(response.json());\n if (parseError) return [parseError];\n\n const { LogonResult, ApplicationData = [] } = body;\n if (LogonResult !== 0) {\n console.info(`Security token is invalid - LogonResult: ${LogonResult}`);\n return [\n { message: 'Security token is invalid', data: ApplicationData },\n ];\n }\n if (ApplicationData.length > 0) {\n let refreshToken;\n ApplicationData.forEach(item => {\n if (item.Key === 'ContensisSecurityRefreshToken')\n refreshToken = item.Value;\n });\n if (!refreshToken) {\n return [\n {\n message:\n 'Fetch credentials: Unable to find ContensisSecurityRefreshToken',\n },\n ];\n }\n return [undefined, refreshToken];\n } else {\n return [\n {\n message:\n 'Fetch credentials: Unable to find ContensisSecurityRefreshToken',\n },\n ];\n }\n } else {\n return [\n {\n message: `Fetch credentials error: ${response.status} ${response.statusText}`,\n },\n ];\n }\n }\n\n // static isZengentiStaff(email) {\n // const emailRefs = ['@zengenti', '@contensis'];\n\n // return emailRefs.some(emailRef => {\n // if (email.includes(emailRef)) {\n // return true;\n // }\n // });\n // }\n}\n","import { takeEvery, select, put, call } from 'redux-saga/effects';\nimport {\n SET_AUTHENTICATION_STATE,\n LOGIN_USER,\n LOGOUT_USER,\n VALIDATE_USER,\n} from '../types';\nimport {\n selectUserIsAuthenticated,\n selectClientCredentials,\n selectUserGroups,\n} from '../selectors';\n\nimport { setRoute } from '~/routing/redux/actions';\nimport { selectCurrentSearch } from '~/routing/redux/selectors';\nimport { findContentTypeMapping } from '~/routing/util/find-contenttype-mapping';\n\nimport mapClientCredentials from '~/user/transformations/mapClientCredentials';\n\nimport { getManagementApiClient } from '~/user/util/ContensisManagementApi';\nimport { LoginHelper } from '~/user/util/LoginHelper.class';\nimport { matchUserGroup } from '~/user/util/matchGroups';\nimport { queryParams } from '~/util/navigation';\n\nexport const loginSagas = [\n takeEvery(LOGIN_USER, loginUserSaga),\n takeEvery(LOGOUT_USER, logoutUserSaga),\n takeEvery(VALIDATE_USER, validateUserSaga),\n takeEvery(SET_AUTHENTICATION_STATE, redirectAfterSuccessfulLoginSaga),\n];\n\nexport function* handleRequiresLoginSaga(action) {\n const {\n cookies,\n entry,\n path,\n requireLogin,\n routes: { ContentTypeMappings },\n staticRoute,\n } = action;\n let userLoggedIn = yield select(selectUserIsAuthenticated);\n\n // Check for a securityToken in querystring\n const currentQs = queryParams(yield select(selectCurrentSearch));\n const securityToken = currentQs.securityToken || currentQs.securitytoken;\n\n // Check if any of the defined routes have \"requireLogin\" attribute\n const { requireLogin: authRoute } = (staticRoute && staticRoute.route) || {};\n const { requireLogin: authContentType } =\n (entry &&\n findContentTypeMapping(ContentTypeMappings, entry?.sys?.contentTypeId)) ||\n {};\n\n // If requireLogin, authRoute or authContentType has been specified as an\n // array of groups we can merge all the arrays and match on any group supplied\n const routeRequiresGroups = [\n ...((Array.isArray(authContentType) && authContentType) || []),\n ...((Array.isArray(authRoute) && authRoute) || []),\n ...((Array.isArray(requireLogin) && requireLogin) || []),\n ];\n const routeRequiresLogin = !!authContentType || !!authRoute || !!requireLogin;\n\n if (!userLoggedIn) {\n // If cookies or securityToken are found on any route change\n // always validate and login the user\n if (routeRequiresLogin) {\n console.info(`Route requires login: ${path}`);\n // If routeRequiresLogin do a blocking call that returns userLoggedIn\n userLoggedIn = yield call(validateUserSaga, {\n cookies,\n securityToken,\n });\n console.info(`User logged in: ${userLoggedIn}`);\n }\n // otherwise do a non blocking put to handle validation in the background\n else yield put({ type: VALIDATE_USER, cookies, securityToken });\n }\n\n if (routeRequiresLogin) {\n // If a security token is in the querystring and we are not already\n // logged in something is wrong and we won't bother going on another redirect loop\n if (!userLoggedIn && !securityToken) {\n LoginHelper.ClientRedirectToSignInPage(action.location.pathname);\n } else if (routeRequiresGroups.length > 0) {\n const userGroups = yield select(selectUserGroups, 'js');\n const groupMatch = matchUserGroup(userGroups, routeRequiresGroups);\n\n if (!groupMatch)\n LoginHelper.ClientRedirectToAccessDeniedPage(action.location.pathname);\n }\n }\n\n return userLoggedIn;\n}\n\nfunction* validateUserSaga({ cookies, securityToken }) {\n const login = LoginHelper.withCookies(cookies);\n // Check for refreshToken in cookies\n let clientCredentials = login.GetCachedCredentials();\n\n if (\n securityToken ||\n clientCredentials.securityToken ||\n clientCredentials.refreshToken\n ) {\n // We only attempt to validate the user if one of the stored\n // tokens are found, in this case we set loading state manually\n // so we don't need to set and unset loading if there are no stored\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState: {\n isLoading: true,\n },\n });\n // If we have just a security token we will call a CMS endpoint\n // and provide us with a RefreshToken cookie we can use during login\n if (\n securityToken ||\n (clientCredentials.securityToken && !clientCredentials.refreshToken)\n ) {\n const [error, refreshToken] =\n yield LoginHelper.GetCredentialsForSecurityToken(\n securityToken || clientCredentials.securityToken\n );\n if (refreshToken) {\n // Set cookies and reload values\n login.SetLoginCookies({\n contensisClassicToken: securityToken,\n refreshToken,\n });\n clientCredentials = login.GetCachedCredentials();\n }\n if (error) {\n login.ClearCachedCredentials();\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState: {\n isError: true,\n errorMessage:\n error?.message ||\n (error && 'toString' in error && error.toString()),\n },\n });\n }\n }\n\n // Log the user in if a refreshToken is found\n if (clientCredentials.refreshToken) {\n console.info(\n `Login user with refreshToken ${clientCredentials.refreshToken}`\n );\n yield call(loginUserSaga, {\n clientCredentials,\n cookies: login.cookies,\n });\n }\n }\n\n // Tell any callers have we successfully logged in?\n return yield select(selectUserIsAuthenticated);\n}\n\nfunction* loginUserSaga(action = {}) {\n const { username, password, clientCredentials, cookies } = action;\n const login = LoginHelper.withCookies(cookies);\n\n // If a WSFED_LOGIN site has dispatched the loginUser action\n // just redirect them to the Identity Provider sign in\n if (action.type === LOGIN_USER && LoginHelper.WSFED_LOGIN)\n LoginHelper.ClientRedirectToSignInPage();\n\n const { authenticationState, user } = yield login.LoginUser({\n username,\n password,\n clientCredentials,\n });\n\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState,\n user,\n });\n}\n\nconst removeHostnamePart = path => {\n // eslint-disable-next-line no-console\n console.log(path);\n const relativePath = '/' + path.split('/').splice(3).join('/');\n // eslint-disable-next-line no-console\n console.log(relativePath);\n return relativePath;\n};\n\nfunction* redirectAfterSuccessfulLoginSaga() {\n const isLoggedIn = yield select(selectUserIsAuthenticated);\n const { redirect_uri: redirectPath, ReturnURL: assetRedirectPath } =\n queryParams(yield select(selectCurrentSearch));\n\n if (isLoggedIn && assetRedirectPath && typeof window != 'undefined') {\n const path = removeHostnamePart(assetRedirectPath);\n // This has to be a hard href to get the app to\n // leave React and hit the server for the IIS hosted assets\n window.location.href = path;\n // yield put(setRoute(path)); // does not work in this scenario\n } else if (isLoggedIn && redirectPath) {\n yield put(setRoute(redirectPath));\n }\n}\n\nfunction* logoutUserSaga({ redirectPath, cookies }) {\n yield put({\n type: SET_AUTHENTICATION_STATE,\n user: null,\n });\n yield LoginHelper.withCookies(cookies).LogoutUser(redirectPath);\n}\n\nexport function* refreshSecurityToken() {\n const clientCredentials = yield select(selectClientCredentials, 'js');\n if (Object.keys(clientCredentials).length > 0) {\n const client = yield getManagementApiClient(clientCredentials);\n yield client.authenticate();\n\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState: {\n clientCredentials: mapClientCredentials(client),\n },\n });\n }\n}\n"],"names":["findContentTypeMapping","ContentTypeMappings","contentTypeId","find","ct","contentTypeID","clientCredentials","bearerToken","bearerTokenExpiryDate","toISOString","refreshToken","refreshTokenExpiryDate","contensisClassicToken","obj","mapJson","getManagementApiClient","username","password","rootUrl","SERVERS","api","cms","projectId","PROJECTS","id","config","clientType","clientDetails","Client","window","UniversalClient","client","create","context","global","requireOidc","process","env","NODE_ENV","WSFED_LOGIN","servers","userManagerConfig","authority","client_id","redirect_uri","location","toString","post_logout_redirect_uri","response_type","scope","filterProtocolClaims","createUserManager","UserManager","e","console","error","LoginHelper","constructor","cookies","SetLoginCookies","info","LOGIN_COOKIE","REFRESH_TOKEN_COOKIE","SetCookie","GetCachedCredentials","GetCookie","ClearCachedCredentials","DeleteCookie","localStorage","keys","i","length","key","startsWith","push","forEach","removeItem","LoginUser","credentials","authenticationState","isAuthenticated","isAuthenticationError","isError","transientClient","user","loginError","clientBearerToken","to","ensureBearerToken","errorMessage","message","name","includes","mapClientCredentials","userDetails","GetUserDetails","latestCredentials","LogoutUser","redirectPath","WsFedLogout","ClientRedirectToPath","ClientRedirectToSignInPage","ClientRedirectToHome","url","search","hash","href","WsFedLogin","LOGIN_ROUTE","replace","ClientRedirectToAccessDeniedPage","originalPath","ACCESS_DENIED_ROUTE","redirectUri","userManager","signinRedirect","RemoveSecurityTokenQuery","params","URLSearchParams","has","delete","pathname","fetch","CMS_URL","GetCredentialsForSecurityToken","securityToken","response","method","headers","Accept","body","JSON","stringify","encodeURIComponent","ok","parseError","json","LogonResult","ApplicationData","data","item","Key","Value","undefined","status","statusText","withCookies","cookieHelper","userError","groupsError","groupsResult","security","users","getCurrent","getUserGroups","userId","includeInherited","pageOptions","pageSize","items","groups","log","loginSagas","takeEvery","LOGIN_USER","loginUserSaga","LOGOUT_USER","logoutUserSaga","VALIDATE_USER","validateUserSaga","SET_AUTHENTICATION_STATE","redirectAfterSuccessfulLoginSaga","handleRequiresLoginSaga","action","_entry$sys","entry","path","requireLogin","routes","staticRoute","userLoggedIn","select","selectUserIsAuthenticated","currentQs","queryParams","selectCurrentSearch","securitytoken","authRoute","route","authContentType","sys","routeRequiresGroups","Array","isArray","routeRequiresLogin","call","put","type","userGroups","selectUserGroups","groupMatch","matchUserGroup","login","isLoading","removeHostnamePart","relativePath","split","splice","join","isLoggedIn","ReturnURL","assetRedirectPath","setRoute","refreshSecurityToken","selectClientCredentials","Object","authenticate"],"mappings":"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"}
package/cjs/redux.js CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version$1 = require('./version-4077e706.js');
6
- var selectors$1 = require('./selectors-bcca60f4.js');
7
- var version$2 = require('./version-fe28099e.js');
5
+ var version$1 = require('./version-153ec9ef.js');
6
+ var selectors$1 = require('./selectors-bb991331.js');
7
+ var version$2 = require('./version-963a7634.js');
8
8
  require('redux');
9
9
  require('redux-thunk');
10
10
  require('redux-saga');
package/cjs/routing.js CHANGED
@@ -2,17 +2,19 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var selectors = require('./selectors-bcca60f4.js');
6
- var RouteLoader = require('./RouteLoader-7f0d107a.js');
5
+ var selectors = require('./selectors-bb991331.js');
6
+ var RouteLoader = require('./RouteLoader-005d7f4e.js');
7
7
  require('jsonpath-mapper');
8
8
  require('query-string');
9
9
  require('react');
10
+ require('react-cookie');
10
11
  require('react-redux');
11
12
  require('react-hot-loader');
12
13
  require('react-router-dom');
13
14
  require('react-router-config');
14
15
  require('reselect');
15
- require('./ToJs-6e9cfa69.js');
16
+ require('./ToJs-5169fe56.js');
17
+ require('./CookieHelper.class-daeb09dd.js');
16
18
 
17
19
 
18
20
 
@@ -1 +1 @@
1
- {"version":3,"file":"routing.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"routing.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -44,7 +44,6 @@ const SET_ANCESTORS = `${ROUTING_PREFIX}_SET_ANCESTORS`;
44
44
  const SET_SIBLINGS = `${ROUTING_PREFIX}_SET_SIBLINGS`;
45
45
  const SET_ENTRY_ID = `${ROUTING_PREFIX}_SET_ENTRY_ID`;
46
46
  const SET_SURROGATE_KEYS = `${ROUTING_PREFIX}_SET_SURROGATE_KEYS`;
47
- const SET_NAVIGATION_NOT_FOUND = `${ROUTING_PREFIX}_SET_NOT_FOUND`;
48
47
  const SET_NAVIGATION_PATH = `${ROUTING_PREFIX}_SET_NAVIGATION_PATH`;
49
48
  const SET_TARGET_PROJECT = `${ROUTING_PREFIX}_SET_TARGET_PROJECT`;
50
49
  const SET_ROUTE = `${ROUTING_PREFIX}_SET_ROUTE`;
@@ -59,23 +58,20 @@ var routing$2 = /*#__PURE__*/Object.freeze({
59
58
  SET_SIBLINGS: SET_SIBLINGS,
60
59
  SET_ENTRY_ID: SET_ENTRY_ID,
61
60
  SET_SURROGATE_KEYS: SET_SURROGATE_KEYS,
62
- SET_NAVIGATION_NOT_FOUND: SET_NAVIGATION_NOT_FOUND,
63
61
  SET_NAVIGATION_PATH: SET_NAVIGATION_PATH,
64
62
  SET_TARGET_PROJECT: SET_TARGET_PROJECT,
65
63
  SET_ROUTE: SET_ROUTE,
66
64
  UPDATE_LOADING_STATE: UPDATE_LOADING_STATE
67
65
  });
68
66
 
69
- const setNotFound = notFound => action(SET_NAVIGATION_NOT_FOUND, {
70
- notFound
71
- });
72
- const setNavigationPath = (path, location, staticRoute, withEvents, statePath, routes) => action(SET_NAVIGATION_PATH, {
67
+ const setNavigationPath = (path, location, staticRoute, withEvents, statePath, routes, cookies) => action(SET_NAVIGATION_PATH, {
73
68
  path,
74
69
  location,
75
70
  staticRoute,
76
71
  withEvents,
77
72
  statePath,
78
- routes
73
+ routes,
74
+ cookies
79
75
  });
80
76
  const setCurrentProject = (project, allowedGroups, hostname) => action(SET_TARGET_PROJECT, {
81
77
  project,
@@ -96,7 +92,6 @@ const setSurrogateKeys = (keys, url) => action(SET_SURROGATE_KEYS, {
96
92
 
97
93
  var routing$1 = /*#__PURE__*/Object.freeze({
98
94
  __proto__: null,
99
- setNotFound: setNotFound,
100
95
  setNavigationPath: setNavigationPath,
101
96
  setCurrentProject: setCurrentProject,
102
97
  setRoute: setRoute,
@@ -224,4 +219,4 @@ exports.setCurrentProject = setCurrentProject;
224
219
  exports.setNavigationPath = setNavigationPath;
225
220
  exports.setRoute = setRoute;
226
221
  exports.setSurrogateKeys = setSurrogateKeys;
227
- //# sourceMappingURL=selectors-bcca60f4.js.map
222
+ //# sourceMappingURL=selectors-bb991331.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors-bb991331.js","sources":["../src/redux/util.ts","../src/routing/redux/types.ts","../src/routing/redux/actions.ts","../src/util/navigation.js","../src/routing/redux/selectors.ts"],"sourcesContent":["import { jpath } from '~/util/json-mapper';\n\nexport const action = (type: string, payload: any = {}) => ({\n type,\n ...payload,\n});\n\nexport const getJS = <S extends Record<string, unknown>, T extends keyof S>(\n state: S,\n stateKey: T\n) => {\n if (\n 'get' in state &&\n typeof state.get === 'function' &&\n 'toJS' in state &&\n typeof state.toJS === 'function'\n ) {\n return state.get(stateKey) as S[T];\n }\n return state[stateKey];\n};\n\nexport const getImmutableOrJS = <\n S extends Record<string, unknown>,\n T extends keyof S | any\n>(\n state: S,\n stateKey: T | T[],\n fallbackValue?: any,\n returnType: 'immutable' | 'js' = globalThis.STATE_TYPE\n) => {\n // Find a fromJS function from global that is dynamically loaded in createStore\n // or replace with a stub function for non-immutable gets\n const fromJS =\n returnType === 'immutable'\n ? globalThis.immutable?.fromJSOrdered || globalThis.immutable?.fromJS\n : v => v;\n\n if (\n state &&\n 'get' in state &&\n typeof state.get === 'function' &&\n 'getIn' in state &&\n typeof state.getIn === 'function' &&\n 'toJS' in state &&\n typeof state.toJS === 'function'\n ) {\n if (Array.isArray(stateKey))\n return fromJS(state.getIn(stateKey, fallbackValue));\n return fromJS(state.get(stateKey, fallbackValue)) as S[T | any];\n }\n\n if (Array.isArray(stateKey) && state && typeof state === 'object') {\n const result = jpath(stateKey.join('.'), state);\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n }\n\n const result =\n state && typeof state === 'object' ? state[stateKey as string] : undefined;\n if (typeof result === 'undefined') return fallbackValue;\n return result;\n};\n","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_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 { useLocation } from 'react-router-dom';\nimport { action } from '~/redux/util';\nimport {\n SET_ENTRY,\n SET_NAVIGATION_PATH,\n SET_TARGET_PROJECT,\n SET_ROUTE,\n SET_SURROGATE_KEYS,\n} from './types';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { MatchedRoute, RouteConfig } from 'react-router-config';\nimport { AppRoutes, WithEvents } from '../routes';\nimport { CookieHelper } from '~/user/util/CookieHelper.class';\n\nexport const setNavigationPath = (\n path: string,\n location: ReturnType<typeof useLocation>,\n staticRoute: MatchedRoute<any, RouteConfig> | undefined,\n withEvents: WithEvents,\n statePath: string,\n routes: AppRoutes,\n cookies: CookieHelper\n) =>\n action(SET_NAVIGATION_PATH, {\n path,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes,\n cookies,\n });\n\nexport const setCurrentProject = (\n project: string,\n allowedGroups: any,\n hostname: string\n) => action(SET_TARGET_PROJECT, { project, allowedGroups, hostname });\n\nexport const setRoute = (path: string, state?: any) =>\n action(SET_ROUTE, { path, state });\n\nexport const setRouteEntry = (entry: Entry) => action(SET_ENTRY, { entry });\n\nexport const setSurrogateKeys = (keys: string, url: string) =>\n action(SET_SURROGATE_KEYS, { keys, url });\n","import queryString from 'query-string';\n\nexport function queryParams(search) {\n return queryString.parse(\n typeof window != 'undefined' ? window.location.search : search\n );\n}\nexport const routeParams = staticRoute =>\n staticRoute && staticRoute.match ? staticRoute.match.params : {};\n\nexport const buildUrl = (route, params) => {\n const qs = queryString.stringify(params);\n const path = qs ? `${route}?${qs}` : route;\n return path;\n};\n\nexport const clientHostname = () =>\n `${window.location.protocol}//${window.location.hostname}:${window.location.port}`;\n","import { Entry } from 'contensis-delivery-api/lib/models';\nimport { StateType } from '~/config';\nimport { AppState } from '~/redux/appstate';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\nimport { queryParams } from '~/util/navigation';\n\nexport const selectRouteEntry = (state: AppState, returnType?: StateType) =>\n getIn(state, ['routing', 'entry'], {} as Entry, returnType);\n\nexport const selectMappedEntry = (state: AppState, returnType?: StateType) =>\n getIn(state, ['routing', 'mappedEntry'], null, returnType);\n\nexport const selectSurrogateKeys = (state: AppState) => {\n const keys = getIn(state, ['routing', 'surrogateKeys'], [], 'js');\n return keys.join(' ');\n};\nexport const selectCurrentHostname = (state: AppState) =>\n getIn(state, ['routing', 'currentHostname']);\n\nexport const selectCurrentTreeID = (state: AppState) =>\n getIn(state, ['routing', 'currentHostname']);\n\nexport const selectRouteEntryEntryId = (state: AppState) =>\n getIn(state, ['routing', 'entry', 'sys', 'id'], null);\n\nexport const selectRouteEntryContentTypeId = (state: AppState) => {\n const entry = selectRouteEntry(state);\n return getIn(entry, ['sys', 'contentTypeId'], null);\n};\n\nexport const selectRouteEntryLanguage = (state: AppState) => {\n const entry = selectRouteEntry(state);\n return getIn(entry, ['sys', 'language'], null);\n};\n\nexport const selectRouteEntrySlug = (state: AppState) => {\n const entry = selectRouteEntry(state);\n return getIn(entry, ['sys', 'slug'], null);\n};\n\nexport const selectRouteEntryID = (state: AppState) =>\n getIn(state, ['routing', 'entryID']);\n\nexport const selectCanonicalPath = (state: AppState) => {\n return getIn(state, ['routing', 'canonicalPath']);\n};\n\nexport const selectCurrentPath = (state: AppState) =>\n getIn(state, ['routing', 'currentPath']);\n\nexport const selectCurrentLocation = (state: AppState) =>\n getIn(state, ['routing', 'location']);\nexport const selectCurrentSearch = (state: AppState) =>\n getIn(state, ['routing', 'location', 'search']);\nexport const selectCurrentHash = (state: AppState) =>\n getIn(state, ['routing', 'location', 'hash']);\nexport const selectQueryStringAsObject = (state: AppState) =>\n queryParams(selectCurrentSearch(state));\nexport const selectCurrentProject = (state: AppState) =>\n getIn(state, ['routing', 'currentProject']);\nexport const selectIsNotFound = (state: AppState) =>\n getIn(state, ['routing', 'notFound']);\nexport const selectCurrentAncestors = (state: AppState) =>\n getIn(state, ['routing', 'currentNodeAncestors'], []);\nexport const selectCurrentSiblings = (state: AppState) =>\n getIn(state, ['routing', 'currentNodeSiblings'], []);\nexport const selectCurrentNode = (state: AppState, returnType?: StateType) =>\n getIn(state, ['routing', 'currentNode'], null, returnType);\nexport const selectCurrentChildren = state =>\n getIn(state, ['routing', 'currentNode', 'children'], []);\n\nexport const selectBreadcrumb = (state: AppState) => {\n return [...selectCurrentAncestors(state), selectCurrentNode(state)];\n};\nexport const selectRouteErrorMessage = (state: AppState) => {\n const error = getIn(state, ['routing', 'error']);\n return getIn(error, ['data', 'message'], getIn(error, 'statusText'));\n};\nexport const selectRouteIsError = (state: AppState) =>\n getIn(state, ['routing', 'isError']);\nexport const selectRouteLoading = (state: AppState) =>\n getIn(state, ['routing', 'isLoading']);\nexport const selectRouteStatusCode = (state: AppState) =>\n getIn(state, ['routing', 'statusCode']);\nexport const selectStaticRoute = (state: AppState) =>\n getIn(state, ['routing', 'staticRoute']);\n"],"names":["action","type","payload","getJS","state","stateKey","get","toJS","getImmutableOrJS","fallbackValue","returnType","globalThis","STATE_TYPE","_globalThis$immutable","_globalThis$immutable2","fromJS","immutable","fromJSOrdered","v","getIn","Array","isArray","result","jpath","join","undefined","ROUTING_PREFIX","GET_ENTRY","SET_ENTRY","SET_NODE","SET_ANCESTORS","SET_SIBLINGS","SET_ENTRY_ID","SET_SURROGATE_KEYS","SET_NAVIGATION_PATH","SET_TARGET_PROJECT","SET_ROUTE","UPDATE_LOADING_STATE","setNavigationPath","path","location","staticRoute","withEvents","statePath","routes","cookies","setCurrentProject","project","allowedGroups","hostname","setRoute","setRouteEntry","entry","setSurrogateKeys","keys","url","queryParams","search","queryString","parse","window","selectRouteEntry","selectMappedEntry","selectSurrogateKeys","selectCurrentHostname","selectCurrentTreeID","selectRouteEntryEntryId","selectRouteEntryContentTypeId","selectRouteEntryLanguage","selectRouteEntrySlug","selectRouteEntryID","selectCanonicalPath","selectCurrentPath","selectCurrentLocation","selectCurrentSearch","selectCurrentHash","selectQueryStringAsObject","selectCurrentProject","selectIsNotFound","selectCurrentAncestors","selectCurrentSiblings","selectCurrentNode","selectCurrentChildren","selectBreadcrumb","selectRouteErrorMessage","error","selectRouteIsError","selectRouteLoading","selectRouteStatusCode","selectStaticRoute"],"mappings":";;;;;;;;;AAEO,MAAMA,MAAM,GAAGA,CAACC,IAAY,EAAEC,OAAY,GAAG,EAAE,MAAM;EAC1DD,IAAI;EACJ,GAAGC,OAAAA;AACL,CAAC,EAAC;MAEWC,KAAK,GAAGA,CACnBC,KAAQ,EACRC,QAAW,KACR;EACH,IACE,KAAK,IAAID,KAAK,IACd,OAAOA,KAAK,CAACE,GAAG,KAAK,UAAU,IAC/B,MAAM,IAAIF,KAAK,IACf,OAAOA,KAAK,CAACG,IAAI,KAAK,UAAU,EAChC;AACA,IAAA,OAAOH,KAAK,CAACE,GAAG,CAACD,QAAQ,CAAC,CAAA;AAC5B,GAAA;EACA,OAAOD,KAAK,CAACC,QAAQ,CAAC,CAAA;AACxB,EAAC;AAEYG,MAAAA,gBAAgB,GAAGA,CAI9BJ,KAAQ,EACRC,QAAiB,EACjBI,aAAmB,EACnBC,UAA8B,GAAGC,UAAU,CAACC,UAAU,KACnD;EAAA,IAAAC,qBAAA,EAAAC,sBAAA,CAAA;AACH;AACA;AACA,EAAA,MAAMC,MAAM,GACVL,UAAU,KAAK,WAAW,GACtB,CAAA,CAAAG,qBAAA,GAAAF,UAAU,CAACK,SAAS,MAAA,IAAA,IAAAH,qBAAA,KAApBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAsBI,aAAa,MAAAH,CAAAA,sBAAA,GAAIH,UAAU,CAACK,SAAS,MAAA,IAAA,IAAAF,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApBA,sBAAA,CAAsBC,MAAM,CACnEG,GAAAA,CAAC,IAAIA,CAAC,CAAA;AAEZ,EAAA,IACEd,KAAK,IACL,KAAK,IAAIA,KAAK,IACd,OAAOA,KAAK,CAACE,GAAG,KAAK,UAAU,IAC/B,OAAO,IAAIF,KAAK,IAChB,OAAOA,KAAK,CAACe,KAAK,KAAK,UAAU,IACjC,MAAM,IAAIf,KAAK,IACf,OAAOA,KAAK,CAACG,IAAI,KAAK,UAAU,EAChC;AACA,IAAA,IAAIa,KAAK,CAACC,OAAO,CAAChB,QAAQ,CAAC,EACzB,OAAOU,MAAM,CAACX,KAAK,CAACe,KAAK,CAACd,QAAQ,EAAEI,aAAa,CAAC,CAAC,CAAA;IACrD,OAAOM,MAAM,CAACX,KAAK,CAACE,GAAG,CAACD,QAAQ,EAAEI,aAAa,CAAC,CAAC,CAAA;AACnD,GAAA;AAEA,EAAA,IAAIW,KAAK,CAACC,OAAO,CAAChB,QAAQ,CAAC,IAAID,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AACjE,IAAA,MAAMkB,MAAM,GAAGC,aAAK,CAAClB,QAAQ,CAACmB,IAAI,CAAC,GAAG,CAAC,EAAEpB,KAAK,CAAC,CAAA;AAC/C,IAAA,IAAI,OAAOkB,MAAM,KAAK,WAAW,EAAE,OAAOb,aAAa,CAAA;AACvD,IAAA,OAAOa,MAAM,CAAA;AACf,GAAA;AAEA,EAAA,MAAMA,MAAM,GACVlB,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACC,QAAQ,CAAW,GAAGoB,SAAS,CAAA;AAC5E,EAAA,IAAI,OAAOH,MAAM,KAAK,WAAW,EAAE,OAAOb,aAAa,CAAA;AACvD,EAAA,OAAOa,MAAM,CAAA;AACf;;AC9DA,MAAMI,cAAc,GAAG,WAAW,CAAA;AAC3B,MAAMC,SAAS,GAAI,CAAA,EAAED,cAAe,CAAW,UAAA,CAAA,CAAA;AACzCE,MAAAA,SAAS,GAAI,CAAA,EAAEF,cAAe,CAAW,UAAA,EAAA;AAC/C,MAAMG,QAAQ,GAAI,CAAA,EAAEH,cAAe,CAAU,SAAA,CAAA,CAAA;AACvCI,MAAAA,aAAa,GAAI,CAAA,EAAEJ,cAAe,CAAe,cAAA,EAAA;AACjDK,MAAAA,YAAY,GAAI,CAAA,EAAEL,cAAe,CAAc,aAAA,EAAA;AACrD,MAAMM,YAAY,GAAI,CAAA,EAAEN,cAAe,CAAc,aAAA,CAAA,CAAA;AAC/CO,MAAAA,kBAAkB,GAAI,CAAA,EAAEP,cAAe,CAAoB,mBAAA,EAAA;AAE3DQ,MAAAA,mBAAmB,GAAI,CAAA,EAAER,cAAe,CAAqB,oBAAA,EAAA;AAE7DS,MAAAA,kBAAkB,GAAI,CAAA,EAAET,cAAe,CAAoB,mBAAA,EAAA;AAE3DU,MAAAA,SAAS,GAAI,CAAA,EAAEV,cAAe,CAAW,UAAA,EAAA;AAEzCW,MAAAA,oBAAoB,GAAI,CAAA,EAAEX,cAAe,CAAsB,qBAAA;;;;;;;;;;;;;;;;;ACArE,MAAMY,iBAAiB,GAAGA,CAC/BC,IAAY,EACZC,QAAwC,EACxCC,WAAuD,EACvDC,UAAsB,EACtBC,SAAiB,EACjBC,MAAiB,EACjBC,OAAqB,KAErB7C,MAAM,CAACkC,mBAAmB,EAAE;EAC1BK,IAAI;EACJC,QAAQ;EACRC,WAAW;EACXC,UAAU;EACVC,SAAS;EACTC,MAAM;AACNC,EAAAA,OAAAA;AACF,CAAC,EAAC;AAESC,MAAAA,iBAAiB,GAAGA,CAC/BC,OAAe,EACfC,aAAkB,EAClBC,QAAgB,KACbjD,MAAM,CAACmC,kBAAkB,EAAE;EAAEY,OAAO;EAAEC,aAAa;AAAEC,EAAAA,QAAAA;AAAS,CAAC,EAAC;AAE9D,MAAMC,QAAQ,GAAGA,CAACX,IAAY,EAAEnC,KAAW,KAChDJ,MAAM,CAACoC,SAAS,EAAE;EAAEG,IAAI;AAAEnC,EAAAA,KAAAA;AAAM,CAAC,EAAC;AAE7B,MAAM+C,aAAa,GAAIC,KAAY,IAAKpD,MAAM,CAAC4B,SAAS,EAAE;AAAEwB,EAAAA,KAAAA;AAAM,CAAC,CAAC,CAAA;AAEpE,MAAMC,gBAAgB,GAAGA,CAACC,IAAY,EAAEC,GAAW,KACxDvD,MAAM,CAACiC,kBAAkB,EAAE;EAAEqB,IAAI;AAAEC,EAAAA,GAAAA;AAAI,CAAC;;;;;;;;;;;AC5CnC,SAASC,WAAWA,CAACC,MAAM,EAAE;AAClC,EAAA,OAAOC,+BAAW,CAACC,KAAK,CACtB,OAAOC,MAAM,IAAI,WAAW,GAAGA,MAAM,CAACpB,QAAQ,CAACiB,MAAM,GAAGA,MAAM,CAC/D,CAAA;AACH;;ACAO,MAAMI,gBAAgB,GAAGA,CAACzD,KAAe,EAAEM,UAAsB,KACtES,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAWM,UAAU,EAAC;AAEtD,MAAMoD,iBAAiB,GAAGA,CAAC1D,KAAe,EAAEM,UAAsB,KACvES,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,EAAEM,UAAU,EAAC;AAE/CqD,MAAAA,mBAAmB,GAAI3D,KAAe,IAAK;AACtD,EAAA,MAAMkD,IAAI,GAAGnC,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;AACjE,EAAA,OAAOkD,IAAI,CAAC9B,IAAI,CAAC,GAAG,CAAC,CAAA;AACvB,EAAC;AACM,MAAMwC,qBAAqB,GAAI5D,KAAe,IACnDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAEvC,MAAM6D,mBAAmB,GAAI7D,KAAe,IACjDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAEvC,MAAM8D,uBAAuB,GAAI9D,KAAe,IACrDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAC;AAE1C+D,MAAAA,6BAA6B,GAAI/D,KAAe,IAAK;AAChE,EAAA,MAAMgD,KAAK,GAAGS,gBAAgB,CAACzD,KAAK,CAAC,CAAA;EACrC,OAAOe,gBAAK,CAACiC,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,CAAA;AACrD,EAAC;AAEYgB,MAAAA,wBAAwB,GAAIhE,KAAe,IAAK;AAC3D,EAAA,MAAMgD,KAAK,GAAGS,gBAAgB,CAACzD,KAAK,CAAC,CAAA;EACrC,OAAOe,gBAAK,CAACiC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;AAChD,EAAC;AAEM,MAAMiB,oBAAoB,GAAIjE,KAAe,IAAK;AACvD,EAAA,MAAMgD,KAAK,GAAGS,gBAAgB,CAACzD,KAAK,CAAC,CAAA;EACrC,OAAOe,gBAAK,CAACiC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;AAC5C,CAAC,CAAA;AAEM,MAAMkB,kBAAkB,GAAIlE,KAAe,IAChDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/B,MAAMmE,mBAAmB,GAAInE,KAAe,IAAK;EACtD,OAAOe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;AACnD,CAAC,CAAA;AAEYoE,MAAAA,iBAAiB,GAAIpE,KAAe,IAC/Ce,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAC;AAEnC,MAAMqE,qBAAqB,GAAIrE,KAAe,IACnDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;MAC1BsE,mBAAmB,GAAItE,KAAe,IACjDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAC;AAC1C,MAAMuE,iBAAiB,GAAIvE,KAAe,IAC/Ce,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AACxC,MAAMwE,yBAAyB,GAAIxE,KAAe,IACvDoD,WAAW,CAACkB,mBAAmB,CAACtE,KAAK,CAAC,CAAC,CAAA;AAC5ByE,MAAAA,oBAAoB,GAAIzE,KAAe,IAClDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAC;AAChC0E,MAAAA,gBAAgB,GAAI1E,KAAe,IAC9Ce,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAC;MAC1B2E,sBAAsB,GAAI3E,KAAe,IACpDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,EAAE,EAAC;MAC1C4E,qBAAqB,GAAI5E,KAAe,IACnDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAC;AAC/C,MAAM6E,iBAAiB,GAAGA,CAAC7E,KAAe,EAAEM,UAAsB,KACvES,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,EAAEM,UAAU,EAAC;AACrD,MAAMwE,qBAAqB,GAAG9E,KAAK,IACxCe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;AAEnD,MAAM+E,gBAAgB,GAAI/E,KAAe,IAAK;EACnD,OAAO,CAAC,GAAG2E,sBAAsB,CAAC3E,KAAK,CAAC,EAAE6E,iBAAiB,CAAC7E,KAAK,CAAC,CAAC,CAAA;AACrE,CAAC,CAAA;AACYgF,MAAAA,uBAAuB,GAAIhF,KAAe,IAAK;EAC1D,MAAMiF,KAAK,GAAGlE,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;AAChD,EAAA,OAAOe,gBAAK,CAACkE,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAElE,gBAAK,CAACkE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;AACtE,EAAC;AACYC,MAAAA,kBAAkB,GAAIlF,KAAe,IAChDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAC;AACzBmF,MAAAA,kBAAkB,GAAInF,KAAe,IAChDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAC;AAC3BoF,MAAAA,qBAAqB,GAAIpF,KAAe,IACnDe,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,EAAC;AAClC,MAAMqF,iBAAiB,GAAIrF,KAAe,IAC/Ce,gBAAK,CAACf,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}