@beinformed/ui 1.15.1 → 1.17.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 (62) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/esm/hooks/useAuthentication.js +4 -1
  3. package/esm/hooks/useAuthentication.js.map +1 -1
  4. package/esm/models/application/ApplicationModel.js +13 -2
  5. package/esm/models/application/ApplicationModel.js.map +1 -1
  6. package/esm/models/attributes/AttributeContent.js +4 -7
  7. package/esm/models/attributes/AttributeContent.js.map +1 -1
  8. package/esm/models/href/Href.js +11 -1
  9. package/esm/models/href/Href.js.map +1 -1
  10. package/esm/redux/actions/SignIn.js +9 -0
  11. package/esm/redux/actions/SignIn.js.map +1 -1
  12. package/esm/redux/reducers/AuthReducer.js +5 -0
  13. package/esm/redux/reducers/AuthReducer.js.map +1 -1
  14. package/esm/utils/helpers/checkResource.js +39 -0
  15. package/esm/utils/helpers/checkResource.js.map +1 -0
  16. package/esm/utils/index.js +1 -1
  17. package/esm/utils/index.js.map +1 -1
  18. package/lib/hooks/useAuthentication.js +3 -0
  19. package/lib/hooks/useAuthentication.js.flow +7 -5
  20. package/lib/hooks/useAuthentication.js.map +1 -1
  21. package/lib/models/application/ApplicationModel.js +13 -2
  22. package/lib/models/application/ApplicationModel.js.flow +7 -0
  23. package/lib/models/application/ApplicationModel.js.map +1 -1
  24. package/lib/models/attributes/AttributeContent.js +4 -7
  25. package/lib/models/attributes/AttributeContent.js.flow +3 -6
  26. package/lib/models/attributes/AttributeContent.js.map +1 -1
  27. package/lib/models/href/Href.js +11 -1
  28. package/lib/models/href/Href.js.flow +12 -1
  29. package/lib/models/href/Href.js.map +1 -1
  30. package/lib/redux/actions/SignIn.js +14 -2
  31. package/lib/redux/actions/SignIn.js.flow +8 -0
  32. package/lib/redux/actions/SignIn.js.map +1 -1
  33. package/lib/redux/reducers/AuthReducer.js +5 -0
  34. package/lib/redux/reducers/AuthReducer.js.flow +3 -0
  35. package/lib/redux/reducers/AuthReducer.js.map +1 -1
  36. package/lib/redux/reducers/__tests__/AuthReducer.spec.js.flow +52 -13
  37. package/lib/redux/types.js.flow +5 -0
  38. package/lib/utils/helpers/__tests__/checkResource.spec.js.flow +60 -0
  39. package/lib/utils/helpers/checkResource.js +54 -0
  40. package/lib/utils/helpers/checkResource.js.flow +42 -0
  41. package/lib/utils/helpers/checkResource.js.map +1 -0
  42. package/lib/utils/index.js +4 -4
  43. package/lib/utils/index.js.flow +1 -1
  44. package/lib/utils/index.js.map +1 -1
  45. package/package.json +10 -10
  46. package/src/hooks/useAuthentication.js +7 -5
  47. package/src/models/application/ApplicationModel.js +7 -0
  48. package/src/models/attributes/AttributeContent.js +3 -6
  49. package/src/models/href/Href.js +12 -1
  50. package/src/redux/actions/SignIn.js +8 -0
  51. package/src/redux/reducers/AuthReducer.js +3 -0
  52. package/src/redux/reducers/__tests__/AuthReducer.spec.js +52 -13
  53. package/src/redux/types.js +5 -0
  54. package/src/utils/helpers/__tests__/checkResource.spec.js +60 -0
  55. package/src/utils/helpers/checkResource.js +42 -0
  56. package/src/utils/index.js +1 -1
  57. package/esm/utils/helpers/checkResourceExists.js +0 -23
  58. package/esm/utils/helpers/checkResourceExists.js.map +0 -1
  59. package/lib/utils/helpers/checkResourceExists.js +0 -34
  60. package/lib/utils/helpers/checkResourceExists.js.flow +0 -21
  61. package/lib/utils/helpers/checkResourceExists.js.map +0 -1
  62. package/src/utils/helpers/checkResourceExists.js +0 -21
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [1.17.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.16.1...v1.17.0) (2022-03-29)
6
+
7
+ ### Features
8
+
9
+ - **application:** add isLoggedIn method to application ([61a340d](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/61a340d12703c2db0c351c3ab23c4bfed12c4f12))
10
+
11
+ ### Bug Fixes
12
+
13
+ - **check-resource:** handle Href as input argument for resourceExists and resourceRedirectsToSecureLogin ([c49e671](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/c49e6715addb2703222ecf4a8b120fc9cb814f35))
14
+ - **href:** absolute href no longer prefixes querystring, use absolutehrefPrefixedQuerystring if needed ([2ff2abd](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/2ff2abd8ce6f6f9545dd82c573891f344ed49c09))
15
+
16
+ ### [1.16.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.16.0...v1.16.1) (2022-03-22)
17
+
18
+ ## [1.16.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.15.1...v1.16.0) (2022-03-22)
19
+
20
+ ### Features
21
+
22
+ - **authentication:** add action to reset authentication errors in auth reducer ([600c130](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/600c130bd5684f7d6fb677d6115f58145a709de7))
23
+ - **check-resource:** add method to check if a resource redirects to secureLogin ([ec5346b](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/ec5346b602e277dcb2c5a8c11efc8dfa6be4086e))
24
+
5
25
  ### [1.15.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.15.0...v1.15.1) (2022-03-21)
6
26
 
7
27
  ### Bug Fixes
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
2
2
  import { useSelector, useDispatch } from "react-redux";
3
3
  import { getApplication } from "../redux/_modularui/selectors";
4
- import { login as _login, logout as _logout } from "../redux/actions";
4
+ import { login as _login, logout as _logout, resetAuthErrors } from "../redux/actions";
5
5
  import UserServicesModel from "../models/user/UserServicesModel";
6
6
  import { useState, useEffect } from "react";
7
7
 
@@ -31,6 +31,9 @@ export var useLogin = function useLogin() {
31
31
  return {
32
32
  isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
33
33
  errorMessage: auth.error,
34
+ resetErrors: function resetErrors() {
35
+ return dispatch(resetAuthErrors());
36
+ },
34
37
  login: function login(username, password) {
35
38
  return dispatch(_login(username, password));
36
39
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["useSelector","useDispatch","getApplication","login","logout","UserServicesModel","useState","useEffect","getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","isLoggedIn","useLogin","dispatch","auth","state","errorMessage","error","username","password","useLogout","cancel","setCancel","setIsAuthenticated","then"],"mappings":";AACA,SAASA,WAAT,EAAsBC,WAAtB,QAAyC,aAAzC;AACA,SAASC,cAAT,QAA+B,+BAA/B;AACA,SAASC,KAAK,IAALA,MAAT,EAAgBC,MAAM,IAANA,OAAhB,QAA8B,kBAA9B;AACA,OAAOC,iBAAP,MAA8B,kCAA9B;AACA,SAASC,QAAT,EAAmBC,SAAnB,QAAoC,OAApC;;AAYA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYN,iBAAjC,EAAoD;AAClD,WAAOI,eAAe,IAAIE,iBAAiB,CAACE,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACA,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAGd,WAAW,EAA5B;AAEA,MAAMS,WAAW,GAAGV,WAAW,CAACE,cAAD,CAA/B;AACA,MAAMc,IAAI,GAAGhB,WAAW,CAAC,UAACiB,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAD,CAAxB;AAEA,SAAO;AACLP,IAAAA,eAAe,EAAED,kBAAkB,CAACQ,IAAI,CAACP,eAAN,EAAuBC,WAAvB,CAD9B;AAELQ,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLhB,IAAAA,KAAK,EAAE,eAACiB,QAAD,EAAmBC,QAAnB;AAAA,aACLN,QAAQ,CAACZ,MAAK,CAACiB,QAAD,EAAWC,QAAX,CAAN,CADH;AAAA;AAHF,GAAP;AAMD,CAZM;AAcP;AACA;;AACA,OAAO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMP,QAAQ,GAAGd,WAAW,EAA5B;AACA,MAAMS,WAAW,GAAGV,WAAW,CAACE,cAAD,CAA/B;AACA,MAAMc,IAAI,GAAGhB,WAAW,CAAC,UAACiB,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYP,eAAZ,KAA+B,KAA1C;AAAA,GAAD,CAAxB;;AAEA,kBAA4BH,QAAQ,CAAC,KAAD,CAApC;AAAA;AAAA,MAAOiB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8ClB,QAAQ,CAAC;AAAA,WACrDE,kBAAkB,CAACQ,IAAD,EAAON,WAAP,CADmC;AAAA,GAAD,CAAtD;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBgB,kBAAxB,iBANyC,CAUzC;AACA;;;AACAlB,EAAAA,SAAS,CAAC,YAAM;AACd,WAAO,YAAM;AACXiB,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJQ,EAIN,EAJM,CAAT;AAMA,SAAO;AACLf,IAAAA,eAAe,EAAfA,eADK;AAELL,IAAAA,MAAM,EAAE,kBAAM;AACZ,aAAOW,QAAQ,CAACX,OAAM,EAAP,CAAR,CAAmBsB,IAAnB,CAAwB,YAAM;AACnC,YAAI,CAACH,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJM,CAAP;AAKD;AARI,GAAP;AAUD,CA5BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () => {\n return dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n });\n },\n };\n};\n"],"file":"useAuthentication.js"}
1
+ {"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["useSelector","useDispatch","getApplication","login","logout","resetAuthErrors","UserServicesModel","useState","useEffect","getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","isLoggedIn","useLogin","dispatch","auth","state","errorMessage","error","resetErrors","username","password","useLogout","cancel","setCancel","setIsAuthenticated","then"],"mappings":";AACA,SAASA,WAAT,EAAsBC,WAAtB,QAAyC,aAAzC;AACA,SAASC,cAAT,QAA+B,+BAA/B;AACA,SAASC,KAAK,IAALA,MAAT,EAAgBC,MAAM,IAANA,OAAhB,EAAwBC,eAAxB,QAA+C,kBAA/C;AACA,OAAOC,iBAAP,MAA8B,kCAA9B;AACA,SAASC,QAAT,EAAmBC,SAAnB,QAAoC,OAApC;;AAcA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYN,iBAAjC,EAAoD;AAClD,WAAOI,eAAe,IAAIE,iBAAiB,CAACE,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACA,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAGf,WAAW,EAA5B;AAEA,MAAMU,WAAW,GAAGX,WAAW,CAACE,cAAD,CAA/B;AACA,MAAMe,IAAI,GAAGjB,WAAW,CAAC,UAACkB,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAD,CAAxB;AAEA,SAAO;AACLP,IAAAA,eAAe,EAAED,kBAAkB,CAACQ,IAAI,CAACP,eAAN,EAAuBC,WAAvB,CAD9B;AAELQ,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLC,IAAAA,WAAW,EAAE;AAAA,aAAML,QAAQ,CAACX,eAAe,EAAhB,CAAd;AAAA,KAHR;AAILF,IAAAA,KAAK,EAAE,eAACmB,QAAD,EAAmBC,QAAnB;AAAA,aACLP,QAAQ,CAACb,MAAK,CAACmB,QAAD,EAAWC,QAAX,CAAN,CADH;AAAA;AAJF,GAAP;AAOD,CAbM;AAeP;AACA;;AACA,OAAO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMR,QAAQ,GAAGf,WAAW,EAA5B;AACA,MAAMU,WAAW,GAAGX,WAAW,CAACE,cAAD,CAA/B;AACA,MAAMe,IAAI,GAAGjB,WAAW,CAAC,UAACkB,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYP,eAAZ,KAA+B,KAA1C;AAAA,GAAD,CAAxB;;AAEA,kBAA4BH,QAAQ,CAAC,KAAD,CAApC;AAAA;AAAA,MAAOkB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8CnB,QAAQ,CAAC;AAAA,WACrDE,kBAAkB,CAACQ,IAAD,EAAON,WAAP,CADmC;AAAA,GAAD,CAAtD;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBiB,kBAAxB,iBANyC,CAUzC;AACA;;;AACAnB,EAAAA,SAAS,CAAC,YAAM;AACd,WAAO,YAAM;AACXkB,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJQ,EAIN,EAJM,CAAT;AAMA,SAAO;AACLhB,IAAAA,eAAe,EAAfA,eADK;AAELN,IAAAA,MAAM,EAAE;AAAA,aACNY,QAAQ,CAACZ,OAAM,EAAP,CAAR,CAAmBwB,IAAnB,CAAwB,YAAM;AAC5B,YAAI,CAACH,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJD,CADM;AAAA;AAFH,GAAP;AASD,CA3BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () =>\n dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n }),\n };\n};\n"],"file":"useAuthentication.js"}
@@ -125,13 +125,24 @@ var ApplicationModel = /*#__PURE__*/function (_ResourceModel) {
125
125
  return this._userServices ? this._userServices : null;
126
126
  }
127
127
  /**
128
- * Retrieve link to the user information,
129
- * only available when the user services are available
128
+ * Indicates if the user is logged in
130
129
  */
131
130
  ,
132
131
  set: function set(model) {
133
132
  this._userServices = model instanceof UserServicesModel ? model : null;
134
133
  }
134
+ }, {
135
+ key: "isLoggedIn",
136
+ get: function get() {
137
+ var _this$userServices$is, _this$userServices;
138
+
139
+ return (_this$userServices$is = (_this$userServices = this.userServices) === null || _this$userServices === void 0 ? void 0 : _this$userServices.isLoggedIn) !== null && _this$userServices$is !== void 0 ? _this$userServices$is : false;
140
+ }
141
+ /**
142
+ * Retrieve link to the user information,
143
+ * only available when the user services are available
144
+ */
145
+
135
146
  }, {
136
147
  key: "userHref",
137
148
  get: function get() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/application/ApplicationModel.js"],"names":["ResourceModel","LinkModel","UserServicesModel","NotAllowedUriException","ApplicationModel","userService","links","getLinkByKey","href","path","models","userServiceModel","model","type","userServices","getContribution","getLinksByGroup","create","_userServices","userLink","data","contributions","resourcetype"],"mappings":";;;;;;;;;;;;;;;AACA,OAAOA,aAAP,MAA0B,uBAA1B;AACA,OAAOC,SAAP,MAAsB,oBAAtB;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AAEA,SAASC,sBAAT,QAAuC,kBAAvC;;AAOA;AACA;AACA;IACqBC,gB;;;;;;;;;;;;;;;;;;;;;;;;;;AAGnB;AACF;AACA;AACE,mBAAmB;AACjB,aAAO,aAAP;AACD;AAED;AACF;;;;;AAQE;AACF;AACE,yCAA8C;AAC5C,UAAMC,WAAW,GAAG,KAAKC,KAAL,CAAWC,YAAX,CAAwB,cAAxB,CAApB;;AACA,UAAIF,WAAW,IAAIA,WAAW,CAACG,IAAZ,CAAiBC,IAAjB,KAA0B,QAA7C,EAAuD;AACrD,cAAM,IAAIN,sBAAJ,CACJ,kIADI,CAAN;AAGD;;AAED,aAAOE,WAAW,GAAG,CAACA,WAAD,CAAH,GAAmB,EAArC;AACD;AAED;AACF;;;;WACE,wBAAeK,MAAf,EAA8C;AAC5C,UAAMC,gBAAgB,GAAG,sBAAAD,MAAM,MAAN,CAAAA,MAAM,EAC7B,UAACE,KAAD;AAAA,eAAWA,KAAK,CAACC,IAAN,KAAe,cAA1B;AAAA,OAD6B,CAA/B;;AAIA,UAAIF,gBAAJ,EAAsB;AACpB,aAAKG,YAAL,GAAoBH,gBAApB;AACD;AACF;AAED;AACF;AACA;;;;SACE,eAAoB;AAClB,aAAO,KAAKI,eAAL,CAAqB,OAArB,EAA8B,EAA9B,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA2B;AACzB,aAAO,KAAKT,KAAL,CAAWU,eAAX,CAA2B,KAA3B,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA8B;AAC5B,aAAOf,SAAS,CAACgB,MAAV,CAAiB,cAAjB,EAAiC,eAAjC,EAAkD,eAAlD,CAAP;AACD;AAED;AACF;AACA;;;;;AAKE;AACF;AACA;AACE,mBAAuC;AACrC,aAAO,KAAKC,aAAL,GAAqB,KAAKA,aAA1B,GAA0C,IAAjD;AACD;AAED;AACF;AACA;AACA;;SAdE,aAAiBN,KAAjB,EAAyC;AACvC,WAAKM,aAAL,GAAqBN,KAAK,YAAYV,iBAAjB,GAAqCU,KAArC,GAA6C,IAAlE;AACD;;;SAaD,eAA4B;AAC1B,UAAI,KAAKE,YAAL,IAAqB,IAArB,IAA6B,KAAKA,YAAL,CAAkBK,QAAlB,IAA8B,IAA/D,EAAqE;AACnE,eAAO,KAAKL,YAAL,CAAkBK,QAAlB,CAA2BX,IAAlC;AACD;;AAED,aAAO,IAAP;AACD;;;WA7ED,2BAAyBY,IAAzB,EAA2D;AACzD,aACEA,IAAI,CAACC,aAAL,CAAmBC,YAAnB,IACAF,IAAI,CAACC,aAAL,CAAmBC,YAAnB,KAAoC,aAFtC;AAID;;;;EAjB2CtB,a;;SAAzBI,gB","sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"file":"ApplicationModel.js"}
1
+ {"version":3,"sources":["../../../src/models/application/ApplicationModel.js"],"names":["ResourceModel","LinkModel","UserServicesModel","NotAllowedUriException","ApplicationModel","userService","links","getLinkByKey","href","path","models","userServiceModel","model","type","userServices","getContribution","getLinksByGroup","create","_userServices","isLoggedIn","userLink","data","contributions","resourcetype"],"mappings":";;;;;;;;;;;;;;;AACA,OAAOA,aAAP,MAA0B,uBAA1B;AACA,OAAOC,SAAP,MAAsB,oBAAtB;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;AAEA,SAASC,sBAAT,QAAuC,kBAAvC;;AAOA;AACA;AACA;IACqBC,gB;;;;;;;;;;;;;;;;;;;;;;;;;;AAGnB;AACF;AACA;AACE,mBAAmB;AACjB,aAAO,aAAP;AACD;AAED;AACF;;;;;AAQE;AACF;AACE,yCAA8C;AAC5C,UAAMC,WAAW,GAAG,KAAKC,KAAL,CAAWC,YAAX,CAAwB,cAAxB,CAApB;;AACA,UAAIF,WAAW,IAAIA,WAAW,CAACG,IAAZ,CAAiBC,IAAjB,KAA0B,QAA7C,EAAuD;AACrD,cAAM,IAAIN,sBAAJ,CACJ,kIADI,CAAN;AAGD;;AAED,aAAOE,WAAW,GAAG,CAACA,WAAD,CAAH,GAAmB,EAArC;AACD;AAED;AACF;;;;WACE,wBAAeK,MAAf,EAA8C;AAC5C,UAAMC,gBAAgB,GAAG,sBAAAD,MAAM,MAAN,CAAAA,MAAM,EAC7B,UAACE,KAAD;AAAA,eAAWA,KAAK,CAACC,IAAN,KAAe,cAA1B;AAAA,OAD6B,CAA/B;;AAIA,UAAIF,gBAAJ,EAAsB;AACpB,aAAKG,YAAL,GAAoBH,gBAApB;AACD;AACF;AAED;AACF;AACA;;;;SACE,eAAoB;AAClB,aAAO,KAAKI,eAAL,CAAqB,OAArB,EAA8B,EAA9B,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA2B;AACzB,aAAO,KAAKT,KAAL,CAAWU,eAAX,CAA2B,KAA3B,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA8B;AAC5B,aAAOf,SAAS,CAACgB,MAAV,CAAiB,cAAjB,EAAiC,eAAjC,EAAkD,eAAlD,CAAP;AACD;AAED;AACF;AACA;;;;;AAKE;AACF;AACA;AACE,mBAAuC;AACrC,aAAO,KAAKC,aAAL,GAAqB,KAAKA,aAA1B,GAA0C,IAAjD;AACD;AAED;AACF;AACA;;SAbE,aAAiBN,KAAjB,EAAyC;AACvC,WAAKM,aAAL,GAAqBN,KAAK,YAAYV,iBAAjB,GAAqCU,KAArC,GAA6C,IAAlE;AACD;;;SAYD,eAA0B;AAAA;;AACxB,4DAAO,KAAKE,YAAZ,uDAAO,mBAAmBK,UAA1B,yEAAwC,KAAxC;AACD;AAED;AACF;AACA;AACA;;;;SACE,eAA4B;AAC1B,UAAI,KAAKL,YAAL,IAAqB,IAArB,IAA6B,KAAKA,YAAL,CAAkBM,QAAlB,IAA8B,IAA/D,EAAqE;AACnE,eAAO,KAAKN,YAAL,CAAkBM,QAAlB,CAA2BZ,IAAlC;AACD;;AAED,aAAO,IAAP;AACD;;;WApFD,2BAAyBa,IAAzB,EAA2D;AACzD,aACEA,IAAI,CAACC,aAAL,CAAmBC,YAAnB,IACAF,IAAI,CAACC,aAAL,CAAmBC,YAAnB,KAAoC,aAFtC;AAID;;;;EAjB2CvB,a;;SAAzBI,gB","sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"file":"ApplicationModel.js"}
@@ -91,8 +91,7 @@ var AttributeContent = /*#__PURE__*/function () {
91
91
  var _this$_content$elemen;
92
92
 
93
93
  return (_this$_content$elemen = this._content.elements) === null || _this$_content$elemen === void 0 ? void 0 : _mapInstanceProperty(_this$_content$elemen).call(_this$_content$elemen, function (element) {
94
- if ("propertyElement" in element) {
95
- // $FlowIssue[prop-missing]
94
+ if (element.propertyElement) {
96
95
  var _element$propertyElem = element.propertyElement,
97
96
  label = _element$propertyElem.label,
98
97
  layouthint = _element$propertyElem.layouthint,
@@ -106,9 +105,8 @@ var AttributeContent = /*#__PURE__*/function () {
106
105
  };
107
106
  }
108
107
 
109
- if ("textFragmentElement" in element) {
110
- var _element$textFragment = // $FlowIssue[prop-missing]
111
- element.textFragmentElement,
108
+ if (element.textFragmentElement) {
109
+ var _element$textFragment = element.textFragmentElement,
112
110
  _label = _element$textFragment.label,
113
111
  _layouthint = _element$textFragment.layouthint,
114
112
  textfragments = _element$textFragment.textfragments;
@@ -125,8 +123,7 @@ var AttributeContent = /*#__PURE__*/function () {
125
123
  };
126
124
  }
127
125
 
128
- if ("contentElement" in element) {
129
- // $FlowIssue[prop-missing]
126
+ if (element.contentElement) {
130
127
  var _element$contentEleme = element.contentElement,
131
128
  _label2 = _element$contentEleme.label,
132
129
  _layouthint2 = _element$contentEleme.layouthint,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["retrieveText","hasAllContentInData","SectionModel","LayoutHintCollection","isPlainObject","AttributeContent","content","_content","headerLabel","headerDescription","label","header","description","message","elements","element","propertyElement","layouthint","properties","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","elementName","collectionName","getContentElements","labels","getContentElementCollections","getContentElementCollectionByLabels","types","type","referredSections","push","getReferredSections"],"mappings":"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","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { isPlainObject } from \"../../utils\";\n\nimport type {\n ContentData,\n ContentElementMapped,\n PropertyData,\n PropertyElementMapped,\n TextFragmentData,\n TextFragmentElementMapped,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n let headerLabel = null;\n let headerDescription = null;\n\n const label = this._content?.header?.label;\n if (label) {\n headerLabel = label;\n }\n\n const description = this._content?.header?.description;\n if (description) {\n if (isPlainObject(description) && \"message\" in description) {\n headerDescription = description.message;\n } else if (typeof description === \"string\") {\n headerDescription = description;\n }\n }\n\n return { label: headerLabel, description: headerDescription };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (\"propertyElement\" in element) {\n // $FlowIssue[prop-missing]\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (\"textFragmentElement\" in element) {\n const { label, layouthint, textfragments } =\n // $FlowIssue[prop-missing]\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (\"contentElement\" in element) {\n // $FlowIssue[prop-missing]\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n getContentElements<T>(elementName: string): Array<T> {\n // $FlowIssue incompatible-return\n return this.elements.filter((element) => elementName in element);\n }\n\n /**\n */\n getContentElementCollections<T>(\n elementName: string,\n collectionName: string\n ): Array<T> {\n return this.getContentElements(elementName)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n getContentElementCollectionByLabels<T, U>(\n elementName: string,\n collectionName: string,\n labels: Array<string>\n ): Array<U> {\n return (\n this.getContentElements<T>(elementName)\n // $FlowIssue incompatible-use\n .filter((element) => labels.includes(element[elementName].label))\n // $FlowIssue incompatible-use\n .map((element) => element[elementName][collectionName])\n .flat()\n );\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElementCollections<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by property element label\n */\n getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {\n return this.getContentElementCollectionByLabels<\n PropertyElementMapped,\n PropertyData\n >(\"propertyElement\", \"properties\", labels);\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElementCollections<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {\n return this.getContentElementCollectionByLabels<\n TextFragmentElementMapped,\n TextFragmentData\n >(\"textFragmentElement\", \"textfragments\", labels);\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElementCollections<SectionModel>(\n \"contentElement\",\n \"sections\"\n );\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getSectionsByLabels(labels: Array<string>): Array<SectionModel> {\n return this.getContentElementCollectionByLabels<\n ContentElementMapped,\n SectionModel\n >(\"contentElement\", \"sections\", labels);\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
1
+ {"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["retrieveText","hasAllContentInData","SectionModel","LayoutHintCollection","isPlainObject","AttributeContent","content","_content","headerLabel","headerDescription","label","header","description","message","elements","element","propertyElement","layouthint","properties","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","elementName","collectionName","getContentElements","labels","getContentElementCollections","getContentElementCollectionByLabels","types","type","referredSections","push","getReferredSections"],"mappings":"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","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { isPlainObject } from \"../../utils\";\n\nimport type {\n ContentData,\n ContentElementMapped,\n PropertyData,\n PropertyElementMapped,\n TextFragmentData,\n TextFragmentElementMapped,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n let headerLabel = null;\n let headerDescription = null;\n\n const label = this._content?.header?.label;\n if (label) {\n headerLabel = label;\n }\n\n const description = this._content?.header?.description;\n if (description) {\n if (isPlainObject(description) && \"message\" in description) {\n headerDescription = description.message;\n } else if (typeof description === \"string\") {\n headerDescription = description;\n }\n }\n\n return { label: headerLabel, description: headerDescription };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (element.propertyElement) {\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (element.textFragmentElement) {\n const { label, layouthint, textfragments } =\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (element.contentElement) {\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n getContentElements<T>(elementName: string): Array<T> {\n // $FlowIssue incompatible-return\n return this.elements.filter((element) => elementName in element);\n }\n\n /**\n */\n getContentElementCollections<T>(\n elementName: string,\n collectionName: string\n ): Array<T> {\n return this.getContentElements(elementName)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n getContentElementCollectionByLabels<T, U>(\n elementName: string,\n collectionName: string,\n labels: Array<string>\n ): Array<U> {\n return (\n this.getContentElements<T>(elementName)\n // $FlowIssue incompatible-use\n .filter((element) => labels.includes(element[elementName].label))\n // $FlowIssue incompatible-use\n .map((element) => element[elementName][collectionName])\n .flat()\n );\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElementCollections<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by property element label\n */\n getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {\n return this.getContentElementCollectionByLabels<\n PropertyElementMapped,\n PropertyData\n >(\"propertyElement\", \"properties\", labels);\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElementCollections<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {\n return this.getContentElementCollectionByLabels<\n TextFragmentElementMapped,\n TextFragmentData\n >(\"textFragmentElement\", \"textfragments\", labels);\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElementCollections<SectionModel>(\n \"contentElement\",\n \"sections\"\n );\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getSectionsByLabels(labels: Array<string>): Array<SectionModel> {\n return this.getContentElementCollectionByLabels<\n ContentElementMapped,\n SectionModel\n >(\"contentElement\", \"sections\", labels);\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
@@ -390,11 +390,21 @@ var Href = /*#__PURE__*/function () {
390
390
  return this.querystring.length > 0 ? [this.path, this.querystring].join("?") : this.path;
391
391
  }
392
392
  /**
393
- * Getting the URL including the base path
393
+ * Getting the URL including the base path, querystring is prefixed
394
394
  */
395
395
 
396
396
  }, {
397
397
  key: "absolutehref",
398
+ get: function get() {
399
+ var querystring = this.getQuerystring(false);
400
+ return querystring.length > 0 ? [this.absolutepath, querystring].join("?") : this.absolutepath;
401
+ }
402
+ /**
403
+ * Getting the URL including the base path, the querystring is prefixed
404
+ */
405
+
406
+ }, {
407
+ key: "absolutehrefPrefixedQuerystring",
398
408
  get: function get() {
399
409
  var querystring = this.getQuerystring(true);
400
410
  return querystring.length > 0 ? [this.absolutepath, querystring].join("?") : this.absolutepath;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/href/Href.js"],"names":["BASE","CONTENT_PATH","HTTP_METHODS","Parameter","IllegalArgumentException","Href","href","resourcetype","path","parameters","hash","state","method","GET","setFromHref","setFromString","setFromLocationOrObject","pathname","_path","search","addParametersFromString","Array","isArray","_parameters","param","addParameter","_name","_value","_prefix","getHashFromString","_hash","_state","getPathFromString","checkAbsoluteUrl","split","forEach","paramFromString","fromString","setParameter","name","value","prefix","removeParameter","push","getParameter","undefined","_method","withPrefix","toQuerystring","join","isModUIParameter","getQuerystring","_resourcetype","isExternal","querystring","length","absolutepath","thisPath","otherPath","equals","thisParams","toString","every","checkAbsolute","RegExp","test","decodedHref","decodeURI","hrefNoHash","substr","indexOf"],"mappings":"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","sourcesContent":["// @flow\nimport { BASE, CONTENT_PATH, HTTP_METHODS } from \"../../constants/Constants\";\n\nimport Parameter from \"../parameter/Parameter\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport type { LocationShape } from \"react-router\";\n\ntype HrefObject = {\n _path: string,\n _hash: string,\n _parameters: Array<Parameter>,\n _resourcetype: string,\n _method: $Keys<typeof HTTP_METHODS>,\n _state: ?{ [key: string]: any },\n pathname: ?string,\n};\n\nexport type HrefInput = Href | HrefObject | LocationShape | string;\n\n/**\n * Defines a Href with the parameters\n */\nclass Href {\n _path: string;\n _hash: string;\n _parameters: Array<Parameter>;\n _resourcetype: string;\n _method: $Keys<typeof HTTP_METHODS>;\n _state: ?{ +[key: string]: any };\n\n /**\n * Create a Href\n */\n constructor(href?: HrefInput, resourcetype?: string) {\n this.path = \"\";\n this.parameters = [];\n this.hash = \"\";\n this.state = null;\n this.method = HTTP_METHODS.GET;\n this.resourcetype = resourcetype || \"\";\n\n if (href instanceof Href) {\n this.setFromHref(href);\n } else if (typeof href === \"string\") {\n this.setFromString(href);\n } else if (typeof href === \"object\") {\n this.setFromLocationOrObject(href);\n }\n }\n\n /**\n * Set parameters from Href model input\n */\n setFromHref(href: Href) {\n this.path = href.path;\n this.parameters = href.parameters;\n this.hash = href.hash;\n this.state = href.state;\n }\n\n /**\n */\n setFromLocationOrObject(href: LocationShape | HrefObject) {\n if (typeof href[\"pathname\"] === \"string\") {\n this.path = href.pathname;\n } else if (typeof href._path === \"string\") {\n this.path = href._path;\n }\n\n if (href.search) {\n this.addParametersFromString(href.search);\n } else if (Array.isArray(href._parameters)) {\n // $FlowExpectedError[incompatible-call]\n href._parameters.map((param: Parameter) =>\n this.addParameter(param._name, param._value, param._prefix)\n );\n }\n\n if (href.hash) {\n this.hash = Href.getHashFromString(href.hash);\n } else if (typeof href._hash === \"string\") {\n this.hash = href._hash;\n }\n\n if (href.state) {\n this.state = href.state || null;\n } else if (typeof href._state === \"object\") {\n this.state = href._state;\n }\n }\n\n /**\n * Set parameters from string input\n */\n setFromString(href: string) {\n this.path = Href.getPathFromString(href);\n this.addParametersFromString(href);\n this.hash = Href.getHashFromString(href);\n }\n\n /**\n */\n get isChangePassword(): boolean {\n return this._path.includes(\"/change-password\");\n }\n\n /**\n * check if the path is referencing a camel route\n */\n static isCamelRoute(path: string): boolean {\n return (\n path.startsWith(\"/restServices\") && !path.startsWith(\"/restServices/ui\")\n );\n }\n\n /**\n */\n static checkAbsoluteUrl(href: string): boolean {\n const checkAbsolute = new RegExp(\"^(?:[a-z]+:)?//\", \"i\");\n return checkAbsolute.test(href);\n }\n\n // Check if url is relative (not checking for absolute urls with same domain)\n /**\n */\n get isExternal(): boolean {\n return Href.checkAbsoluteUrl(this.path);\n }\n\n /**\n * Retrieve the relative path part of a href string, e.g. https://www.beinformed.com/BeInformed/tab/view?q=url => /tab/view\n */\n static getPathFromString(href: string): string {\n const decodedHref = decodeURI(href);\n\n const hrefNoHash = decodedHref.includes(\"#\")\n ? decodedHref.substr(0, decodedHref.indexOf(\"#\"))\n : decodedHref;\n\n return hrefNoHash.includes(\"?\") ? hrefNoHash.split(\"?\")[0] : hrefNoHash;\n }\n\n /**\n * Retrieve hash of href string\n */\n static getHashFromString(href: string = \"\"): string {\n return href.includes(\"#\") ? href.substr(href.indexOf(\"#\") + 1) : \"\";\n }\n\n /**\n * Add a parameter for each parameter found in the querystring of an URL string, e.g. https://www.beinformed.com?q=url => q=url\n */\n addParametersFromString(href: string): Href {\n if (href.includes(\"?\")) {\n href\n .split(\"?\")[1]\n .split(\"&\")\n .forEach((param) => {\n const paramFromString = Parameter.fromString(param);\n if (paramFromString) {\n this.setParameter(\n paramFromString.name,\n paramFromString.value,\n paramFromString.prefix\n );\n }\n });\n }\n\n return this;\n }\n\n /**\n * Add a querystring parameter to the parameter collection of this Href, skips parameters that have a value of null\n */\n addParameter(name: string, value: ?string, prefix: ?string): Href {\n if (value !== null) {\n this.removeParameter(name, prefix);\n this._parameters.push(new Parameter(prefix, name, value));\n }\n\n return this;\n }\n\n /**\n * Adds or overwrites a parameter when it exists and value is not null.\n * Removes the parameter when the value is null\n */\n setParameter(name: string, value: ?string, prefix: ?string): Href {\n if (value === null) {\n this.removeParameter(name, prefix);\n } else {\n this.addParameter(name, value, prefix);\n }\n\n return this;\n }\n\n /**\n * Retrieve a parameter by it's name and (optionally) prefix\n */\n getParameter(name: string, prefix: ?string): ?Parameter {\n return this._parameters.find(\n (param) => param.prefix === prefix && param.name === name\n );\n }\n\n /**\n */\n hasParameter(name: string, prefix: ?string): boolean {\n return this.getParameter(name, prefix) !== undefined;\n }\n\n /**\n * Get request method\n */\n get method(): $Keys<typeof HTTP_METHODS> {\n return this._method;\n }\n\n /**\n * Set request method\n */\n set method(method: $Keys<typeof HTTP_METHODS>) {\n this._method = method || HTTP_METHODS.GET;\n }\n\n /**\n * Retrieve all paremters\n */\n get parameters(): Array<Parameter> {\n return this._parameters;\n }\n\n /**\n * Replace parameters of Href\n */\n set parameters(parameters: Array<Parameter>) {\n this._parameters = parameters;\n }\n\n /**\n * Remove a parameter from the parameter collection\n */\n removeParameter(name: string, prefix: ?string): Href {\n this._parameters = this._parameters.filter(\n (param) => param.prefix !== prefix || param.name !== name\n );\n\n return this;\n }\n\n /**\n * Get the parameters as a querystring, e.g. param1=value1&param2=value2, optionally with prefix\n */\n getQuerystring(withPrefix: boolean = false): string {\n return this.parameters\n .filter((param) => param.value != null)\n .map((param) => param.toQuerystring(withPrefix))\n .join(\"&\");\n }\n\n /**\n * Retrieve a querystring that only contains parameter that can be send to the modular ui, parameters are filtered by prefix\n */\n getQuerystringForModularUI(prefix: string = \"\"): string {\n return this.parameters\n .filter(\n (param) =>\n param.isModUIParameter &&\n (!prefix || !param.prefix || param.prefix === prefix) &&\n param.value != null\n )\n .map((param) => param.toQuerystring(false))\n .join(\"&\");\n }\n\n /**\n * Retrieve all parameters from the parameter collection in a querystring style name1=value1&name2=value2, without the prefix\n */\n get querystring(): string {\n return this.getQuerystring(false);\n }\n\n /**\n * Set the path of the Href, the part before the querystring question mark\n */\n set path(path: string) {\n this._path = path;\n }\n\n /**\n * Retrieve the path\n */\n get path(): string {\n return this._path || \"\";\n }\n\n /**\n * Set hash\n */\n set hash(hash: string) {\n this._hash = hash;\n }\n\n /**\n * Retrieve hash\n */\n get hash(): string {\n return this._hash;\n }\n\n /**\n */\n set state(state: ?{ +[key: string]: any }) {\n this._state = state;\n }\n\n /**\n */\n get state(): ?{ +[key: string]: any } {\n return this._state;\n }\n\n /**\n */\n setState(state: { [key: string]: any }): Href {\n this.state = state;\n\n return this;\n }\n\n /**\n * Set resourctype\n */\n set resourcetype(resourcetype: string) {\n this._resourcetype = resourcetype;\n }\n\n /**\n * Retrieve resourceType\n */\n get resourcetype(): string {\n return this._resourcetype;\n }\n\n /**\n * Retrieve the path combined with the BASE of the application, e.g. /BeInformed\n */\n get absolutepath(): string {\n if (this.isExternal) {\n return this.path;\n }\n\n return BASE + this.path;\n }\n\n /**\n * Retrieves the combination of the path and the querystring\n */\n get href(): string {\n return this.querystring.length > 0\n ? [this.path, this.querystring].join(\"?\")\n : this.path;\n }\n\n /**\n * Getting the URL including the base path\n */\n get absolutehref(): string {\n const querystring = this.getQuerystring(true);\n\n return querystring.length > 0\n ? [this.absolutepath, querystring].join(\"?\")\n : this.absolutepath;\n }\n\n /**\n * Checks if the URL starts within the given href\n */\n startsWith(href: Href | string): boolean {\n const thisPath = `${this.path}/`;\n const otherPath = href instanceof Href ? `${href.path}/` : href;\n\n return thisPath.startsWith(otherPath);\n }\n\n /**\n * Checks if the given Href equals this Href\n */\n equals(href: Href | string): boolean {\n if (href instanceof Href) {\n return this.path === href.path;\n }\n\n return this.path === href;\n }\n\n /**\n */\n equalsWithParameters(href: Href): boolean {\n if (!this.equals(href)) {\n return false;\n }\n\n if (href instanceof Href) {\n if (this.parameters.length !== href.parameters.length) {\n return false;\n }\n\n if (this.parameters.length === 0 && href.parameters.length === 0) {\n return true;\n }\n\n const thisParams = this.parameters.map((param) => param.toString());\n\n return href.parameters.every((param) =>\n thisParams.includes(param.toString())\n );\n }\n\n throw new IllegalArgumentException(`${href} is not an instance of Href`);\n }\n\n /**\n * Indicates if the link is a content link\n */\n get isContent(): boolean {\n return this.absolutepath.startsWith(CONTENT_PATH);\n }\n\n /**\n * Returns a complete url from the Href\n */\n toString(): string {\n return this.href;\n }\n\n /**\n */\n toLocation(): LocationShape {\n return {\n pathname: this.path,\n search: this.querystring.length > 0 ? `?${this.querystring}` : \"\",\n hash: this.hash.length > 0 ? `#${this.hash}` : \"\",\n state: this.state,\n };\n }\n}\n\nexport default Href;\n"],"file":"Href.js"}
1
+ {"version":3,"sources":["../../../src/models/href/Href.js"],"names":["BASE","CONTENT_PATH","HTTP_METHODS","Parameter","IllegalArgumentException","Href","href","resourcetype","path","parameters","hash","state","method","GET","setFromHref","setFromString","setFromLocationOrObject","pathname","_path","search","addParametersFromString","Array","isArray","_parameters","param","addParameter","_name","_value","_prefix","getHashFromString","_hash","_state","getPathFromString","checkAbsoluteUrl","split","forEach","paramFromString","fromString","setParameter","name","value","prefix","removeParameter","push","getParameter","undefined","_method","withPrefix","toQuerystring","join","isModUIParameter","getQuerystring","_resourcetype","isExternal","querystring","length","absolutepath","thisPath","otherPath","equals","thisParams","toString","every","checkAbsolute","RegExp","test","decodedHref","decodeURI","hrefNoHash","substr","indexOf"],"mappings":"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","sourcesContent":["// @flow\nimport { BASE, CONTENT_PATH, HTTP_METHODS } from \"../../constants/Constants\";\n\nimport Parameter from \"../parameter/Parameter\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport type { LocationShape } from \"react-router\";\n\ntype HrefObject = {\n _path: string,\n _hash: string,\n _parameters: Array<Parameter>,\n _resourcetype: string,\n _method: $Keys<typeof HTTP_METHODS>,\n _state: ?{ [key: string]: any },\n pathname: ?string,\n};\n\nexport type HrefInput = Href | HrefObject | LocationShape | string;\n\n/**\n * Defines a Href with the parameters\n */\nclass Href {\n _path: string;\n _hash: string;\n _parameters: Array<Parameter>;\n _resourcetype: string;\n _method: $Keys<typeof HTTP_METHODS>;\n _state: ?{ +[key: string]: any };\n\n /**\n * Create a Href\n */\n constructor(href?: HrefInput, resourcetype?: string) {\n this.path = \"\";\n this.parameters = [];\n this.hash = \"\";\n this.state = null;\n this.method = HTTP_METHODS.GET;\n this.resourcetype = resourcetype || \"\";\n\n if (href instanceof Href) {\n this.setFromHref(href);\n } else if (typeof href === \"string\") {\n this.setFromString(href);\n } else if (typeof href === \"object\") {\n this.setFromLocationOrObject(href);\n }\n }\n\n /**\n * Set parameters from Href model input\n */\n setFromHref(href: Href) {\n this.path = href.path;\n this.parameters = href.parameters;\n this.hash = href.hash;\n this.state = href.state;\n }\n\n /**\n */\n setFromLocationOrObject(href: LocationShape | HrefObject) {\n if (typeof href[\"pathname\"] === \"string\") {\n this.path = href.pathname;\n } else if (typeof href._path === \"string\") {\n this.path = href._path;\n }\n\n if (href.search) {\n this.addParametersFromString(href.search);\n } else if (Array.isArray(href._parameters)) {\n // $FlowExpectedError[incompatible-call]\n href._parameters.map((param: Parameter) =>\n this.addParameter(param._name, param._value, param._prefix)\n );\n }\n\n if (href.hash) {\n this.hash = Href.getHashFromString(href.hash);\n } else if (typeof href._hash === \"string\") {\n this.hash = href._hash;\n }\n\n if (href.state) {\n this.state = href.state || null;\n } else if (typeof href._state === \"object\") {\n this.state = href._state;\n }\n }\n\n /**\n * Set parameters from string input\n */\n setFromString(href: string) {\n this.path = Href.getPathFromString(href);\n this.addParametersFromString(href);\n this.hash = Href.getHashFromString(href);\n }\n\n /**\n */\n get isChangePassword(): boolean {\n return this._path.includes(\"/change-password\");\n }\n\n /**\n * check if the path is referencing a camel route\n */\n static isCamelRoute(path: string): boolean {\n return (\n path.startsWith(\"/restServices\") && !path.startsWith(\"/restServices/ui\")\n );\n }\n\n /**\n */\n static checkAbsoluteUrl(href: string): boolean {\n const checkAbsolute = new RegExp(\"^(?:[a-z]+:)?//\", \"i\");\n return checkAbsolute.test(href);\n }\n\n // Check if url is relative (not checking for absolute urls with same domain)\n /**\n */\n get isExternal(): boolean {\n return Href.checkAbsoluteUrl(this.path);\n }\n\n /**\n * Retrieve the relative path part of a href string, e.g. https://www.beinformed.com/BeInformed/tab/view?q=url => /tab/view\n */\n static getPathFromString(href: string): string {\n const decodedHref = decodeURI(href);\n\n const hrefNoHash = decodedHref.includes(\"#\")\n ? decodedHref.substr(0, decodedHref.indexOf(\"#\"))\n : decodedHref;\n\n return hrefNoHash.includes(\"?\") ? hrefNoHash.split(\"?\")[0] : hrefNoHash;\n }\n\n /**\n * Retrieve hash of href string\n */\n static getHashFromString(href: string = \"\"): string {\n return href.includes(\"#\") ? href.substr(href.indexOf(\"#\") + 1) : \"\";\n }\n\n /**\n * Add a parameter for each parameter found in the querystring of an URL string, e.g. https://www.beinformed.com?q=url => q=url\n */\n addParametersFromString(href: string): Href {\n if (href.includes(\"?\")) {\n href\n .split(\"?\")[1]\n .split(\"&\")\n .forEach((param) => {\n const paramFromString = Parameter.fromString(param);\n if (paramFromString) {\n this.setParameter(\n paramFromString.name,\n paramFromString.value,\n paramFromString.prefix\n );\n }\n });\n }\n\n return this;\n }\n\n /**\n * Add a querystring parameter to the parameter collection of this Href, skips parameters that have a value of null\n */\n addParameter(name: string, value: ?string, prefix: ?string): Href {\n if (value !== null) {\n this.removeParameter(name, prefix);\n this._parameters.push(new Parameter(prefix, name, value));\n }\n\n return this;\n }\n\n /**\n * Adds or overwrites a parameter when it exists and value is not null.\n * Removes the parameter when the value is null\n */\n setParameter(name: string, value: ?string, prefix: ?string): Href {\n if (value === null) {\n this.removeParameter(name, prefix);\n } else {\n this.addParameter(name, value, prefix);\n }\n\n return this;\n }\n\n /**\n * Retrieve a parameter by it's name and (optionally) prefix\n */\n getParameter(name: string, prefix: ?string): ?Parameter {\n return this._parameters.find(\n (param) => param.prefix === prefix && param.name === name\n );\n }\n\n /**\n */\n hasParameter(name: string, prefix: ?string): boolean {\n return this.getParameter(name, prefix) !== undefined;\n }\n\n /**\n * Get request method\n */\n get method(): $Keys<typeof HTTP_METHODS> {\n return this._method;\n }\n\n /**\n * Set request method\n */\n set method(method: $Keys<typeof HTTP_METHODS>) {\n this._method = method || HTTP_METHODS.GET;\n }\n\n /**\n * Retrieve all paremters\n */\n get parameters(): Array<Parameter> {\n return this._parameters;\n }\n\n /**\n * Replace parameters of Href\n */\n set parameters(parameters: Array<Parameter>) {\n this._parameters = parameters;\n }\n\n /**\n * Remove a parameter from the parameter collection\n */\n removeParameter(name: string, prefix: ?string): Href {\n this._parameters = this._parameters.filter(\n (param) => param.prefix !== prefix || param.name !== name\n );\n\n return this;\n }\n\n /**\n * Get the parameters as a querystring, e.g. param1=value1&param2=value2, optionally with prefix\n */\n getQuerystring(withPrefix: boolean = false): string {\n return this.parameters\n .filter((param) => param.value != null)\n .map((param) => param.toQuerystring(withPrefix))\n .join(\"&\");\n }\n\n /**\n * Retrieve a querystring that only contains parameter that can be send to the modular ui, parameters are filtered by prefix\n */\n getQuerystringForModularUI(prefix: string = \"\"): string {\n return this.parameters\n .filter(\n (param) =>\n param.isModUIParameter &&\n (!prefix || !param.prefix || param.prefix === prefix) &&\n param.value != null\n )\n .map((param) => param.toQuerystring(false))\n .join(\"&\");\n }\n\n /**\n * Retrieve all parameters from the parameter collection in a querystring style name1=value1&name2=value2, without the prefix\n */\n get querystring(): string {\n return this.getQuerystring(false);\n }\n\n /**\n * Set the path of the Href, the part before the querystring question mark\n */\n set path(path: string) {\n this._path = path;\n }\n\n /**\n * Retrieve the path\n */\n get path(): string {\n return this._path || \"\";\n }\n\n /**\n * Set hash\n */\n set hash(hash: string) {\n this._hash = hash;\n }\n\n /**\n * Retrieve hash\n */\n get hash(): string {\n return this._hash;\n }\n\n /**\n */\n set state(state: ?{ +[key: string]: any }) {\n this._state = state;\n }\n\n /**\n */\n get state(): ?{ +[key: string]: any } {\n return this._state;\n }\n\n /**\n */\n setState(state: { [key: string]: any }): Href {\n this.state = state;\n\n return this;\n }\n\n /**\n * Set resourctype\n */\n set resourcetype(resourcetype: string) {\n this._resourcetype = resourcetype;\n }\n\n /**\n * Retrieve resourceType\n */\n get resourcetype(): string {\n return this._resourcetype;\n }\n\n /**\n * Retrieve the path combined with the BASE of the application, e.g. /BeInformed\n */\n get absolutepath(): string {\n if (this.isExternal) {\n return this.path;\n }\n\n return BASE + this.path;\n }\n\n /**\n * Retrieves the combination of the path and the querystring\n */\n get href(): string {\n return this.querystring.length > 0\n ? [this.path, this.querystring].join(\"?\")\n : this.path;\n }\n\n /**\n * Getting the URL including the base path, querystring is prefixed\n */\n get absolutehref(): string {\n const querystring = this.getQuerystring(false);\n\n return querystring.length > 0\n ? [this.absolutepath, querystring].join(\"?\")\n : this.absolutepath;\n }\n\n /**\n * Getting the URL including the base path, the querystring is prefixed\n */\n get absolutehrefPrefixedQuerystring(): string {\n const querystring = this.getQuerystring(true);\n\n return querystring.length > 0\n ? [this.absolutepath, querystring].join(\"?\")\n : this.absolutepath;\n }\n\n /**\n * Checks if the URL starts within the given href\n */\n startsWith(href: Href | string): boolean {\n const thisPath = `${this.path}/`;\n const otherPath = href instanceof Href ? `${href.path}/` : href;\n\n return thisPath.startsWith(otherPath);\n }\n\n /**\n * Checks if the given Href equals this Href\n */\n equals(href: Href | string): boolean {\n if (href instanceof Href) {\n return this.path === href.path;\n }\n\n return this.path === href;\n }\n\n /**\n */\n equalsWithParameters(href: Href): boolean {\n if (!this.equals(href)) {\n return false;\n }\n\n if (href instanceof Href) {\n if (this.parameters.length !== href.parameters.length) {\n return false;\n }\n\n if (this.parameters.length === 0 && href.parameters.length === 0) {\n return true;\n }\n\n const thisParams = this.parameters.map((param) => param.toString());\n\n return href.parameters.every((param) =>\n thisParams.includes(param.toString())\n );\n }\n\n throw new IllegalArgumentException(`${href} is not an instance of Href`);\n }\n\n /**\n * Indicates if the link is a content link\n */\n get isContent(): boolean {\n return this.absolutepath.startsWith(CONTENT_PATH);\n }\n\n /**\n * Returns a complete url from the Href\n */\n toString(): string {\n return this.href;\n }\n\n /**\n */\n toLocation(): LocationShape {\n return {\n pathname: this.path,\n search: this.querystring.length > 0 ? `?${this.querystring}` : \"\",\n hash: this.hash.length > 0 ? `#${this.hash}` : \"\",\n state: this.state,\n };\n }\n}\n\nexport default Href;\n"],"file":"Href.js"}
@@ -15,6 +15,15 @@ export var loginFailed = function loginFailed(errorMessage) {
15
15
  payload: errorMessage
16
16
  };
17
17
  };
18
+ /**
19
+ * Resets any authentication errors
20
+ */
21
+
22
+ export var resetAuthErrors = function resetAuthErrors() {
23
+ return {
24
+ type: "AUTHENTICATION_RESET_ERRORS"
25
+ };
26
+ };
18
27
  /**
19
28
  * Send login success action
20
29
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/actions/SignIn.js"],"names":["Cache","Authenticate","reloadApplication","startProgress","finishProgress","push","CHANGEPASSWORD_PATH","loginFailed","errorMessage","type","payload","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","login","username","password","then","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"mappings":";AACA,OAAOA,KAAP,MAAkB,2BAAlB;AACA,OAAOC,YAAP,MAAyB,8BAAzB;AAEA,SAASC,iBAAT,QAAkC,eAAlC;AAEA,SAASC,aAAT,EAAwBC,cAAxB,QAA8C,qBAA9C;AACA,SAASC,IAAT,QAAqB,oBAArB;AACA,SAASC,mBAAT,QAAoC,2BAApC;;AAQA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;AAAA,SAA8C;AACvEC,IAAAA,IAAI,EAAE,sBADiE;AAEvEC,IAAAA,OAAO,EAAEF;AAF8D,GAA9C;AAAA,CAApB;AAKP;AACA;AACA;;AACA,OAAO,IAAMG,YAAY,GAAG,SAAfA,YAAe;AAAA,SAA2B;AACrDF,IAAAA,IAAI,EAAE;AAD+C,GAA3B;AAAA,CAArB;AAIP;AACA;AACA;;AACA,OAAO,IAAMG,cAAc,GAAG,SAAjBA,cAAiB;AAAA,SAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;AAAA;;AACvED,IAAAA,QAAQ,CAAC;AACPJ,MAAAA,IAAI,EAAE;AADC,KAAD,CAAR;AAIA,QAAMM,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;AACA,QAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;AACA,WAAOR,QAAQ,CACbR,IAAI,CAACC,mBAAD,EAAsB;AACxBe,MAAAA,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;AAExBE,MAAAA,KAAK,EAAEJ;AAFiB,KAAtB,CADS,CAAf;AAMD,GAb6B;AAAA,CAAvB;AAeP;AACA;;AACA,OAAO,IAAMO,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;AAAA,SACA,UAACX,QAAD,EAAc;AACZA,IAAAA,QAAQ,CAACV,aAAa,EAAd,CAAR;AAEA,WAAO,IAAIF,YAAJ,GACJqB,KADI,CACEC,QADF,EACYC,QADZ,EAEJC,IAFI,CAEC;AAAA,aAAMZ,QAAQ,CAACX,iBAAiB,EAAlB,CAAd;AAAA,KAFD,EAGJuB,IAHI,CAGC,YAAM;AACVzB,MAAAA,KAAK,CAAC0B,OAAN,CAAc,MAAd,EAAsB,IAAtB;AACAb,MAAAA,QAAQ,CAACF,YAAY,EAAb,CAAR;AAEA,aAAOE,QAAQ,CAACT,cAAc,EAAf,CAAf;AACD,KARI,EASJuB,KATI,CASE,UAACC,KAAD,EAAW;AAChB,UAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;AAC/C,YAAMC,2BAA2B,GAAGjB,QAAQ,CAACX,iBAAiB,EAAlB,CAA5C;AAEA,eAAO,SAAQ6B,OAAR,CAAgBD,2BAAhB,EAA6CL,IAA7C,CAAkD,YAAM;AAC7DzB,UAAAA,KAAK,CAAC0B,OAAN,CAAc,MAAd,EAAsB,IAAtB;AACA,iBAAOb,QAAQ,CAACD,cAAc,EAAf,CAAf;AACD,SAHM,CAAP;AAID;;AAEDC,MAAAA,QAAQ,CAACN,WAAW,CAACqB,KAAK,CAACC,EAAP,CAAZ,CAAR;AACA,aAAOhB,QAAQ,CAACT,cAAc,EAAf,CAAf;AACD,KArBI,CAAP;AAsBD,GA1BD;AAAA,CADK","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"file":"SignIn.js"}
1
+ {"version":3,"sources":["../../../src/redux/actions/SignIn.js"],"names":["Cache","Authenticate","reloadApplication","startProgress","finishProgress","push","CHANGEPASSWORD_PATH","loginFailed","errorMessage","type","payload","resetAuthErrors","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","login","username","password","then","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"mappings":";AACA,OAAOA,KAAP,MAAkB,2BAAlB;AACA,OAAOC,YAAP,MAAyB,8BAAzB;AAEA,SAASC,iBAAT,QAAkC,eAAlC;AAEA,SAASC,aAAT,EAAwBC,cAAxB,QAA8C,qBAA9C;AACA,SAASC,IAAT,QAAqB,oBAArB;AACA,SAASC,mBAAT,QAAoC,2BAApC;;AASA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;AAAA,SAA8C;AACvEC,IAAAA,IAAI,EAAE,sBADiE;AAEvEC,IAAAA,OAAO,EAAEF;AAF8D,GAA9C;AAAA,CAApB;AAKP;AACA;AACA;;AACA,OAAO,IAAMG,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAA8B;AAC3DF,IAAAA,IAAI,EAAE;AADqD,GAA9B;AAAA,CAAxB;AAIP;AACA;AACA;;AACA,OAAO,IAAMG,YAAY,GAAG,SAAfA,YAAe;AAAA,SAA2B;AACrDH,IAAAA,IAAI,EAAE;AAD+C,GAA3B;AAAA,CAArB;AAIP;AACA;AACA;;AACA,OAAO,IAAMI,cAAc,GAAG,SAAjBA,cAAiB;AAAA,SAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;AAAA;;AACvED,IAAAA,QAAQ,CAAC;AACPL,MAAAA,IAAI,EAAE;AADC,KAAD,CAAR;AAIA,QAAMO,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;AACA,QAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;AACA,WAAOR,QAAQ,CACbT,IAAI,CAACC,mBAAD,EAAsB;AACxBgB,MAAAA,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;AAExBE,MAAAA,KAAK,EAAEJ;AAFiB,KAAtB,CADS,CAAf;AAMD,GAb6B;AAAA,CAAvB;AAeP;AACA;;AACA,OAAO,IAAMO,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;AAAA,SACA,UAACX,QAAD,EAAc;AACZA,IAAAA,QAAQ,CAACX,aAAa,EAAd,CAAR;AAEA,WAAO,IAAIF,YAAJ,GACJsB,KADI,CACEC,QADF,EACYC,QADZ,EAEJC,IAFI,CAEC;AAAA,aAAMZ,QAAQ,CAACZ,iBAAiB,EAAlB,CAAd;AAAA,KAFD,EAGJwB,IAHI,CAGC,YAAM;AACV1B,MAAAA,KAAK,CAAC2B,OAAN,CAAc,MAAd,EAAsB,IAAtB;AACAb,MAAAA,QAAQ,CAACF,YAAY,EAAb,CAAR;AAEA,aAAOE,QAAQ,CAACV,cAAc,EAAf,CAAf;AACD,KARI,EASJwB,KATI,CASE,UAACC,KAAD,EAAW;AAChB,UAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;AAC/C,YAAMC,2BAA2B,GAAGjB,QAAQ,CAACZ,iBAAiB,EAAlB,CAA5C;AAEA,eAAO,SAAQ8B,OAAR,CAAgBD,2BAAhB,EAA6CL,IAA7C,CAAkD,YAAM;AAC7D1B,UAAAA,KAAK,CAAC2B,OAAN,CAAc,MAAd,EAAsB,IAAtB;AACA,iBAAOb,QAAQ,CAACD,cAAc,EAAf,CAAf;AACD,SAHM,CAAP;AAID;;AAEDC,MAAAA,QAAQ,CAACP,WAAW,CAACsB,KAAK,CAACC,EAAP,CAAZ,CAAR;AACA,aAAOhB,QAAQ,CAACV,cAAc,EAAf,CAAf;AACD,KArBI,CAAP;AAsBD,GA1BD;AAAA,CADK","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n ResetAuthErrorsAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Resets any authentication errors\n */\nexport const resetAuthErrors = (): ResetAuthErrorsAction => ({\n type: \"AUTHENTICATION_RESET_ERRORS\",\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"file":"SignIn.js"}
@@ -42,6 +42,11 @@ var AuthReducer = function AuthReducer() {
42
42
  error: action.payload
43
43
  });
44
44
 
45
+ case "AUTHENTICATION_RESET_ERRORS":
46
+ return _objectSpread(_objectSpread({}, state), {}, {
47
+ error: null
48
+ });
49
+
45
50
  case "AUTHENTICATION_LOGOUT":
46
51
  {
47
52
  // clear cache because of cached contributions
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/reducers/AuthReducer.js"],"names":["Cache","initialState","isAuthenticated","mustChangePassword","error","AuthReducer","state","action","type","payload","clear"],"mappings":";;;;;;;;;;;AACA,OAAOA,KAAP,MAAkB,2BAAlB;AAKA;AACA,IAAMC,YAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAE,KADa;AAE9BC,EAAAA,kBAAkB,EAAE,KAFU;AAG9BC,EAAAA,KAAK,EAAE;AAHuB,CAAhC;AAMA;AACA;AACA;;AACA,IAAMC,WAA4C,GAAG,SAA/CA,WAA+C,GAGhD;AAAA,MAFHC,KAEG,uEAFKL,YAEL;AAAA,MADHM,MACG;;AACH,MAAI,CAACA,MAAL,EAAa;AACX,WAAOD,KAAP;AACD;;AAED,UAAQC,MAAM,CAACC,IAAf;AACE,SAAK,wBAAL;AACE,6CACKF,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEE,QAAAA,KAAK,EAAE,IAHT;AAIED,QAAAA,kBAAkB,EAAE;AAJtB;;AAOF,SAAK,sBAAL;AACE,6CAAYG,KAAZ;AAAmBH,QAAAA,kBAAkB,EAAE,KAAvC;AAA8CC,QAAAA,KAAK,EAAEG,MAAM,CAACE;AAA5D;;AAEF,SAAK,uBAAL;AAA8B;AAC5B;AACA,YAAIH,KAAK,CAACJ,eAAV,EAA2B;AACzBF,UAAAA,KAAK,CAACU,KAAN;AACD;;AAED,+CACKJ,KADL;AAEEH,UAAAA,kBAAkB,EAAE,KAFtB;AAGED,UAAAA,eAAe,EAAE,KAHnB;AAIEE,UAAAA,KAAK,EAAE;AAJT;AAMD;;AAED,SAAK,iBAAL;AACE,6CACKE,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEC,QAAAA,kBAAkB,EAAE,IAHtB;AAIEC,QAAAA,KAAK,EAAE;AAJT;;AAOF;AACE,aAAOE,KAAP;AAnCJ;AAqCD,CA7CD;;AA+CA,eAAeD,WAAf","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { Reducer } from \"redux\";\nimport type { AuthState, ReduxAction } from \"../types\";\n\n// REDUCER\nconst initialState: AuthState = {\n isAuthenticated: false,\n mustChangePassword: false,\n error: null,\n};\n\n/**\n * Auth reducer\n */\nconst AuthReducer: Reducer<AuthState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"AUTHENTICATION_SUCCESS\":\n return {\n ...state,\n isAuthenticated: true,\n error: null,\n mustChangePassword: false,\n };\n\n case \"AUTHENTICATION_ERROR\":\n return { ...state, mustChangePassword: false, error: action.payload };\n\n case \"AUTHENTICATION_LOGOUT\": {\n // clear cache because of cached contributions\n if (state.isAuthenticated) {\n Cache.clear();\n }\n\n return {\n ...state,\n mustChangePassword: false,\n isAuthenticated: false,\n error: null,\n };\n }\n\n case \"CHANGE_PASSWORD\":\n return {\n ...state,\n isAuthenticated: true,\n mustChangePassword: true,\n error: null,\n };\n\n default:\n return state;\n }\n};\n\nexport default AuthReducer;\n"],"file":"AuthReducer.js"}
1
+ {"version":3,"sources":["../../../src/redux/reducers/AuthReducer.js"],"names":["Cache","initialState","isAuthenticated","mustChangePassword","error","AuthReducer","state","action","type","payload","clear"],"mappings":";;;;;;;;;;;AACA,OAAOA,KAAP,MAAkB,2BAAlB;AAKA;AACA,IAAMC,YAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAE,KADa;AAE9BC,EAAAA,kBAAkB,EAAE,KAFU;AAG9BC,EAAAA,KAAK,EAAE;AAHuB,CAAhC;AAMA;AACA;AACA;;AACA,IAAMC,WAA4C,GAAG,SAA/CA,WAA+C,GAGhD;AAAA,MAFHC,KAEG,uEAFKL,YAEL;AAAA,MADHM,MACG;;AACH,MAAI,CAACA,MAAL,EAAa;AACX,WAAOD,KAAP;AACD;;AAED,UAAQC,MAAM,CAACC,IAAf;AACE,SAAK,wBAAL;AACE,6CACKF,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEE,QAAAA,KAAK,EAAE,IAHT;AAIED,QAAAA,kBAAkB,EAAE;AAJtB;;AAOF,SAAK,sBAAL;AACE,6CAAYG,KAAZ;AAAmBH,QAAAA,kBAAkB,EAAE,KAAvC;AAA8CC,QAAAA,KAAK,EAAEG,MAAM,CAACE;AAA5D;;AAEF,SAAK,6BAAL;AACE,6CAAYH,KAAZ;AAAmBF,QAAAA,KAAK,EAAE;AAA1B;;AAEF,SAAK,uBAAL;AAA8B;AAC5B;AACA,YAAIE,KAAK,CAACJ,eAAV,EAA2B;AACzBF,UAAAA,KAAK,CAACU,KAAN;AACD;;AAED,+CACKJ,KADL;AAEEH,UAAAA,kBAAkB,EAAE,KAFtB;AAGED,UAAAA,eAAe,EAAE,KAHnB;AAIEE,UAAAA,KAAK,EAAE;AAJT;AAMD;;AAED,SAAK,iBAAL;AACE,6CACKE,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEC,QAAAA,kBAAkB,EAAE,IAHtB;AAIEC,QAAAA,KAAK,EAAE;AAJT;;AAOF;AACE,aAAOE,KAAP;AAtCJ;AAwCD,CAhDD;;AAkDA,eAAeD,WAAf","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { Reducer } from \"redux\";\nimport type { AuthState, ReduxAction } from \"../types\";\n\n// REDUCER\nconst initialState: AuthState = {\n isAuthenticated: false,\n mustChangePassword: false,\n error: null,\n};\n\n/**\n * Auth reducer\n */\nconst AuthReducer: Reducer<AuthState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"AUTHENTICATION_SUCCESS\":\n return {\n ...state,\n isAuthenticated: true,\n error: null,\n mustChangePassword: false,\n };\n\n case \"AUTHENTICATION_ERROR\":\n return { ...state, mustChangePassword: false, error: action.payload };\n\n case \"AUTHENTICATION_RESET_ERRORS\":\n return { ...state, error: null };\n\n case \"AUTHENTICATION_LOGOUT\": {\n // clear cache because of cached contributions\n if (state.isAuthenticated) {\n Cache.clear();\n }\n\n return {\n ...state,\n mustChangePassword: false,\n isAuthenticated: false,\n error: null,\n };\n }\n\n case \"CHANGE_PASSWORD\":\n return {\n ...state,\n isAuthenticated: true,\n mustChangePassword: true,\n error: null,\n };\n\n default:\n return state;\n }\n};\n\nexport default AuthReducer;\n"],"file":"AuthReducer.js"}
@@ -0,0 +1,39 @@
1
+ import _endsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/ends-with";
2
+ import Href from "../../models/href/Href";
3
+ /**
4
+ * Checks if a given url to a modular ui resource exists using a HEAD request to the resource (synchronous)
5
+ * When the resource returns a 404, the resource does not exists and the method returns false
6
+ *
7
+ * @param url
8
+ * @returns {boolean}
9
+ */
10
+
11
+ export var resourceExists = function resourceExists(url) {
12
+ var fullUrl = new Href(url).absolutehref; // const fullUrl = `${BASE}/${url}`.replace(/\/\//g, "/");
13
+
14
+ var xhr = new XMLHttpRequest();
15
+ xhr.open("HEAD", fullUrl, false);
16
+ xhr.setRequestHeader("Accept", "application/json");
17
+ xhr.setRequestHeader("Content-Type", "application/json");
18
+ xhr.send();
19
+ return xhr.status !== 404;
20
+ };
21
+ /**
22
+ * Indicates if a request to the given url resuls in a redirect to /secureRedirect
23
+ * @param url
24
+ * @returns {boolean}
25
+ */
26
+
27
+ export var resourceRedirectsToSecureLogin = function resourceRedirectsToSecureLogin(url) {
28
+ var _xhr$responseURL;
29
+
30
+ var fullUrl = new Href(url).absolutehref;
31
+ var xhr = new XMLHttpRequest();
32
+ xhr.open("HEAD", fullUrl, false);
33
+ xhr.setRequestHeader("Accept", "application/json");
34
+ xhr.setRequestHeader("Content-Type", "application/json");
35
+ xhr.send();
36
+ var responseURL = (_xhr$responseURL = xhr.responseURL) !== null && _xhr$responseURL !== void 0 ? _xhr$responseURL : "";
37
+ return xhr.status === 400 && _endsWithInstanceProperty(responseURL).call(responseURL, "/secureLogin");
38
+ };
39
+ //# sourceMappingURL=checkResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/helpers/checkResource.js"],"names":["Href","resourceExists","url","fullUrl","absolutehref","xhr","XMLHttpRequest","open","setRequestHeader","send","status","resourceRedirectsToSecureLogin","responseURL"],"mappings":";AACA,OAAOA,IAAP,MAAiB,wBAAjB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,GAAD,EAAiC;AAC7D,MAAMC,OAAO,GAAG,IAAIH,IAAJ,CAASE,GAAT,EAAcE,YAA9B,CAD6D,CAG7D;;AAEA,MAAMC,GAAG,GAAG,IAAIC,cAAJ,EAAZ;AACAD,EAAAA,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAiBJ,OAAjB,EAA0B,KAA1B;AACAE,EAAAA,GAAG,CAACG,gBAAJ,CAAqB,QAArB,EAA+B,kBAA/B;AACAH,EAAAA,GAAG,CAACG,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;AACAH,EAAAA,GAAG,CAACI,IAAJ;AAEA,SAAOJ,GAAG,CAACK,MAAJ,KAAe,GAAtB;AACD,CAZM;AAcP;AACA;AACA;AACA;AACA;;AACA,OAAO,IAAMC,8BAA8B,GAAG,SAAjCA,8BAAiC,CAACT,GAAD,EAAiC;AAAA;;AAC7E,MAAMC,OAAO,GAAG,IAAIH,IAAJ,CAASE,GAAT,EAAcE,YAA9B;AAEA,MAAMC,GAAG,GAAG,IAAIC,cAAJ,EAAZ;AACAD,EAAAA,GAAG,CAACE,IAAJ,CAAS,MAAT,EAAiBJ,OAAjB,EAA0B,KAA1B;AACAE,EAAAA,GAAG,CAACG,gBAAJ,CAAqB,QAArB,EAA+B,kBAA/B;AACAH,EAAAA,GAAG,CAACG,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;AACAH,EAAAA,GAAG,CAACI,IAAJ;AAEA,MAAMG,WAAW,uBAAGP,GAAG,CAACO,WAAP,+DAAsB,EAAvC;AAEA,SAAOP,GAAG,CAACK,MAAJ,KAAe,GAAf,IAAsB,0BAAAE,WAAW,MAAX,CAAAA,WAAW,EAAU,cAAV,CAAxC;AACD,CAZM","sourcesContent":["// @flow\nimport Href from \"../../models/href/Href\";\n\n/**\n * Checks if a given url to a modular ui resource exists using a HEAD request to the resource (synchronous)\n * When the resource returns a 404, the resource does not exists and the method returns false\n *\n * @param url\n * @returns {boolean}\n */\nexport const resourceExists = (url: string | Href): boolean => {\n const fullUrl = new Href(url).absolutehref;\n\n // const fullUrl = `${BASE}/${url}`.replace(/\\/\\//g, \"/\");\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", fullUrl, false);\n xhr.setRequestHeader(\"Accept\", \"application/json\");\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.send();\n\n return xhr.status !== 404;\n};\n\n/**\n * Indicates if a request to the given url resuls in a redirect to /secureRedirect\n * @param url\n * @returns {boolean}\n */\nexport const resourceRedirectsToSecureLogin = (url: string | Href): boolean => {\n const fullUrl = new Href(url).absolutehref;\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", fullUrl, false);\n xhr.setRequestHeader(\"Accept\", \"application/json\");\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.send();\n\n const responseURL = xhr.responseURL ?? \"\";\n\n return xhr.status === 400 && responseURL.endsWith(\"/secureLogin\");\n};\n"],"file":"checkResource.js"}
@@ -13,7 +13,7 @@ export { default as createUUID } from "./helpers/createUUID";
13
13
  export * from "./helpers/sanitizeHtml";
14
14
  export * from "./helpers/objects";
15
15
  export * from "./helpers/text";
16
- export * from "./helpers/checkResourceExists"; // number
16
+ export * from "./helpers/checkResource"; // number
17
17
 
18
18
  export { default as DecimalFormat } from "./number/DecimalFormat";
19
19
  export { default as formatValue } from "./number/formatValue";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/index.js"],"names":["default","Cache","serverFetch","universalFetch","xhr","createUUID","DecimalFormat","formatValue"],"mappings":"AAEA;AACA,SAASA,OAAO,IAAIC,KAApB,QAAiC,iBAAjC;AACA,cAAc,mBAAd,C,CAEA;;AACA,cAAc,yBAAd,C,CAEA;;AACA,SAASD,OAAO,IAAIE,WAApB,QAAuC,qBAAvC;AACA,SAASF,OAAO,IAAIG,cAApB,QAA0C,wBAA1C;AACA,SAASH,OAAO,IAAII,GAApB,QAA+B,aAA/B;AAGA;AACA,cAAc,sBAAd;AACA,SAASJ,OAAO,IAAIK,UAApB,QAAsC,sBAAtC;AACA,cAAc,wBAAd;AACA,cAAc,mBAAd;AACA,cAAc,gBAAd;AACA,cAAc,+BAAd,C,CAEA;;AACA,SAASL,OAAO,IAAIM,aAApB,QAAyC,wBAAzC;AACA,SAASN,OAAO,IAAIO,WAApB,QAAuC,sBAAvC;AACA,cAAc,uBAAd","sourcesContent":["// @flow\n\n// browser\nexport { default as Cache } from \"./browser/Cache\";\nexport * from \"./browser/Cookies\";\n\n// datetime\nexport * from \"./datetime/DateTimeUtil\";\n\n// fetch\nexport { default as serverFetch } from \"./fetch/serverFetch\";\nexport { default as universalFetch } from \"./fetch/universalFetch\";\nexport { default as xhr } from \"./fetch/xhr\";\nexport type * from \"./fetch/types\";\n\n// helpers\nexport * from \"./helpers/createHash\";\nexport { default as createUUID } from \"./helpers/createUUID\";\nexport * from \"./helpers/sanitizeHtml\";\nexport * from \"./helpers/objects\";\nexport * from \"./helpers/text\";\nexport * from \"./helpers/checkResourceExists\";\n\n// number\nexport { default as DecimalFormat } from \"./number/DecimalFormat\";\nexport { default as formatValue } from \"./number/formatValue\";\nexport * from \"./number/parseNumbers\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/utils/index.js"],"names":["default","Cache","serverFetch","universalFetch","xhr","createUUID","DecimalFormat","formatValue"],"mappings":"AAEA;AACA,SAASA,OAAO,IAAIC,KAApB,QAAiC,iBAAjC;AACA,cAAc,mBAAd,C,CAEA;;AACA,cAAc,yBAAd,C,CAEA;;AACA,SAASD,OAAO,IAAIE,WAApB,QAAuC,qBAAvC;AACA,SAASF,OAAO,IAAIG,cAApB,QAA0C,wBAA1C;AACA,SAASH,OAAO,IAAII,GAApB,QAA+B,aAA/B;AAGA;AACA,cAAc,sBAAd;AACA,SAASJ,OAAO,IAAIK,UAApB,QAAsC,sBAAtC;AACA,cAAc,wBAAd;AACA,cAAc,mBAAd;AACA,cAAc,gBAAd;AACA,cAAc,yBAAd,C,CAEA;;AACA,SAASL,OAAO,IAAIM,aAApB,QAAyC,wBAAzC;AACA,SAASN,OAAO,IAAIO,WAApB,QAAuC,sBAAvC;AACA,cAAc,uBAAd","sourcesContent":["// @flow\n\n// browser\nexport { default as Cache } from \"./browser/Cache\";\nexport * from \"./browser/Cookies\";\n\n// datetime\nexport * from \"./datetime/DateTimeUtil\";\n\n// fetch\nexport { default as serverFetch } from \"./fetch/serverFetch\";\nexport { default as universalFetch } from \"./fetch/universalFetch\";\nexport { default as xhr } from \"./fetch/xhr\";\nexport type * from \"./fetch/types\";\n\n// helpers\nexport * from \"./helpers/createHash\";\nexport { default as createUUID } from \"./helpers/createUUID\";\nexport * from \"./helpers/sanitizeHtml\";\nexport * from \"./helpers/objects\";\nexport * from \"./helpers/text\";\nexport * from \"./helpers/checkResource\";\n\n// number\nexport { default as DecimalFormat } from \"./number/DecimalFormat\";\nexport { default as formatValue } from \"./number/formatValue\";\nexport * from \"./number/parseNumbers\";\n"],"file":"index.js"}
@@ -45,6 +45,9 @@ var useLogin = function useLogin() {
45
45
  return {
46
46
  isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
47
47
  errorMessage: auth.error,
48
+ resetErrors: function resetErrors() {
49
+ return dispatch((0, _actions.resetAuthErrors)());
50
+ },
48
51
  login: function login(username, password) {
49
52
  return dispatch((0, _actions.login)(username, password));
50
53
  }
@@ -1,13 +1,15 @@
1
1
  // @flow
2
2
  import { useSelector, useDispatch } from "react-redux";
3
3
  import { getApplication } from "../redux/_modularui/selectors";
4
- import { login, logout } from "../redux/actions";
4
+ import { login, logout, resetAuthErrors } from "../redux/actions";
5
5
  import UserServicesModel from "../models/user/UserServicesModel";
6
6
  import { useState, useEffect } from "react";
7
7
 
8
+ import type { ResetAuthErrorsAction } from "../redux/types";
8
9
  type LoginHook = {
9
10
  isAuthenticated: boolean,
10
11
  errorMessage: ?string,
12
+ resetErrors: () => ResetAuthErrorsAction,
11
13
  login: (username: string, password: string) => void,
12
14
  };
13
15
  type LogoutHook = {
@@ -39,6 +41,7 @@ export const useLogin = (): LoginHook => {
39
41
  return {
40
42
  isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
41
43
  errorMessage: auth.error,
44
+ resetErrors: () => dispatch(resetAuthErrors()),
42
45
  login: (username: string, password: string) =>
43
46
  dispatch(login(username, password)),
44
47
  };
@@ -66,12 +69,11 @@ export const useLogout = (): LogoutHook => {
66
69
 
67
70
  return {
68
71
  isAuthenticated,
69
- logout: () => {
70
- return dispatch(logout()).then(() => {
72
+ logout: () =>
73
+ dispatch(logout()).then(() => {
71
74
  if (!cancel) {
72
75
  setIsAuthenticated(false);
73
76
  }
74
- });
75
- },
77
+ }),
76
78
  };
77
79
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","UserServicesModel","isLoggedIn","useLogin","dispatch","getApplication","auth","state","errorMessage","error","login","username","password","useLogout","cancel","setCancel","setIsAuthenticated","logout","then"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAYA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYE,0BAAjC,EAAoD;AAClD,WAAOJ,eAAe,IAAIE,iBAAiB,CAACG,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAG,8BAAjB;AAEA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAZ,CAAb;AAEA,SAAO;AACLT,IAAAA,eAAe,EAAED,kBAAkB,CAACU,IAAI,CAACT,eAAN,EAAuBC,WAAvB,CAD9B;AAELU,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLC,IAAAA,KAAK,EAAE,eAACC,QAAD,EAAmBC,QAAnB;AAAA,aACLR,QAAQ,CAAC,oBAAMO,QAAN,EAAgBC,QAAhB,CAAD,CADH;AAAA;AAHF,GAAP;AAMD,CAZM;AAcP;AACA;;;;;AACO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMT,QAAQ,GAAG,8BAAjB;AACA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYT,eAAZ,KAA+B,KAA1C;AAAA,GAAZ,CAAb;;AAEA,kBAA4B,qBAAS,KAAT,CAA5B;AAAA;AAAA,MAAOiB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8C,qBAAS;AAAA,WACrDnB,kBAAkB,CAACU,IAAD,EAAOR,WAAP,CADmC;AAAA,GAAT,CAA9C;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBmB,kBAAxB,iBANyC,CAUzC;AACA;;;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACXD,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJD,EAIG,EAJH;AAMA,SAAO;AACLlB,IAAAA,eAAe,EAAfA,eADK;AAELoB,IAAAA,MAAM,EAAE,kBAAM;AACZ,aAAOb,QAAQ,CAAC,sBAAD,CAAR,CAAmBc,IAAnB,CAAwB,YAAM;AACnC,YAAI,CAACJ,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJM,CAAP;AAKD;AARI,GAAP;AAUD,CA5BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () => {\n return dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n });\n },\n };\n};\n"],"file":"useAuthentication.js"}
1
+ {"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","UserServicesModel","isLoggedIn","useLogin","dispatch","getApplication","auth","state","errorMessage","error","resetErrors","login","username","password","useLogout","cancel","setCancel","setIsAuthenticated","logout","then"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAcA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYE,0BAAjC,EAAoD;AAClD,WAAOJ,eAAe,IAAIE,iBAAiB,CAACG,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAG,8BAAjB;AAEA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAZ,CAAb;AAEA,SAAO;AACLT,IAAAA,eAAe,EAAED,kBAAkB,CAACU,IAAI,CAACT,eAAN,EAAuBC,WAAvB,CAD9B;AAELU,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLC,IAAAA,WAAW,EAAE;AAAA,aAAMN,QAAQ,CAAC,+BAAD,CAAd;AAAA,KAHR;AAILO,IAAAA,KAAK,EAAE,eAACC,QAAD,EAAmBC,QAAnB;AAAA,aACLT,QAAQ,CAAC,oBAAMQ,QAAN,EAAgBC,QAAhB,CAAD,CADH;AAAA;AAJF,GAAP;AAOD,CAbM;AAeP;AACA;;;;;AACO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMV,QAAQ,GAAG,8BAAjB;AACA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYT,eAAZ,KAA+B,KAA1C;AAAA,GAAZ,CAAb;;AAEA,kBAA4B,qBAAS,KAAT,CAA5B;AAAA;AAAA,MAAOkB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8C,qBAAS;AAAA,WACrDpB,kBAAkB,CAACU,IAAD,EAAOR,WAAP,CADmC;AAAA,GAAT,CAA9C;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBoB,kBAAxB,iBANyC,CAUzC;AACA;;;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACXD,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJD,EAIG,EAJH;AAMA,SAAO;AACLnB,IAAAA,eAAe,EAAfA,eADK;AAELqB,IAAAA,MAAM,EAAE;AAAA,aACNd,QAAQ,CAAC,sBAAD,CAAR,CAAmBe,IAAnB,CAAwB,YAAM;AAC5B,YAAI,CAACJ,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJD,CADM;AAAA;AAFH,GAAP;AASD,CA3BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () =>\n dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n }),\n };\n};\n"],"file":"useAuthentication.js"}
@@ -144,13 +144,24 @@ var ApplicationModel = /*#__PURE__*/function (_ResourceModel) {
144
144
  return this._userServices ? this._userServices : null;
145
145
  }
146
146
  /**
147
- * Retrieve link to the user information,
148
- * only available when the user services are available
147
+ * Indicates if the user is logged in
149
148
  */
150
149
  ,
151
150
  set: function set(model) {
152
151
  this._userServices = model instanceof _UserServicesModel.default ? model : null;
153
152
  }
153
+ }, {
154
+ key: "isLoggedIn",
155
+ get: function get() {
156
+ var _this$userServices$is, _this$userServices;
157
+
158
+ return (_this$userServices$is = (_this$userServices = this.userServices) === null || _this$userServices === void 0 ? void 0 : _this$userServices.isLoggedIn) !== null && _this$userServices$is !== void 0 ? _this$userServices$is : false;
159
+ }
160
+ /**
161
+ * Retrieve link to the user information,
162
+ * only available when the user services are available
163
+ */
164
+
154
165
  }, {
155
166
  key: "userHref",
156
167
  get: function get() {