admins-components 9.0.33 → 9.0.35

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 (216) hide show
  1. package/dist/admins-components.js +35 -34
  2. package/dist/admins-components100.js +50 -80
  3. package/dist/admins-components100.js.map +1 -1
  4. package/dist/admins-components101.js +78 -109
  5. package/dist/admins-components101.js.map +1 -1
  6. package/dist/admins-components102.js +110 -44
  7. package/dist/admins-components102.js.map +1 -1
  8. package/dist/admins-components103.js +42 -101
  9. package/dist/admins-components103.js.map +1 -1
  10. package/dist/admins-components104.js +104 -18
  11. package/dist/admins-components104.js.map +1 -1
  12. package/dist/admins-components105.js +19 -6
  13. package/dist/admins-components105.js.map +1 -1
  14. package/dist/admins-components106.js +5 -250
  15. package/dist/admins-components106.js.map +1 -1
  16. package/dist/admins-components107.js +250 -25
  17. package/dist/admins-components107.js.map +1 -1
  18. package/dist/admins-components108.js +26 -27
  19. package/dist/admins-components108.js.map +1 -1
  20. package/dist/admins-components109.js +25 -169
  21. package/dist/admins-components109.js.map +1 -1
  22. package/dist/admins-components110.js +165 -61
  23. package/dist/admins-components110.js.map +1 -1
  24. package/dist/admins-components111.js +61 -60
  25. package/dist/admins-components111.js.map +1 -1
  26. package/dist/admins-components112.js +65 -28
  27. package/dist/admins-components112.js.map +1 -1
  28. package/dist/admins-components113.js +28 -14
  29. package/dist/admins-components113.js.map +1 -1
  30. package/dist/admins-components114.js +15 -26
  31. package/dist/admins-components114.js.map +1 -1
  32. package/dist/admins-components115.js +26 -8
  33. package/dist/admins-components115.js.map +1 -1
  34. package/dist/admins-components116.js +9 -4
  35. package/dist/admins-components116.js.map +1 -1
  36. package/dist/admins-components117.js +4 -3
  37. package/dist/admins-components117.js.map +1 -1
  38. package/dist/admins-components118.js +2 -2
  39. package/dist/admins-components118.js.map +1 -1
  40. package/dist/admins-components119.js +3 -21
  41. package/dist/admins-components119.js.map +1 -1
  42. package/dist/admins-components120.js +21 -14
  43. package/dist/admins-components120.js.map +1 -1
  44. package/dist/admins-components121.js +14 -8
  45. package/dist/admins-components121.js.map +1 -1
  46. package/dist/admins-components122.js +8 -13
  47. package/dist/admins-components122.js.map +1 -1
  48. package/dist/admins-components123.js +11 -24
  49. package/dist/admins-components123.js.map +1 -1
  50. package/dist/admins-components124.js +24 -81
  51. package/dist/admins-components124.js.map +1 -1
  52. package/dist/admins-components125.js +82 -10
  53. package/dist/admins-components125.js.map +1 -1
  54. package/dist/admins-components126.js +10 -4
  55. package/dist/admins-components126.js.map +1 -1
  56. package/dist/admins-components127.js +5 -8
  57. package/dist/admins-components127.js.map +1 -1
  58. package/dist/admins-components128.js +7 -6
  59. package/dist/admins-components128.js.map +1 -1
  60. package/dist/admins-components129.js +6 -5
  61. package/dist/admins-components129.js.map +1 -1
  62. package/dist/admins-components130.js +4 -13
  63. package/dist/admins-components130.js.map +1 -1
  64. package/dist/admins-components131.js +11 -9
  65. package/dist/admins-components131.js.map +1 -1
  66. package/dist/admins-components132.js +13 -30
  67. package/dist/admins-components132.js.map +1 -1
  68. package/dist/admins-components133.js +30 -4
  69. package/dist/admins-components133.js.map +1 -1
  70. package/dist/admins-components134.js +4 -29
  71. package/dist/admins-components134.js.map +1 -1
  72. package/dist/admins-components135.js +29 -5
  73. package/dist/admins-components135.js.map +1 -1
  74. package/dist/admins-components136.js +3 -3
  75. package/dist/admins-components136.js.map +1 -1
  76. package/dist/admins-components137.js +4 -7
  77. package/dist/admins-components137.js.map +1 -1
  78. package/dist/admins-components138.js +7 -73
  79. package/dist/admins-components138.js.map +1 -1
  80. package/dist/admins-components139.js +71 -26
  81. package/dist/admins-components139.js.map +1 -1
  82. package/dist/admins-components140.js +27 -57
  83. package/dist/admins-components140.js.map +1 -1
  84. package/dist/admins-components141.js +57 -22
  85. package/dist/admins-components141.js.map +1 -1
  86. package/dist/admins-components142.js +21 -47
  87. package/dist/admins-components142.js.map +1 -1
  88. package/dist/admins-components143.js +48 -29
  89. package/dist/admins-components143.js.map +1 -1
  90. package/dist/admins-components144.js +31 -3
  91. package/dist/admins-components144.js.map +1 -1
  92. package/dist/admins-components145.js +3 -179
  93. package/dist/admins-components145.js.map +1 -1
  94. package/dist/admins-components146.js +176 -43
  95. package/dist/admins-components146.js.map +1 -1
  96. package/dist/admins-components147.js +44 -35
  97. package/dist/admins-components147.js.map +1 -1
  98. package/dist/admins-components148.js +34 -43
  99. package/dist/admins-components148.js.map +1 -1
  100. package/dist/admins-components149.js +42 -137
  101. package/dist/admins-components149.js.map +1 -1
  102. package/dist/admins-components150.js +134 -51
  103. package/dist/admins-components150.js.map +1 -1
  104. package/dist/admins-components151.js +58 -7
  105. package/dist/admins-components151.js.map +1 -1
  106. package/dist/admins-components152.js +6 -5
  107. package/dist/admins-components152.js.map +1 -1
  108. package/dist/admins-components153.js +6 -76
  109. package/dist/admins-components153.js.map +1 -1
  110. package/dist/admins-components154.js +76 -29
  111. package/dist/admins-components154.js.map +1 -1
  112. package/dist/admins-components155.js +29 -1931
  113. package/dist/admins-components155.js.map +1 -1
  114. package/dist/admins-components156.js +1748 -24628
  115. package/dist/admins-components156.js.map +1 -1
  116. package/dist/admins-components157.js +24810 -8
  117. package/dist/admins-components157.js.map +1 -1
  118. package/dist/admins-components158.js +9 -7
  119. package/dist/admins-components158.js.map +1 -0
  120. package/dist/admins-components159.js +7 -142
  121. package/dist/admins-components160.js +141 -8
  122. package/dist/admins-components160.js.map +1 -1
  123. package/dist/admins-components161.js +3 -3
  124. package/dist/admins-components161.js.map +1 -1
  125. package/dist/admins-components162.js +10 -0
  126. package/dist/admins-components162.js.map +1 -0
  127. package/dist/admins-components164.js +161 -44
  128. package/dist/admins-components164.js.map +1 -1
  129. package/dist/admins-components165.js +50 -8
  130. package/dist/admins-components165.js.map +1 -1
  131. package/dist/admins-components166.js +8 -49
  132. package/dist/admins-components166.js.map +1 -1
  133. package/dist/admins-components167.js +50 -6
  134. package/dist/admins-components167.js.map +1 -1
  135. package/dist/admins-components168.js +6 -80
  136. package/dist/admins-components168.js.map +1 -1
  137. package/dist/admins-components169.js +70 -48
  138. package/dist/admins-components169.js.map +1 -1
  139. package/dist/admins-components170.js +30 -31
  140. package/dist/admins-components170.js.map +1 -1
  141. package/dist/admins-components171.js +58 -8
  142. package/dist/admins-components171.js.map +1 -1
  143. package/dist/admins-components172.js +8 -51
  144. package/dist/admins-components172.js.map +1 -1
  145. package/dist/admins-components173.js +51 -8
  146. package/dist/admins-components173.js.map +1 -1
  147. package/dist/admins-components174.js +10 -0
  148. package/dist/admins-components174.js.map +1 -0
  149. package/dist/{admins-components175.js → admins-components176.js} +3 -3
  150. package/dist/{admins-components175.js.map → admins-components176.js.map} +1 -1
  151. package/dist/admins-components21.js +114 -114
  152. package/dist/admins-components21.js.map +1 -1
  153. package/dist/admins-components22.js.map +1 -1
  154. package/dist/admins-components73.js +7 -122
  155. package/dist/admins-components73.js.map +1 -1
  156. package/dist/admins-components74.js +127 -0
  157. package/dist/admins-components74.js.map +1 -0
  158. package/dist/admins-components76.js +6 -59
  159. package/dist/admins-components76.js.map +1 -1
  160. package/dist/admins-components77.js +55 -217
  161. package/dist/admins-components77.js.map +1 -1
  162. package/dist/admins-components78.js +73 -0
  163. package/dist/admins-components78.js.map +1 -0
  164. package/dist/admins-components79.js +238 -6
  165. package/dist/admins-components79.js.map +1 -1
  166. package/dist/admins-components81.js +6 -251
  167. package/dist/admins-components81.js.map +1 -1
  168. package/dist/admins-components82.js +246 -0
  169. package/dist/admins-components82.js.map +1 -0
  170. package/dist/admins-components84.js +6 -37
  171. package/dist/admins-components84.js.map +1 -1
  172. package/dist/admins-components85.js +38 -0
  173. package/dist/{admins-components86.js.map → admins-components85.js.map} +1 -1
  174. package/dist/admins-components87.js +6 -198
  175. package/dist/admins-components87.js.map +1 -1
  176. package/dist/admins-components88.js +200 -0
  177. package/dist/admins-components88.js.map +1 -0
  178. package/dist/admins-components90.js +6 -16
  179. package/dist/admins-components90.js.map +1 -1
  180. package/dist/admins-components91.js +16 -75
  181. package/dist/admins-components91.js.map +1 -1
  182. package/dist/admins-components92.js +76 -0
  183. package/dist/{admins-components93.js.map → admins-components92.js.map} +1 -1
  184. package/dist/admins-components94.js +6 -203
  185. package/dist/admins-components94.js.map +1 -1
  186. package/dist/admins-components95.js +204 -0
  187. package/dist/admins-components95.js.map +1 -0
  188. package/dist/admins-components97.js +6 -3
  189. package/dist/admins-components97.js.map +1 -1
  190. package/dist/admins-components98.js +3 -3
  191. package/dist/admins-components98.js.map +1 -1
  192. package/dist/admins-components99.js +3 -52
  193. package/dist/admins-components99.js.map +1 -1
  194. package/dist/main.css +1 -1
  195. package/dist/main.css.map +1 -1
  196. package/dist/src/components/data-table/FiltersHistory.vue.d.ts +10 -8
  197. package/dist/src/index.d.ts +3 -1
  198. package/dist/src/styles/components/data-table/filters-history.scss_vue_type_style_index_0_src_true_lang.css +1 -1
  199. package/dist/src/utils/dataFilters.d.ts +6 -2
  200. package/dist/src/utils/storageKey.d.ts +4 -0
  201. package/package.json +1 -1
  202. package/dist/admins-components159.js.map +0 -1
  203. package/dist/admins-components163.js +0 -169
  204. package/dist/admins-components163.js.map +0 -1
  205. package/dist/admins-components75.js +0 -7
  206. package/dist/admins-components75.js.map +0 -1
  207. package/dist/admins-components80.js +0 -53
  208. package/dist/admins-components80.js.map +0 -1
  209. package/dist/admins-components83.js +0 -7
  210. package/dist/admins-components83.js.map +0 -1
  211. package/dist/admins-components86.js +0 -7
  212. package/dist/admins-components89.js +0 -7
  213. package/dist/admins-components89.js.map +0 -1
  214. package/dist/admins-components93.js +0 -7
  215. package/dist/admins-components96.js +0 -7
  216. package/dist/admins-components96.js.map +0 -1
@@ -1,48 +1,114 @@
1
- import { FetchDetails as e, Methods as t, initRequest as n } from "./admins-components101.js";
2
- //#region src/services/articleEditorService.ts
3
- function r(e) {
4
- return new i(e);
5
- }
6
- var i = class {
7
- articleEditorBackendUrl;
8
- baseUrl;
9
- searchPosts;
10
- whoAmI;
11
- getPostsConfig;
12
- getImagesConfig;
13
- getPresenceConfig;
14
- sites;
15
- authorsSearch;
16
- authorsDetailsByIds;
17
- articleSeriesSearch;
18
- articleSeriesDetailsByIds;
19
- columnsSearch;
20
- columnsDetailsByIds;
21
- digitalSupplementsSearch;
22
- digitalSupplementsDetailsByIds;
23
- partnersSearch;
24
- partnersDetailsByIds;
25
- tagsSearch;
26
- tagsDetailsByIds;
27
- getRelationsCount;
28
- errorMap(e) {
29
- return new Map([[400, `${e} lekérdezése ismeretlen 400 hiba!`], [500, `${e} lekérdezése ismeretlen 500 hiba!`]]);
30
- }
31
- postRequest(r, i, a) {
32
- return n(new e(this.baseUrl, r, t.POST, this.errorMap(a)), i, void 0, void 0);
33
- }
34
- searchRequest(e, t) {
35
- return this.postRequest(`admin/${e}/search`, {}, t);
36
- }
37
- detailsByIdsRequest(e, t) {
38
- return this.postRequest(`admin/${e}/detailsByIds`, { ids: [] }, t);
1
+ import { toast as e } from "./admins-components53.js";
2
+ import { isIpInUrl as t } from "./admins-components98.js";
3
+ import { createNativeFetch as n } from "./admins-components101.js";
4
+ import { ref as r, watch as i } from "vue";
5
+ //#region src/services/services.ts
6
+ var a = class {
7
+ title;
8
+ message;
9
+ errorCode;
10
+ constructor(e, t, n) {
11
+ this.title = e, this.message = t, this.errorCode = n;
39
12
  }
40
- constructor(r) {
41
- this.articleEditorBackendUrl = r, this.baseUrl = this.articleEditorBackendUrl, this.searchPosts = n(new e(this.baseUrl, "admin/Posts/searchPosts", t.POST, this.errorMap("Cikk lekérdezés")), {}, void 0, void 0), this.whoAmI = n(new e(this.baseUrl, "whoami", t.GET, this.errorMap("Felhasználói adatok lekérdezése")), void 0, void 0, void 0), this.getPostsConfig = n(new e(this.baseUrl, "/admin/Widgets/{name}", t.GET, this.errorMap("Search Posts Widget konfiguráció lekérése")), void 0, { name: "" }, void 0), this.getImagesConfig = n(new e(this.baseUrl, "/admin/Widgets/{name}", t.GET, this.errorMap("Widget konfiguráció lekérése")), void 0, { name: "" }, void 0), this.getPresenceConfig = n(new e(this.baseUrl, "/admin/Widgets/{name}", t.GET, this.errorMap("Widget konfiguráció lekérése")), void 0, { name: "" }, void 0), this.sites = n(new e(this.baseUrl, "/admin/sites", t.GET, this.errorMap("Site lekérése")), void 0, void 0, void 0), this.authorsSearch = this.searchRequest("Authors", "Szerzők"), this.authorsDetailsByIds = this.detailsByIdsRequest("Authors", "Szerzők"), this.articleSeriesSearch = this.searchRequest("ArticleSeries", "Cikk sorozatok"), this.articleSeriesDetailsByIds = this.detailsByIdsRequest("ArticleSeries", "Cikk sorozatok"), this.partnersSearch = this.searchRequest("Partners", "Partnerek"), this.partnersDetailsByIds = this.detailsByIdsRequest("Partners", "Partnerek"), this.columnsSearch = this.searchRequest("Columns", "Rovatok"), this.columnsDetailsByIds = this.detailsByIdsRequest("Columns", "Rovatok"), this.digitalSupplementsSearch = this.searchRequest("DigitalSupplements", "Digitális kiegészítők"), this.digitalSupplementsDetailsByIds = this.detailsByIdsRequest("DigitalSupplements", "Digitális kiegészítők"), this.tagsSearch = this.searchRequest("Tags", "Címkék"), this.tagsDetailsByIds = this.detailsByIdsRequest("Tags", "Címkék"), this.getRelationsCount = this.postRequest("admin/Relations/byIds", {
42
- ids: [],
43
- outputEntityType: ""
44
- }, "Kapcsolatok számlálása");
13
+ }, o = /* @__PURE__ */ function(e) {
14
+ return e[e.GET = 0] = "GET", e[e.GET_TEXT = 1] = "GET_TEXT", e[e.POST = 2] = "POST", e[e.POST_TEXT = 3] = "POST_TEXT", e[e.PUT = 4] = "PUT", e[e.PUT_TEXT = 5] = "PUT_TEXT", e[e.PATCH = 6] = "PATCH", e[e.DELETE = 7] = "DELETE", e;
15
+ }({}), s = class {
16
+ relativeUrl;
17
+ method;
18
+ fetchMethod;
19
+ constructor(r, i, a, s, c = "application/json", l) {
20
+ this.relativeUrl = i, this.method = a, this.fetchMethod = n({
21
+ baseUrl: r,
22
+ fetchOptions: { credentials: r.indexOf("localhost") != -1 || t(r) ? "omit" : "include" },
23
+ options: {
24
+ immediate: !1,
25
+ beforeFetch: (e) => {
26
+ e.options.headers = {
27
+ ...c ? { "Content-Type": c } : {},
28
+ ...l ?? {}
29
+ };
30
+ },
31
+ onFetchError: (t) => {
32
+ if (t.error?.name === "AbortError") return t;
33
+ let n = "Ismeretlen eredetű hiba!", r = !t.response;
34
+ return t.response && !t.response.ok && (r = !0, n = s.get(t.response.status), n || (n = `${o[a]} for Call: ${i} with Status: ${t.response.status} has no registered errorMessages!`, console.error(n))), r && e.error("Hiba a szerver elérése közben...", n), t;
35
+ },
36
+ afterFetch: (e) => e
37
+ }
38
+ });
45
39
  }
46
40
  };
41
+ function c(e, t, n, o) {
42
+ let s = {};
43
+ s.payload = r(t), s.routeParams = r(n), s.queryParams = r(o), s.isFetching = r(!1), s.data = r();
44
+ let c = null, l = null;
45
+ return s.execute = () => {
46
+ c &&= (c(), null), l &&= (l(), null), s.fetch && s.fetch.canAbort.value && s.fetch.abort();
47
+ let t = `${u(e.relativeUrl, s.routeParams.value, s.queryParams.value)}`, n = e.fetchMethod(t), r, o = n.isFetching;
48
+ async function d() {
49
+ if (f() && s.successCallback) s.successCallback(s.data.value);
50
+ else if (!f() && s.errorCallback) {
51
+ console.log(s.fetch.error.value);
52
+ let e;
53
+ if (s.fetch.response.value && s.fetch.response.value.body) {
54
+ let { value: t, done: n } = await s.fetch.response.value.body.getReader().read();
55
+ !n && t && (e = new TextDecoder().decode(t), console.log("Response Body:", e));
56
+ }
57
+ s.errorCallback(new a(s.fetch.error.value, e, s.fetch.statusCode.value ? s.fetch.statusCode.value : void 0));
58
+ }
59
+ s.finallyCallback && s.finallyCallback();
60
+ }
61
+ function f() {
62
+ return s.fetch.statusCode && s.fetch.statusCode.value >= 200 && s.fetch.statusCode.value <= 299;
63
+ }
64
+ switch (e.method) {
65
+ case 0:
66
+ r = n.get().json().data;
67
+ break;
68
+ case 1:
69
+ r = n.get().text().data;
70
+ break;
71
+ case 4:
72
+ r = n.put(s.payload).json().data;
73
+ break;
74
+ case 5:
75
+ r = n.put(s.payload).text().data;
76
+ break;
77
+ case 3:
78
+ r = n.post(s.payload).text().data;
79
+ break;
80
+ case 2:
81
+ r = n.post(s.payload).json().data;
82
+ break;
83
+ case 6:
84
+ r = n.patch(s.payload).json().data;
85
+ break;
86
+ case 7:
87
+ r = n.delete(s.payload).json().data;
88
+ break;
89
+ default: throw Error(`Method: ${e.method} is not implemented!`);
90
+ }
91
+ c = i(r, (e) => {
92
+ s.data.value = e;
93
+ }), l = i(o, (e) => {
94
+ s.isFetching.value = e, e || d();
95
+ }), s.fetch = n, n.execute();
96
+ }, s;
97
+ }
98
+ function l(e) {
99
+ return e ? Object.keys(e).filter((t) => e[t] !== void 0 && e[t] !== null).map((t) => `${encodeURIComponent(t)}=${encodeURIComponent(String(e[t]))}`).join("&") : "";
100
+ }
101
+ function u(e, t, n) {
102
+ let r = e;
103
+ if (r ||= "", r.slice(-1) === "/" && (r = r.substring(0, r.length - 1)), t && Object.keys(t).forEach((e) => {
104
+ if (r.indexOf(`{${e}}`) === -1) throw window.dispatchEvent(new CustomEvent("fetch-error", { detail: new a("Hiba!", `RouteParams: ${e} not found in url: ${r}! Contact the developers!`) })), Error(`RouteParams: ${e} not found in url: ${r}! Contact the developers!`);
105
+ let n = t[e];
106
+ r = r.replace(`{${e}}`, n);
107
+ }), n) {
108
+ let e = l(n);
109
+ e.length > 0 && (r.indexOf("?") === -1 ? r += "?" : !r.endsWith("?") && !r.endsWith("&") && (r += "&"), r += e);
110
+ }
111
+ return r;
112
+ }
47
113
  //#endregion
48
- export { r as useArticleEditorService };
114
+ export { s as FetchDetails, a as FetchError, o as Methods, c as initRequest };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components102.js","names":[],"sources":["../src/services/articleEditorService.ts"],"sourcesContent":["import type { SearchPostsPayload, SearchPostsResponse } from '@/models/SearchPosts'\nimport { FetchDetails, type HttpRequest, initRequest, Methods } from '@/services/services'\n\nimport type {\n ArticleSeriesDetails,\n AuthorDetails,\n ColumnDetails,\n DigitalSupplementDetails,\n GetRelationsCountPayload,\n IdsPayload,\n PartnerDetails,\n PresenceWidgetConfig,\n RelationCount,\n SearchArticleSeriesResult,\n SearchAuthorsPayload,\n SearchAuthorsResult,\n SearchColumnsPayload,\n SearchColumnsResult,\n SearchDigitalSupplementsPayload,\n SearchDigitalSupplementsResult,\n SearchEntityPayload,\n SearchImagesWidgetConfig,\n SearchPartnersResult,\n SearchPostWidgetConfig,\n SearchTagsPayload,\n SearchTagsResult,\n Site,\n TagDetails,\n UserInfoModel,\n WidgetDetailsResponse,\n} from '@/services/models'\n\nexport function useArticleEditorService(url: string): ArticleEditorService {\n return new ArticleEditorService(url)\n}\n\nexport class ArticleEditorService {\n baseUrl: string\n searchPosts: HttpRequest<SearchPostsPayload, undefined, undefined, SearchPostsResponse>\n whoAmI: HttpRequest<void, undefined, undefined, UserInfoModel>\n getPostsConfig: HttpRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchPostWidgetConfig>\n >\n getImagesConfig: HttpRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchImagesWidgetConfig>\n >\n getPresenceConfig: HttpRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<PresenceWidgetConfig>\n >\n sites: HttpRequest<undefined, undefined, undefined, Site[]>\n\n /* getMeta: HttpRequest<\n { url: string },\n undefined,\n undefined,\n { url: string; title: string; lead: string; imageUrl: string }\n > */\n\n authorsSearch: HttpRequest<SearchAuthorsPayload, undefined, undefined, SearchAuthorsResult>\n\n authorsDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, AuthorDetails[]>\n\n articleSeriesSearch: HttpRequest<\n SearchEntityPayload,\n undefined,\n undefined,\n SearchArticleSeriesResult\n >\n\n articleSeriesDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, ArticleSeriesDetails[]>\n\n columnsSearch: HttpRequest<SearchColumnsPayload, undefined, undefined, SearchColumnsResult>\n\n columnsDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, ColumnDetails[]>\n\n digitalSupplementsSearch: HttpRequest<\n SearchDigitalSupplementsPayload,\n undefined,\n undefined,\n SearchDigitalSupplementsResult\n >\n\n digitalSupplementsDetailsByIds: HttpRequest<\n IdsPayload,\n undefined,\n undefined,\n DigitalSupplementDetails[]\n >\n\n partnersSearch: HttpRequest<SearchEntityPayload, undefined, undefined, SearchPartnersResult>\n\n partnersDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, PartnerDetails[]>\n\n tagsSearch: HttpRequest<SearchTagsPayload, undefined, undefined, SearchTagsResult>\n\n tagsDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, TagDetails[]>\n\n getRelationsCount: HttpRequest<GetRelationsCountPayload, undefined, undefined, RelationCount[]>\n\n private errorMap(entityName: string) {\n return new Map<number, string>([\n [400, `${entityName} lekérdezése ismeretlen 400 hiba!`],\n [500, `${entityName} lekérdezése ismeretlen 500 hiba!`],\n ])\n }\n\n private postRequest<Payload, Result>(path: string, defaultPayload: Payload, entityName: string) {\n return initRequest<Payload, undefined, undefined, Result>(\n new FetchDetails(this.baseUrl, path, Methods.POST, this.errorMap(entityName)),\n defaultPayload,\n undefined,\n undefined,\n )\n }\n\n private searchRequest<Payload, Result>(resource: string, entityName: string) {\n return this.postRequest<Payload, Result>(`admin/${resource}/search`, {} as Payload, entityName)\n }\n\n private detailsByIdsRequest<Result>(resource: string, entityName: string) {\n return this.postRequest<IdsPayload, Result>(\n `admin/${resource}/detailsByIds`,\n { ids: [] },\n entityName,\n )\n }\n\n constructor(public articleEditorBackendUrl: string) {\n this.baseUrl = this.articleEditorBackendUrl\n\n /* this.getMeta = initRequest<\n { url: string },\n undefined,\n undefined,\n { url: string; title: string; lead: string; imageUrl: string }\n >(\n new FetchDetails(\n this.baseUrl,\n 'admin/Embeds/meta',\n Methods.POST,\n this.errorMap('Meta adatok'),\n ),\n { url: '' },\n undefined,\n undefined,\n ) */\n\n this.searchPosts = initRequest<SearchPostsPayload, undefined, undefined, SearchPostsResponse>(\n new FetchDetails(\n this.baseUrl,\n 'admin/Posts/searchPosts',\n Methods.POST,\n this.errorMap('Cikk lekérdezés'),\n ),\n {} as SearchPostsPayload,\n undefined,\n undefined,\n )\n\n this.whoAmI = initRequest<void, undefined, undefined, UserInfoModel>(\n new FetchDetails(\n this.baseUrl,\n 'whoami',\n Methods.GET,\n this.errorMap('Felhasználói adatok lekérdezése'),\n ),\n undefined,\n undefined,\n undefined,\n )\n\n this.getPostsConfig = initRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchPostWidgetConfig>\n >(\n new FetchDetails(\n this.baseUrl,\n '/admin/Widgets/{name}',\n Methods.GET,\n this.errorMap('Search Posts Widget konfiguráció lekérése'),\n ),\n undefined,\n { name: '' } as { name: string },\n undefined,\n )\n\n this.getImagesConfig = initRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchImagesWidgetConfig>\n >(\n new FetchDetails(\n this.baseUrl,\n '/admin/Widgets/{name}',\n Methods.GET,\n this.errorMap('Widget konfiguráció lekérése'),\n ),\n undefined,\n { name: '' } as { name: string },\n undefined,\n )\n\n this.getPresenceConfig = initRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<PresenceWidgetConfig>\n >(\n new FetchDetails(\n this.baseUrl,\n '/admin/Widgets/{name}',\n Methods.GET,\n this.errorMap('Widget konfiguráció lekérése'),\n ),\n undefined,\n { name: '' } as { name: string },\n undefined,\n )\n\n this.sites = initRequest<undefined, undefined, undefined, Site[]>(\n new FetchDetails(this.baseUrl, '/admin/sites', Methods.GET, this.errorMap('Site lekérése')),\n undefined,\n undefined,\n undefined,\n )\n\n this.authorsSearch = this.searchRequest<SearchAuthorsPayload, SearchAuthorsResult>(\n 'Authors',\n 'Szerzők',\n )\n this.authorsDetailsByIds = this.detailsByIdsRequest<AuthorDetails[]>('Authors', 'Szerzők')\n\n this.articleSeriesSearch = this.searchRequest<SearchEntityPayload, SearchArticleSeriesResult>(\n 'ArticleSeries',\n 'Cikk sorozatok',\n )\n this.articleSeriesDetailsByIds = this.detailsByIdsRequest<ArticleSeriesDetails[]>(\n 'ArticleSeries',\n 'Cikk sorozatok',\n )\n\n this.partnersSearch = this.searchRequest<SearchEntityPayload, SearchPartnersResult>(\n 'Partners',\n 'Partnerek',\n )\n this.partnersDetailsByIds = this.detailsByIdsRequest<PartnerDetails[]>('Partners', 'Partnerek')\n\n this.columnsSearch = this.searchRequest<SearchColumnsPayload, SearchColumnsResult>(\n 'Columns',\n 'Rovatok',\n )\n this.columnsDetailsByIds = this.detailsByIdsRequest<ColumnDetails[]>('Columns', 'Rovatok')\n\n this.digitalSupplementsSearch = this.searchRequest<\n SearchDigitalSupplementsPayload,\n SearchDigitalSupplementsResult\n >('DigitalSupplements', 'Digitális kiegészítők')\n this.digitalSupplementsDetailsByIds = this.detailsByIdsRequest<DigitalSupplementDetails[]>(\n 'DigitalSupplements',\n 'Digitális kiegészítők',\n )\n\n this.tagsSearch = this.searchRequest<SearchTagsPayload, SearchTagsResult>('Tags', 'Címkék')\n this.tagsDetailsByIds = this.detailsByIdsRequest<TagDetails[]>('Tags', 'Címkék')\n\n this.getRelationsCount = this.postRequest<GetRelationsCountPayload, RelationCount[]>(\n 'admin/Relations/byIds',\n { ids: [], outputEntityType: '' },\n 'Kapcsolatok számlálása',\n )\n }\n}\n"],"mappings":";;AAgCA,SAAgB,EAAwB,GAAmC;CACzE,OAAO,IAAI,EAAqB,CAAG;AACrC;AAEA,IAAa,IAAb,MAAkC;CAoGb;CAnGnB;CACA;CACA;CACA;CAMA;CAMA;CAMA;CASA;CAEA;CAEA;CAOA;CAEA;CAEA;CAEA;CAOA;CAOA;CAEA;CAEA;CAEA;CAEA;CAEA,SAAiB,GAAoB;EACnC,OAAO,IAAI,IAAoB,CAC7B,CAAC,KAAK,GAAG,EAAW,kCAAkC,GACtD,CAAC,KAAK,GAAG,EAAW,kCAAkC,CACxD,CAAC;CACH;CAEA,YAAqC,GAAc,GAAyB,GAAoB;EAC9F,OAAO,EACL,IAAI,EAAa,KAAK,SAAS,GAAM,EAAQ,MAAM,KAAK,SAAS,CAAU,CAAC,GAC5E,GACA,KAAA,GACA,KAAA,CACF;CACF;CAEA,cAAuC,GAAkB,GAAoB;EAC3E,OAAO,KAAK,YAA6B,SAAS,EAAS,UAAU,CAAC,GAAc,CAAU;CAChG;CAEA,oBAAoC,GAAkB,GAAoB;EACxE,OAAO,KAAK,YACV,SAAS,EAAS,gBAClB,EAAE,KAAK,CAAC,EAAE,GACV,CACF;CACF;CAEA,YAAY,GAAwC;EA6IlD,AA7IiB,KAAA,0BAAA,GACjB,KAAK,UAAU,KAAK,yBAmBpB,KAAK,cAAc,EACjB,IAAI,EACF,KAAK,SACL,2BACA,EAAQ,MACR,KAAK,SAAS,iBAAiB,CACjC,GACA,CAAC,GACD,KAAA,GACA,KAAA,CACF,GAEA,KAAK,SAAS,EACZ,IAAI,EACF,KAAK,SACL,UACA,EAAQ,KACR,KAAK,SAAS,iCAAiC,CACjD,GACA,KAAA,GACA,KAAA,GACA,KAAA,CACF,GAEA,KAAK,iBAAiB,EAMpB,IAAI,EACF,KAAK,SACL,yBACA,EAAQ,KACR,KAAK,SAAS,2CAA2C,CAC3D,GACA,KAAA,GACA,EAAE,MAAM,GAAG,GACX,KAAA,CACF,GAEA,KAAK,kBAAkB,EAMrB,IAAI,EACF,KAAK,SACL,yBACA,EAAQ,KACR,KAAK,SAAS,8BAA8B,CAC9C,GACA,KAAA,GACA,EAAE,MAAM,GAAG,GACX,KAAA,CACF,GAEA,KAAK,oBAAoB,EAMvB,IAAI,EACF,KAAK,SACL,yBACA,EAAQ,KACR,KAAK,SAAS,8BAA8B,CAC9C,GACA,KAAA,GACA,EAAE,MAAM,GAAG,GACX,KAAA,CACF,GAEA,KAAK,QAAQ,EACX,IAAI,EAAa,KAAK,SAAS,gBAAgB,EAAQ,KAAK,KAAK,SAAS,eAAe,CAAC,GAC1F,KAAA,GACA,KAAA,GACA,KAAA,CACF,GAEA,KAAK,gBAAgB,KAAK,cACxB,WACA,SACF,GACA,KAAK,sBAAsB,KAAK,oBAAqC,WAAW,SAAS,GAEzF,KAAK,sBAAsB,KAAK,cAC9B,iBACA,gBACF,GACA,KAAK,4BAA4B,KAAK,oBACpC,iBACA,gBACF,GAEA,KAAK,iBAAiB,KAAK,cACzB,YACA,WACF,GACA,KAAK,uBAAuB,KAAK,oBAAsC,YAAY,WAAW,GAE9F,KAAK,gBAAgB,KAAK,cACxB,WACA,SACF,GACA,KAAK,sBAAsB,KAAK,oBAAqC,WAAW,SAAS,GAEzF,KAAK,2BAA2B,KAAK,cAGnC,sBAAsB,uBAAuB,GAC/C,KAAK,iCAAiC,KAAK,oBACzC,sBACA,uBACF,GAEA,KAAK,aAAa,KAAK,cAAmD,QAAQ,QAAQ,GAC1F,KAAK,mBAAmB,KAAK,oBAAkC,QAAQ,QAAQ,GAE/E,KAAK,oBAAoB,KAAK,YAC5B,yBACA;GAAE,KAAK,CAAC;GAAG,kBAAkB;EAAG,GAChC,wBACF;CACF;AACF"}
1
+ {"version":3,"file":"admins-components102.js","names":[],"sources":["../src/services/services.ts"],"sourcesContent":["import { createNativeFetch, type NativeUseFetchReturn } from '@/services/createNativeFetch'\nimport { ref, watch, type Ref } from 'vue'\nimport { isIpInUrl } from '@/utils/ipUtils'\nimport { toast } from '@/services/toast'\n\nexport class FetchError {\n title?: string\n message?: string\n errorCode?: number\n constructor(title?: string, message?: string, errorCode?: number) {\n this.title = title\n this.message = message\n this.errorCode = errorCode\n }\n}\n\nexport interface HttpRequest<TPayload, TRouteParams, TQueryParams, TResponse> {\n data: Ref<TResponse>\n execute: () => any\n isFetching: Ref<boolean>\n fetch: NativeUseFetchReturn\n successCallback?: (response: TResponse) => void\n errorCallback?: (error: FetchError) => void\n finallyCallback?: () => void\n queryParams: Ref<TQueryParams>\n routeParams: Ref<TRouteParams>\n payload: Ref<TPayload>\n}\n\nexport enum Methods {\n GET,\n GET_TEXT,\n POST,\n POST_TEXT,\n PUT,\n PUT_TEXT,\n PATCH,\n DELETE,\n}\n\nexport class FetchDetails {\n public fetchMethod: ReturnType<typeof createNativeFetch>\n\n constructor(\n baseUrl: string,\n public relativeUrl: string,\n public method: Methods,\n errorMessages: Map<number, string>,\n contentType: string | null = 'application/json',\n defaultRequestHeaders?: Record<string, string>,\n ) {\n this.fetchMethod = createNativeFetch({\n baseUrl,\n fetchOptions: {\n credentials: baseUrl.indexOf('localhost') != -1 || isIpInUrl(baseUrl) ? 'omit' : 'include',\n },\n options: {\n immediate: false,\n\n beforeFetch: (ctx) => {\n ctx.options.headers = {\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...(defaultRequestHeaders ?? {}),\n }\n },\n\n onFetchError: (ctx) => {\n if (ctx.error?.name === 'AbortError') {\n return ctx\n }\n\n let errorMsg: string | undefined = 'Ismeretlen eredetű hiba!'\n let showError = !ctx.response\n\n if (ctx.response && !ctx.response.ok) {\n showError = true\n errorMsg = errorMessages.get(ctx.response.status)\n\n if (!errorMsg) {\n errorMsg = `${Methods[method]} for Call: ${relativeUrl} with Status: ${ctx.response.status} has no registered errorMessages!`\n console.error(errorMsg)\n }\n }\n\n if (showError) {\n toast.error('Hiba a szerver elérése közben...', errorMsg)\n }\n\n return ctx\n },\n\n afterFetch: (ctx) => ctx,\n },\n })\n }\n}\n\nexport function initRequest<TPayload, TRouteParams, TQueryParams, TResponse>(\n fetchDetails: FetchDetails,\n payload: TPayload,\n routeParams: TRouteParams,\n queryParams: TQueryParams,\n) {\n const detail = {} as HttpRequest<TPayload, TRouteParams, TQueryParams, TResponse>\n\n detail.payload = ref(payload) as Ref<TPayload>\n detail.routeParams = ref(routeParams) as Ref<TRouteParams>\n detail.queryParams = ref(queryParams) as Ref<TQueryParams>\n detail.isFetching = ref(false)\n detail.data = ref<TResponse>() as Ref<TResponse>\n\n let stopDataWatch: (() => void) | null = null\n let stopFetchingWatch: (() => void) | null = null\n\n detail.execute = () => {\n if (stopDataWatch) {\n stopDataWatch()\n stopDataWatch = null\n }\n if (stopFetchingWatch) {\n stopFetchingWatch()\n stopFetchingWatch = null\n }\n\n if (detail.fetch && detail.fetch.canAbort.value) {\n detail.fetch.abort()\n }\n\n const fullurl = `${generateUrl(fetchDetails.relativeUrl, detail.routeParams.value, detail.queryParams.value)}`\n\n const fetch = fetchDetails.fetchMethod(fullurl)\n\n let data: Ref<TResponse>\n const isFetching = fetch.isFetching\n\n async function onFetchFinished() {\n if (isSuccessStatusCode() && detail.successCallback) {\n detail.successCallback(detail.data.value)\n } else if (!isSuccessStatusCode() && detail.errorCallback) {\n console.log(detail.fetch.error.value)\n let responseBody: string | undefined = undefined\n if (detail.fetch.response.value && detail.fetch.response.value.body) {\n const reader = detail.fetch.response.value.body.getReader()\n const { value, done } = await reader.read()\n if (!done && value) {\n responseBody = new TextDecoder().decode(value)\n console.log('Response Body:', responseBody)\n }\n }\n detail.errorCallback(\n new FetchError(\n detail.fetch.error.value,\n responseBody,\n detail.fetch.statusCode.value ? detail.fetch.statusCode.value : undefined,\n ),\n )\n }\n\n if (detail.finallyCallback) {\n detail.finallyCallback()\n }\n }\n\n function isSuccessStatusCode() {\n return (\n detail.fetch.statusCode &&\n detail.fetch.statusCode.value! >= 200 &&\n detail.fetch.statusCode.value! <= 299\n )\n }\n\n switch (fetchDetails.method) {\n case Methods.GET:\n data = fetch.get().json().data as Ref<TResponse>\n break\n case Methods.GET_TEXT:\n data = fetch.get().text().data as Ref<TResponse>\n break\n case Methods.PUT:\n data = fetch.put(detail.payload).json().data as Ref<TResponse>\n break\n case Methods.PUT_TEXT:\n data = fetch.put(detail.payload).text().data as Ref<TResponse>\n break\n case Methods.POST_TEXT:\n data = fetch.post(detail.payload).text().data as Ref<TResponse>\n break\n case Methods.POST:\n data = fetch.post(detail.payload).json().data as Ref<TResponse>\n break\n case Methods.PATCH:\n data = fetch.patch(detail.payload).json().data as Ref<TResponse>\n break\n case Methods.DELETE:\n data = fetch.delete(detail.payload).json().data as Ref<TResponse>\n break\n\n default:\n throw new Error(`Method: ${fetchDetails.method} is not implemented!`)\n }\n\n stopDataWatch = watch(data, (v) => {\n detail.data.value = v\n })\n\n stopFetchingWatch = watch(isFetching, (i) => {\n detail.isFetching.value = i\n if (!i) {\n onFetchFinished()\n }\n })\n\n detail.fetch = fetch\n fetch.execute()\n }\n\n return detail\n}\n\nexport function serializeQueryParams(\n queryParams: Record<string, unknown> | null | undefined,\n): string {\n if (!queryParams) {\n return ''\n }\n\n return Object.keys(queryParams)\n .filter((k) => queryParams[k] !== undefined && queryParams[k] !== null)\n .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(String(queryParams[k]))}`)\n .join('&')\n}\n\nfunction generateUrl(relativeUrl: string, routeParams: any, queryParams: any) {\n let res = relativeUrl\n\n if (!res) res = ''\n\n if (res.slice(-1) === '/') {\n res = res.substring(0, res.length - 1)\n }\n\n if (routeParams) {\n Object.keys(routeParams).forEach((k) => {\n if (res.indexOf(`{${k}}`) === -1) {\n window.dispatchEvent(\n new CustomEvent('fetch-error', {\n detail: new FetchError(\n 'Hiba!',\n `RouteParams: ${k} not found in url: ${res}! Contact the developers!`,\n ),\n }),\n )\n\n throw new Error(`RouteParams: ${k} not found in url: ${res}! Contact the developers!`)\n }\n\n const val = routeParams[k]\n\n res = res.replace(`{${k}}`, val)\n })\n }\n\n if (queryParams) {\n const parts = serializeQueryParams(queryParams)\n\n if (parts.length > 0) {\n if (res.indexOf('?') === -1) {\n res += '?'\n } else if (!res.endsWith('?') && !res.endsWith('&')) {\n res += '&'\n }\n\n res += parts\n }\n }\n\n return res\n}\n"],"mappings":"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"}
@@ -1,107 +1,48 @@
1
- import { isIpInUrl as e } from "./admins-components97.js";
2
- import { useArticleEditorService as t } from "./admins-components102.js";
3
- import { computed as n, ref as r } from "vue";
4
- //#region src/services/currentUserInfo.ts
5
- var i = null, a = [], o = !1;
6
- function s() {
7
- if (i) return o && console.debug("[currentUserInfo] Returning existing store instance"), i;
8
- o && console.debug("[currentUserInfo] Creating new store instance");
9
- let s = r(null), c = r("loading"), l = r(null), u = r(null), d = n(() => c.value === "loading"), f = n(() => c.value === "authenticated" && s.value !== null), p = n(() => s.value?.displayName ?? ""), m = n(() => s.value?.email ?? ""), h = n(() => s.value?.roles ?? []);
10
- async function g(n, r) {
11
- o = r ?? !1, o && console.debug("[currentUserInfo] initialize() called", { backendUrl: n }), o && console.debug("[currentUserInfo] Starting initialization"), u.value = n, c.value = "loading", l.value = null;
12
- try {
13
- let r = t(n);
14
- await new Promise((t, n) => {
15
- if (r.baseUrl.indexOf("localhost") != -1 || e(r.baseUrl)) return o && console.debug("[currentUserInfo] Localhost/IP detected, using dev credentials"), s.value = {
16
- displayName: "developer",
17
- email: "developer@hvg.hu",
18
- roles: ["devadmin"],
19
- id: "00000000-0000-0000-0000-000000000000"
20
- }, c.value = "authenticated", t();
21
- r.whoAmI.successCallback = (e) => {
22
- o && console.debug("[currentUserInfo] whoAmI success", {
23
- displayName: e.displayName,
24
- email: e.email,
25
- rolesCount: e.roles?.length ?? 0
26
- }), s.value = e, c.value = "authenticated", t();
27
- }, r.whoAmI.errorCallback = (e) => {
28
- o && console.error("[currentUserInfo] whoAmI failed:", e), l.value = e.message ?? "Ismeretlen hiba történt", c.value = "error", n(Error(l.value));
29
- }, o && console.debug("[currentUserInfo] Executing whoAmI request"), r.whoAmI.execute();
30
- }), await new Promise((e, t) => {
31
- r.sites.successCallback = (t) => {
32
- o && console.debug("[currentUserInfo] sites fetch success", { sitesCount: t.length }), a = t, e();
33
- }, r.sites.errorCallback = (e) => {
34
- o && console.error("[currentUserInfo] sites fetch failed:", e), t(Error(e.message ?? "Ismeretlen hiba történt"));
35
- }, o && console.debug("[currentUserInfo] Executing sites request"), r.sites.execute();
36
- }), o && console.debug("[currentUserInfo] Initialization completed successfully");
37
- } catch (e) {
38
- throw o && console.error("[currentUserInfo] initialize failed:", e), c.value = "error", l.value ||= "Felhasználói adatok vagy site-ok lekérése sikertelen", e;
39
- }
1
+ import { FetchDetails as e, Methods as t, initRequest as n } from "./admins-components102.js";
2
+ //#region src/services/articleEditorService.ts
3
+ function r(e) {
4
+ return new i(e);
5
+ }
6
+ var i = class {
7
+ articleEditorBackendUrl;
8
+ baseUrl;
9
+ searchPosts;
10
+ whoAmI;
11
+ getPostsConfig;
12
+ getImagesConfig;
13
+ getPresenceConfig;
14
+ sites;
15
+ authorsSearch;
16
+ authorsDetailsByIds;
17
+ articleSeriesSearch;
18
+ articleSeriesDetailsByIds;
19
+ columnsSearch;
20
+ columnsDetailsByIds;
21
+ digitalSupplementsSearch;
22
+ digitalSupplementsDetailsByIds;
23
+ partnersSearch;
24
+ partnersDetailsByIds;
25
+ tagsSearch;
26
+ tagsDetailsByIds;
27
+ getRelationsCount;
28
+ errorMap(e) {
29
+ return new Map([[400, `${e} lekérdezése ismeretlen 400 hiba!`], [500, `${e} lekérdezése ismeretlen 500 hiba!`]]);
40
30
  }
41
- function _() {
42
- o && console.debug("[currentUserInfo] clear() called, resetting all state"), s.value = null, c.value = "loading", l.value = null, u.value = null, a = [];
31
+ postRequest(r, i, a) {
32
+ return n(new e(this.baseUrl, r, t.POST, this.errorMap(a)), i, void 0, void 0);
43
33
  }
44
- function v(e, t, n) {
45
- if (o && console.debug("[currentUserInfo] hasPermission() check", {
46
- siteId: e,
47
- entityName: t,
48
- accessLevel: n
49
- }), !s.value?.roles || s.value.roles.length === 0) return o && console.debug("[currentUserInfo] hasPermission() denied: no roles"), !1;
50
- if (s.value.roles.includes("devadmin")) return o && console.debug("[currentUserInfo] hasPermission() granted: devadmin role"), !0;
51
- let r = n === "admin" ? ["admin"] : ["reader", "admin"];
52
- for (let n of r) {
53
- let r = `cms-${e}-${t}-${n}`;
54
- if (s.value.roles.includes(r)) return o && console.debug("[currentUserInfo] hasPermission() granted: specific role", r), !0;
55
- let i = `cms-${e}-all-${n}`;
56
- if (s.value.roles.includes(i)) return o && console.debug("[currentUserInfo] hasPermission() granted: all-entity role", i), !0;
57
- }
58
- return o && console.debug("[currentUserInfo] hasPermission() denied: no matching roles"), !1;
34
+ searchRequest(e, t) {
35
+ return this.postRequest(`admin/${e}/search`, {}, t);
59
36
  }
60
- function y(e, t) {
61
- if (o && console.debug("[currentUserInfo] getMixableSitesForResource() called", {
62
- entityName: e,
63
- currentSiteId: t
64
- }), !u.value) throw o && console.error("[currentUserInfo] getMixableSitesForResource called before initialize"), Error("Store nincs inicializálva. Hívd meg előbb az initialize() metódust!");
65
- let n = a.find((e) => e.id === t);
66
- o && console.debug("[currentUserInfo] Current site lookup", {
67
- found: !!n,
68
- totalSites: a.length
69
- });
70
- let r = [];
71
- return a.forEach((t) => {
72
- if (n === void 0) {
73
- if (!v(t.id, e, "reader")) return;
74
- r.push(t);
75
- } else {
76
- if (n.entities.find((n) => n.type === e && n.allowedSiteIds.includes(t.id)) === void 0 || !v(t.id, e, "reader")) return;
77
- r.push(t);
78
- }
79
- }), o && console.debug("[currentUserInfo] getMixableSitesForResource() result", {
80
- mixableCount: r.length,
81
- mixableSiteIds: r.map((e) => e.id)
82
- }), r;
37
+ detailsByIdsRequest(e, t) {
38
+ return this.postRequest(`admin/${e}/detailsByIds`, { ids: [] }, t);
83
39
  }
84
- function b(e, t) {
85
- return o && console.debug("[currentUserInfo] getMixableSiteIdsForResource() called", {
86
- entityName: e,
87
- currentSiteId: t
88
- }), y(e, t).map((e) => e.id);
40
+ constructor(r) {
41
+ this.articleEditorBackendUrl = r, this.baseUrl = this.articleEditorBackendUrl, this.searchPosts = n(new e(this.baseUrl, "admin/Posts/searchPosts", t.POST, this.errorMap("Cikk lekérdezés")), {}, void 0, void 0), this.whoAmI = n(new e(this.baseUrl, "whoami", t.GET, this.errorMap("Felhasználói adatok lekérdezése")), void 0, void 0, void 0), this.getPostsConfig = n(new e(this.baseUrl, "/admin/Widgets/{name}", t.GET, this.errorMap("Search Posts Widget konfiguráció lekérése")), void 0, { name: "" }, void 0), this.getImagesConfig = n(new e(this.baseUrl, "/admin/Widgets/{name}", t.GET, this.errorMap("Widget konfiguráció lekérése")), void 0, { name: "" }, void 0), this.getPresenceConfig = n(new e(this.baseUrl, "/admin/Widgets/{name}", t.GET, this.errorMap("Widget konfiguráció lekérése")), void 0, { name: "" }, void 0), this.sites = n(new e(this.baseUrl, "/admin/sites", t.GET, this.errorMap("Site lekérése")), void 0, void 0, void 0), this.authorsSearch = this.searchRequest("Authors", "Szerzők"), this.authorsDetailsByIds = this.detailsByIdsRequest("Authors", "Szerzők"), this.articleSeriesSearch = this.searchRequest("ArticleSeries", "Cikk sorozatok"), this.articleSeriesDetailsByIds = this.detailsByIdsRequest("ArticleSeries", "Cikk sorozatok"), this.partnersSearch = this.searchRequest("Partners", "Partnerek"), this.partnersDetailsByIds = this.detailsByIdsRequest("Partners", "Partnerek"), this.columnsSearch = this.searchRequest("Columns", "Rovatok"), this.columnsDetailsByIds = this.detailsByIdsRequest("Columns", "Rovatok"), this.digitalSupplementsSearch = this.searchRequest("DigitalSupplements", "Digitális kiegészítők"), this.digitalSupplementsDetailsByIds = this.detailsByIdsRequest("DigitalSupplements", "Digitális kiegészítők"), this.tagsSearch = this.searchRequest("Tags", "Címkék"), this.tagsDetailsByIds = this.detailsByIdsRequest("Tags", "Címkék"), this.getRelationsCount = this.postRequest("admin/Relations/byIds", {
42
+ ids: [],
43
+ outputEntityType: ""
44
+ }, "Kapcsolatok számlálása");
89
45
  }
90
- return i = {
91
- user: s,
92
- state: c,
93
- error: l,
94
- isLoading: d,
95
- isAuthenticated: f,
96
- displayName: p,
97
- email: m,
98
- roles: h,
99
- initialize: g,
100
- clear: _,
101
- hasPermission: v,
102
- getMixableSitesForResource: y,
103
- getMixableSiteIdsForResource: b
104
- }, i;
105
- }
46
+ };
106
47
  //#endregion
107
- export { s as useCurrentUser };
48
+ export { r as useArticleEditorService };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components103.js","names":[],"sources":["../src/services/currentUserInfo.ts"],"sourcesContent":["import { ref, computed, type Ref, type ComputedRef } from 'vue'\nimport { useArticleEditorService } from '@/services/articleEditorService'\nimport type { UserInfoModel, Site } from '@/services/models'\nimport { isIpInUrl } from '@/utils/ipUtils'\n\nexport type UserState = 'loading' | 'authenticated' | 'error'\n\nexport interface CurrentUserStore {\n user: Ref<UserInfoModel | null>\n state: Ref<UserState>\n error: Ref<string | null>\n isLoading: ComputedRef<boolean>\n isAuthenticated: ComputedRef<boolean>\n displayName: ComputedRef<string>\n email: ComputedRef<string>\n roles: ComputedRef<readonly string[]>\n initialize(backendUrl: string, enableLogging?: boolean): Promise<void>\n clear(): void\n hasPermission(\n siteId: string,\n entityName: string | 'all',\n accessLevel: 'reader' | 'admin',\n ): boolean\n getMixableSitesForResource(entityName: string | 'all', currentSiteId: string | undefined): Site[]\n getMixableSiteIdsForResource(\n entityName: string | 'all',\n currentSiteId: string | undefined,\n ): string[]\n}\n\nlet storeInstance: CurrentUserStore | null = null\nlet sites = [] as Site[]\nlet loggingEnabled = false\n\nexport function useCurrentUser(): CurrentUserStore {\n if (storeInstance) {\n if (loggingEnabled) console.debug('[currentUserInfo] Returning existing store instance')\n return storeInstance\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] Creating new store instance')\n const user = ref<UserInfoModel | null>(null)\n const state = ref<UserState>('loading')\n const error = ref<string | null>(null)\n const _backendUrl = ref<string | null>(null)\n const isLoading = computed(() => state.value === 'loading')\n const isAuthenticated = computed(() => state.value === 'authenticated' && user.value !== null)\n const displayName = computed(() => user.value?.displayName ?? '')\n const email = computed(() => user.value?.email ?? '')\n const roles = computed(() => user.value?.roles ?? [])\n\n async function initialize(backendUrl: string, enableLogging?: boolean): Promise<void> {\n loggingEnabled = enableLogging ?? false\n\n if (loggingEnabled) console.debug('[currentUserInfo] initialize() called', { backendUrl })\n\n if (loggingEnabled) console.debug('[currentUserInfo] Starting initialization')\n _backendUrl.value = backendUrl\n state.value = 'loading'\n error.value = null\n\n try {\n const service = useArticleEditorService(backendUrl)\n\n await new Promise<void>((resolve, reject) => {\n if (service.baseUrl.indexOf('localhost') != -1 || isIpInUrl(service.baseUrl)) {\n if (loggingEnabled)\n console.debug('[currentUserInfo] Localhost/IP detected, using dev credentials')\n user.value = {\n displayName: 'developer',\n email: 'developer@hvg.hu',\n roles: ['devadmin'],\n id: '00000000-0000-0000-0000-000000000000',\n }\n state.value = 'authenticated'\n return resolve()\n }\n\n service.whoAmI.successCallback = (userInfo: UserInfoModel) => {\n if (loggingEnabled) {\n console.debug('[currentUserInfo] whoAmI success', {\n displayName: userInfo.displayName,\n email: userInfo.email,\n rolesCount: userInfo.roles?.length ?? 0,\n })\n }\n user.value = userInfo\n state.value = 'authenticated'\n resolve()\n }\n\n service.whoAmI.errorCallback = (err) => {\n if (loggingEnabled) console.error('[currentUserInfo] whoAmI failed:', err)\n error.value = err.message ?? 'Ismeretlen hiba történt'\n state.value = 'error'\n reject(new Error(error.value))\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] Executing whoAmI request')\n service.whoAmI.execute()\n })\n\n await new Promise<void>((resolve, reject) => {\n service.sites.successCallback = (fetchedSites) => {\n if (loggingEnabled)\n console.debug('[currentUserInfo] sites fetch success', {\n sitesCount: fetchedSites.length,\n })\n sites = fetchedSites\n resolve()\n }\n\n service.sites.errorCallback = (err) => {\n if (loggingEnabled) console.error('[currentUserInfo] sites fetch failed:', err)\n reject(new Error(err.message ?? 'Ismeretlen hiba történt'))\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] Executing sites request')\n service.sites.execute()\n })\n\n if (loggingEnabled) console.debug('[currentUserInfo] Initialization completed successfully')\n } catch (err) {\n if (loggingEnabled) console.error('[currentUserInfo] initialize failed:', err)\n state.value = 'error'\n if (!error.value) {\n error.value = 'Felhasználói adatok vagy site-ok lekérése sikertelen'\n }\n throw err\n }\n }\n\n function clear(): void {\n if (loggingEnabled) console.debug('[currentUserInfo] clear() called, resetting all state')\n user.value = null\n state.value = 'loading'\n error.value = null\n _backendUrl.value = null\n sites = []\n }\n\n function hasPermission(\n siteId: string,\n entityName: string | 'all',\n accessLevel: 'reader' | 'admin',\n ): boolean {\n if (loggingEnabled)\n console.debug('[currentUserInfo] hasPermission() check', { siteId, entityName, accessLevel })\n\n if (!user.value?.roles || user.value.roles.length === 0) {\n if (loggingEnabled) console.debug('[currentUserInfo] hasPermission() denied: no roles')\n return false\n }\n\n if (user.value.roles.includes('devadmin')) {\n if (loggingEnabled) console.debug('[currentUserInfo] hasPermission() granted: devadmin role')\n return true\n }\n\n const requiredLevels = accessLevel === 'admin' ? ['admin'] : ['reader', 'admin']\n\n for (const level of requiredLevels) {\n const specificRole = `cms-${siteId}-${entityName}-${level}`\n if (user.value.roles.includes(specificRole)) {\n if (loggingEnabled)\n console.debug('[currentUserInfo] hasPermission() granted: specific role', specificRole)\n return true\n }\n\n const allentityRole = `cms-${siteId}-all-${level}`\n if (user.value.roles.includes(allentityRole)) {\n if (loggingEnabled)\n console.debug('[currentUserInfo] hasPermission() granted: all-entity role', allentityRole)\n return true\n }\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] hasPermission() denied: no matching roles')\n return false\n }\n\n function getMixableSitesForResource(\n entityName: string | 'all',\n currentSiteId: string | undefined,\n ): Site[] {\n if (loggingEnabled)\n console.debug('[currentUserInfo] getMixableSitesForResource() called', {\n entityName,\n currentSiteId,\n })\n\n if (!_backendUrl.value) {\n if (loggingEnabled)\n console.error('[currentUserInfo] getMixableSitesForResource called before initialize')\n throw new Error('Store nincs inicializálva. Hívd meg előbb az initialize() metódust!')\n }\n\n const currentSite = sites.find((site) => site.id === currentSiteId)\n if (loggingEnabled)\n console.debug('[currentUserInfo] Current site lookup', {\n found: !!currentSite,\n totalSites: sites.length,\n })\n\n const mixableSites = [] as Site[]\n sites.forEach((site) => {\n if (currentSite === undefined) {\n // Case 1: No current site specified - only check permissions\n if (!hasPermission(site.id, entityName, 'reader')) {\n return\n }\n mixableSites.push(site)\n } else {\n // Case 2: Current site specified - check entity allowance AND permissions\n if (\n currentSite.entities.find(\n (e) => e.type === entityName && e.allowedSiteIds.includes(site.id),\n ) === undefined\n ) {\n return\n }\n\n if (!hasPermission(site.id, entityName, 'reader')) {\n return\n }\n\n mixableSites.push(site)\n }\n })\n\n if (loggingEnabled) {\n console.debug('[currentUserInfo] getMixableSitesForResource() result', {\n mixableCount: mixableSites.length,\n mixableSiteIds: mixableSites.map((s) => s.id),\n })\n }\n return mixableSites\n }\n\n function getMixableSiteIdsForResource(\n entityName: string | 'all',\n currentSiteId: string | undefined,\n ): string[] {\n if (loggingEnabled)\n console.debug('[currentUserInfo] getMixableSiteIdsForResource() called', {\n entityName,\n currentSiteId,\n })\n const mixableSites = getMixableSitesForResource(entityName, currentSiteId)\n return mixableSites.map((site) => site.id)\n }\n\n storeInstance = {\n user,\n state,\n error,\n isLoading,\n isAuthenticated,\n displayName,\n email,\n roles,\n initialize,\n clear,\n hasPermission,\n getMixableSitesForResource,\n getMixableSiteIdsForResource,\n }\n\n return storeInstance\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"admins-components103.js","names":[],"sources":["../src/services/articleEditorService.ts"],"sourcesContent":["import type { SearchPostsPayload, SearchPostsResponse } from '@/models/SearchPosts'\nimport { FetchDetails, type HttpRequest, initRequest, Methods } from '@/services/services'\n\nimport type {\n ArticleSeriesDetails,\n AuthorDetails,\n ColumnDetails,\n DigitalSupplementDetails,\n GetRelationsCountPayload,\n IdsPayload,\n PartnerDetails,\n PresenceWidgetConfig,\n RelationCount,\n SearchArticleSeriesResult,\n SearchAuthorsPayload,\n SearchAuthorsResult,\n SearchColumnsPayload,\n SearchColumnsResult,\n SearchDigitalSupplementsPayload,\n SearchDigitalSupplementsResult,\n SearchEntityPayload,\n SearchImagesWidgetConfig,\n SearchPartnersResult,\n SearchPostWidgetConfig,\n SearchTagsPayload,\n SearchTagsResult,\n Site,\n TagDetails,\n UserInfoModel,\n WidgetDetailsResponse,\n} from '@/services/models'\n\nexport function useArticleEditorService(url: string): ArticleEditorService {\n return new ArticleEditorService(url)\n}\n\nexport class ArticleEditorService {\n baseUrl: string\n searchPosts: HttpRequest<SearchPostsPayload, undefined, undefined, SearchPostsResponse>\n whoAmI: HttpRequest<void, undefined, undefined, UserInfoModel>\n getPostsConfig: HttpRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchPostWidgetConfig>\n >\n getImagesConfig: HttpRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchImagesWidgetConfig>\n >\n getPresenceConfig: HttpRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<PresenceWidgetConfig>\n >\n sites: HttpRequest<undefined, undefined, undefined, Site[]>\n\n /* getMeta: HttpRequest<\n { url: string },\n undefined,\n undefined,\n { url: string; title: string; lead: string; imageUrl: string }\n > */\n\n authorsSearch: HttpRequest<SearchAuthorsPayload, undefined, undefined, SearchAuthorsResult>\n\n authorsDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, AuthorDetails[]>\n\n articleSeriesSearch: HttpRequest<\n SearchEntityPayload,\n undefined,\n undefined,\n SearchArticleSeriesResult\n >\n\n articleSeriesDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, ArticleSeriesDetails[]>\n\n columnsSearch: HttpRequest<SearchColumnsPayload, undefined, undefined, SearchColumnsResult>\n\n columnsDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, ColumnDetails[]>\n\n digitalSupplementsSearch: HttpRequest<\n SearchDigitalSupplementsPayload,\n undefined,\n undefined,\n SearchDigitalSupplementsResult\n >\n\n digitalSupplementsDetailsByIds: HttpRequest<\n IdsPayload,\n undefined,\n undefined,\n DigitalSupplementDetails[]\n >\n\n partnersSearch: HttpRequest<SearchEntityPayload, undefined, undefined, SearchPartnersResult>\n\n partnersDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, PartnerDetails[]>\n\n tagsSearch: HttpRequest<SearchTagsPayload, undefined, undefined, SearchTagsResult>\n\n tagsDetailsByIds: HttpRequest<IdsPayload, undefined, undefined, TagDetails[]>\n\n getRelationsCount: HttpRequest<GetRelationsCountPayload, undefined, undefined, RelationCount[]>\n\n private errorMap(entityName: string) {\n return new Map<number, string>([\n [400, `${entityName} lekérdezése ismeretlen 400 hiba!`],\n [500, `${entityName} lekérdezése ismeretlen 500 hiba!`],\n ])\n }\n\n private postRequest<Payload, Result>(path: string, defaultPayload: Payload, entityName: string) {\n return initRequest<Payload, undefined, undefined, Result>(\n new FetchDetails(this.baseUrl, path, Methods.POST, this.errorMap(entityName)),\n defaultPayload,\n undefined,\n undefined,\n )\n }\n\n private searchRequest<Payload, Result>(resource: string, entityName: string) {\n return this.postRequest<Payload, Result>(`admin/${resource}/search`, {} as Payload, entityName)\n }\n\n private detailsByIdsRequest<Result>(resource: string, entityName: string) {\n return this.postRequest<IdsPayload, Result>(\n `admin/${resource}/detailsByIds`,\n { ids: [] },\n entityName,\n )\n }\n\n constructor(public articleEditorBackendUrl: string) {\n this.baseUrl = this.articleEditorBackendUrl\n\n /* this.getMeta = initRequest<\n { url: string },\n undefined,\n undefined,\n { url: string; title: string; lead: string; imageUrl: string }\n >(\n new FetchDetails(\n this.baseUrl,\n 'admin/Embeds/meta',\n Methods.POST,\n this.errorMap('Meta adatok'),\n ),\n { url: '' },\n undefined,\n undefined,\n ) */\n\n this.searchPosts = initRequest<SearchPostsPayload, undefined, undefined, SearchPostsResponse>(\n new FetchDetails(\n this.baseUrl,\n 'admin/Posts/searchPosts',\n Methods.POST,\n this.errorMap('Cikk lekérdezés'),\n ),\n {} as SearchPostsPayload,\n undefined,\n undefined,\n )\n\n this.whoAmI = initRequest<void, undefined, undefined, UserInfoModel>(\n new FetchDetails(\n this.baseUrl,\n 'whoami',\n Methods.GET,\n this.errorMap('Felhasználói adatok lekérdezése'),\n ),\n undefined,\n undefined,\n undefined,\n )\n\n this.getPostsConfig = initRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchPostWidgetConfig>\n >(\n new FetchDetails(\n this.baseUrl,\n '/admin/Widgets/{name}',\n Methods.GET,\n this.errorMap('Search Posts Widget konfiguráció lekérése'),\n ),\n undefined,\n { name: '' } as { name: string },\n undefined,\n )\n\n this.getImagesConfig = initRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<SearchImagesWidgetConfig>\n >(\n new FetchDetails(\n this.baseUrl,\n '/admin/Widgets/{name}',\n Methods.GET,\n this.errorMap('Widget konfiguráció lekérése'),\n ),\n undefined,\n { name: '' } as { name: string },\n undefined,\n )\n\n this.getPresenceConfig = initRequest<\n undefined,\n { name: string },\n undefined,\n WidgetDetailsResponse<PresenceWidgetConfig>\n >(\n new FetchDetails(\n this.baseUrl,\n '/admin/Widgets/{name}',\n Methods.GET,\n this.errorMap('Widget konfiguráció lekérése'),\n ),\n undefined,\n { name: '' } as { name: string },\n undefined,\n )\n\n this.sites = initRequest<undefined, undefined, undefined, Site[]>(\n new FetchDetails(this.baseUrl, '/admin/sites', Methods.GET, this.errorMap('Site lekérése')),\n undefined,\n undefined,\n undefined,\n )\n\n this.authorsSearch = this.searchRequest<SearchAuthorsPayload, SearchAuthorsResult>(\n 'Authors',\n 'Szerzők',\n )\n this.authorsDetailsByIds = this.detailsByIdsRequest<AuthorDetails[]>('Authors', 'Szerzők')\n\n this.articleSeriesSearch = this.searchRequest<SearchEntityPayload, SearchArticleSeriesResult>(\n 'ArticleSeries',\n 'Cikk sorozatok',\n )\n this.articleSeriesDetailsByIds = this.detailsByIdsRequest<ArticleSeriesDetails[]>(\n 'ArticleSeries',\n 'Cikk sorozatok',\n )\n\n this.partnersSearch = this.searchRequest<SearchEntityPayload, SearchPartnersResult>(\n 'Partners',\n 'Partnerek',\n )\n this.partnersDetailsByIds = this.detailsByIdsRequest<PartnerDetails[]>('Partners', 'Partnerek')\n\n this.columnsSearch = this.searchRequest<SearchColumnsPayload, SearchColumnsResult>(\n 'Columns',\n 'Rovatok',\n )\n this.columnsDetailsByIds = this.detailsByIdsRequest<ColumnDetails[]>('Columns', 'Rovatok')\n\n this.digitalSupplementsSearch = this.searchRequest<\n SearchDigitalSupplementsPayload,\n SearchDigitalSupplementsResult\n >('DigitalSupplements', 'Digitális kiegészítők')\n this.digitalSupplementsDetailsByIds = this.detailsByIdsRequest<DigitalSupplementDetails[]>(\n 'DigitalSupplements',\n 'Digitális kiegészítők',\n )\n\n this.tagsSearch = this.searchRequest<SearchTagsPayload, SearchTagsResult>('Tags', 'Címkék')\n this.tagsDetailsByIds = this.detailsByIdsRequest<TagDetails[]>('Tags', 'Címkék')\n\n this.getRelationsCount = this.postRequest<GetRelationsCountPayload, RelationCount[]>(\n 'admin/Relations/byIds',\n { ids: [], outputEntityType: '' },\n 'Kapcsolatok számlálása',\n )\n }\n}\n"],"mappings":";;AAgCA,SAAgB,EAAwB,GAAmC;CACzE,OAAO,IAAI,EAAqB,CAAG;AACrC;AAEA,IAAa,IAAb,MAAkC;CAoGb;CAnGnB;CACA;CACA;CACA;CAMA;CAMA;CAMA;CASA;CAEA;CAEA;CAOA;CAEA;CAEA;CAEA;CAOA;CAOA;CAEA;CAEA;CAEA;CAEA;CAEA,SAAiB,GAAoB;EACnC,OAAO,IAAI,IAAoB,CAC7B,CAAC,KAAK,GAAG,EAAW,kCAAkC,GACtD,CAAC,KAAK,GAAG,EAAW,kCAAkC,CACxD,CAAC;CACH;CAEA,YAAqC,GAAc,GAAyB,GAAoB;EAC9F,OAAO,EACL,IAAI,EAAa,KAAK,SAAS,GAAM,EAAQ,MAAM,KAAK,SAAS,CAAU,CAAC,GAC5E,GACA,KAAA,GACA,KAAA,CACF;CACF;CAEA,cAAuC,GAAkB,GAAoB;EAC3E,OAAO,KAAK,YAA6B,SAAS,EAAS,UAAU,CAAC,GAAc,CAAU;CAChG;CAEA,oBAAoC,GAAkB,GAAoB;EACxE,OAAO,KAAK,YACV,SAAS,EAAS,gBAClB,EAAE,KAAK,CAAC,EAAE,GACV,CACF;CACF;CAEA,YAAY,GAAwC;EA6IlD,AA7IiB,KAAA,0BAAA,GACjB,KAAK,UAAU,KAAK,yBAmBpB,KAAK,cAAc,EACjB,IAAI,EACF,KAAK,SACL,2BACA,EAAQ,MACR,KAAK,SAAS,iBAAiB,CACjC,GACA,CAAC,GACD,KAAA,GACA,KAAA,CACF,GAEA,KAAK,SAAS,EACZ,IAAI,EACF,KAAK,SACL,UACA,EAAQ,KACR,KAAK,SAAS,iCAAiC,CACjD,GACA,KAAA,GACA,KAAA,GACA,KAAA,CACF,GAEA,KAAK,iBAAiB,EAMpB,IAAI,EACF,KAAK,SACL,yBACA,EAAQ,KACR,KAAK,SAAS,2CAA2C,CAC3D,GACA,KAAA,GACA,EAAE,MAAM,GAAG,GACX,KAAA,CACF,GAEA,KAAK,kBAAkB,EAMrB,IAAI,EACF,KAAK,SACL,yBACA,EAAQ,KACR,KAAK,SAAS,8BAA8B,CAC9C,GACA,KAAA,GACA,EAAE,MAAM,GAAG,GACX,KAAA,CACF,GAEA,KAAK,oBAAoB,EAMvB,IAAI,EACF,KAAK,SACL,yBACA,EAAQ,KACR,KAAK,SAAS,8BAA8B,CAC9C,GACA,KAAA,GACA,EAAE,MAAM,GAAG,GACX,KAAA,CACF,GAEA,KAAK,QAAQ,EACX,IAAI,EAAa,KAAK,SAAS,gBAAgB,EAAQ,KAAK,KAAK,SAAS,eAAe,CAAC,GAC1F,KAAA,GACA,KAAA,GACA,KAAA,CACF,GAEA,KAAK,gBAAgB,KAAK,cACxB,WACA,SACF,GACA,KAAK,sBAAsB,KAAK,oBAAqC,WAAW,SAAS,GAEzF,KAAK,sBAAsB,KAAK,cAC9B,iBACA,gBACF,GACA,KAAK,4BAA4B,KAAK,oBACpC,iBACA,gBACF,GAEA,KAAK,iBAAiB,KAAK,cACzB,YACA,WACF,GACA,KAAK,uBAAuB,KAAK,oBAAsC,YAAY,WAAW,GAE9F,KAAK,gBAAgB,KAAK,cACxB,WACA,SACF,GACA,KAAK,sBAAsB,KAAK,oBAAqC,WAAW,SAAS,GAEzF,KAAK,2BAA2B,KAAK,cAGnC,sBAAsB,uBAAuB,GAC/C,KAAK,iCAAiC,KAAK,oBACzC,sBACA,uBACF,GAEA,KAAK,aAAa,KAAK,cAAmD,QAAQ,QAAQ,GAC1F,KAAK,mBAAmB,KAAK,oBAAkC,QAAQ,QAAQ,GAE/E,KAAK,oBAAoB,KAAK,YAC5B,yBACA;GAAE,KAAK,CAAC;GAAG,kBAAkB;EAAG,GAChC,wBACF;CACF;AACF"}
@@ -1,21 +1,107 @@
1
- import { FetchDetails as e, Methods as t, initRequest as n } from "./admins-components101.js";
2
- //#region src/services/backendService.ts
3
- function r(e) {
4
- return new i(e);
5
- }
6
- var i = class {
7
- backendUrl;
8
- endpoints;
9
- constructor({ backendUrl: e, endpoints: t }) {
10
- this.backendUrl = e, this.endpoints = Object.fromEntries(Object.entries(t).filter(([, e]) => e.url).map(([t, n]) => [t, a(e, n, n.entityName ?? t)]));
1
+ import { isIpInUrl as e } from "./admins-components98.js";
2
+ import { useArticleEditorService as t } from "./admins-components103.js";
3
+ import { computed as n, ref as r } from "vue";
4
+ //#region src/services/currentUserInfo.ts
5
+ var i = null, a = [], o = !1;
6
+ function s() {
7
+ if (i) return o && console.debug("[currentUserInfo] Returning existing store instance"), i;
8
+ o && console.debug("[currentUserInfo] Creating new store instance");
9
+ let s = r(null), c = r("loading"), l = r(null), u = r(null), d = n(() => c.value === "loading"), f = n(() => c.value === "authenticated" && s.value !== null), p = n(() => s.value?.displayName ?? ""), m = n(() => s.value?.email ?? ""), h = n(() => s.value?.roles ?? []);
10
+ async function g(n, r) {
11
+ o = r ?? !1, o && console.debug("[currentUserInfo] initialize() called", { backendUrl: n }), o && console.debug("[currentUserInfo] Starting initialization"), u.value = n, c.value = "loading", l.value = null;
12
+ try {
13
+ let r = t(n);
14
+ await new Promise((t, n) => {
15
+ if (r.baseUrl.indexOf("localhost") != -1 || e(r.baseUrl)) return o && console.debug("[currentUserInfo] Localhost/IP detected, using dev credentials"), s.value = {
16
+ displayName: "developer",
17
+ email: "developer@hvg.hu",
18
+ roles: ["devadmin"],
19
+ id: "00000000-0000-0000-0000-000000000000"
20
+ }, c.value = "authenticated", t();
21
+ r.whoAmI.successCallback = (e) => {
22
+ o && console.debug("[currentUserInfo] whoAmI success", {
23
+ displayName: e.displayName,
24
+ email: e.email,
25
+ rolesCount: e.roles?.length ?? 0
26
+ }), s.value = e, c.value = "authenticated", t();
27
+ }, r.whoAmI.errorCallback = (e) => {
28
+ o && console.error("[currentUserInfo] whoAmI failed:", e), l.value = e.message ?? "Ismeretlen hiba történt", c.value = "error", n(Error(l.value));
29
+ }, o && console.debug("[currentUserInfo] Executing whoAmI request"), r.whoAmI.execute();
30
+ }), await new Promise((e, t) => {
31
+ r.sites.successCallback = (t) => {
32
+ o && console.debug("[currentUserInfo] sites fetch success", { sitesCount: t.length }), a = t, e();
33
+ }, r.sites.errorCallback = (e) => {
34
+ o && console.error("[currentUserInfo] sites fetch failed:", e), t(Error(e.message ?? "Ismeretlen hiba történt"));
35
+ }, o && console.debug("[currentUserInfo] Executing sites request"), r.sites.execute();
36
+ }), o && console.debug("[currentUserInfo] Initialization completed successfully");
37
+ } catch (e) {
38
+ throw o && console.error("[currentUserInfo] initialize failed:", e), c.value = "error", l.value ||= "Felhasználói adatok vagy site-ok lekérése sikertelen", e;
39
+ }
11
40
  }
12
- };
13
- function a(r, i, a) {
14
- let s = i.method ?? t.POST, c = i.operationName ?? String(s);
15
- return n(new e(r, i.url, s, o(a, c)), i.payloadType, i.routeParamsType, i.queryParamsType);
16
- }
17
- function o(e, t) {
18
- return new Map([[400, `${e} ${t} során 400-as hiba történt!`], [500, `${e} ${t} során 500-as hiba történt!`]]);
41
+ function _() {
42
+ o && console.debug("[currentUserInfo] clear() called, resetting all state"), s.value = null, c.value = "loading", l.value = null, u.value = null, a = [];
43
+ }
44
+ function v(e, t, n) {
45
+ if (o && console.debug("[currentUserInfo] hasPermission() check", {
46
+ siteId: e,
47
+ entityName: t,
48
+ accessLevel: n
49
+ }), !s.value?.roles || s.value.roles.length === 0) return o && console.debug("[currentUserInfo] hasPermission() denied: no roles"), !1;
50
+ if (s.value.roles.includes("devadmin")) return o && console.debug("[currentUserInfo] hasPermission() granted: devadmin role"), !0;
51
+ let r = n === "admin" ? ["admin"] : ["reader", "admin"];
52
+ for (let n of r) {
53
+ let r = `cms-${e}-${t}-${n}`;
54
+ if (s.value.roles.includes(r)) return o && console.debug("[currentUserInfo] hasPermission() granted: specific role", r), !0;
55
+ let i = `cms-${e}-all-${n}`;
56
+ if (s.value.roles.includes(i)) return o && console.debug("[currentUserInfo] hasPermission() granted: all-entity role", i), !0;
57
+ }
58
+ return o && console.debug("[currentUserInfo] hasPermission() denied: no matching roles"), !1;
59
+ }
60
+ function y(e, t) {
61
+ if (o && console.debug("[currentUserInfo] getMixableSitesForResource() called", {
62
+ entityName: e,
63
+ currentSiteId: t
64
+ }), !u.value) throw o && console.error("[currentUserInfo] getMixableSitesForResource called before initialize"), Error("Store nincs inicializálva. Hívd meg előbb az initialize() metódust!");
65
+ let n = a.find((e) => e.id === t);
66
+ o && console.debug("[currentUserInfo] Current site lookup", {
67
+ found: !!n,
68
+ totalSites: a.length
69
+ });
70
+ let r = [];
71
+ return a.forEach((t) => {
72
+ if (n === void 0) {
73
+ if (!v(t.id, e, "reader")) return;
74
+ r.push(t);
75
+ } else {
76
+ if (n.entities.find((n) => n.type === e && n.allowedSiteIds.includes(t.id)) === void 0 || !v(t.id, e, "reader")) return;
77
+ r.push(t);
78
+ }
79
+ }), o && console.debug("[currentUserInfo] getMixableSitesForResource() result", {
80
+ mixableCount: r.length,
81
+ mixableSiteIds: r.map((e) => e.id)
82
+ }), r;
83
+ }
84
+ function b(e, t) {
85
+ return o && console.debug("[currentUserInfo] getMixableSiteIdsForResource() called", {
86
+ entityName: e,
87
+ currentSiteId: t
88
+ }), y(e, t).map((e) => e.id);
89
+ }
90
+ return i = {
91
+ user: s,
92
+ state: c,
93
+ error: l,
94
+ isLoading: d,
95
+ isAuthenticated: f,
96
+ displayName: p,
97
+ email: m,
98
+ roles: h,
99
+ initialize: g,
100
+ clear: _,
101
+ hasPermission: v,
102
+ getMixableSitesForResource: y,
103
+ getMixableSiteIdsForResource: b
104
+ }, i;
19
105
  }
20
106
  //#endregion
21
- export { i as BackendService, r as useBackendService };
107
+ export { s as useCurrentUser };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components104.js","names":[],"sources":["../src/services/backendService.ts"],"sourcesContent":["import {\n FetchDetails,\n type HttpRequest,\n initRequest,\n Methods,\n} from '@/services/services'\n\nexport type EndpointConfig<\n Payload = unknown,\n RouteParams = unknown,\n QueryParams = unknown,\n Result = unknown,\n> = {\n url: string\n method?: Methods\n entityName?: string\n operationName?: string\n\n payloadType?: Payload\n routeParamsType?: RouteParams\n queryParamsType?: QueryParams\n resultType?: Result\n}\n\nexport type EndpointsMap = Record<\n string,\n EndpointConfig<any, any, any, any>\n>\n\nexport type EndpointRequests<E extends EndpointsMap> = {\n [Name in keyof E]: E[Name] extends EndpointConfig<infer P, infer RP, infer QP, infer R>\n ? HttpRequest<P, RP, QP, R>\n : never\n}\n\nexport type BackendServiceConfig<E extends EndpointsMap = EndpointsMap> = {\n backendUrl: string\n endpoints: E\n}\n\nexport function useBackendService<E extends EndpointsMap>(\n config: BackendServiceConfig<E>,\n) {\n return new BackendService(config)\n}\n\nexport class BackendService<E extends EndpointsMap = EndpointsMap> {\n readonly backendUrl: string\n readonly endpoints: EndpointRequests<E>\n\n constructor({ backendUrl, endpoints }: BackendServiceConfig<E>) {\n this.backendUrl = backendUrl\n\n this.endpoints = Object.fromEntries(\n Object.entries(endpoints)\n .filter(([, endpoint]) => endpoint.url)\n .map(([key, endpoint]) => [\n key,\n createRequest(\n backendUrl,\n endpoint,\n endpoint.entityName ?? key,\n ),\n ]),\n ) as EndpointRequests<E>\n }\n}\n\nfunction createRequest<\n Payload,\n RouteParams,\n QueryParams,\n Result,\n>(\n endpointBaseUrl: string,\n endpoint: EndpointConfig<Payload, RouteParams, QueryParams, Result>,\n entityName: string,\n): HttpRequest<Payload, RouteParams, QueryParams, Result> {\n const method = endpoint.method ?? Methods.POST\n const operation = endpoint.operationName ?? String(method)\n\n return initRequest<Payload, RouteParams, QueryParams, Result>(\n new FetchDetails(\n endpointBaseUrl,\n endpoint.url,\n method,\n createErrorMap(entityName, operation),\n ),\n endpoint.payloadType as Payload,\n endpoint.routeParamsType as RouteParams,\n endpoint.queryParamsType as QueryParams,\n )\n}\n\nfunction createErrorMap(entityName: string, operation: string) {\n return new Map<number, string>([\n [400, `${entityName} ${operation} során 400-as hiba történt!`],\n [500, `${entityName} ${operation} során 500-as hiba történt!`],\n ])\n}\n"],"mappings":";;AAwCA,SAAgB,EACd,GACA;CACA,OAAO,IAAI,EAAe,CAAM;AAClC;AAEA,IAAa,IAAb,MAAmE;CACjE;CACA;CAEA,YAAY,EAAE,eAAY,gBAAsC;EAG9D,AAFA,KAAK,aAAa,GAElB,KAAK,YAAY,OAAO,YACtB,OAAO,QAAQ,CAAS,EACrB,QAAQ,GAAG,OAAc,EAAS,GAAG,EACrC,KAAK,CAAC,GAAK,OAAc,CACxB,GACA,EACE,GACA,GACA,EAAS,cAAc,CACzB,CACF,CAAC,CACL;CACF;AACF;AAEA,SAAS,EAMP,GACA,GACA,GACwD;CACxD,IAAM,IAAS,EAAS,UAAU,EAAQ,MACpC,IAAY,EAAS,iBAAiB,OAAO,CAAM;CAEzD,OAAO,EACL,IAAI,EACF,GACA,EAAS,KACT,GACA,EAAe,GAAY,CAAS,CACtC,GACA,EAAS,aACT,EAAS,iBACT,EAAS,eACX;AACF;AAEA,SAAS,EAAe,GAAoB,GAAmB;CAC7D,OAAO,IAAI,IAAoB,CAC7B,CAAC,KAAK,GAAG,EAAW,GAAG,EAAU,4BAA4B,GAC7D,CAAC,KAAK,GAAG,EAAW,GAAG,EAAU,4BAA4B,CAC/D,CAAC;AACH"}
1
+ {"version":3,"file":"admins-components104.js","names":[],"sources":["../src/services/currentUserInfo.ts"],"sourcesContent":["import { ref, computed, type Ref, type ComputedRef } from 'vue'\nimport { useArticleEditorService } from '@/services/articleEditorService'\nimport type { UserInfoModel, Site } from '@/services/models'\nimport { isIpInUrl } from '@/utils/ipUtils'\n\nexport type UserState = 'loading' | 'authenticated' | 'error'\n\nexport interface CurrentUserStore {\n user: Ref<UserInfoModel | null>\n state: Ref<UserState>\n error: Ref<string | null>\n isLoading: ComputedRef<boolean>\n isAuthenticated: ComputedRef<boolean>\n displayName: ComputedRef<string>\n email: ComputedRef<string>\n roles: ComputedRef<readonly string[]>\n initialize(backendUrl: string, enableLogging?: boolean): Promise<void>\n clear(): void\n hasPermission(\n siteId: string,\n entityName: string | 'all',\n accessLevel: 'reader' | 'admin',\n ): boolean\n getMixableSitesForResource(entityName: string | 'all', currentSiteId: string | undefined): Site[]\n getMixableSiteIdsForResource(\n entityName: string | 'all',\n currentSiteId: string | undefined,\n ): string[]\n}\n\nlet storeInstance: CurrentUserStore | null = null\nlet sites = [] as Site[]\nlet loggingEnabled = false\n\nexport function useCurrentUser(): CurrentUserStore {\n if (storeInstance) {\n if (loggingEnabled) console.debug('[currentUserInfo] Returning existing store instance')\n return storeInstance\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] Creating new store instance')\n const user = ref<UserInfoModel | null>(null)\n const state = ref<UserState>('loading')\n const error = ref<string | null>(null)\n const _backendUrl = ref<string | null>(null)\n const isLoading = computed(() => state.value === 'loading')\n const isAuthenticated = computed(() => state.value === 'authenticated' && user.value !== null)\n const displayName = computed(() => user.value?.displayName ?? '')\n const email = computed(() => user.value?.email ?? '')\n const roles = computed(() => user.value?.roles ?? [])\n\n async function initialize(backendUrl: string, enableLogging?: boolean): Promise<void> {\n loggingEnabled = enableLogging ?? false\n\n if (loggingEnabled) console.debug('[currentUserInfo] initialize() called', { backendUrl })\n\n if (loggingEnabled) console.debug('[currentUserInfo] Starting initialization')\n _backendUrl.value = backendUrl\n state.value = 'loading'\n error.value = null\n\n try {\n const service = useArticleEditorService(backendUrl)\n\n await new Promise<void>((resolve, reject) => {\n if (service.baseUrl.indexOf('localhost') != -1 || isIpInUrl(service.baseUrl)) {\n if (loggingEnabled)\n console.debug('[currentUserInfo] Localhost/IP detected, using dev credentials')\n user.value = {\n displayName: 'developer',\n email: 'developer@hvg.hu',\n roles: ['devadmin'],\n id: '00000000-0000-0000-0000-000000000000',\n }\n state.value = 'authenticated'\n return resolve()\n }\n\n service.whoAmI.successCallback = (userInfo: UserInfoModel) => {\n if (loggingEnabled) {\n console.debug('[currentUserInfo] whoAmI success', {\n displayName: userInfo.displayName,\n email: userInfo.email,\n rolesCount: userInfo.roles?.length ?? 0,\n })\n }\n user.value = userInfo\n state.value = 'authenticated'\n resolve()\n }\n\n service.whoAmI.errorCallback = (err) => {\n if (loggingEnabled) console.error('[currentUserInfo] whoAmI failed:', err)\n error.value = err.message ?? 'Ismeretlen hiba történt'\n state.value = 'error'\n reject(new Error(error.value))\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] Executing whoAmI request')\n service.whoAmI.execute()\n })\n\n await new Promise<void>((resolve, reject) => {\n service.sites.successCallback = (fetchedSites) => {\n if (loggingEnabled)\n console.debug('[currentUserInfo] sites fetch success', {\n sitesCount: fetchedSites.length,\n })\n sites = fetchedSites\n resolve()\n }\n\n service.sites.errorCallback = (err) => {\n if (loggingEnabled) console.error('[currentUserInfo] sites fetch failed:', err)\n reject(new Error(err.message ?? 'Ismeretlen hiba történt'))\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] Executing sites request')\n service.sites.execute()\n })\n\n if (loggingEnabled) console.debug('[currentUserInfo] Initialization completed successfully')\n } catch (err) {\n if (loggingEnabled) console.error('[currentUserInfo] initialize failed:', err)\n state.value = 'error'\n if (!error.value) {\n error.value = 'Felhasználói adatok vagy site-ok lekérése sikertelen'\n }\n throw err\n }\n }\n\n function clear(): void {\n if (loggingEnabled) console.debug('[currentUserInfo] clear() called, resetting all state')\n user.value = null\n state.value = 'loading'\n error.value = null\n _backendUrl.value = null\n sites = []\n }\n\n function hasPermission(\n siteId: string,\n entityName: string | 'all',\n accessLevel: 'reader' | 'admin',\n ): boolean {\n if (loggingEnabled)\n console.debug('[currentUserInfo] hasPermission() check', { siteId, entityName, accessLevel })\n\n if (!user.value?.roles || user.value.roles.length === 0) {\n if (loggingEnabled) console.debug('[currentUserInfo] hasPermission() denied: no roles')\n return false\n }\n\n if (user.value.roles.includes('devadmin')) {\n if (loggingEnabled) console.debug('[currentUserInfo] hasPermission() granted: devadmin role')\n return true\n }\n\n const requiredLevels = accessLevel === 'admin' ? ['admin'] : ['reader', 'admin']\n\n for (const level of requiredLevels) {\n const specificRole = `cms-${siteId}-${entityName}-${level}`\n if (user.value.roles.includes(specificRole)) {\n if (loggingEnabled)\n console.debug('[currentUserInfo] hasPermission() granted: specific role', specificRole)\n return true\n }\n\n const allentityRole = `cms-${siteId}-all-${level}`\n if (user.value.roles.includes(allentityRole)) {\n if (loggingEnabled)\n console.debug('[currentUserInfo] hasPermission() granted: all-entity role', allentityRole)\n return true\n }\n }\n\n if (loggingEnabled) console.debug('[currentUserInfo] hasPermission() denied: no matching roles')\n return false\n }\n\n function getMixableSitesForResource(\n entityName: string | 'all',\n currentSiteId: string | undefined,\n ): Site[] {\n if (loggingEnabled)\n console.debug('[currentUserInfo] getMixableSitesForResource() called', {\n entityName,\n currentSiteId,\n })\n\n if (!_backendUrl.value) {\n if (loggingEnabled)\n console.error('[currentUserInfo] getMixableSitesForResource called before initialize')\n throw new Error('Store nincs inicializálva. Hívd meg előbb az initialize() metódust!')\n }\n\n const currentSite = sites.find((site) => site.id === currentSiteId)\n if (loggingEnabled)\n console.debug('[currentUserInfo] Current site lookup', {\n found: !!currentSite,\n totalSites: sites.length,\n })\n\n const mixableSites = [] as Site[]\n sites.forEach((site) => {\n if (currentSite === undefined) {\n // Case 1: No current site specified - only check permissions\n if (!hasPermission(site.id, entityName, 'reader')) {\n return\n }\n mixableSites.push(site)\n } else {\n // Case 2: Current site specified - check entity allowance AND permissions\n if (\n currentSite.entities.find(\n (e) => e.type === entityName && e.allowedSiteIds.includes(site.id),\n ) === undefined\n ) {\n return\n }\n\n if (!hasPermission(site.id, entityName, 'reader')) {\n return\n }\n\n mixableSites.push(site)\n }\n })\n\n if (loggingEnabled) {\n console.debug('[currentUserInfo] getMixableSitesForResource() result', {\n mixableCount: mixableSites.length,\n mixableSiteIds: mixableSites.map((s) => s.id),\n })\n }\n return mixableSites\n }\n\n function getMixableSiteIdsForResource(\n entityName: string | 'all',\n currentSiteId: string | undefined,\n ): string[] {\n if (loggingEnabled)\n console.debug('[currentUserInfo] getMixableSiteIdsForResource() called', {\n entityName,\n currentSiteId,\n })\n const mixableSites = getMixableSitesForResource(entityName, currentSiteId)\n return mixableSites.map((site) => site.id)\n }\n\n storeInstance = {\n user,\n state,\n error,\n isLoading,\n isAuthenticated,\n displayName,\n email,\n roles,\n initialize,\n clear,\n hasPermission,\n getMixableSitesForResource,\n getMixableSiteIdsForResource,\n }\n\n return storeInstance\n}\n"],"mappings":"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"}
@@ -1,8 +1,21 @@
1
- //#region node_modules/axios/lib/helpers/bind.js
2
- function e(e, t) {
3
- return function() {
4
- return e.apply(t, arguments);
5
- };
1
+ import { FetchDetails as e, Methods as t, initRequest as n } from "./admins-components102.js";
2
+ //#region src/services/backendService.ts
3
+ function r(e) {
4
+ return new i(e);
5
+ }
6
+ var i = class {
7
+ backendUrl;
8
+ endpoints;
9
+ constructor({ backendUrl: e, endpoints: t }) {
10
+ this.backendUrl = e, this.endpoints = Object.fromEntries(Object.entries(t).filter(([, e]) => e.url).map(([t, n]) => [t, a(e, n, n.entityName ?? t)]));
11
+ }
12
+ };
13
+ function a(r, i, a) {
14
+ let s = i.method ?? t.POST, c = i.operationName ?? String(s);
15
+ return n(new e(r, i.url, s, o(a, c)), i.payloadType, i.routeParamsType, i.queryParamsType);
16
+ }
17
+ function o(e, t) {
18
+ return new Map([[400, `${e} ${t} során 400-as hiba történt!`], [500, `${e} ${t} során 500-as hiba történt!`]]);
6
19
  }
7
20
  //#endregion
8
- export { e as default };
21
+ export { i as BackendService, r as useBackendService };