@beinformed/ui 1.57.0-contextpath.0 → 1.57.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 (185) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/esm/constants/Settings.js +10 -2
  3. package/esm/constants/Settings.js.map +1 -1
  4. package/esm/hooks/useModularUI.js +24 -18
  5. package/esm/hooks/useModularUI.js.map +1 -1
  6. package/esm/hooks/useModularUIBasic.js +52 -41
  7. package/esm/hooks/useModularUIBasic.js.map +1 -1
  8. package/esm/models/concepts/ConceptDetailModel.js +1 -8
  9. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  10. package/esm/models/concepts/ConceptIndexModel.js +1 -1
  11. package/esm/models/concepts/ConceptIndexModel.js.map +1 -1
  12. package/esm/models/concepts/ConceptLinkModel.js +8 -9
  13. package/esm/models/concepts/ConceptLinkModel.js.map +1 -1
  14. package/esm/models/concepts/ConceptTypeDetailModel.js +3 -20
  15. package/esm/models/concepts/ConceptTypeDetailModel.js.map +1 -1
  16. package/esm/models/concepts/SourceReferenceCollection.js +3 -1
  17. package/esm/models/concepts/SourceReferenceCollection.js.map +1 -1
  18. package/esm/models/concepts/SourceReferenceModel.js +9 -3
  19. package/esm/models/concepts/SourceReferenceModel.js.map +1 -1
  20. package/esm/models/content/ContentLinkModel.js +10 -4
  21. package/esm/models/content/ContentLinkModel.js.map +1 -1
  22. package/esm/models/content/SectionModel.js +10 -6
  23. package/esm/models/content/SectionModel.js.map +1 -1
  24. package/esm/models/error/ErrorResponse.js +20 -5
  25. package/esm/models/error/ErrorResponse.js.map +1 -1
  26. package/esm/models/href/Href.js +21 -4
  27. package/esm/models/href/Href.js.map +1 -1
  28. package/esm/models/list/ListItemCollection.js +1 -1
  29. package/esm/models/list/ListItemCollection.js.map +1 -1
  30. package/esm/modularui/CaptchaRequest.js +12 -3
  31. package/esm/modularui/CaptchaRequest.js.map +1 -1
  32. package/esm/modularui/ModularUIRequest.js +1 -1
  33. package/esm/modularui/ModularUIRequest.js.map +1 -1
  34. package/esm/modularui/UploadRequest.js +7 -3
  35. package/esm/modularui/UploadRequest.js.map +1 -1
  36. package/esm/redux/_modularui/ModularUIActions.js +11 -9
  37. package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
  38. package/esm/redux/_modularui/ModularUIMiddleware.js +4 -1
  39. package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  40. package/esm/redux/_modularui/ModularUIReducer.js +2 -1
  41. package/esm/redux/_modularui/ModularUIReducer.js.map +1 -1
  42. package/esm/redux/_modularui/ModularUISelectors.js +7 -6
  43. package/esm/redux/_modularui/ModularUISelectors.js.map +1 -1
  44. package/esm/redux/_modularui/types.js.map +1 -1
  45. package/esm/redux/actions/Application.js +11 -6
  46. package/esm/redux/actions/Application.js.map +1 -1
  47. package/esm/redux/connectors/PanelRenderer.js +0 -2
  48. package/esm/redux/connectors/PanelRenderer.js.map +1 -1
  49. package/esm/utils/helpers/checkResource.js +0 -2
  50. package/esm/utils/helpers/checkResource.js.map +1 -1
  51. package/esm/utils/helpers/repositoryResource.js +6 -5
  52. package/esm/utils/helpers/repositoryResource.js.map +1 -1
  53. package/lib/constants/Settings.js +10 -2
  54. package/lib/constants/Settings.js.flow +8 -2
  55. package/lib/constants/Settings.js.map +1 -1
  56. package/lib/hooks/__tests__/UseModularUIModel.spec.js.flow +11 -4
  57. package/lib/hooks/__tests__/useAuthentication.spec.js.flow +2 -8
  58. package/lib/hooks/__tests__/useForm.spec.js.flow +14 -12
  59. package/lib/hooks/__tests__/useModelCatalog.spec.js.flow +10 -4
  60. package/lib/hooks/__tests__/useModels.spec.js.flow +3 -12
  61. package/lib/hooks/__tests__/useModularUIBasic.spec.js.flow +9 -8
  62. package/lib/hooks/useModularUI.js +23 -17
  63. package/lib/hooks/useModularUI.js.flow +31 -16
  64. package/lib/hooks/useModularUI.js.map +1 -1
  65. package/lib/hooks/useModularUIBasic.js +52 -41
  66. package/lib/hooks/useModularUIBasic.js.flow +66 -50
  67. package/lib/hooks/useModularUIBasic.js.map +1 -1
  68. package/lib/models/concepts/ConceptDetailModel.js +1 -8
  69. package/lib/models/concepts/ConceptDetailModel.js.flow +2 -7
  70. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  71. package/lib/models/concepts/ConceptIndexModel.js +1 -1
  72. package/lib/models/concepts/ConceptIndexModel.js.flow +7 -1
  73. package/lib/models/concepts/ConceptIndexModel.js.map +1 -1
  74. package/lib/models/concepts/ConceptLinkModel.js +8 -9
  75. package/lib/models/concepts/ConceptLinkModel.js.flow +14 -9
  76. package/lib/models/concepts/ConceptLinkModel.js.map +1 -1
  77. package/lib/models/concepts/ConceptTypeDetailModel.js +3 -20
  78. package/lib/models/concepts/ConceptTypeDetailModel.js.flow +3 -25
  79. package/lib/models/concepts/ConceptTypeDetailModel.js.map +1 -1
  80. package/lib/models/concepts/SourceReferenceCollection.js +3 -1
  81. package/lib/models/concepts/SourceReferenceCollection.js.flow +8 -1
  82. package/lib/models/concepts/SourceReferenceCollection.js.map +1 -1
  83. package/lib/models/concepts/SourceReferenceModel.js +9 -3
  84. package/lib/models/concepts/SourceReferenceModel.js.flow +19 -3
  85. package/lib/models/concepts/SourceReferenceModel.js.map +1 -1
  86. package/lib/models/concepts/__mock__/conceptindex.js.flow +15 -0
  87. package/lib/models/concepts/__tests__/ConceptIndexModel.spec.js.flow +30 -2
  88. package/lib/models/concepts/__tests__/ConceptTypeDetailModel.spec.js.flow +1 -18
  89. package/lib/models/content/ContentLinkModel.js +9 -4
  90. package/lib/models/content/ContentLinkModel.js.flow +19 -4
  91. package/lib/models/content/ContentLinkModel.js.map +1 -1
  92. package/lib/models/content/SectionModel.js +10 -6
  93. package/lib/models/content/SectionModel.js.flow +31 -5
  94. package/lib/models/content/SectionModel.js.map +1 -1
  95. package/lib/models/error/ErrorResponse.js +20 -5
  96. package/lib/models/error/ErrorResponse.js.flow +34 -5
  97. package/lib/models/error/ErrorResponse.js.map +1 -1
  98. package/lib/models/href/Href.js +21 -4
  99. package/lib/models/href/Href.js.flow +21 -4
  100. package/lib/models/href/Href.js.map +1 -1
  101. package/lib/models/href/__tests__/Href.spec.js.flow +9 -3
  102. package/lib/models/list/ListItemCollection.js +1 -1
  103. package/lib/models/list/ListItemCollection.js.flow +2 -0
  104. package/lib/models/list/ListItemCollection.js.map +1 -1
  105. package/lib/modularui/CaptchaRequest.js +11 -2
  106. package/lib/modularui/CaptchaRequest.js.flow +17 -3
  107. package/lib/modularui/CaptchaRequest.js.map +1 -1
  108. package/lib/modularui/ModularUIRequest.js +1 -1
  109. package/lib/modularui/ModularUIRequest.js.flow +3 -1
  110. package/lib/modularui/ModularUIRequest.js.map +1 -1
  111. package/lib/modularui/UploadRequest.js +6 -2
  112. package/lib/modularui/UploadRequest.js.flow +12 -2
  113. package/lib/modularui/UploadRequest.js.map +1 -1
  114. package/lib/redux/_modularui/ModularUIActions.js +11 -9
  115. package/lib/redux/_modularui/ModularUIActions.js.flow +20 -10
  116. package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
  117. package/lib/redux/_modularui/ModularUIMiddleware.js +3 -0
  118. package/lib/redux/_modularui/ModularUIMiddleware.js.flow +6 -3
  119. package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  120. package/lib/redux/_modularui/ModularUIReducer.js +2 -1
  121. package/lib/redux/_modularui/ModularUIReducer.js.flow +1 -0
  122. package/lib/redux/_modularui/ModularUIReducer.js.map +1 -1
  123. package/lib/redux/_modularui/ModularUISelectors.js +5 -6
  124. package/lib/redux/_modularui/ModularUISelectors.js.flow +22 -10
  125. package/lib/redux/_modularui/ModularUISelectors.js.map +1 -1
  126. package/lib/redux/_modularui/__tests__/actions.spec.js.flow +1 -4
  127. package/lib/redux/_modularui/types.js.flow +1 -0
  128. package/lib/redux/_modularui/types.js.map +1 -1
  129. package/lib/redux/actions/Application.js +10 -5
  130. package/lib/redux/actions/Application.js.flow +16 -5
  131. package/lib/redux/actions/Application.js.map +1 -1
  132. package/lib/redux/actions/__tests__/Application.spec.js.flow +1 -8
  133. package/lib/redux/actions/__tests__/Authorization.spec.js.flow +0 -4
  134. package/lib/redux/connectors/PanelRenderer.js +0 -2
  135. package/lib/redux/connectors/PanelRenderer.js.flow +0 -1
  136. package/lib/redux/connectors/PanelRenderer.js.map +1 -1
  137. package/lib/utils/helpers/checkResource.js +0 -2
  138. package/lib/utils/helpers/checkResource.js.flow +0 -2
  139. package/lib/utils/helpers/checkResource.js.map +1 -1
  140. package/lib/utils/helpers/repositoryResource.js +6 -5
  141. package/lib/utils/helpers/repositoryResource.js.flow +8 -6
  142. package/lib/utils/helpers/repositoryResource.js.map +1 -1
  143. package/package.json +18 -18
  144. package/src/constants/Settings.js +8 -2
  145. package/src/hooks/__tests__/UseModularUIModel.spec.js +11 -4
  146. package/src/hooks/__tests__/useAuthentication.spec.js +2 -8
  147. package/src/hooks/__tests__/useForm.spec.js +14 -12
  148. package/src/hooks/__tests__/useModelCatalog.spec.js +10 -4
  149. package/src/hooks/__tests__/useModels.spec.js +3 -12
  150. package/src/hooks/__tests__/useModularUIBasic.spec.js +9 -8
  151. package/src/hooks/useModularUI.js +31 -16
  152. package/src/hooks/useModularUIBasic.js +66 -50
  153. package/src/models/concepts/ConceptDetailModel.js +2 -7
  154. package/src/models/concepts/ConceptIndexModel.js +7 -1
  155. package/src/models/concepts/ConceptLinkModel.js +14 -9
  156. package/src/models/concepts/ConceptTypeDetailModel.js +3 -25
  157. package/src/models/concepts/SourceReferenceCollection.js +8 -1
  158. package/src/models/concepts/SourceReferenceModel.js +19 -3
  159. package/src/models/concepts/__mock__/conceptindex.js +15 -0
  160. package/src/models/concepts/__mock__/conceptindex_contributions.json +86 -0
  161. package/src/models/concepts/__mock__/conceptindex_data.json +323 -0
  162. package/src/models/concepts/__mock__/concepttype_hierarchy.json +1 -11
  163. package/src/models/concepts/__tests__/ConceptIndexModel.spec.js +30 -2
  164. package/src/models/concepts/__tests__/ConceptTypeDetailModel.spec.js +1 -18
  165. package/src/models/content/ContentLinkModel.js +19 -4
  166. package/src/models/content/SectionModel.js +31 -5
  167. package/src/models/error/ErrorResponse.js +34 -5
  168. package/src/models/href/Href.js +21 -4
  169. package/src/models/href/__tests__/Href.spec.js +9 -3
  170. package/src/models/list/ListItemCollection.js +2 -0
  171. package/src/modularui/CaptchaRequest.js +17 -3
  172. package/src/modularui/ModularUIRequest.js +3 -1
  173. package/src/modularui/UploadRequest.js +12 -2
  174. package/src/redux/_modularui/ModularUIActions.js +20 -10
  175. package/src/redux/_modularui/ModularUIMiddleware.js +6 -3
  176. package/src/redux/_modularui/ModularUIReducer.js +1 -0
  177. package/src/redux/_modularui/ModularUISelectors.js +22 -10
  178. package/src/redux/_modularui/__tests__/actions.spec.js +1 -4
  179. package/src/redux/_modularui/types.js +1 -0
  180. package/src/redux/actions/Application.js +16 -5
  181. package/src/redux/actions/__tests__/Application.spec.js +1 -8
  182. package/src/redux/actions/__tests__/Authorization.spec.js +0 -4
  183. package/src/redux/connectors/PanelRenderer.js +0 -1
  184. package/src/utils/helpers/checkResource.js +0 -2
  185. package/src/utils/helpers/repositoryResource.js +8 -6
@@ -14,15 +14,20 @@ var _SubSectionModel = _interopRequireDefault(require("./SubSectionModel"));
14
14
  var _createHash = require("../../utils/helpers/createHash");
15
15
  var _LinkModel = _interopRequireDefault(require("../links/LinkModel"));
16
16
  var _utils = require("../../utils");
17
+ var _constants = require("../../constants");
17
18
  /**
18
19
  */
19
20
  class SectionModel extends _BaseModel.default {
20
- constructor(data, entryDate) {
21
+ constructor(data, entryDate, origin, contextPath) {
21
22
  super(data, {});
22
23
  (0, _defineProperty2.default)(this, "_entryDate", void 0);
23
24
  (0, _defineProperty2.default)(this, "_selflink", void 0);
24
25
  (0, _defineProperty2.default)(this, "_childSections", void 0);
26
+ (0, _defineProperty2.default)(this, "_origin", "");
27
+ (0, _defineProperty2.default)(this, "_contextPath", (0, _constants.getBasePath)());
25
28
  this._entryDate = entryDate;
29
+ this._origin = origin || "";
30
+ this._contextPath = contextPath || (0, _constants.getBasePath)();
26
31
  }
27
32
 
28
33
  /**
@@ -35,8 +40,7 @@ class SectionModel extends _BaseModel.default {
35
40
  */
36
41
  get selflink() {
37
42
  if (!this._selflink) {
38
- // TODO SBO: origin and context
39
- this._selflink = new _LinkModel.default(this.data._links?.self);
43
+ this._selflink = new _LinkModel.default(this.data._links?.self, null, this._origin, this._contextPath);
40
44
  }
41
45
  return this._selflink;
42
46
  }
@@ -109,7 +113,7 @@ class SectionModel extends _BaseModel.default {
109
113
  label: childSection.label,
110
114
  sourceLabel: childSection.sourceLabel,
111
115
  _links: childSection._links
112
- }, this.entryDate)) : [];
116
+ }, this.entryDate, this._origin, this._contextPath)) : [];
113
117
  }
114
118
 
115
119
  /**
@@ -121,7 +125,7 @@ class SectionModel extends _BaseModel.default {
121
125
  label: this.data.label,
122
126
  sourceLabel: this.data.sourceLabel,
123
127
  _links: this.data._links
124
- }, this.entryDate);
128
+ }, this.entryDate, this._origin, this._contextPath);
125
129
  }
126
130
 
127
131
  /**
@@ -130,7 +134,7 @@ class SectionModel extends _BaseModel.default {
130
134
  get childSections() {
131
135
  if (!this._childSections && this.data.childSections) {
132
136
  var _context2, _context3;
133
- this._childSections = (0, _map.default)(_context2 = (0, _filter.default)(_context3 = this.data.childSections).call(_context3, childSection => "body" in childSection)).call(_context2, childSection => new SectionModel(childSection, this.entryDate));
137
+ this._childSections = (0, _map.default)(_context2 = (0, _filter.default)(_context3 = this.data.childSections).call(_context3, childSection => "body" in childSection)).call(_context2, childSection => new SectionModel(childSection, this.entryDate, this._origin, this._contextPath));
134
138
  }
135
139
  return this._childSections || [];
136
140
  }
@@ -8,6 +8,7 @@ import LinkModel from "../links/LinkModel";
8
8
 
9
9
  import type Href from "../href/Href";
10
10
  import { retrieveText } from "../../utils";
11
+ import { getBasePath } from "../../constants";
11
12
 
12
13
  /**
13
14
  */
@@ -15,11 +16,20 @@ class SectionModel extends BaseModel {
15
16
  _entryDate: ISO_DATE | null;
16
17
  _selflink: ?LinkModel;
17
18
  _childSections: Array<SectionModel>;
18
-
19
- constructor(data: Object, entryDate: ISO_DATE | null) {
19
+ _origin: string = "";
20
+ _contextPath: string = getBasePath();
21
+
22
+ constructor(
23
+ data: Object,
24
+ entryDate: ISO_DATE | null,
25
+ origin?: string,
26
+ contextPath?: string,
27
+ ) {
20
28
  super(data, {});
21
29
 
22
30
  this._entryDate = entryDate;
31
+ this._origin = origin || "";
32
+ this._contextPath = contextPath || getBasePath();
23
33
  }
24
34
 
25
35
  /**
@@ -32,8 +42,12 @@ class SectionModel extends BaseModel {
32
42
  */
33
43
  get selflink(): LinkModel {
34
44
  if (!this._selflink) {
35
- // TODO SBO: origin and context
36
- this._selflink = new LinkModel(this.data._links?.self);
45
+ this._selflink = new LinkModel(
46
+ this.data._links?.self,
47
+ null,
48
+ this._origin,
49
+ this._contextPath,
50
+ );
37
51
  }
38
52
  return this._selflink;
39
53
  }
@@ -111,6 +125,8 @@ class SectionModel extends BaseModel {
111
125
  _links: childSection._links,
112
126
  },
113
127
  this.entryDate,
128
+ this._origin,
129
+ this._contextPath,
114
130
  ),
115
131
  )
116
132
  : [];
@@ -128,6 +144,8 @@ class SectionModel extends BaseModel {
128
144
  _links: this.data._links,
129
145
  },
130
146
  this.entryDate,
147
+ this._origin,
148
+ this._contextPath,
131
149
  );
132
150
  }
133
151
 
@@ -138,7 +156,15 @@ class SectionModel extends BaseModel {
138
156
  if (!this._childSections && this.data.childSections) {
139
157
  this._childSections = this.data.childSections
140
158
  .filter((childSection) => "body" in childSection)
141
- .map((childSection) => new SectionModel(childSection, this.entryDate));
159
+ .map(
160
+ (childSection) =>
161
+ new SectionModel(
162
+ childSection,
163
+ this.entryDate,
164
+ this._origin,
165
+ this._contextPath,
166
+ ),
167
+ );
142
168
  }
143
169
  return this._childSections || [];
144
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SectionModel.js","names":["_BaseModel","_interopRequireDefault","require","_ContentLinkModel","_SubSectionModel","_createHash","_LinkModel","_utils","SectionModel","BaseModel","constructor","data","entryDate","_defineProperty2","default","_entryDate","referred","selflink","_selflink","LinkModel","_links","self","selfhref","href","type","sourceLabel","id","_id","key","label","getData","number","body","retrieveText","childSectionLinks","_context","childSections","_map","call","childSection","ContentLinkModel","section","selfContentLink","_childSections","_context2","_context3","_filter","sections","subSections","_context4","subSection","SubSectionModel","referenceHash","createHashFromHref","getReferredSections","push","referredChilds","_default","exports"],"sources":["../../../src/models/content/SectionModel.js"],"sourcesContent":["// @flow\nimport BaseModel from \"../base/BaseModel\";\nimport ContentLinkModel from \"./ContentLinkModel\";\nimport SubSectionModel from \"./SubSectionModel\";\n\nimport { createHashFromHref } from \"../../utils/helpers/createHash\";\nimport LinkModel from \"../links/LinkModel\";\n\nimport type Href from \"../href/Href\";\nimport { retrieveText } from \"../../utils\";\n\n/**\n */\nclass SectionModel extends BaseModel {\n _entryDate: ISO_DATE | null;\n _selflink: ?LinkModel;\n _childSections: Array<SectionModel>;\n\n constructor(data: Object, entryDate: ISO_DATE | null) {\n super(data, {});\n\n this._entryDate = entryDate;\n }\n\n /**\n */\n get referred(): boolean {\n return this.data.referred;\n }\n\n /**\n */\n get selflink(): LinkModel {\n if (!this._selflink) {\n // TODO SBO: origin and context\n this._selflink = new LinkModel(this.data._links?.self);\n }\n return this._selflink;\n }\n\n /**\n */\n get selfhref(): Href {\n return this.selflink.href;\n }\n\n /**\n */\n get entryDate(): ISO_DATE | null {\n return this._entryDate;\n }\n\n /**\n */\n get type(): string {\n return this.data.type;\n }\n\n /**\n */\n get sourceLabel(): string {\n return this.data.sourceLabel;\n }\n\n /**\n */\n get id(): string {\n return this.data.id || this.data._id;\n }\n\n /**\n */\n get key(): string {\n return this.id;\n }\n\n /**\n * Get content label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Retrieve number of section\n */\n get number(): string | null {\n return this.data.number ?? null;\n }\n\n /**\n * Get content body\n */\n get body(): ?string {\n return retrieveText(this.data.body);\n }\n\n /**\n * Retrieve child section links\n */\n get childSectionLinks(): Array<ContentLinkModel> {\n return this.data.childSections\n ? this.data.childSections.map(\n (childSection) =>\n new ContentLinkModel(\n {\n section: childSection.id || childSection._id,\n _id: childSection.id || childSection._id,\n label: childSection.label,\n sourceLabel: childSection.sourceLabel,\n _links: childSection._links,\n },\n this.entryDate,\n ),\n )\n : [];\n }\n\n /**\n */\n get selfContentLink(): ContentLinkModel {\n return new ContentLinkModel(\n {\n section: this.id,\n _id: this.id,\n label: this.data.label,\n sourceLabel: this.data.sourceLabel,\n _links: this.data._links,\n },\n this.entryDate,\n );\n }\n\n /**\n * Get tree of child sections\n */\n get childSections(): Array<SectionModel> {\n if (!this._childSections && this.data.childSections) {\n this._childSections = this.data.childSections\n .filter((childSection) => \"body\" in childSection)\n .map((childSection) => new SectionModel(childSection, this.entryDate));\n }\n return this._childSections || [];\n }\n\n /**\n * set resolved child sections\n */\n set childSections(sections: Array<SectionModel>) {\n this._childSections = sections || [];\n }\n\n /**\n * Get sub sections\n */\n get subSections(): Array<SubSectionModel> {\n return this.data.subSections\n ? this.data.subSections.map(\n (subSection) => new SubSectionModel(subSection),\n )\n : [];\n }\n\n /**\n */\n get referenceHash(): number {\n return createHashFromHref(this.selfhref);\n }\n\n /**\n */\n getReferredSections(): Array<SubSectionModel | SectionModel> {\n const sections = [];\n\n for (const subSection of this.subSections) {\n if (subSection.referred) {\n sections.push(subSection);\n }\n\n const referredChilds = subSection.getReferredSections();\n sections.push(...referredChilds);\n }\n\n for (const childSection of this.childSections) {\n if (childSection.referred) {\n sections.push(childSection);\n }\n\n const referredChilds = childSection.getReferredSections();\n sections.push(...referredChilds);\n }\n\n return sections;\n }\n}\n\nexport default SectionModel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SectionModel.js","names":["_BaseModel","_interopRequireDefault","require","_ContentLinkModel","_SubSectionModel","_createHash","_LinkModel","_utils","_constants","SectionModel","BaseModel","constructor","data","entryDate","origin","contextPath","_defineProperty2","default","getBasePath","_entryDate","_origin","_contextPath","referred","selflink","_selflink","LinkModel","_links","self","selfhref","href","type","sourceLabel","id","_id","key","label","getData","number","body","retrieveText","childSectionLinks","_context","childSections","_map","call","childSection","ContentLinkModel","section","selfContentLink","_childSections","_context2","_context3","_filter","sections","subSections","_context4","subSection","SubSectionModel","referenceHash","createHashFromHref","getReferredSections","push","referredChilds","_default","exports"],"sources":["../../../src/models/content/SectionModel.js"],"sourcesContent":["// @flow\nimport BaseModel from \"../base/BaseModel\";\nimport ContentLinkModel from \"./ContentLinkModel\";\nimport SubSectionModel from \"./SubSectionModel\";\n\nimport { createHashFromHref } from \"../../utils/helpers/createHash\";\nimport LinkModel from \"../links/LinkModel\";\n\nimport type Href from \"../href/Href\";\nimport { retrieveText } from \"../../utils\";\nimport { getBasePath } from \"../../constants\";\n\n/**\n */\nclass SectionModel extends BaseModel {\n _entryDate: ISO_DATE | null;\n _selflink: ?LinkModel;\n _childSections: Array<SectionModel>;\n _origin: string = \"\";\n _contextPath: string = getBasePath();\n\n constructor(\n data: Object,\n entryDate: ISO_DATE | null,\n origin?: string,\n contextPath?: string,\n ) {\n super(data, {});\n\n this._entryDate = entryDate;\n this._origin = origin || \"\";\n this._contextPath = contextPath || getBasePath();\n }\n\n /**\n */\n get referred(): boolean {\n return this.data.referred;\n }\n\n /**\n */\n get selflink(): LinkModel {\n if (!this._selflink) {\n this._selflink = new LinkModel(\n this.data._links?.self,\n null,\n this._origin,\n this._contextPath,\n );\n }\n return this._selflink;\n }\n\n /**\n */\n get selfhref(): Href {\n return this.selflink.href;\n }\n\n /**\n */\n get entryDate(): ISO_DATE | null {\n return this._entryDate;\n }\n\n /**\n */\n get type(): string {\n return this.data.type;\n }\n\n /**\n */\n get sourceLabel(): string {\n return this.data.sourceLabel;\n }\n\n /**\n */\n get id(): string {\n return this.data.id || this.data._id;\n }\n\n /**\n */\n get key(): string {\n return this.id;\n }\n\n /**\n * Get content label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Retrieve number of section\n */\n get number(): string | null {\n return this.data.number ?? null;\n }\n\n /**\n * Get content body\n */\n get body(): ?string {\n return retrieveText(this.data.body);\n }\n\n /**\n * Retrieve child section links\n */\n get childSectionLinks(): Array<ContentLinkModel> {\n return this.data.childSections\n ? this.data.childSections.map(\n (childSection) =>\n new ContentLinkModel(\n {\n section: childSection.id || childSection._id,\n _id: childSection.id || childSection._id,\n label: childSection.label,\n sourceLabel: childSection.sourceLabel,\n _links: childSection._links,\n },\n this.entryDate,\n this._origin,\n this._contextPath,\n ),\n )\n : [];\n }\n\n /**\n */\n get selfContentLink(): ContentLinkModel {\n return new ContentLinkModel(\n {\n section: this.id,\n _id: this.id,\n label: this.data.label,\n sourceLabel: this.data.sourceLabel,\n _links: this.data._links,\n },\n this.entryDate,\n this._origin,\n this._contextPath,\n );\n }\n\n /**\n * Get tree of child sections\n */\n get childSections(): Array<SectionModel> {\n if (!this._childSections && this.data.childSections) {\n this._childSections = this.data.childSections\n .filter((childSection) => \"body\" in childSection)\n .map(\n (childSection) =>\n new SectionModel(\n childSection,\n this.entryDate,\n this._origin,\n this._contextPath,\n ),\n );\n }\n return this._childSections || [];\n }\n\n /**\n * set resolved child sections\n */\n set childSections(sections: Array<SectionModel>) {\n this._childSections = sections || [];\n }\n\n /**\n * Get sub sections\n */\n get subSections(): Array<SubSectionModel> {\n return this.data.subSections\n ? this.data.subSections.map(\n (subSection) => new SubSectionModel(subSection),\n )\n : [];\n }\n\n /**\n */\n get referenceHash(): number {\n return createHashFromHref(this.selfhref);\n }\n\n /**\n */\n getReferredSections(): Array<SubSectionModel | SectionModel> {\n const sections = [];\n\n for (const subSection of this.subSections) {\n if (subSection.referred) {\n sections.push(subSection);\n }\n\n const referredChilds = subSection.getReferredSections();\n sections.push(...referredChilds);\n }\n\n for (const childSection of this.childSections) {\n if (childSection.referred) {\n sections.push(childSection);\n }\n\n const referredChilds = childSection.getReferredSections();\n sections.push(...referredChilds);\n }\n\n return sections;\n }\n}\n\nexport default SectionModel;\n"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
9
9
  var _Href = _interopRequireDefault(require("../href/Href"));
10
10
  var _LayoutHintCollection = _interopRequireDefault(require("../layouthint/LayoutHintCollection"));
11
+ var _constants = require("../../constants");
11
12
  /**
12
13
  */
13
14
  /**
@@ -21,11 +22,15 @@ class ErrorResponse {
21
22
  /**
22
23
  * Construct ErrorResponse
23
24
  */
24
- constructor(data, connectKey) {
25
+ constructor(data, connectKey, origin, contextPath) {
25
26
  (0, _defineProperty2.default)(this, "_error", void 0);
26
27
  (0, _defineProperty2.default)(this, "_connectKey", void 0);
28
+ (0, _defineProperty2.default)(this, "_origin", "");
29
+ (0, _defineProperty2.default)(this, "_contextPath", (0, _constants.getBasePath)());
27
30
  this._error = data;
28
31
  this._connectKey = connectKey;
32
+ this._origin = origin || "";
33
+ this._contextPath = contextPath || (0, _constants.getBasePath)();
29
34
  }
30
35
 
31
36
  /**
@@ -40,6 +45,18 @@ class ErrorResponse {
40
45
  return this._connectKey;
41
46
  }
42
47
 
48
+ /**
49
+ */
50
+ get origin() {
51
+ return this._origin;
52
+ }
53
+
54
+ /**
55
+ */
56
+ get contextPath() {
57
+ return this._contextPath;
58
+ }
59
+
43
60
  /**
44
61
  * Return error information
45
62
  */
@@ -145,9 +162,8 @@ class ErrorResponse {
145
162
  * Return response error redirect href
146
163
  */
147
164
  get redirectHref() {
148
- // TODO SBO: origin and context
149
165
  if (this.response.redirect?.href) {
150
- return new _Href.default(this.response.redirect?.href);
166
+ return new _Href.default(this.response.redirect?.href, "", this.origin, this.contextPath);
151
167
  }
152
168
  return new _Href.default();
153
169
  }
@@ -262,8 +278,7 @@ class ErrorResponse {
262
278
  * Get response url
263
279
  */
264
280
  get changePasswordHref() {
265
- // TODO SBO: origin and context
266
- return this.properties.redirect ? new _Href.default(this.properties.redirect) : null;
281
+ return this.properties.redirect ? new _Href.default(this.properties.redirect, "", this.origin, this.contextPath) : null;
267
282
  }
268
283
 
269
284
  /**
@@ -3,6 +3,7 @@ import Href from "../href/Href";
3
3
 
4
4
  import type { MessageParameters } from "../../i18n/types";
5
5
  import LayoutHintCollection from "../layouthint/LayoutHintCollection";
6
+ import { getBasePath } from "../../constants";
6
7
 
7
8
  /**
8
9
  */
@@ -33,12 +34,23 @@ export default class ErrorResponse {
33
34
  _error: Object;
34
35
  _connectKey: ?string;
35
36
 
37
+ _origin: string = "";
38
+ _contextPath: string = getBasePath();
39
+
36
40
  /**
37
41
  * Construct ErrorResponse
38
42
  */
39
- constructor(data: Object, connectKey?: string) {
43
+ constructor(
44
+ data: Object,
45
+ connectKey?: string,
46
+ origin?: string,
47
+ contextPath?: string,
48
+ ) {
40
49
  this._error = data;
41
50
  this._connectKey = connectKey;
51
+
52
+ this._origin = origin || "";
53
+ this._contextPath = contextPath || getBasePath();
42
54
  }
43
55
 
44
56
  /**
@@ -53,6 +65,18 @@ export default class ErrorResponse {
53
65
  return this._connectKey;
54
66
  }
55
67
 
68
+ /**
69
+ */
70
+ get origin(): string {
71
+ return this._origin;
72
+ }
73
+
74
+ /**
75
+ */
76
+ get contextPath(): string {
77
+ return this._contextPath;
78
+ }
79
+
56
80
  /**
57
81
  * Return error information
58
82
  */
@@ -161,9 +185,13 @@ export default class ErrorResponse {
161
185
  * Return response error redirect href
162
186
  */
163
187
  get redirectHref(): Href {
164
- // TODO SBO: origin and context
165
188
  if (this.response.redirect?.href) {
166
- return new Href(this.response.redirect?.href);
189
+ return new Href(
190
+ this.response.redirect?.href,
191
+ "",
192
+ this.origin,
193
+ this.contextPath,
194
+ );
167
195
  }
168
196
  return new Href();
169
197
  }
@@ -291,8 +319,9 @@ export default class ErrorResponse {
291
319
  * Get response url
292
320
  */
293
321
  get changePasswordHref(): ?Href {
294
- // TODO SBO: origin and context
295
- return this.properties.redirect ? new Href(this.properties.redirect) : null;
322
+ return this.properties.redirect
323
+ ? new Href(this.properties.redirect, "", this.origin, this.contextPath)
324
+ : null;
296
325
  }
297
326
 
298
327
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorResponse.js","names":["_Href","_interopRequireDefault","require","_LayoutHintCollection","ErrorResponse","constructor","data","connectKey","_defineProperty2","default","_error","_connectKey","key","error","status","NO_RESPONSE_CODE","DECIMAL_RADIX","parseInt","id","isResourceNotFound","name","message","responseMessage","response","title","titleMessage","undefined","titleId","titleProperties","properties","redirect","redirectText","text","redirectTextID","redirectTextProperties","redirectMessage","redirectHref","href","Href","layouthint","LayoutHintCollection","parameters","RESOURCE_NOT_FOUND_RESPONSE_CODE","isResourceNotFoundAfterReload","isReload","isUnauthorized","UNAUTHORIZED_RESPONSE_CODE","hasUnauthorizedStatus","hasUnauthorizedErrorId","hasLoginAction","action","isChangePassword","isConcurrentUser","isConcurrentError","isBlocked","isInvalidCredentials","isInvalidUsername","isTimeoutError","isRemoteServiceException","changePasswordHref","isBasicAuthentication","loginFailed","shouldThrowOnServer","exports"],"sources":["../../../src/models/error/ErrorResponse.js"],"sourcesContent":["// @flow\nimport Href from \"../href/Href\";\n\nimport type { MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n */\nexport type TitleObject = {\n +id: string,\n +properties?: Object,\n +message?: string,\n};\n/**\n */\nexport type RedirectTextObject = {\n +id: string,\n +properties?: Object,\n +message?: string,\n};\n\n/**\n */\nexport type RedirectObject = {\n +href: Href,\n +text?: RedirectTextObject,\n};\n\n/**\n * Error response model\n */\nexport default class ErrorResponse {\n _error: Object;\n _connectKey: ?string;\n\n /**\n * Construct ErrorResponse\n */\n constructor(data: Object, connectKey?: string) {\n this._error = data;\n this._connectKey = connectKey;\n }\n\n /**\n */\n set connectKey(key: string) {\n this._connectKey = key;\n }\n\n /**\n */\n get connectKey(): ?string {\n return this._connectKey;\n }\n\n /**\n * Return error information\n */\n get error(): Object {\n return this._error ?? {};\n }\n\n /**\n * Get request status code\n */\n get status(): number {\n const NO_RESPONSE_CODE = 0;\n const DECIMAL_RADIX = 10;\n return this.error.status\n ? parseInt(this.error.status, DECIMAL_RADIX)\n : NO_RESPONSE_CODE;\n }\n\n /**\n * Return error type information\n */\n get id(): string {\n if (this.isResourceNotFound && this.error.id !== \"Error.NotAuthorized\") {\n return \"Error.ResourceNotFound\";\n }\n\n return this.error.id || this.error.name || \"Error.GeneralError\";\n }\n\n /**\n */\n get message(): string {\n return this.error.message || this.id;\n }\n\n /**\n * Return response error message\n */\n get responseMessage(): string {\n return this.response.message || null;\n }\n\n /**\n * Return response error title\n */\n get title(): TitleObject {\n return this.response.title || null;\n }\n\n /**\n * Return response error title message\n */\n get titleMessage(): string {\n return this.response.title?.message || undefined;\n }\n\n /**\n * Return response error title Id\n */\n get titleId(): string {\n return this.response.title?.id || undefined;\n }\n\n /**\n * Return response error title properties\n */\n get titleProperties(): Object {\n return this.response.title?.properties || null;\n }\n\n /**\n * Return response error redirect\n */\n get redirect(): RedirectObject {\n return this.response.redirect || null;\n }\n /**\n * Return response error redirect text\n */\n get redirectText(): RedirectTextObject {\n return this.response?.redirect?.text || null;\n }\n\n /**\n * Return response error redirect text id\n */\n get redirectTextID(): string {\n return this.response.redirect?.text?.id || undefined;\n }\n\n /**\n * Return response error redirect text properties\n */\n get redirectTextProperties(): Object {\n return this.response.redirect?.text?.properties || null;\n }\n\n /**\n * Return response error redirect text message\n */\n get redirectMessage(): string {\n return this.response.redirect?.text?.message || undefined;\n }\n\n /**\n * Return response error redirect href\n */\n get redirectHref(): Href {\n // TODO SBO: origin and context\n if (this.response.redirect?.href) {\n return new Href(this.response.redirect?.href);\n }\n return new Href();\n }\n\n /**\n * Return error response layouthint\n */\n get layouthint(): LayoutHintCollection {\n return new LayoutHintCollection(this.response?.layouthint);\n }\n\n /**\n */\n get response(): Object {\n return this.error?.response?.error || {};\n }\n\n /**\n */\n get properties(): Object {\n const { properties } = this.error;\n if (properties != null && typeof properties == \"object\") {\n return properties;\n }\n\n return {};\n }\n\n /**\n * Return error parameters\n */\n get parameters(): ?MessageParameters {\n return this.error.parameters || null;\n }\n\n /**\n */\n get isResourceNotFound(): boolean {\n const RESOURCE_NOT_FOUND_RESPONSE_CODE = 404;\n\n return this.status === RESOURCE_NOT_FOUND_RESPONSE_CODE;\n }\n\n /**\n */\n get isResourceNotFoundAfterReload(): boolean {\n return this.isResourceNotFound && this.error.isReload;\n }\n\n /**\n * Check if the error message is an authorization error\n */\n get isUnauthorized(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n\n const hasUnauthorizedStatus = this.status === UNAUTHORIZED_RESPONSE_CODE;\n const hasUnauthorizedErrorId =\n this.id === \"Error.NotAuthorized\" ||\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidCredentials\";\n\n const hasLoginAction = this.error.action\n ? this.error.action.name === \"login\"\n : false;\n\n return hasUnauthorizedStatus || hasUnauthorizedErrorId || hasLoginAction;\n }\n\n /**\n */\n get isChangePassword(): boolean {\n return this.id === \"Error.ChangePasswordRequired\";\n }\n\n /**\n */\n get isConcurrentUser(): boolean {\n return this.id === \"Error.Authentication.ConcurrentUser\";\n }\n\n /**\n */\n get isConcurrentError(): boolean {\n return (\n this.id === \"Error.Case.ConcurrentModification\" ||\n this.id === \"Error.DataStore.ConcurrentModification\" ||\n this.id === \"Error.DataStore.RecordAlreadyExists\" ||\n this.id === \"Error.DataStore.RowCannotBeLocked\"\n );\n }\n\n /**\n */\n get isBlocked(): boolean {\n return this.id === \"Error.Authentication.BlockedUser\";\n }\n\n /**\n */\n get isInvalidCredentials(): boolean {\n return this.id === \"Error.Authentication.InvalidCredentials\";\n }\n\n /**\n */\n get isInvalidUsername(): boolean {\n return this.id === \"Error.Authentication.InvalidUsername\";\n }\n\n /**\n */\n get isTimeoutError(): boolean {\n return this.id === \"Error.CodemapLookup.InvalidToken\";\n }\n\n /**\n * A RemoteServiceException occurs when an exception occurs connecting to an external system,\n * for example when using the service list panels\n */\n get isRemoteServiceException(): boolean {\n return this.id === \"Error.RemoteServiceException\";\n }\n\n /**\n * Get response url\n */\n get changePasswordHref(): ?Href {\n // TODO SBO: origin and context\n return this.properties.redirect ? new Href(this.properties.redirect) : null;\n }\n\n /**\n * When no action information is present in the unauthorized response, for now we assume it is Basic Authentication\n */\n get isBasicAuthentication(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n return (\n this.isUnauthorized &&\n this.status === UNAUTHORIZED_RESPONSE_CODE &&\n this.response.error === \"No responseText\"\n );\n }\n\n /**\n * Retrieve a failed login attempt\n */\n get loginFailed(): boolean {\n return (\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidCredentials\"\n );\n }\n\n /**\n */\n get shouldThrowOnServer(): boolean {\n return !this.isChangePassword && !this.isBlocked && !this.isConcurrentUser;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ErrorResponse.js","names":["_Href","_interopRequireDefault","require","_LayoutHintCollection","_constants","ErrorResponse","constructor","data","connectKey","origin","contextPath","_defineProperty2","default","getBasePath","_error","_connectKey","_origin","_contextPath","key","error","status","NO_RESPONSE_CODE","DECIMAL_RADIX","parseInt","id","isResourceNotFound","name","message","responseMessage","response","title","titleMessage","undefined","titleId","titleProperties","properties","redirect","redirectText","text","redirectTextID","redirectTextProperties","redirectMessage","redirectHref","href","Href","layouthint","LayoutHintCollection","parameters","RESOURCE_NOT_FOUND_RESPONSE_CODE","isResourceNotFoundAfterReload","isReload","isUnauthorized","UNAUTHORIZED_RESPONSE_CODE","hasUnauthorizedStatus","hasUnauthorizedErrorId","hasLoginAction","action","isChangePassword","isConcurrentUser","isConcurrentError","isBlocked","isInvalidCredentials","isInvalidUsername","isTimeoutError","isRemoteServiceException","changePasswordHref","isBasicAuthentication","loginFailed","shouldThrowOnServer","exports"],"sources":["../../../src/models/error/ErrorResponse.js"],"sourcesContent":["// @flow\nimport Href from \"../href/Href\";\n\nimport type { MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { getBasePath } from \"../../constants\";\n\n/**\n */\nexport type TitleObject = {\n +id: string,\n +properties?: Object,\n +message?: string,\n};\n/**\n */\nexport type RedirectTextObject = {\n +id: string,\n +properties?: Object,\n +message?: string,\n};\n\n/**\n */\nexport type RedirectObject = {\n +href: Href,\n +text?: RedirectTextObject,\n};\n\n/**\n * Error response model\n */\nexport default class ErrorResponse {\n _error: Object;\n _connectKey: ?string;\n\n _origin: string = \"\";\n _contextPath: string = getBasePath();\n\n /**\n * Construct ErrorResponse\n */\n constructor(\n data: Object,\n connectKey?: string,\n origin?: string,\n contextPath?: string,\n ) {\n this._error = data;\n this._connectKey = connectKey;\n\n this._origin = origin || \"\";\n this._contextPath = contextPath || getBasePath();\n }\n\n /**\n */\n set connectKey(key: string) {\n this._connectKey = key;\n }\n\n /**\n */\n get connectKey(): ?string {\n return this._connectKey;\n }\n\n /**\n */\n get origin(): string {\n return this._origin;\n }\n\n /**\n */\n get contextPath(): string {\n return this._contextPath;\n }\n\n /**\n * Return error information\n */\n get error(): Object {\n return this._error ?? {};\n }\n\n /**\n * Get request status code\n */\n get status(): number {\n const NO_RESPONSE_CODE = 0;\n const DECIMAL_RADIX = 10;\n return this.error.status\n ? parseInt(this.error.status, DECIMAL_RADIX)\n : NO_RESPONSE_CODE;\n }\n\n /**\n * Return error type information\n */\n get id(): string {\n if (this.isResourceNotFound && this.error.id !== \"Error.NotAuthorized\") {\n return \"Error.ResourceNotFound\";\n }\n\n return this.error.id || this.error.name || \"Error.GeneralError\";\n }\n\n /**\n */\n get message(): string {\n return this.error.message || this.id;\n }\n\n /**\n * Return response error message\n */\n get responseMessage(): string {\n return this.response.message || null;\n }\n\n /**\n * Return response error title\n */\n get title(): TitleObject {\n return this.response.title || null;\n }\n\n /**\n * Return response error title message\n */\n get titleMessage(): string {\n return this.response.title?.message || undefined;\n }\n\n /**\n * Return response error title Id\n */\n get titleId(): string {\n return this.response.title?.id || undefined;\n }\n\n /**\n * Return response error title properties\n */\n get titleProperties(): Object {\n return this.response.title?.properties || null;\n }\n\n /**\n * Return response error redirect\n */\n get redirect(): RedirectObject {\n return this.response.redirect || null;\n }\n /**\n * Return response error redirect text\n */\n get redirectText(): RedirectTextObject {\n return this.response?.redirect?.text || null;\n }\n\n /**\n * Return response error redirect text id\n */\n get redirectTextID(): string {\n return this.response.redirect?.text?.id || undefined;\n }\n\n /**\n * Return response error redirect text properties\n */\n get redirectTextProperties(): Object {\n return this.response.redirect?.text?.properties || null;\n }\n\n /**\n * Return response error redirect text message\n */\n get redirectMessage(): string {\n return this.response.redirect?.text?.message || undefined;\n }\n\n /**\n * Return response error redirect href\n */\n get redirectHref(): Href {\n if (this.response.redirect?.href) {\n return new Href(\n this.response.redirect?.href,\n \"\",\n this.origin,\n this.contextPath,\n );\n }\n return new Href();\n }\n\n /**\n * Return error response layouthint\n */\n get layouthint(): LayoutHintCollection {\n return new LayoutHintCollection(this.response?.layouthint);\n }\n\n /**\n */\n get response(): Object {\n return this.error?.response?.error || {};\n }\n\n /**\n */\n get properties(): Object {\n const { properties } = this.error;\n if (properties != null && typeof properties == \"object\") {\n return properties;\n }\n\n return {};\n }\n\n /**\n * Return error parameters\n */\n get parameters(): ?MessageParameters {\n return this.error.parameters || null;\n }\n\n /**\n */\n get isResourceNotFound(): boolean {\n const RESOURCE_NOT_FOUND_RESPONSE_CODE = 404;\n\n return this.status === RESOURCE_NOT_FOUND_RESPONSE_CODE;\n }\n\n /**\n */\n get isResourceNotFoundAfterReload(): boolean {\n return this.isResourceNotFound && this.error.isReload;\n }\n\n /**\n * Check if the error message is an authorization error\n */\n get isUnauthorized(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n\n const hasUnauthorizedStatus = this.status === UNAUTHORIZED_RESPONSE_CODE;\n const hasUnauthorizedErrorId =\n this.id === \"Error.NotAuthorized\" ||\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidCredentials\";\n\n const hasLoginAction = this.error.action\n ? this.error.action.name === \"login\"\n : false;\n\n return hasUnauthorizedStatus || hasUnauthorizedErrorId || hasLoginAction;\n }\n\n /**\n */\n get isChangePassword(): boolean {\n return this.id === \"Error.ChangePasswordRequired\";\n }\n\n /**\n */\n get isConcurrentUser(): boolean {\n return this.id === \"Error.Authentication.ConcurrentUser\";\n }\n\n /**\n */\n get isConcurrentError(): boolean {\n return (\n this.id === \"Error.Case.ConcurrentModification\" ||\n this.id === \"Error.DataStore.ConcurrentModification\" ||\n this.id === \"Error.DataStore.RecordAlreadyExists\" ||\n this.id === \"Error.DataStore.RowCannotBeLocked\"\n );\n }\n\n /**\n */\n get isBlocked(): boolean {\n return this.id === \"Error.Authentication.BlockedUser\";\n }\n\n /**\n */\n get isInvalidCredentials(): boolean {\n return this.id === \"Error.Authentication.InvalidCredentials\";\n }\n\n /**\n */\n get isInvalidUsername(): boolean {\n return this.id === \"Error.Authentication.InvalidUsername\";\n }\n\n /**\n */\n get isTimeoutError(): boolean {\n return this.id === \"Error.CodemapLookup.InvalidToken\";\n }\n\n /**\n * A RemoteServiceException occurs when an exception occurs connecting to an external system,\n * for example when using the service list panels\n */\n get isRemoteServiceException(): boolean {\n return this.id === \"Error.RemoteServiceException\";\n }\n\n /**\n * Get response url\n */\n get changePasswordHref(): ?Href {\n return this.properties.redirect\n ? new Href(this.properties.redirect, \"\", this.origin, this.contextPath)\n : null;\n }\n\n /**\n * When no action information is present in the unauthorized response, for now we assume it is Basic Authentication\n */\n get isBasicAuthentication(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n return (\n this.isUnauthorized &&\n this.status === UNAUTHORIZED_RESPONSE_CODE &&\n this.response.error === \"No responseText\"\n );\n }\n\n /**\n * Retrieve a failed login attempt\n */\n get loginFailed(): boolean {\n return (\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidCredentials\"\n );\n }\n\n /**\n */\n get shouldThrowOnServer(): boolean {\n return !this.isChangePassword && !this.isBlocked && !this.isConcurrentUser;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -87,10 +87,24 @@ class Href {
87
87
  } else if (typeof href._hash === "string") {
88
88
  this.hash = href._hash;
89
89
  }
90
- if (href.state) {
91
- this.state = href.state || null;
90
+ if (typeof href.state === "object") {
91
+ this.setStateFromLocationOrObject(href.state);
92
92
  } else if (typeof href._state === "object") {
93
- this.state = href._state;
93
+ this.setStateFromLocationOrObject(href._state);
94
+ }
95
+ }
96
+
97
+ /**
98
+ */
99
+ setStateFromLocationOrObject(state) {
100
+ if (state != null) {
101
+ this.state = state;
102
+ if (typeof state.contextPath === "string") {
103
+ this.contextPath = state.contextPath;
104
+ }
105
+ if (typeof state.origin === "string") {
106
+ this.origin = state.origin;
107
+ }
94
108
  }
95
109
  }
96
110
 
@@ -470,7 +484,10 @@ class Href {
470
484
  pathname: this.path,
471
485
  search: this.querystring.length > 0 ? `?${this.querystring}` : "",
472
486
  hash: this.hash.length > 0 ? `#${this.hash}` : "",
473
- state: this.state
487
+ state: {
488
+ contextPath: this.contextPath,
489
+ ...this.state
490
+ }
474
491
  };
475
492
  }
476
493
  }
@@ -105,10 +105,24 @@ class Href {
105
105
  this.hash = href._hash;
106
106
  }
107
107
 
108
- if (href.state) {
109
- this.state = href.state || null;
108
+ if (typeof href.state === "object") {
109
+ this.setStateFromLocationOrObject(href.state);
110
110
  } else if (typeof href._state === "object") {
111
- this.state = href._state;
111
+ this.setStateFromLocationOrObject(href._state);
112
+ }
113
+ }
114
+
115
+ /**
116
+ */
117
+ setStateFromLocationOrObject(state?: any) {
118
+ if (state != null) {
119
+ this.state = state;
120
+ if (typeof state.contextPath === "string") {
121
+ this.contextPath = state.contextPath;
122
+ }
123
+ if (typeof state.origin === "string") {
124
+ this.origin = state.origin;
125
+ }
112
126
  }
113
127
  }
114
128
 
@@ -531,7 +545,10 @@ class Href {
531
545
  pathname: this.path,
532
546
  search: this.querystring.length > 0 ? `?${this.querystring}` : "",
533
547
  hash: this.hash.length > 0 ? `#${this.hash}` : "",
534
- state: this.state,
548
+ state: {
549
+ contextPath: this.contextPath,
550
+ ...this.state,
551
+ },
535
552
  };
536
553
  }
537
554
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Href.js","names":["_constants","require","_Parameter","_interopRequireDefault","_exceptions","Href","constructor","href","resourcetype","origin","contextPath","_defineProperty2","default","HTTP_METHODS","GET","getBasePath","setFromHref","setFromString","setFromLocationOrObject","path","parameters","hash","state","_origin","_contextPath","pathname","_path","search","addParametersFromString","Array","isArray","_parameters","_context","_map","call","param","addParameter","_name","_value","_prefix","getHashFromString","_hash","_state","getPathFromString","isChangePassword","_context2","_includes","isCamelRoute","_startsWith","checkAbsoluteUrl","checkAbsolute","RegExp","test","isExternal","hrefNoHash","substring","indexOf","split","arguments","length","undefined","substr","forEach","paramFromString","Parameter","fromString","setParameter","name","value","prefix","removeParameter","push","getParameter","_context3","_find","hasParameter","method","_method","_context4","valueToRemove","newValue","filter","val","join","_context5","_filter","getQuerystring","_context6","_context7","withPrefix","toQuerystring","getQuerystringForModularUI","_context8","_context9","isModUIParameter","querystring","setState","_resourcetype","absolutepath","absolutehref","absolutehrefPrefixedQuerystring","startsWith","thisPath","otherPath","equals","equalsWithParameters","_context10","thisParams","toString","every","IllegalArgumentException","isContent","_context11","CONTENT_PATH","getReferenceHash","_referenceHash","setReferenceHash","referenceHash","toLocation","_default","exports"],"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 _referenceHash: ?number;\n _origin: string = \"\";\n _contextPath: string = getBasePath();\n\n /**\n * Create a Href\n */\n constructor(\n href?: HrefInput,\n resourcetype?: string,\n origin?: string,\n contextPath?: string,\n ) {\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 if (typeof origin === \"string\") {\n this.origin = origin;\n }\n\n if (typeof contextPath === \"string\") {\n this.contextPath = contextPath;\n }\n }\n\n /**\n * Set parameters from Href model input\n */\n setFromHref(href: Href) {\n this.origin = href.origin;\n this.contextPath = href.contextPath;\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 // $FlowFixMe\n if (typeof href._origin === \"string\") {\n this.origin = href._origin;\n }\n // $FlowFixMe\n if (typeof href._contextPath === \"string\") {\n this.contextPath = href._contextPath;\n }\n\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 hrefNoHash = href.includes(\"#\")\n ? href.substring(0, href.indexOf(\"#\"))\n : href;\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, value: ?string): Href {\n if (value !== undefined) {\n const valueToRemove = value;\n\n this._parameters = this._parameters.map((param) => {\n if (param.prefix === prefix && param.name === name) {\n const newValue = param.value\n ?.split(\",\")\n .filter((val) => val !== valueToRemove)\n .join(\",\");\n return new Parameter(param.prefix, param.name, newValue);\n }\n return param;\n });\n } else {\n this._parameters = this._parameters.filter(\n (param) => param.prefix !== prefix || param.name !== name,\n );\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 && param.value !== \"\")\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 * Retrieve the origin (e.g. http://example.com:18080)<br>\n * Empty when the default must be used\n */\n get origin(): string {\n return this._origin ?? \"\";\n }\n\n /**\n * Set the origin (e.g. http://example.com:18080)\n */\n set origin(origin: string) {\n this._origin = origin;\n }\n\n /**\n * Get the context path\n */\n get contextPath(): string {\n return this._contextPath;\n }\n\n /**\n * Set the context path if different from default\n */\n set contextPath(contextPath: string) {\n this._contextPath = contextPath;\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 this.origin + this.contextPath + 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 */\n getReferenceHash(): ?number {\n return this._referenceHash;\n }\n\n /**\n */\n setReferenceHash(referenceHash: number) {\n this._referenceHash = referenceHash;\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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","ignoreList":[]}
1
+ {"version":3,"file":"Href.js","names":["_constants","require","_Parameter","_interopRequireDefault","_exceptions","Href","constructor","href","resourcetype","origin","contextPath","_defineProperty2","default","HTTP_METHODS","GET","getBasePath","setFromHref","setFromString","setFromLocationOrObject","path","parameters","hash","state","_origin","_contextPath","pathname","_path","search","addParametersFromString","Array","isArray","_parameters","_context","_map","call","param","addParameter","_name","_value","_prefix","getHashFromString","_hash","setStateFromLocationOrObject","_state","getPathFromString","isChangePassword","_context2","_includes","isCamelRoute","_startsWith","checkAbsoluteUrl","checkAbsolute","RegExp","test","isExternal","hrefNoHash","substring","indexOf","split","arguments","length","undefined","substr","forEach","paramFromString","Parameter","fromString","setParameter","name","value","prefix","removeParameter","push","getParameter","_context3","_find","hasParameter","method","_method","_context4","valueToRemove","newValue","filter","val","join","_context5","_filter","getQuerystring","_context6","_context7","withPrefix","toQuerystring","getQuerystringForModularUI","_context8","_context9","isModUIParameter","querystring","setState","_resourcetype","absolutepath","absolutehref","absolutehrefPrefixedQuerystring","startsWith","thisPath","otherPath","equals","equalsWithParameters","_context10","thisParams","toString","every","IllegalArgumentException","isContent","_context11","CONTENT_PATH","getReferenceHash","_referenceHash","setReferenceHash","referenceHash","toLocation","_default","exports"],"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 _referenceHash: ?number;\n _origin: string = \"\";\n _contextPath: string = getBasePath();\n\n /**\n * Create a Href\n */\n constructor(\n href?: HrefInput,\n resourcetype?: string,\n origin?: string,\n contextPath?: string,\n ) {\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 if (typeof origin === \"string\") {\n this.origin = origin;\n }\n\n if (typeof contextPath === \"string\") {\n this.contextPath = contextPath;\n }\n }\n\n /**\n * Set parameters from Href model input\n */\n setFromHref(href: Href) {\n this.origin = href.origin;\n this.contextPath = href.contextPath;\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 // $FlowFixMe\n if (typeof href._origin === \"string\") {\n this.origin = href._origin;\n }\n // $FlowFixMe\n if (typeof href._contextPath === \"string\") {\n this.contextPath = href._contextPath;\n }\n\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 (typeof href.state === \"object\") {\n this.setStateFromLocationOrObject(href.state);\n } else if (typeof href._state === \"object\") {\n this.setStateFromLocationOrObject(href._state);\n }\n }\n\n /**\n */\n setStateFromLocationOrObject(state?: any) {\n if (state != null) {\n this.state = state;\n if (typeof state.contextPath === \"string\") {\n this.contextPath = state.contextPath;\n }\n if (typeof state.origin === \"string\") {\n this.origin = state.origin;\n }\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 hrefNoHash = href.includes(\"#\")\n ? href.substring(0, href.indexOf(\"#\"))\n : href;\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, value: ?string): Href {\n if (value !== undefined) {\n const valueToRemove = value;\n\n this._parameters = this._parameters.map((param) => {\n if (param.prefix === prefix && param.name === name) {\n const newValue = param.value\n ?.split(\",\")\n .filter((val) => val !== valueToRemove)\n .join(\",\");\n return new Parameter(param.prefix, param.name, newValue);\n }\n return param;\n });\n } else {\n this._parameters = this._parameters.filter(\n (param) => param.prefix !== prefix || param.name !== name,\n );\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 && param.value !== \"\")\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 * Retrieve the origin (e.g. http://example.com:18080)<br>\n * Empty when the default must be used\n */\n get origin(): string {\n return this._origin ?? \"\";\n }\n\n /**\n * Set the origin (e.g. http://example.com:18080)\n */\n set origin(origin: string) {\n this._origin = origin;\n }\n\n /**\n * Get the context path\n */\n get contextPath(): string {\n return this._contextPath;\n }\n\n /**\n * Set the context path if different from default\n */\n set contextPath(contextPath: string) {\n this._contextPath = contextPath;\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 this.origin + this.contextPath + 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 */\n getReferenceHash(): ?number {\n return this._referenceHash;\n }\n\n /**\n */\n setReferenceHash(referenceHash: number) {\n this._referenceHash = referenceHash;\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: {\n contextPath: this.contextPath,\n ...this.state,\n },\n };\n }\n}\n\nexport default Href;\n"],"mappings":"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","ignoreList":[]}