@beinformed/ui 1.26.0 → 1.27.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/esm/constants/Constants.js +9 -35
- package/esm/constants/Constants.js.map +1 -1
- package/esm/constants/Settings.js +47 -1
- package/esm/constants/Settings.js.map +1 -1
- package/esm/hooks/useAuthentication.js +7 -6
- package/esm/hooks/useAuthentication.js.map +1 -1
- package/esm/models/application/ApplicationModel.js +2 -3
- package/esm/models/application/ApplicationModel.js.map +1 -1
- package/esm/models/attributes/UploadAttributeModel.js +15 -3
- package/esm/models/attributes/UploadAttributeModel.js.map +1 -1
- package/esm/models/error/ErrorModel.js +11 -0
- package/esm/models/error/ErrorModel.js.map +1 -1
- package/esm/models/href/Href.js +4 -4
- package/esm/models/href/Href.js.map +1 -1
- package/esm/modularui/Authenticate.js +6 -6
- package/esm/modularui/Authenticate.js.map +1 -1
- package/esm/modularui/CaptchaRequest.js +46 -0
- package/esm/modularui/CaptchaRequest.js.map +1 -0
- package/esm/modularui/ModularUIRequest.js +17 -6
- package/esm/modularui/ModularUIRequest.js.map +1 -1
- package/esm/modularui/UploadRequest.js +104 -0
- package/esm/modularui/UploadRequest.js.map +1 -0
- package/esm/modularui/index.js +2 -0
- package/esm/modularui/index.js.map +1 -1
- package/esm/react-client/client.js +2 -2
- package/esm/react-client/client.js.map +1 -1
- package/esm/react-server/contextPath.js +2 -2
- package/esm/react-server/contextPath.js.map +1 -1
- package/esm/react-server/renderSSRComplete.js +5 -4
- package/esm/react-server/renderSSRComplete.js.map +1 -1
- package/esm/react-server/renderSSRMinimal.js +2 -2
- package/esm/react-server/renderSSRMinimal.js.map +1 -1
- package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
- package/esm/redux/_modularui/types.js.map +1 -1
- package/esm/utils/browser/Cookies.js +6 -7
- package/esm/utils/browser/Cookies.js.map +1 -1
- package/esm/utils/fetch/serverFetch.js +2 -2
- package/esm/utils/fetch/serverFetch.js.map +1 -1
- package/esm/utils/fetch/types.js.map +1 -1
- package/esm/utils/fetch/universalFetch.js +4 -3
- package/esm/utils/fetch/universalFetch.js.map +1 -1
- package/esm/utils/fetch/xhr.js.map +1 -1
- package/esm/utils/helpers/checkResource.js +0 -3
- package/esm/utils/helpers/checkResource.js.map +1 -1
- package/esm/utils/helpers/index.js +8 -0
- package/esm/utils/helpers/index.js.map +1 -0
- package/esm/utils/helpers/repositoryResource.js +18 -0
- package/esm/utils/helpers/repositoryResource.js.map +1 -0
- package/esm/utils/index.js +1 -6
- package/esm/utils/index.js.map +1 -1
- package/lib/constants/Constants.js +13 -42
- package/lib/constants/Constants.js.flow +9 -41
- package/lib/constants/Constants.js.map +1 -1
- package/lib/constants/Settings.js +53 -1
- package/lib/constants/Settings.js.flow +60 -0
- package/lib/constants/Settings.js.map +1 -1
- package/lib/hooks/useAuthentication.js +6 -5
- package/lib/hooks/useAuthentication.js.flow +9 -8
- package/lib/hooks/useAuthentication.js.map +1 -1
- package/lib/models/application/ApplicationModel.js +1 -1
- package/lib/models/application/ApplicationModel.js.flow +3 -2
- package/lib/models/application/ApplicationModel.js.map +1 -1
- package/lib/models/attributes/UploadAttributeModel.js +15 -3
- package/lib/models/attributes/UploadAttributeModel.js.flow +21 -0
- package/lib/models/attributes/UploadAttributeModel.js.map +1 -1
- package/lib/models/error/ErrorModel.js +11 -0
- package/lib/models/error/ErrorModel.js.flow +12 -1
- package/lib/models/error/ErrorModel.js.map +1 -1
- package/lib/models/href/Href.js +6 -6
- package/lib/models/href/Href.js.flow +4 -4
- package/lib/models/href/Href.js.map +1 -1
- package/lib/models/href/__tests__/Href.spec.js.flow +2 -3
- package/lib/modularui/Authenticate.js +4 -4
- package/lib/modularui/Authenticate.js.flow +6 -5
- package/lib/modularui/Authenticate.js.map +1 -1
- package/lib/modularui/CaptchaRequest.js +54 -0
- package/lib/modularui/CaptchaRequest.js.flow +45 -0
- package/lib/modularui/CaptchaRequest.js.map +1 -0
- package/lib/modularui/ModularUIRequest.js +15 -4
- package/lib/modularui/ModularUIRequest.js.flow +10 -10
- package/lib/modularui/ModularUIRequest.js.map +1 -1
- package/lib/modularui/UploadRequest.js +112 -0
- package/lib/modularui/UploadRequest.js.flow +125 -0
- package/lib/modularui/UploadRequest.js.map +1 -0
- package/lib/modularui/index.js +14 -0
- package/lib/modularui/index.js.flow +2 -0
- package/lib/modularui/index.js.map +1 -1
- package/lib/react-client/client.js +2 -2
- package/lib/react-client/client.js.flow +2 -2
- package/lib/react-client/client.js.map +1 -1
- package/lib/react-server/contextPath.js +2 -2
- package/lib/react-server/contextPath.js.flow +2 -2
- package/lib/react-server/contextPath.js.map +1 -1
- package/lib/react-server/renderSSRComplete.js +5 -4
- package/lib/react-server/renderSSRComplete.js.flow +6 -4
- package/lib/react-server/renderSSRComplete.js.map +1 -1
- package/lib/react-server/renderSSRMinimal.js +2 -2
- package/lib/react-server/renderSSRMinimal.js.flow +2 -2
- package/lib/react-server/renderSSRMinimal.js.map +1 -1
- package/lib/redux/_modularui/ModularUIMiddleware.js.flow +1 -1
- package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
- package/lib/redux/_modularui/types.js.flow +1 -1
- package/lib/redux/_modularui/types.js.map +1 -1
- package/lib/utils/browser/Cookies.js +3 -3
- package/lib/utils/browser/Cookies.js.flow +10 -8
- package/lib/utils/browser/Cookies.js.map +1 -1
- package/lib/utils/fetch/serverFetch.js +2 -2
- package/lib/utils/fetch/serverFetch.js.flow +2 -2
- package/lib/utils/fetch/serverFetch.js.map +1 -1
- package/lib/utils/fetch/types.js.flow +1 -1
- package/lib/utils/fetch/types.js.map +1 -1
- package/lib/utils/fetch/universalFetch.js +3 -2
- package/lib/utils/fetch/universalFetch.js.flow +5 -3
- package/lib/utils/fetch/universalFetch.js.map +1 -1
- package/lib/utils/fetch/xhr.js.flow +1 -1
- package/lib/utils/fetch/xhr.js.map +1 -1
- package/lib/utils/helpers/checkResource.js +0 -3
- package/lib/utils/helpers/checkResource.js.flow +0 -2
- package/lib/utils/helpers/checkResource.js.map +1 -1
- package/lib/utils/helpers/index.js +90 -0
- package/lib/utils/helpers/index.js.flow +8 -0
- package/lib/utils/helpers/index.js.map +1 -0
- package/lib/utils/helpers/repositoryResource.js +25 -0
- package/lib/utils/helpers/repositoryResource.js.flow +20 -0
- package/lib/utils/helpers/repositoryResource.js.map +1 -0
- package/lib/utils/index.js +4 -60
- package/lib/utils/index.js.flow +1 -6
- package/lib/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/constants/Constants.js +9 -41
- package/src/constants/Settings.js +60 -0
- package/src/hooks/useAuthentication.js +9 -8
- package/src/models/application/ApplicationModel.js +3 -2
- package/src/models/attributes/UploadAttributeModel.js +21 -0
- package/src/models/error/ErrorModel.js +12 -1
- package/src/models/href/Href.js +4 -4
- package/src/models/href/__tests__/Href.spec.js +2 -3
- package/src/modularui/Authenticate.js +6 -5
- package/src/modularui/CaptchaRequest.js +45 -0
- package/src/modularui/ModularUIRequest.js +10 -10
- package/src/modularui/UploadRequest.js +125 -0
- package/src/modularui/index.js +2 -0
- package/src/react-client/client.js +2 -2
- package/src/react-server/contextPath.js +2 -2
- package/src/react-server/renderSSRComplete.js +6 -4
- package/src/react-server/renderSSRMinimal.js +2 -2
- package/src/redux/_modularui/ModularUIMiddleware.js +1 -1
- package/src/redux/_modularui/types.js +1 -1
- package/src/utils/browser/Cookies.js +10 -8
- package/src/utils/fetch/serverFetch.js +2 -2
- package/src/utils/fetch/types.js +1 -1
- package/src/utils/fetch/universalFetch.js +5 -3
- package/src/utils/fetch/xhr.js +1 -1
- package/src/utils/helpers/checkResource.js +0 -2
- package/src/utils/helpers/index.js +8 -0
- package/src/utils/helpers/repositoryResource.js +20 -0
- package/src/utils/index.js +1 -6
- package/types/constants/Constants.d.ts +8 -24
- package/types/constants/Settings.d.ts +12 -0
- package/types/models/attributes/UploadAttributeModel.d.ts +6 -0
- package/types/models/error/ErrorModel.d.ts +5 -0
- package/types/models/href/Href.d.ts +1 -1
- package/types/modularui/CaptchaRequest.d.ts +17 -0
- package/types/modularui/ModularUIRequest.d.ts +4 -6
- package/types/modularui/UploadRequest.d.ts +29 -0
- package/types/modularui/index.d.ts +2 -0
- package/types/redux/_modularui/types.d.ts +1 -3
- package/types/utils/browser/Cookies.d.ts +0 -6
- package/types/utils/fetch/types.d.ts +1 -3
- package/types/utils/helpers/index.d.ts +7 -0
- package/types/utils/helpers/repositoryResource.d.ts +1 -0
- package/types/utils/index.d.ts +1 -6
|
@@ -21,7 +21,7 @@ const useLogin = () => {
|
|
|
21
21
|
const isAuthenticated = application?.isLoggedIn ?? false;
|
|
22
22
|
return {
|
|
23
23
|
isAuthenticated,
|
|
24
|
-
authenticationTypes: application?.authenticationTypes ?? [_constants.
|
|
24
|
+
authenticationTypes: application?.authenticationTypes ?? [_constants.DEFAULT_AUTHENTICATION_TYPE],
|
|
25
25
|
errorMessage: auth.error,
|
|
26
26
|
resetErrors: () => dispatch((0, _actions.resetAuthErrors)()),
|
|
27
27
|
login: (username, password) => dispatch((0, _actions.login)(username, password)),
|
|
@@ -32,7 +32,7 @@ const useLogin = () => {
|
|
|
32
32
|
}
|
|
33
33
|
if (!isAuthenticated) {
|
|
34
34
|
_Cache.default.setItem("isRedirectLogin", true);
|
|
35
|
-
window.location.assign(`${_constants.
|
|
35
|
+
window.location.assign(`${(0, _constants.getBasePath)()}${authenticationType.redirectUri ?? ""}`);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
};
|
|
@@ -44,15 +44,16 @@ exports.useLogin = useLogin;
|
|
|
44
44
|
const useLogout = () => {
|
|
45
45
|
const dispatch = (0, _reactRedux.useDispatch)();
|
|
46
46
|
const application = (0, _reactRedux.useSelector)(_ModularUISelectors.getApplication);
|
|
47
|
-
const LOGOUT_PATH = (0, _constants.
|
|
47
|
+
const LOGOUT_PATH = (0, _constants.logoutPath)();
|
|
48
|
+
const BASE_PATH = (0, _constants.getBasePath)();
|
|
48
49
|
const isAuthenticated = application?.isLoggedIn ?? false;
|
|
49
50
|
return {
|
|
50
51
|
isAuthenticated,
|
|
51
|
-
authenticationTypes: application?.authenticationTypes ?? [_constants.
|
|
52
|
+
authenticationTypes: application?.authenticationTypes ?? [_constants.DEFAULT_AUTHENTICATION_TYPE],
|
|
52
53
|
logout: () => {
|
|
53
54
|
if (_Cache.default.getItem("isRedirectLogin")) {
|
|
54
55
|
const origin = window.location.origin;
|
|
55
|
-
const url = `${origin}${
|
|
56
|
+
const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
|
|
56
57
|
_Cache.default.setItem("isRedirectLogin", false);
|
|
57
58
|
window.location.assign(url);
|
|
58
59
|
} else {
|
|
@@ -6,9 +6,9 @@ import { login, logout, resetAuthErrors } from "../redux/actions";
|
|
|
6
6
|
|
|
7
7
|
import Cache from "../utils/browser/Cache";
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
DEFAULT_AUTHENTICATION_TYPE,
|
|
10
|
+
getBasePath,
|
|
11
|
+
logoutPath,
|
|
12
12
|
} from "../constants";
|
|
13
13
|
|
|
14
14
|
import type { ResetAuthErrorsAction } from "../redux/types";
|
|
@@ -43,7 +43,7 @@ export const useLogin = (): LoginHook => {
|
|
|
43
43
|
return {
|
|
44
44
|
isAuthenticated,
|
|
45
45
|
authenticationTypes: application?.authenticationTypes ?? [
|
|
46
|
-
|
|
46
|
+
DEFAULT_AUTHENTICATION_TYPE,
|
|
47
47
|
],
|
|
48
48
|
errorMessage: auth.error,
|
|
49
49
|
resetErrors: () => dispatch(resetAuthErrors()),
|
|
@@ -62,7 +62,7 @@ export const useLogin = (): LoginHook => {
|
|
|
62
62
|
if (!isAuthenticated) {
|
|
63
63
|
Cache.setItem("isRedirectLogin", true);
|
|
64
64
|
window.location.assign(
|
|
65
|
-
`${
|
|
65
|
+
`${getBasePath()}${authenticationType.redirectUri ?? ""}`
|
|
66
66
|
);
|
|
67
67
|
}
|
|
68
68
|
},
|
|
@@ -75,18 +75,19 @@ export const useLogout = (): LogoutHook => {
|
|
|
75
75
|
const dispatch = useDispatch();
|
|
76
76
|
const application = useSelector(getApplication);
|
|
77
77
|
|
|
78
|
-
const LOGOUT_PATH =
|
|
78
|
+
const LOGOUT_PATH = logoutPath();
|
|
79
|
+
const BASE_PATH = getBasePath();
|
|
79
80
|
|
|
80
81
|
const isAuthenticated = application?.isLoggedIn ?? false;
|
|
81
82
|
return {
|
|
82
83
|
isAuthenticated,
|
|
83
84
|
authenticationTypes: application?.authenticationTypes ?? [
|
|
84
|
-
|
|
85
|
+
DEFAULT_AUTHENTICATION_TYPE,
|
|
85
86
|
],
|
|
86
87
|
logout: () => {
|
|
87
88
|
if (Cache.getItem("isRedirectLogin")) {
|
|
88
89
|
const origin = window.location.origin;
|
|
89
|
-
const url = `${origin}${
|
|
90
|
+
const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
|
|
90
91
|
Cache.setItem("isRedirectLogin", false);
|
|
91
92
|
window.location.assign(url);
|
|
92
93
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthentication.js","names":["useLogin","Cache","setItem","dispatch","useDispatch","application","useSelector","getApplication","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","
|
|
1
|
+
{"version":3,"file":"useAuthentication.js","names":["useLogin","Cache","setItem","dispatch","useDispatch","application","useSelector","getApplication","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","getItem","IllegalStateException","authentication","redirectUri","window","location","assign","getBasePath","useLogout","LOGOUT_PATH","logoutPath","BASE_PATH","logout","origin","url"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n DEFAULT_AUTHENTICATION_TYPE,\n getBasePath,\n logoutPath,\n} from \"../constants\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\nimport { IllegalStateException } from \"../exceptions\";\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePath()}${authenticationType.redirectUri ?? \"\"}`\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = logoutPath();\n const BASE_PATH = getBasePath();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n logout: () => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n };\n};\n"],"mappings":";;;;;;;AACA;AAEA;AACA;AAEA;AACA;AAQA;AAeA;AACA;AACO,MAAMA,QAAQ,GAAG,MAAiB;EACvCC,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;EAEvC,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,GAAE;EAE9B,MAAMC,WAAW,GAAG,IAAAC,uBAAW,EAACC,kCAAc,CAAC;EAC/C,MAAMC,IAAI,GAAG,IAAAF,uBAAW,EAAEG,KAAK,IAAKA,KAAK,CAACD,IAAI,CAAC;EAE/C,MAAME,eAAe,GAAGL,WAAW,EAAEM,UAAU,IAAI,KAAK;EAExD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEP,WAAW,EAAEO,mBAAmB,IAAI,CACvDC,sCAA2B,CAC5B;IACDC,YAAY,EAAEN,IAAI,CAACO,KAAK;IACxBC,WAAW,EAAE,MAAMb,QAAQ,CAAC,IAAAc,wBAAe,GAAE,CAAC;IAC9CC,KAAK,EAAE,CAACC,QAAgB,EAAEC,QAAgB,KACxCjB,QAAQ,CAAC,IAAAe,cAAK,EAACC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACrCC,aAAa,EAAGC,kBAAsC,IAAK;MACzD,IAAIrB,cAAK,CAACsB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC;QACA,MAAM,IAAIC,iCAAqB,CAC5B,0BACCF,kBAAkB,CAACG,cACpB,iBAAgBH,kBAAkB,CAACI,WAAW,IAAI,EAAG,GAAE,CACzD;MACH;MAEA,IAAI,CAAChB,eAAe,EAAE;QACpBT,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACtCyB,MAAM,CAACC,QAAQ,CAACC,MAAM,CACnB,GAAE,IAAAC,sBAAW,GAAG,GAAER,kBAAkB,CAACI,WAAW,IAAI,EAAG,EAAC,CAC1D;MACH;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AADA;AAEO,MAAMK,SAAS,GAAG,MAAkB;EACzC,MAAM5B,QAAQ,GAAG,IAAAC,uBAAW,GAAE;EAC9B,MAAMC,WAAW,GAAG,IAAAC,uBAAW,EAACC,kCAAc,CAAC;EAE/C,MAAMyB,WAAW,GAAG,IAAAC,qBAAU,GAAE;EAChC,MAAMC,SAAS,GAAG,IAAAJ,sBAAW,GAAE;EAE/B,MAAMpB,eAAe,GAAGL,WAAW,EAAEM,UAAU,IAAI,KAAK;EACxD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEP,WAAW,EAAEO,mBAAmB,IAAI,CACvDC,sCAA2B,CAC5B;IACDsB,MAAM,EAAE,MAAM;MACZ,IAAIlC,cAAK,CAACsB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC,MAAMa,MAAM,GAAGT,MAAM,CAACC,QAAQ,CAACQ,MAAM;QACrC,MAAMC,GAAG,GAAI,GAAED,MAAO,GAAEF,SAAU,eAAcE,MAAO,GAAEF,SAAU,GAAEF,WAAY,EAAC;QAClF/B,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACvCyB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACQ,GAAG,CAAC;MAC7B,CAAC,MAAM;QACL,OAAOlC,QAAQ,CAAC,IAAAgC,eAAM,GAAE,CAAC;MAC3B;IACF;EACF,CAAC;AACH,CAAC;AAAC"}
|
|
@@ -69,7 +69,7 @@ class ApplicationModel extends _ResourceModel.default {
|
|
|
69
69
|
* Getting the authentication types of the application
|
|
70
70
|
*/
|
|
71
71
|
get authenticationTypes() {
|
|
72
|
-
const authenticationTypes = this.getContribution("security", [_constants.
|
|
72
|
+
const authenticationTypes = this.getContribution("security", [_constants.DEFAULT_AUTHENTICATION_TYPE]);
|
|
73
73
|
|
|
74
74
|
//put primary first
|
|
75
75
|
return authenticationTypes?.sort((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
|
|
@@ -5,11 +5,12 @@ import UserServicesModel from "../user/UserServicesModel";
|
|
|
5
5
|
|
|
6
6
|
import { NotAllowedUriException } from "../../exceptions";
|
|
7
7
|
|
|
8
|
+
import { DEFAULT_AUTHENTICATION_TYPE } from "../../constants";
|
|
9
|
+
|
|
8
10
|
import type { ModularUIModel, AuthenticationType } from "../types";
|
|
9
11
|
import type { ModularUIResponse } from "../../modularui";
|
|
10
12
|
import type LinkCollection from "../links/LinkCollection";
|
|
11
13
|
import type Href from "../href/Href";
|
|
12
|
-
import { fallbackDefaultAuthenticationType } from "../../constants";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* The Application model
|
|
@@ -76,7 +77,7 @@ export default class ApplicationModel extends ResourceModel {
|
|
|
76
77
|
*/
|
|
77
78
|
get authenticationTypes(): Array<AuthenticationType> {
|
|
78
79
|
const authenticationTypes = this.getContribution("security", [
|
|
79
|
-
|
|
80
|
+
DEFAULT_AUTHENTICATION_TYPE,
|
|
80
81
|
]);
|
|
81
82
|
|
|
82
83
|
//put primary first
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationModel.js","names":["ApplicationModel","ResourceModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","
|
|
1
|
+
{"version":3,"file":"ApplicationModel.js","names":["ApplicationModel","ResourceModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","_userServices","UserServicesModel","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport type { ModularUIModel, AuthenticationType } 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 get modelName(): string {\n return \"ApplicationModel\";\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 authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) =>\n a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1\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"],"mappings":";;;;;;;;;AACA;AACA;AACA;AAEA;AAEA;AAOA;AACA;AACA;AACe,MAAMA,gBAAgB,SAASC,sBAAa,CAAC;EAAA;IAAA;IAAA;EAAA;EAG1D;AACF;AACA;EACE,IAAIC,IAAI,GAAW;IACjB,OAAO,aAAa;EACtB;;EAEA;AACF;EACE,WAAWC,SAAS,GAAW;IAC7B,OAAO,kBAAkB;EAC3B;;EAEA;AACF;EACE,OAAOC,iBAAiB,CAACC,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACC,aAAa,CAACC,YAAY,IAC/BF,IAAI,CAACC,aAAa,CAACC,YAAY,KAAK,aAAa;EAErD;;EAEA;AACF;EACEC,yBAAyB,GAAqB;IAC5C,MAAMC,WAAW,GAAG,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC,cAAc,CAAC;IAC3D,IAAIF,WAAW,IAAIA,WAAW,CAACG,IAAI,CAACC,IAAI,KAAK,QAAQ,EAAE;MACrD,MAAM,IAAIC,kCAAsB,CAC9B,kIAAkI,CACnI;IACH;IAEA,OAAOL,WAAW,GAAG,CAACA,WAAW,CAAC,GAAG,EAAE;EACzC;;EAEA;AACF;EACEM,cAAc,CAACC,MAA6B,EAAE;IAC5C,MAAMC,gBAAgB,GAAG,mBAAAD,MAAM,OAANA,MAAM,EAC5BE,KAAK,IAAKA,KAAK,CAAChB,IAAI,KAAK,cAAc,CACzC;IAED,IAAIe,gBAAgB,EAAE;MACpB,IAAI,CAACE,YAAY,GAAGF,gBAAgB;IACtC;EACF;;EAEA;AACF;AACA;EACE,IAAIG,KAAK,GAAW;IAClB,OAAO,IAAI,CAACC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIC,mBAAmB,GAA8B;IACnD,MAAMA,mBAAmB,GAAG,IAAI,CAACD,eAAe,CAAC,UAAU,EAAE,CAC3DE,sCAA2B,CAC5B,CAAC;;IAEF;IACA,OAAOD,mBAAmB,EAAEE,IAAI,CAC9B,CAACC,CAAqB,EAAEC,CAAqB,KAC3CD,CAAC,CAACE,SAAS,KAAKD,CAAC,CAACC,SAAS,GAAG,CAAC,GAAGF,CAAC,CAACE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CACzD;EACH;EACA;AACF;AACA;EACE,IAAIC,IAAI,GAAmB;IACzB,OAAO,IAAI,CAAClB,KAAK,CAACmB,eAAe,CAAC,KAAK,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIC,YAAY,GAAc;IAC5B,OAAOC,kBAAS,CAACC,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC;EAC3E;;EAEA;AACF;AACA;EACE,IAAIb,YAAY,CAACD,KAAsB,EAAE;IACvC,IAAI,CAACe,aAAa,GAAGf,KAAK,YAAYgB,0BAAiB,GAAGhB,KAAK,GAAG,IAAI;EACxE;;EAEA;AACF;AACA;EACE,IAAIC,YAAY,GAAuB;IACrC,OAAO,IAAI,CAACc,aAAa,GAAG,IAAI,CAACA,aAAa,GAAG,IAAI;EACvD;;EAEA;AACF;AACA;EACE,IAAIE,UAAU,GAAY;IACxB,OAAO,IAAI,CAAChB,YAAY,EAAEgB,UAAU,IAAI,KAAK;EAC/C;;EAEA;AACF;AACA;AACA;EACE,IAAIC,QAAQ,GAAgB;IAC1B,IAAI,IAAI,CAACjB,YAAY,IAAI,IAAI,IAAI,IAAI,CAACA,YAAY,CAACkB,QAAQ,IAAI,IAAI,EAAE;MACnE,OAAO,IAAI,CAAClB,YAAY,CAACkB,QAAQ,CAACzB,IAAI;IACxC;IAEA,OAAO,IAAI;EACb;AACF;AAAC"}
|
|
@@ -121,10 +121,22 @@ class UploadAttributeModel extends _StringAttributeModel.default {
|
|
|
121
121
|
fileSize: this.maxFileSize,
|
|
122
122
|
maxTotalFileSize: this.maxTotalFileSize,
|
|
123
123
|
isMaxTotal: this.maxTotalFileSize !== undefined
|
|
124
|
-
}
|
|
124
|
+
},
|
|
125
|
+
acceptedFiles: this.acceptedFiles
|
|
125
126
|
};
|
|
126
127
|
}
|
|
127
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Array of accepted file extensions and mime types.
|
|
131
|
+
* Convenience method for accept attribute of file input html control
|
|
132
|
+
*/
|
|
133
|
+
get acceptedFiles() {
|
|
134
|
+
var _context3, _context4, _context5;
|
|
135
|
+
const mimeTypes = this.contributions.allowedMimeTypes ? (0, _filter.default)(_context3 = this.contributions.allowedMimeTypes).call(_context3, mimeType => mimeType !== "[...]") : [];
|
|
136
|
+
const extensions = this.contributions.allowedExtensions ? (0, _map.default)(_context4 = (0, _filter.default)(_context5 = this.contributions.allowedExtensions).call(_context5, extension => extension !== "[...]")).call(_context4, extension => `.${extension}`) : [];
|
|
137
|
+
return [...extensions, ...mimeTypes];
|
|
138
|
+
}
|
|
139
|
+
|
|
128
140
|
/**
|
|
129
141
|
* Add upload constraints
|
|
130
142
|
*/
|
|
@@ -164,10 +176,10 @@ class UploadAttributeModel extends _StringAttributeModel.default {
|
|
|
164
176
|
// when the input value is a string but not json,
|
|
165
177
|
// we assume that it is just a list of uploaded tokens and copy it as input value
|
|
166
178
|
try {
|
|
167
|
-
var
|
|
179
|
+
var _context6;
|
|
168
180
|
const files = JSON.parse(value);
|
|
169
181
|
this.files = files;
|
|
170
|
-
this.inputvalue = (0, _map.default)(
|
|
182
|
+
this.inputvalue = (0, _map.default)(_context6 = (0, _keys.default)(files)).call(_context6, fileName => files[fileName].token).join(",");
|
|
171
183
|
} catch (error) {
|
|
172
184
|
if (typeof value === "string") {
|
|
173
185
|
this.inputvalue = value;
|
|
@@ -108,6 +108,7 @@ export default class UploadAttributeModel extends StringAttributeModel {
|
|
|
108
108
|
get uploadConstraints(): {
|
|
109
109
|
fileTypes: FiletypeConstraintsType,
|
|
110
110
|
maxFileSize: FilesizeConstraintsType,
|
|
111
|
+
acceptedFiles: Array<string>,
|
|
111
112
|
} {
|
|
112
113
|
const mimeTypes = this.contributions.allowedMimeTypes
|
|
113
114
|
? this.contributions.allowedMimeTypes.filter(
|
|
@@ -132,9 +133,29 @@ export default class UploadAttributeModel extends StringAttributeModel {
|
|
|
132
133
|
maxTotalFileSize: this.maxTotalFileSize,
|
|
133
134
|
isMaxTotal: this.maxTotalFileSize !== undefined,
|
|
134
135
|
},
|
|
136
|
+
acceptedFiles: this.acceptedFiles,
|
|
135
137
|
};
|
|
136
138
|
}
|
|
137
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Array of accepted file extensions and mime types.
|
|
142
|
+
* Convenience method for accept attribute of file input html control
|
|
143
|
+
*/
|
|
144
|
+
get acceptedFiles(): Array<string> {
|
|
145
|
+
const mimeTypes = this.contributions.allowedMimeTypes
|
|
146
|
+
? this.contributions.allowedMimeTypes.filter(
|
|
147
|
+
(mimeType) => mimeType !== "[...]"
|
|
148
|
+
)
|
|
149
|
+
: [];
|
|
150
|
+
const extensions = this.contributions.allowedExtensions
|
|
151
|
+
? this.contributions.allowedExtensions
|
|
152
|
+
.filter((extension) => extension !== "[...]")
|
|
153
|
+
.map((extension) => `.${extension}`)
|
|
154
|
+
: [];
|
|
155
|
+
|
|
156
|
+
return [...extensions, ...mimeTypes];
|
|
157
|
+
}
|
|
158
|
+
|
|
138
159
|
/**
|
|
139
160
|
* Add upload constraints
|
|
140
161
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadAttributeModel.js","names":["UNCHANGED","UploadAttributeModel","StringAttributeModel","isApplicableModel","contributions","type","multiple","getContribution","initialTotalFileSize","_initialTotalFileSize","maxTotalFileSize","_maxTotalFileSize","currentFilesize","uploadedFileSize","maxFileSize","uploadMaxFileSize","files","length","accumulatedFileSize","forEach","fileName","file","size","uploadConstraints","mimeTypes","allowedMimeTypes","mimeType","extensions","allowedExtensions","extension","fileTypes","fileSize","isMaxTotal","undefined","addConstraints","constraints","ConstraintCollection","add","FileExtensionConstraint","hasFilesizeConstraint","FileSizeConstraint","_files","update","value","JSON","parse","inputvalue","token","join","error","updateLastModification","readonlyvalue","initvalue","toString","getValue","hasValue","_value","mergeAttribute","oldAttribute","isValid"],"sources":["../../../src/models/attributes/UploadAttributeModel.js"],"sourcesContent":["// @flow\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport StringAttributeModel from \"./StringAttributeModel\";\nimport FileExtensionConstraint from \"./input-constraints/FileExtensionConstraint\";\nimport FileSizeConstraint from \"./input-constraints/FileSizeConstraint\";\n\nimport type {\n AttributeType,\n FilesType,\n FiletypeConstraintsType,\n FilesizeConstraintsType,\n} from \"../types\";\n\nconst UNCHANGED = \"UNCHANGED\";\n\n/**\n * Upload attribute\n */\nexport default class UploadAttributeModel extends StringAttributeModel {\n _files: FilesType;\n _initialTotalFileSize: number;\n _maxTotalFileSize: number;\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return contributions.type === \"binary\";\n }\n\n /**\n */\n get type(): string {\n return \"upload\";\n }\n\n /**\n * Retrieve single or multi upload\n */\n get multiple(): boolean {\n return this.getContribution(\"multiple\", false);\n }\n\n /**\n */\n get initialTotalFileSize(): number {\n return this._initialTotalFileSize || 0;\n }\n\n /**\n */\n set initialTotalFileSize(initialTotalFileSize: number) {\n this._initialTotalFileSize = initialTotalFileSize;\n }\n\n /**\n */\n get maxTotalFileSize(): number {\n return this._maxTotalFileSize;\n }\n\n /**\n */\n set maxTotalFileSize(maxTotalFileSize: number) {\n this._maxTotalFileSize = maxTotalFileSize;\n }\n\n /**\n */\n get currentFilesize(): number {\n return this.initialTotalFileSize + this.uploadedFileSize;\n }\n\n /**\n */\n get maxFileSize(): ?number {\n if (this.maxTotalFileSize) {\n const uploadMaxFileSize = this.maxTotalFileSize - this.currentFilesize;\n if (uploadMaxFileSize < 0) {\n return 0;\n }\n\n return uploadMaxFileSize;\n }\n\n return this.contributions.uploadMaxFileSize;\n }\n\n /**\n */\n get uploadedFileSize(): number {\n if (Object.keys(this.files).length === 0) {\n return 0;\n }\n\n let accumulatedFileSize = 0;\n Object.keys(this.files).forEach((fileName) => {\n const file = this.files[fileName];\n if (file.size) {\n accumulatedFileSize += file.size;\n }\n });\n return accumulatedFileSize;\n }\n\n /**\n * Upload constraints\n */\n get uploadConstraints(): {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n } {\n const mimeTypes = this.contributions.allowedMimeTypes\n ? this.contributions.allowedMimeTypes.filter(\n (mimeType) => mimeType !== \"[...]\"\n )\n : [];\n const extensions = this.contributions.allowedExtensions\n ? this.contributions.allowedExtensions.filter(\n (extension) => extension !== \"[...]\"\n )\n : [];\n\n const fileTypes: FiletypeConstraintsType = extensions.map((extension) => ({\n extensions: [extension],\n mimeTypes,\n }));\n\n return {\n fileTypes,\n maxFileSize: {\n fileSize: this.maxFileSize,\n maxTotalFileSize: this.maxTotalFileSize,\n isMaxTotal: this.maxTotalFileSize !== undefined,\n },\n };\n }\n\n /**\n * Add upload constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n if (this.uploadConstraints.fileTypes.length > 0) {\n constraints.add(\n new FileExtensionConstraint(this.uploadConstraints.fileTypes)\n );\n }\n\n const hasFilesizeConstraint =\n this.uploadConstraints.maxFileSize.isMaxTotal ||\n this.uploadConstraints.maxFileSize.fileSize !== undefined;\n\n if (hasFilesizeConstraint) {\n constraints.add(\n new FileSizeConstraint(this.uploadConstraints.maxFileSize)\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get files(): FilesType {\n return this._files || {};\n }\n\n /**\n */\n set files(files: FilesType) {\n this._files = files;\n }\n\n /**\n * Update the attribute\n */\n update(value: string): UploadAttributeModel {\n if (!value) {\n return this;\n }\n\n // parse to json and handle uploaded file\n // when the input value is a string but not json,\n // we assume that it is just a list of uploaded tokens and copy it as input value\n try {\n const files = JSON.parse(value);\n this.files = files;\n\n this.inputvalue = Object.keys(files)\n .map((fileName) => files[fileName].token)\n .join(\",\");\n } catch (error) {\n if (typeof value === \"string\") {\n this.inputvalue = value;\n }\n }\n\n this.updateLastModification();\n\n return this;\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (this.initvalue) {\n return this.initvalue.toString();\n }\n\n return \"\";\n }\n\n /**\n * Getting the value of the attribute, return unchanged when the uploaded file has not changed\n */\n getValue(): any {\n if (!this.hasValue()) {\n return null;\n }\n\n if (this.initvalue === this.inputvalue) {\n return UNCHANGED;\n }\n\n return this._value;\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n if (\n oldAttribute instanceof UploadAttributeModel &&\n oldAttribute.isValid &&\n oldAttribute.inputvalue !== null\n ) {\n this.update(JSON.stringify(oldAttribute.files));\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UploadAttributeModel.js","names":["UNCHANGED","UploadAttributeModel","StringAttributeModel","isApplicableModel","contributions","type","multiple","getContribution","initialTotalFileSize","_initialTotalFileSize","maxTotalFileSize","_maxTotalFileSize","currentFilesize","uploadedFileSize","maxFileSize","uploadMaxFileSize","files","length","accumulatedFileSize","forEach","fileName","file","size","uploadConstraints","mimeTypes","allowedMimeTypes","mimeType","extensions","allowedExtensions","extension","fileTypes","fileSize","isMaxTotal","undefined","acceptedFiles","addConstraints","constraints","ConstraintCollection","add","FileExtensionConstraint","hasFilesizeConstraint","FileSizeConstraint","_files","update","value","JSON","parse","inputvalue","token","join","error","updateLastModification","readonlyvalue","initvalue","toString","getValue","hasValue","_value","mergeAttribute","oldAttribute","isValid"],"sources":["../../../src/models/attributes/UploadAttributeModel.js"],"sourcesContent":["// @flow\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport StringAttributeModel from \"./StringAttributeModel\";\nimport FileExtensionConstraint from \"./input-constraints/FileExtensionConstraint\";\nimport FileSizeConstraint from \"./input-constraints/FileSizeConstraint\";\n\nimport type {\n AttributeType,\n FilesType,\n FiletypeConstraintsType,\n FilesizeConstraintsType,\n} from \"../types\";\n\nconst UNCHANGED = \"UNCHANGED\";\n\n/**\n * Upload attribute\n */\nexport default class UploadAttributeModel extends StringAttributeModel {\n _files: FilesType;\n _initialTotalFileSize: number;\n _maxTotalFileSize: number;\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return contributions.type === \"binary\";\n }\n\n /**\n */\n get type(): string {\n return \"upload\";\n }\n\n /**\n * Retrieve single or multi upload\n */\n get multiple(): boolean {\n return this.getContribution(\"multiple\", false);\n }\n\n /**\n */\n get initialTotalFileSize(): number {\n return this._initialTotalFileSize || 0;\n }\n\n /**\n */\n set initialTotalFileSize(initialTotalFileSize: number) {\n this._initialTotalFileSize = initialTotalFileSize;\n }\n\n /**\n */\n get maxTotalFileSize(): number {\n return this._maxTotalFileSize;\n }\n\n /**\n */\n set maxTotalFileSize(maxTotalFileSize: number) {\n this._maxTotalFileSize = maxTotalFileSize;\n }\n\n /**\n */\n get currentFilesize(): number {\n return this.initialTotalFileSize + this.uploadedFileSize;\n }\n\n /**\n */\n get maxFileSize(): ?number {\n if (this.maxTotalFileSize) {\n const uploadMaxFileSize = this.maxTotalFileSize - this.currentFilesize;\n if (uploadMaxFileSize < 0) {\n return 0;\n }\n\n return uploadMaxFileSize;\n }\n\n return this.contributions.uploadMaxFileSize;\n }\n\n /**\n */\n get uploadedFileSize(): number {\n if (Object.keys(this.files).length === 0) {\n return 0;\n }\n\n let accumulatedFileSize = 0;\n Object.keys(this.files).forEach((fileName) => {\n const file = this.files[fileName];\n if (file.size) {\n accumulatedFileSize += file.size;\n }\n });\n return accumulatedFileSize;\n }\n\n /**\n * Upload constraints\n */\n get uploadConstraints(): {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n acceptedFiles: Array<string>,\n } {\n const mimeTypes = this.contributions.allowedMimeTypes\n ? this.contributions.allowedMimeTypes.filter(\n (mimeType) => mimeType !== \"[...]\"\n )\n : [];\n const extensions = this.contributions.allowedExtensions\n ? this.contributions.allowedExtensions.filter(\n (extension) => extension !== \"[...]\"\n )\n : [];\n\n const fileTypes: FiletypeConstraintsType = extensions.map((extension) => ({\n extensions: [extension],\n mimeTypes,\n }));\n\n return {\n fileTypes,\n maxFileSize: {\n fileSize: this.maxFileSize,\n maxTotalFileSize: this.maxTotalFileSize,\n isMaxTotal: this.maxTotalFileSize !== undefined,\n },\n acceptedFiles: this.acceptedFiles,\n };\n }\n\n /**\n * Array of accepted file extensions and mime types.\n * Convenience method for accept attribute of file input html control\n */\n get acceptedFiles(): Array<string> {\n const mimeTypes = this.contributions.allowedMimeTypes\n ? this.contributions.allowedMimeTypes.filter(\n (mimeType) => mimeType !== \"[...]\"\n )\n : [];\n const extensions = this.contributions.allowedExtensions\n ? this.contributions.allowedExtensions\n .filter((extension) => extension !== \"[...]\")\n .map((extension) => `.${extension}`)\n : [];\n\n return [...extensions, ...mimeTypes];\n }\n\n /**\n * Add upload constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n if (this.uploadConstraints.fileTypes.length > 0) {\n constraints.add(\n new FileExtensionConstraint(this.uploadConstraints.fileTypes)\n );\n }\n\n const hasFilesizeConstraint =\n this.uploadConstraints.maxFileSize.isMaxTotal ||\n this.uploadConstraints.maxFileSize.fileSize !== undefined;\n\n if (hasFilesizeConstraint) {\n constraints.add(\n new FileSizeConstraint(this.uploadConstraints.maxFileSize)\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get files(): FilesType {\n return this._files || {};\n }\n\n /**\n */\n set files(files: FilesType) {\n this._files = files;\n }\n\n /**\n * Update the attribute\n */\n update(value: string): UploadAttributeModel {\n if (!value) {\n return this;\n }\n\n // parse to json and handle uploaded file\n // when the input value is a string but not json,\n // we assume that it is just a list of uploaded tokens and copy it as input value\n try {\n const files = JSON.parse(value);\n this.files = files;\n\n this.inputvalue = Object.keys(files)\n .map((fileName) => files[fileName].token)\n .join(\",\");\n } catch (error) {\n if (typeof value === \"string\") {\n this.inputvalue = value;\n }\n }\n\n this.updateLastModification();\n\n return this;\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (this.initvalue) {\n return this.initvalue.toString();\n }\n\n return \"\";\n }\n\n /**\n * Getting the value of the attribute, return unchanged when the uploaded file has not changed\n */\n getValue(): any {\n if (!this.hasValue()) {\n return null;\n }\n\n if (this.initvalue === this.inputvalue) {\n return UNCHANGED;\n }\n\n return this._value;\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n if (\n oldAttribute instanceof UploadAttributeModel &&\n oldAttribute.isValid &&\n oldAttribute.inputvalue !== null\n ) {\n this.update(JSON.stringify(oldAttribute.files));\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -65,6 +65,17 @@ class ErrorModel {
|
|
|
65
65
|
get isMandatoryConstraint() {
|
|
66
66
|
return this.id === "Constraint.Mandatory";
|
|
67
67
|
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns a message object from the error
|
|
71
|
+
*/
|
|
72
|
+
getMessage() {
|
|
73
|
+
return {
|
|
74
|
+
id: this.id,
|
|
75
|
+
defaultMessage: this.defaultMessage ?? "",
|
|
76
|
+
parameters: this.parameters ?? {}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
68
79
|
}
|
|
69
80
|
var _default = ErrorModel;
|
|
70
81
|
exports.default = _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import type { MessageParameters } from "../../i18n/types";
|
|
2
|
+
import type { MessageObject, MessageParameters } from "../../i18n/types";
|
|
3
3
|
import LayoutHintCollection from "../layouthint/LayoutHintCollection";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -67,6 +67,17 @@ class ErrorModel {
|
|
|
67
67
|
get isMandatoryConstraint(): boolean {
|
|
68
68
|
return this.id === "Constraint.Mandatory";
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Returns a message object from the error
|
|
73
|
+
*/
|
|
74
|
+
getMessage(): MessageObject {
|
|
75
|
+
return {
|
|
76
|
+
id: this.id,
|
|
77
|
+
defaultMessage: this.defaultMessage ?? "",
|
|
78
|
+
parameters: this.parameters ?? {},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
70
81
|
}
|
|
71
82
|
|
|
72
83
|
export default ErrorModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorModel.js","names":["ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","layouthint","LayoutHintCollection","_id","_parameters","_defaultMessage","_isClientConstraint","_layouthint","Array","isArray","isMandatoryConstraint"],"sources":["../../../src/models/error/ErrorModel.js"],"sourcesContent":["// @flow\nimport type { MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n * Wrapper around an error message / object\n */\nclass ErrorModel {\n _id: string;\n _defaultMessage: ?string;\n _parameters: ?MessageParameters;\n _isClientConstraint: boolean;\n _layouthint: LayoutHintCollection;\n\n /**\n * Contruct\n */\n constructor(\n id: string,\n defaultMessage: ?string,\n parameters: ?MessageParameters,\n isClientConstraint: boolean = false,\n layouthint: LayoutHintCollection = new LayoutHintCollection()\n ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n this._isClientConstraint = isClientConstraint;\n this._layouthint = Array.isArray(layouthint)\n ? new LayoutHintCollection(layouthint)\n : layouthint;\n }\n\n /**\n * Get id of error\n */\n get id(): string {\n return this._id;\n }\n\n /**\n */\n get defaultMessage(): ?string {\n return this._defaultMessage;\n }\n\n /**\n */\n get parameters(): ?MessageParameters {\n return this._parameters;\n }\n\n /**\n */\n get isClientConstraint(): boolean {\n return this._isClientConstraint || false;\n }\n\n /**\n */\n get layouthint(): LayoutHintCollection {\n return this._layouthint;\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return this.id === \"Constraint.Mandatory\";\n }\n}\n\nexport default ErrorModel;\n"],"mappings":";;;;;;;;AAEA;AAEA;AACA;AACA;AACA,MAAMA,UAAU,CAAC;EAOf;AACF;AACA;EACEC,WAAW,CACTC,EAAU,EACVC,cAAuB,EACvBC,UAA8B,EAG9B;IAAA,IAFAC,kBAA2B,uEAAG,KAAK;IAAA,IACnCC,UAAgC,uEAAG,IAAIC,6BAAoB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAE7D,IAAI,CAACC,GAAG,GAAGN,EAAE;IACb,IAAI,CAACO,WAAW,GAAGL,UAAU;IAC7B,IAAI,CAACM,eAAe,GAAGP,cAAc;IACrC,IAAI,CAACQ,mBAAmB,GAAGN,kBAAkB;IAC7C,IAAI,CAACO,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACR,UAAU,CAAC,GACxC,IAAIC,6BAAoB,CAACD,UAAU,CAAC,GACpCA,UAAU;EAChB;;EAEA;AACF;AACA;EACE,IAAIJ,EAAE,GAAW;IACf,OAAO,IAAI,CAACM,GAAG;EACjB;;EAEA;AACF;EACE,IAAIL,cAAc,GAAY;IAC5B,OAAO,IAAI,CAACO,eAAe;EAC7B;;EAEA;AACF;EACE,IAAIN,UAAU,GAAuB;IACnC,OAAO,IAAI,CAACK,WAAW;EACzB;;EAEA;AACF;EACE,IAAIJ,kBAAkB,GAAY;IAChC,OAAO,IAAI,CAACM,mBAAmB,IAAI,KAAK;EAC1C;;EAEA;AACF;EACE,IAAIL,UAAU,GAAyB;IACrC,OAAO,IAAI,CAACM,WAAW;EACzB;;EAEA;AACF;EACE,IAAIG,qBAAqB,GAAY;IACnC,OAAO,IAAI,CAACb,EAAE,KAAK,sBAAsB;EAC3C;AACF;AAAC,
|
|
1
|
+
{"version":3,"file":"ErrorModel.js","names":["ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","layouthint","LayoutHintCollection","_id","_parameters","_defaultMessage","_isClientConstraint","_layouthint","Array","isArray","isMandatoryConstraint","getMessage"],"sources":["../../../src/models/error/ErrorModel.js"],"sourcesContent":["// @flow\nimport type { MessageObject, MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n * Wrapper around an error message / object\n */\nclass ErrorModel {\n _id: string;\n _defaultMessage: ?string;\n _parameters: ?MessageParameters;\n _isClientConstraint: boolean;\n _layouthint: LayoutHintCollection;\n\n /**\n * Contruct\n */\n constructor(\n id: string,\n defaultMessage: ?string,\n parameters: ?MessageParameters,\n isClientConstraint: boolean = false,\n layouthint: LayoutHintCollection = new LayoutHintCollection()\n ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n this._isClientConstraint = isClientConstraint;\n this._layouthint = Array.isArray(layouthint)\n ? new LayoutHintCollection(layouthint)\n : layouthint;\n }\n\n /**\n * Get id of error\n */\n get id(): string {\n return this._id;\n }\n\n /**\n */\n get defaultMessage(): ?string {\n return this._defaultMessage;\n }\n\n /**\n */\n get parameters(): ?MessageParameters {\n return this._parameters;\n }\n\n /**\n */\n get isClientConstraint(): boolean {\n return this._isClientConstraint || false;\n }\n\n /**\n */\n get layouthint(): LayoutHintCollection {\n return this._layouthint;\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return this.id === \"Constraint.Mandatory\";\n }\n\n /**\n * Returns a message object from the error\n */\n getMessage(): MessageObject {\n return {\n id: this.id,\n defaultMessage: this.defaultMessage ?? \"\",\n parameters: this.parameters ?? {},\n };\n }\n}\n\nexport default ErrorModel;\n"],"mappings":";;;;;;;;AAEA;AAEA;AACA;AACA;AACA,MAAMA,UAAU,CAAC;EAOf;AACF;AACA;EACEC,WAAW,CACTC,EAAU,EACVC,cAAuB,EACvBC,UAA8B,EAG9B;IAAA,IAFAC,kBAA2B,uEAAG,KAAK;IAAA,IACnCC,UAAgC,uEAAG,IAAIC,6BAAoB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAE7D,IAAI,CAACC,GAAG,GAAGN,EAAE;IACb,IAAI,CAACO,WAAW,GAAGL,UAAU;IAC7B,IAAI,CAACM,eAAe,GAAGP,cAAc;IACrC,IAAI,CAACQ,mBAAmB,GAAGN,kBAAkB;IAC7C,IAAI,CAACO,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACR,UAAU,CAAC,GACxC,IAAIC,6BAAoB,CAACD,UAAU,CAAC,GACpCA,UAAU;EAChB;;EAEA;AACF;AACA;EACE,IAAIJ,EAAE,GAAW;IACf,OAAO,IAAI,CAACM,GAAG;EACjB;;EAEA;AACF;EACE,IAAIL,cAAc,GAAY;IAC5B,OAAO,IAAI,CAACO,eAAe;EAC7B;;EAEA;AACF;EACE,IAAIN,UAAU,GAAuB;IACnC,OAAO,IAAI,CAACK,WAAW;EACzB;;EAEA;AACF;EACE,IAAIJ,kBAAkB,GAAY;IAChC,OAAO,IAAI,CAACM,mBAAmB,IAAI,KAAK;EAC1C;;EAEA;AACF;EACE,IAAIL,UAAU,GAAyB;IACrC,OAAO,IAAI,CAACM,WAAW;EACzB;;EAEA;AACF;EACE,IAAIG,qBAAqB,GAAY;IACnC,OAAO,IAAI,CAACb,EAAE,KAAK,sBAAsB;EAC3C;;EAEA;AACF;AACA;EACEc,UAAU,GAAkB;IAC1B,OAAO;MACLd,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,cAAc,EAAE,IAAI,CAACA,cAAc,IAAI,EAAE;MACzCC,UAAU,EAAE,IAAI,CAACA,UAAU,IAAI,CAAC;IAClC,CAAC;EACH;AACF;AAAC,eAEcJ,UAAU;AAAA"}
|
package/lib/models/href/Href.js
CHANGED
|
@@ -11,7 +11,7 @@ var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js
|
|
|
11
11
|
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
12
12
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
14
|
-
var
|
|
14
|
+
var _constants = require("../../constants");
|
|
15
15
|
var _Parameter = _interopRequireDefault(require("../parameter/Parameter"));
|
|
16
16
|
var _exceptions = require("../../exceptions");
|
|
17
17
|
/**
|
|
@@ -26,7 +26,7 @@ class Href {
|
|
|
26
26
|
(0, _defineProperty2.default)(this, "_hash", "");
|
|
27
27
|
(0, _defineProperty2.default)(this, "_parameters", []);
|
|
28
28
|
(0, _defineProperty2.default)(this, "_resourcetype", "");
|
|
29
|
-
(0, _defineProperty2.default)(this, "_method",
|
|
29
|
+
(0, _defineProperty2.default)(this, "_method", _constants.HTTP_METHODS.GET);
|
|
30
30
|
(0, _defineProperty2.default)(this, "_state", null);
|
|
31
31
|
this.resourcetype = resourcetype ?? "";
|
|
32
32
|
if (href instanceof Href) {
|
|
@@ -193,7 +193,7 @@ class Href {
|
|
|
193
193
|
* Set request method
|
|
194
194
|
*/
|
|
195
195
|
set method(method) {
|
|
196
|
-
this._method = method ||
|
|
196
|
+
this._method = method || _constants.HTTP_METHODS.GET;
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
/**
|
|
@@ -306,13 +306,13 @@ class Href {
|
|
|
306
306
|
}
|
|
307
307
|
|
|
308
308
|
/**
|
|
309
|
-
* Retrieve the path combined with the
|
|
309
|
+
* Retrieve the path combined with the base path (context-path) of the application, e.g. /BeInformed
|
|
310
310
|
*/
|
|
311
311
|
get absolutepath() {
|
|
312
312
|
if (this.isExternal) {
|
|
313
313
|
return this.path;
|
|
314
314
|
}
|
|
315
|
-
return
|
|
315
|
+
return (0, _constants.getBasePath)() + this.path;
|
|
316
316
|
}
|
|
317
317
|
|
|
318
318
|
/**
|
|
@@ -382,7 +382,7 @@ class Href {
|
|
|
382
382
|
*/
|
|
383
383
|
get isContent() {
|
|
384
384
|
var _context10;
|
|
385
|
-
return (0, _startsWith.default)(_context10 = this.absolutepath).call(_context10,
|
|
385
|
+
return (0, _startsWith.default)(_context10 = this.absolutepath).call(_context10, `${(0, _constants.getBasePath)()}${_constants.CONTENT_PATH}`);
|
|
386
386
|
}
|
|
387
387
|
|
|
388
388
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @flow
|
|
2
|
-
import {
|
|
2
|
+
import { getBasePath, HTTP_METHODS, CONTENT_PATH } from "../../constants";
|
|
3
3
|
|
|
4
4
|
import Parameter from "../parameter/Parameter";
|
|
5
5
|
import { IllegalArgumentException } from "../../exceptions";
|
|
@@ -341,14 +341,14 @@ class Href {
|
|
|
341
341
|
}
|
|
342
342
|
|
|
343
343
|
/**
|
|
344
|
-
* Retrieve the path combined with the
|
|
344
|
+
* Retrieve the path combined with the base path (context-path) of the application, e.g. /BeInformed
|
|
345
345
|
*/
|
|
346
346
|
get absolutepath(): string {
|
|
347
347
|
if (this.isExternal) {
|
|
348
348
|
return this.path;
|
|
349
349
|
}
|
|
350
350
|
|
|
351
|
-
return
|
|
351
|
+
return getBasePath() + this.path;
|
|
352
352
|
}
|
|
353
353
|
|
|
354
354
|
/**
|
|
@@ -433,7 +433,7 @@ class Href {
|
|
|
433
433
|
* Indicates if the link is a content link
|
|
434
434
|
*/
|
|
435
435
|
get isContent(): boolean {
|
|
436
|
-
return this.absolutepath.startsWith(CONTENT_PATH);
|
|
436
|
+
return this.absolutepath.startsWith(`${getBasePath()}${CONTENT_PATH}`);
|
|
437
437
|
}
|
|
438
438
|
|
|
439
439
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Href.js","names":["Href","constructor","href","resourcetype","HTTP_METHODS","GET","setFromHref","setFromString","setFromLocationOrObject","path","parameters","hash","state","pathname","_path","search","addParametersFromString","Array","isArray","_parameters","param","addParameter","_name","_value","_prefix","getHashFromString","_hash","_state","getPathFromString","isChangePassword","isCamelRoute","checkAbsoluteUrl","checkAbsolute","RegExp","test","isExternal","decodedHref","decodeURI","hrefNoHash","substr","indexOf","split","forEach","paramFromString","Parameter","fromString","setParameter","name","value","prefix","removeParameter","push","getParameter","hasParameter","undefined","method","_method","getQuerystring","withPrefix","toQuerystring","join","getQuerystringForModularUI","isModUIParameter","querystring","setState","_resourcetype","absolutepath","BASE","length","absolutehref","absolutehrefPrefixedQuerystring","startsWith","thisPath","otherPath","equals","equalsWithParameters","thisParams","toString","every","IllegalArgumentException","isContent","CONTENT_PATH","toLocation"],"sources":["../../../src/models/href/Href.js"],"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> = HTTP_METHODS.GET;\n _state: any = null;\n\n /**\n * Create a Href\n */\n constructor(href?: HrefInput, resourcetype?: string) {\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¶m2=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: any) {\n this._state = state;\n }\n\n /**\n */\n get state(): any {\n return this._state;\n }\n\n /**\n */\n setState(state: 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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Href.js","names":["Href","constructor","href","resourcetype","HTTP_METHODS","GET","setFromHref","setFromString","setFromLocationOrObject","path","parameters","hash","state","pathname","_path","search","addParametersFromString","Array","isArray","_parameters","param","addParameter","_name","_value","_prefix","getHashFromString","_hash","_state","getPathFromString","isChangePassword","isCamelRoute","checkAbsoluteUrl","checkAbsolute","RegExp","test","isExternal","decodedHref","decodeURI","hrefNoHash","substr","indexOf","split","forEach","paramFromString","Parameter","fromString","setParameter","name","value","prefix","removeParameter","push","getParameter","hasParameter","undefined","method","_method","getQuerystring","withPrefix","toQuerystring","join","getQuerystringForModularUI","isModUIParameter","querystring","setState","_resourcetype","absolutepath","getBasePath","length","absolutehref","absolutehrefPrefixedQuerystring","startsWith","thisPath","otherPath","equals","equalsWithParameters","thisParams","toString","every","IllegalArgumentException","isContent","CONTENT_PATH","toLocation"],"sources":["../../../src/models/href/Href.js"],"sourcesContent":["// @flow\nimport { getBasePath, HTTP_METHODS, CONTENT_PATH } from \"../../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> = HTTP_METHODS.GET;\n _state: any = null;\n\n /**\n * Create a Href\n */\n constructor(href?: HrefInput, resourcetype?: string) {\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¶m2=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: any) {\n this._state = state;\n }\n\n /**\n */\n get state(): any {\n return this._state;\n }\n\n /**\n */\n setState(state: 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 path (context-path) of the application, e.g. /BeInformed\n */\n get absolutepath(): string {\n if (this.isExternal) {\n return this.path;\n }\n\n return getBasePath() + 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(`${getBasePath()}${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"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getBasePath } from "../../../constants";
|
|
2
2
|
import Href from "../Href";
|
|
3
3
|
|
|
4
4
|
describe("href spec", () => {
|
|
@@ -140,8 +140,7 @@ describe("href spec", () => {
|
|
|
140
140
|
});
|
|
141
141
|
|
|
142
142
|
it("a tab can have the same uri as the contextPath", () => {
|
|
143
|
-
expect(
|
|
144
|
-
expect(APPLICATION_PATH).toBe("/BeInformed/");
|
|
143
|
+
expect(getBasePath()).toBe("/BeInformed");
|
|
145
144
|
|
|
146
145
|
const tabHref = new Href("/BeInformed");
|
|
147
146
|
|