@evolver-fi/evolver-basics-admin-components 1.0.0 → 8.2.2-alpha.2

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 (198) hide show
  1. package/dist/EnumSelectFilter-DDWIjz5i.js +35 -0
  2. package/dist/EnumSelectFilter-DDWIjz5i.js.map +1 -0
  3. package/dist/FilterLink-OxQDWR5G.js +29 -0
  4. package/dist/FilterLink-OxQDWR5G.js.map +1 -0
  5. package/dist/Table-IciQttr3.js +79 -0
  6. package/dist/Table-IciQttr3.js.map +1 -0
  7. package/dist/TableMetadataDisplay-BM61EulC.js +49 -0
  8. package/dist/TableMetadataDisplay-BM61EulC.js.map +1 -0
  9. package/dist/TextFilter-CLOKjiSd.js +54 -0
  10. package/dist/TextFilter-CLOKjiSd.js.map +1 -0
  11. package/dist/api-CMiZYkfc.js +32 -0
  12. package/dist/api-CMiZYkfc.js.map +1 -0
  13. package/dist/breadcrumbs/index.js +2 -5
  14. package/dist/breadcrumbs-BAwnKRxL.js +32 -0
  15. package/dist/breadcrumbs-BAwnKRxL.js.map +1 -0
  16. package/dist/breadcrumbs.css +1 -0
  17. package/dist/client/index.js +330 -369
  18. package/dist/client/index.js.map +1 -1
  19. package/dist/configuration-values/index.js +2 -13
  20. package/dist/configuration-values-CjOfmPRq.js +3464 -0
  21. package/dist/configuration-values-CjOfmPRq.js.map +1 -0
  22. package/dist/control-values/index.js +2 -10
  23. package/dist/control-values-CzQOB4WJ.js +144 -0
  24. package/dist/control-values-CzQOB4WJ.js.map +1 -0
  25. package/dist/exhaustiveValues-BYWkg9M1.js +6 -0
  26. package/dist/exhaustiveValues-BYWkg9M1.js.map +1 -0
  27. package/dist/filter/index.js +4 -10
  28. package/dist/formData-BO275hRZ.js +43 -0
  29. package/dist/formData-BO275hRZ.js.map +1 -0
  30. package/dist/jwt-tokens/index.js +2 -9
  31. package/dist/jwt-tokens-DnKsHei4.js +71 -0
  32. package/dist/jwt-tokens-DnKsHei4.js.map +1 -0
  33. package/dist/main/index.js +17 -87
  34. package/dist/message-log/index.js +2 -12
  35. package/dist/message-log-BdrJtbsP.js +337 -0
  36. package/dist/message-log-BdrJtbsP.js.map +1 -0
  37. package/dist/message-sending/index.js +2 -10
  38. package/dist/message-sending-dvTw2fFm.js +181 -0
  39. package/dist/message-sending-dvTw2fFm.js.map +1 -0
  40. package/dist/message-targets/index.js +2 -15
  41. package/dist/message-targets-8EppIJde.js +406 -0
  42. package/dist/message-targets-8EppIJde.js.map +1 -0
  43. package/dist/pagination-C4QUYRMf.js +20 -0
  44. package/dist/pagination-C4QUYRMf.js.map +1 -0
  45. package/dist/scheduled-tasks/index.js +2 -16
  46. package/dist/scheduled-tasks-BtBnBrE7.js +647 -0
  47. package/dist/scheduled-tasks-BtBnBrE7.js.map +1 -0
  48. package/dist/schemas-D-8_LuND.js +2986 -0
  49. package/dist/schemas-D-8_LuND.js.map +1 -0
  50. package/dist/table/index.js +2 -6
  51. package/dist/triggerables/index.js +3 -11
  52. package/dist/triggerables-DgrIeQMi.js +51 -0
  53. package/dist/triggerables-DgrIeQMi.js.map +1 -0
  54. package/dist/types/breadcrumbs.d.ts +1 -0
  55. package/dist/types/client/index.d.ts +5 -0
  56. package/dist/types/client.d.ts +1 -0
  57. package/dist/types/common/exhaustiveValues.d.ts +5 -0
  58. package/dist/types/common/formData.d.ts +20 -0
  59. package/dist/types/common/format.d.ts +1 -0
  60. package/dist/types/common/pagination.d.ts +8 -0
  61. package/dist/types/common/types.d.ts +27 -0
  62. package/dist/types/common/validation.d.ts +5 -0
  63. package/dist/types/components/breadcrumbs/BreadCrumbs.d.ts +10 -0
  64. package/dist/types/components/breadcrumbs/index.d.ts +1 -0
  65. package/dist/types/components/filter/EnumSelectFilter.d.ts +7 -0
  66. package/dist/types/components/filter/FilterHelperTexts.d.ts +4 -0
  67. package/dist/types/components/filter/FilterLink.d.ts +2 -0
  68. package/dist/types/components/filter/TextFilter.d.ts +2 -0
  69. package/dist/types/components/filter/createEnumSelectFilter.d.ts +5 -0
  70. package/dist/types/components/filter/index.d.ts +5 -0
  71. package/dist/types/components/filter/types.d.ts +20 -0
  72. package/dist/types/components/metadata/TableMetadataDisplay.d.ts +2 -0
  73. package/dist/types/components/metadata/utils.d.ts +1 -0
  74. package/dist/types/components/table/Pagination.d.ts +7 -0
  75. package/dist/types/components/table/Table.d.ts +3 -0
  76. package/dist/types/components/table/index.d.ts +3 -0
  77. package/dist/types/components/table/types.d.ts +48 -0
  78. package/dist/types/configuration-values.d.ts +1 -0
  79. package/dist/types/control-values.d.ts +1 -0
  80. package/dist/types/filter.d.ts +1 -0
  81. package/dist/types/index.d.ts +11 -0
  82. package/dist/types/jwt-tokens.d.ts +1 -0
  83. package/dist/types/main.d.ts +1 -0
  84. package/dist/types/message-log.d.ts +1 -0
  85. package/dist/types/message-sending.d.ts +1 -0
  86. package/dist/types/message-targets.d.ts +1 -0
  87. package/dist/types/routes/configuration-values/ConfigurationValueFormRoute.d.ts +2 -0
  88. package/dist/types/routes/configuration-values/ConfigurationValuesRoute.d.ts +2 -0
  89. package/dist/types/routes/configuration-values/action.d.ts +8 -0
  90. package/dist/types/routes/configuration-values/api.d.ts +53 -0
  91. package/dist/types/routes/configuration-values/configurationValueColumns.d.ts +4 -0
  92. package/dist/types/routes/configuration-values/index.d.ts +5 -0
  93. package/dist/types/routes/configuration-values/loader.d.ts +52 -0
  94. package/dist/types/routes/control-values/ControlValuesRoute.d.ts +2 -0
  95. package/dist/types/routes/control-values/SingleControlValueRoute.d.ts +2 -0
  96. package/dist/types/routes/control-values/api.d.ts +43 -0
  97. package/dist/types/routes/control-values/controlValueColumns.d.ts +4 -0
  98. package/dist/types/routes/control-values/index.d.ts +4 -0
  99. package/dist/types/routes/control-values/loader.d.ts +43 -0
  100. package/dist/types/routes/jwt-tokens/JwtTokensRoute.d.ts +6 -0
  101. package/dist/types/routes/jwt-tokens/api.d.ts +41 -0
  102. package/dist/types/routes/jwt-tokens/index.d.ts +3 -0
  103. package/dist/types/routes/jwt-tokens/loader.d.ts +35 -0
  104. package/dist/types/routes/message-log/LogBodyLink.d.ts +6 -0
  105. package/dist/types/routes/message-log/MessageLogRoute.d.ts +2 -0
  106. package/dist/types/routes/message-log/SingleLogMessageRoute.d.ts +6 -0
  107. package/dist/types/routes/message-log/api.d.ts +88 -0
  108. package/dist/types/routes/message-log/index.d.ts +4 -0
  109. package/dist/types/routes/message-log/loader.d.ts +53 -0
  110. package/dist/types/routes/message-log/messageLogColumns.d.ts +3 -0
  111. package/dist/types/routes/message-log/types.d.ts +37 -0
  112. package/dist/types/routes/message-sending/MessageSendingRoute.d.ts +2 -0
  113. package/dist/types/routes/message-sending/SingleMessageRoute.d.ts +2 -0
  114. package/dist/types/routes/message-sending/api.d.ts +92 -0
  115. package/dist/types/routes/message-sending/index.d.ts +4 -0
  116. package/dist/types/routes/message-sending/loader.d.ts +34 -0
  117. package/dist/types/routes/message-sending/messageSendingColumns.d.ts +3 -0
  118. package/dist/types/routes/message-sending/types.d.ts +43 -0
  119. package/dist/types/routes/message-targets/MessageTargetFormRoute.d.ts +2 -0
  120. package/dist/types/routes/message-targets/MessageTargetsRoute.d.ts +2 -0
  121. package/dist/types/routes/message-targets/action.d.ts +8 -0
  122. package/dist/types/routes/message-targets/api.d.ts +12 -0
  123. package/dist/types/routes/message-targets/index.d.ts +5 -0
  124. package/dist/types/routes/message-targets/loader.d.ts +15 -0
  125. package/dist/types/routes/scheduled-tasks/ScheduledTaskFormRoute.d.ts +2 -0
  126. package/dist/types/routes/scheduled-tasks/ScheduledTasksRoute.d.ts +2 -0
  127. package/dist/types/routes/scheduled-tasks/action.d.ts +21 -0
  128. package/dist/types/routes/scheduled-tasks/api.d.ts +75 -0
  129. package/dist/types/routes/scheduled-tasks/index.d.ts +5 -0
  130. package/dist/types/routes/scheduled-tasks/loader.d.ts +57 -0
  131. package/dist/types/routes/scheduled-tasks/parseScheduledTask.d.ts +15 -0
  132. package/dist/types/routes/triggerables/TriggerablesRoute.d.ts +2 -0
  133. package/dist/types/routes/triggerables/action.d.ts +6 -0
  134. package/dist/types/routes/triggerables/api.d.ts +33 -0
  135. package/dist/types/routes/triggerables/index.d.ts +4 -0
  136. package/dist/types/routes/triggerables/loader.d.ts +3 -0
  137. package/dist/types/scheduled-tasks.d.ts +1 -0
  138. package/dist/types/table.d.ts +1 -0
  139. package/dist/types/triggerables.d.ts +1 -0
  140. package/dist/types/types/openapiTypes.d.ts +3321 -0
  141. package/package.json +12 -5
  142. package/dist/ArrowBack-Bifnzxvs.js +0 -6430
  143. package/dist/ArrowBack-Bifnzxvs.js.map +0 -1
  144. package/dist/BreadCrumbs-DMuPCevY.js +0 -19
  145. package/dist/BreadCrumbs-DMuPCevY.js.map +0 -1
  146. package/dist/BreadCrumbs.css +0 -1
  147. package/dist/EnumSelectFilter-BdGla5Yf.js +0 -36
  148. package/dist/EnumSelectFilter-BdGla5Yf.js.map +0 -1
  149. package/dist/ExpandMore-DUn2zrFA.js +0 -1644
  150. package/dist/ExpandMore-DUn2zrFA.js.map +0 -1
  151. package/dist/FilterLink-DIeFjfZX.js +0 -49
  152. package/dist/FilterLink-DIeFjfZX.js.map +0 -1
  153. package/dist/JwtTokensRoute-C74zNV7A.js +0 -2374
  154. package/dist/JwtTokensRoute-C74zNV7A.js.map +0 -1
  155. package/dist/ScheduledTasksRoute-BAetDHqN.js +0 -611
  156. package/dist/ScheduledTasksRoute-BAetDHqN.js.map +0 -1
  157. package/dist/SingleLogMessageRoute-Dl2NFfqG.js +0 -419
  158. package/dist/SingleLogMessageRoute-Dl2NFfqG.js.map +0 -1
  159. package/dist/SingleMessageRoute-fC94BR1C.js +0 -306
  160. package/dist/SingleMessageRoute-fC94BR1C.js.map +0 -1
  161. package/dist/Table-DWiRP1za.js +0 -120
  162. package/dist/Table-DWiRP1za.js.map +0 -1
  163. package/dist/TextFilter-BHWY2B7i.js +0 -67
  164. package/dist/TextFilter-BHWY2B7i.js.map +0 -1
  165. package/dist/TriggerablesRoute-DiEEX1cR.js +0 -3552
  166. package/dist/TriggerablesRoute-DiEEX1cR.js.map +0 -1
  167. package/dist/api-BD_4zyJw.js +0 -38
  168. package/dist/api-BD_4zyJw.js.map +0 -1
  169. package/dist/breadcrumbs/index.js.map +0 -1
  170. package/dist/configuration-values/index.js.map +0 -1
  171. package/dist/control-values/index.js.map +0 -1
  172. package/dist/createSvgIcon-dA_Vj2W0.js +0 -3914
  173. package/dist/createSvgIcon-dA_Vj2W0.js.map +0 -1
  174. package/dist/exhaustiveValues-Dx50G3yz.js +0 -5
  175. package/dist/exhaustiveValues-Dx50G3yz.js.map +0 -1
  176. package/dist/filter/index.js.map +0 -1
  177. package/dist/formData-BH8saYep.js +0 -65
  178. package/dist/formData-BH8saYep.js.map +0 -1
  179. package/dist/jsx-runtime-D858t2LC.js +0 -617
  180. package/dist/jsx-runtime-D858t2LC.js.map +0 -1
  181. package/dist/jwt-tokens/index.js.map +0 -1
  182. package/dist/loader-CrveWlGb.js +0 -375
  183. package/dist/loader-CrveWlGb.js.map +0 -1
  184. package/dist/loader-D-oC32OJ.js +0 -3612
  185. package/dist/loader-D-oC32OJ.js.map +0 -1
  186. package/dist/loader-rVy8Z9xH.js +0 -130
  187. package/dist/loader-rVy8Z9xH.js.map +0 -1
  188. package/dist/main/index.js.map +0 -1
  189. package/dist/message-log/index.js.map +0 -1
  190. package/dist/message-sending/index.js.map +0 -1
  191. package/dist/message-targets/index.js.map +0 -1
  192. package/dist/pagination-Dy4ansKN.js +0 -21
  193. package/dist/pagination-Dy4ansKN.js.map +0 -1
  194. package/dist/scheduled-tasks/index.js.map +0 -1
  195. package/dist/schemas-CBHIJ_eF.js +0 -3059
  196. package/dist/schemas-CBHIJ_eF.js.map +0 -1
  197. package/dist/table/index.js.map +0 -1
  198. package/dist/triggerables/index.js.map +0 -1
@@ -0,0 +1,337 @@
1
+ import { t as e } from "./TextFilter-CLOKjiSd.js";
2
+ import { t } from "./FilterLink-OxQDWR5G.js";
3
+ import { n, t as r } from "./Table-IciQttr3.js";
4
+ import { n as i, t as a } from "./pagination-C4QUYRMf.js";
5
+ import { a as o, i as s, n as c, o as l, r as u, t as d } from "./TableMetadataDisplay-BM61EulC.js";
6
+ import { Form as f, useLoaderData as p, useNavigate as m, useSearchParams as h } from "react-router";
7
+ import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
8
+ import { TableContainer as y } from "@mui/material";
9
+ import { LogMessageComponent as b } from "@evolver-fi/evolver-basics/message-log";
10
+ //#region src/routes/message-log/api.ts
11
+ var x = ({ value: e, null: t, inverted: n }) => `${n ? "!" : ""}${t ? "null" : e}`, S = (e, t, n) => {
12
+ n?.forEach((n) => {
13
+ e.append(t, x(n));
14
+ });
15
+ }, C = (e, t, n) => {
16
+ n !== void 0 && e.set(t, String(n));
17
+ }, w = (e) => {
18
+ let t = new URLSearchParams();
19
+ return S(t, "v", e.v), S(t, "srv", e.srv), S(t, "m", e.m), S(t, "p", e.p), S(t, "c", e.c), S(t, "mci", e.mci), S(t, "rqsn", e.rqsn), S(t, "rpsn", e.rpsn), C(t, "s.min", e["s.min"]), C(t, "s.max", e["s.max"]), C(t, "d.min", e["d.min"]), C(t, "d.max", e["d.max"]), C(t, "rqs.min", e["rqs.min"]), C(t, "rqs.max", e["rqs.max"]), C(t, "rps.min", e["rps.min"]), C(t, "rps.max", e["rps.max"]), C(t, "md", e.md), C(t, "page", e.page), C(t, "size", e.size), e.sort?.forEach((e) => {
20
+ t.append("sort", e);
21
+ }), t.toString();
22
+ }, T = async (e, t) => {
23
+ let n = await t.GET("/log", {
24
+ params: { query: e },
25
+ querySerializer: w
26
+ });
27
+ if ("error" in n) throw Error(`Failed to fetch logs: ${n.response.status}`);
28
+ return n.data;
29
+ }, E = async (e, t) => {
30
+ let n = await t.GET("/log/{id}", { params: { path: { id: e } } });
31
+ if ("error" in n) throw Error(`Failed to fetch log message: ${n.response.status}`);
32
+ return n.data;
33
+ }, D = (e, t) => `/log/${e}/${t}?pretty=true`, O = async (e, t, n) => {
34
+ if (t === "request") {
35
+ let t = await n.GET("/log/{id}/request", {
36
+ params: {
37
+ path: { id: e },
38
+ query: { pretty: !0 }
39
+ },
40
+ parseAs: "blob"
41
+ });
42
+ if ("error" in t) throw Error(`Failed to download log request: ${t.response.status}`);
43
+ return {
44
+ blob: t.data,
45
+ contentType: t.response.headers.get("content-type") ?? "application/octet-stream"
46
+ };
47
+ }
48
+ let r = await n.GET("/log/{id}/response", {
49
+ params: {
50
+ path: { id: e },
51
+ query: { pretty: !0 }
52
+ },
53
+ parseAs: "blob"
54
+ });
55
+ if ("error" in r) throw Error(`Failed to download log response: ${r.response.status}`);
56
+ return {
57
+ blob: r.data,
58
+ contentType: r.response.headers.get("content-type") ?? "application/octet-stream"
59
+ };
60
+ }, k = (e, t) => e.get(t)?.trim() || void 0, A = (e) => {
61
+ let t = e.replace(/\s+/g, "");
62
+ if (!t.includes("-")) {
63
+ let e = Number(t);
64
+ return Number.isNaN(e) ? {} : {
65
+ min: e,
66
+ max: e
67
+ };
68
+ }
69
+ let [n, r] = t.split("-", 2), i = n ? Number(n) : void 0, a = r ? Number(r) : void 0;
70
+ return {
71
+ min: i !== void 0 && !Number.isNaN(i) ? i : void 0,
72
+ max: a !== void 0 && !Number.isNaN(a) ? a : void 0
73
+ };
74
+ }, j = (e) => {
75
+ let t = e.split(/\s-\s/, 2);
76
+ if (t.length === 2) {
77
+ let e = t[0]?.trim(), n = t[1]?.trim();
78
+ return {
79
+ min: e || void 0,
80
+ max: n || void 0
81
+ };
82
+ }
83
+ let n = e.trim();
84
+ return n ? {
85
+ min: n,
86
+ max: n
87
+ } : {};
88
+ }, M = (e) => {
89
+ let t = e.trim(), n = t.length > 1 && t.startsWith("!"), r = n ? t.slice(1) : t;
90
+ return {
91
+ isInverted: n,
92
+ isNull: r.toLowerCase() === "null",
93
+ value: r
94
+ };
95
+ }, N = (e) => {
96
+ let { isInverted: t, isNull: n, value: r } = M(e);
97
+ return {
98
+ ...n ? { null: !0 } : { value: r },
99
+ ...t ? { inverted: !0 } : {}
100
+ };
101
+ }, P = (e) => {
102
+ let { isInverted: t, isNull: n, value: r } = M(e), i = Number(r);
103
+ if (!(!n && Number.isNaN(i))) return {
104
+ ...n ? { null: !0 } : { value: i },
105
+ ...t ? { inverted: !0 } : {}
106
+ };
107
+ }, F = (e) => e.split(",").map((e) => e.trim()).filter(Boolean), I = (e) => {
108
+ let t = F(e).map(N);
109
+ return t.length > 0 ? t : void 0;
110
+ }, L = (e) => {
111
+ let t = F(e).flatMap((e) => {
112
+ let t = P(e);
113
+ return t ? [t] : [];
114
+ });
115
+ return t.length > 0 ? t : void 0;
116
+ }, R = (e) => {
117
+ let t = {}, n = k(e, "v");
118
+ n && (t.v = I(n));
119
+ let r = k(e, "srv");
120
+ r && (t.srv = I(r));
121
+ let i = k(e, "m");
122
+ i && (t.m = I(i));
123
+ let o = k(e, "p");
124
+ o && (t.p = I(o));
125
+ let s = k(e, "c");
126
+ s && (t.c = I(s));
127
+ let c = k(e, "rqsn");
128
+ c && (t.rqsn = I(c));
129
+ let l = k(e, "rpsn");
130
+ l && (t.rpsn = I(l));
131
+ let u = k(e, "md");
132
+ u && (t.md = u);
133
+ let d = k(e, "mci");
134
+ d && (t.mci = L(d));
135
+ let f = k(e, "s");
136
+ if (f) {
137
+ let { min: e, max: n } = j(f);
138
+ e && (t["s.min"] = e), n && (t["s.max"] = n);
139
+ }
140
+ let p = k(e, "d");
141
+ if (p) {
142
+ let { min: e, max: n } = A(p);
143
+ e !== void 0 && (t["d.min"] = e), n !== void 0 && (t["d.max"] = n);
144
+ }
145
+ let m = k(e, "rqs");
146
+ if (m) {
147
+ let { min: e, max: n } = A(m);
148
+ e !== void 0 && (t["rqs.min"] = e), n !== void 0 && (t["rqs.max"] = n);
149
+ }
150
+ let h = k(e, "rps");
151
+ if (h) {
152
+ let { min: e, max: n } = A(h);
153
+ e !== void 0 && (t["rps.min"] = e), n !== void 0 && (t["rps.max"] = n);
154
+ }
155
+ let { page: g, size: _ } = a(e);
156
+ return t.page = g, t.size = _, t;
157
+ }, z = (e) => async ({ request: t }) => {
158
+ try {
159
+ return await T(R(new URL(t.url).searchParams), e);
160
+ } catch (e) {
161
+ throw console.error(e), e;
162
+ }
163
+ }, B = (e) => async ({ params: t }) => {
164
+ if (!t.id) throw Error("No message id provided");
165
+ try {
166
+ let n = Number.parseInt(t.id, 10);
167
+ if (Number.isNaN(n)) throw Error("Invalid message id provided");
168
+ return l(await E(n, e));
169
+ } catch (e) {
170
+ throw console.error(e), e;
171
+ }
172
+ }, V = ({ size: e, id: t, type: n }) => e && /* @__PURE__ */ _("a", {
173
+ href: D(t, n),
174
+ onClick: (e) => e.stopPropagation(),
175
+ children: e
176
+ }), H = [
177
+ {
178
+ key: "startTime",
179
+ title: "Start time",
180
+ CellComponent: ({ value: e }) => o(e),
181
+ minWidth: 250,
182
+ searchKey: "s",
183
+ filterHelperText: "yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss",
184
+ filterValidator: c,
185
+ FilterComponent: e
186
+ },
187
+ {
188
+ key: "durationMs",
189
+ title: "Duration, ms",
190
+ minWidth: 100,
191
+ searchKey: "d",
192
+ filterHelperText: "number - ?number",
193
+ filterValidator: u,
194
+ FilterComponent: e
195
+ },
196
+ {
197
+ key: "messageType",
198
+ title: "Type",
199
+ minWidth: 100,
200
+ searchKey: "m",
201
+ filterHelperText: "e.g. ControlValue/list",
202
+ FilterComponent: e
203
+ },
204
+ {
205
+ key: "protocol",
206
+ title: "Protocol",
207
+ minWidth: 100,
208
+ searchKey: "p",
209
+ filterHelperText: "e.g. http",
210
+ FilterComponent: e
211
+ },
212
+ {
213
+ key: "requestingSystem",
214
+ title: "Requesting System",
215
+ minWidth: 100,
216
+ searchKey: "rqsn",
217
+ FilterComponent: e
218
+ },
219
+ {
220
+ key: "respondingSystem",
221
+ title: "Responding System",
222
+ minWidth: 100,
223
+ searchKey: "rpsn",
224
+ FilterComponent: e
225
+ },
226
+ {
227
+ key: "statusCode",
228
+ title: "Status",
229
+ minWidth: 100,
230
+ searchKey: "c",
231
+ filterHelperText: "e.g. 400",
232
+ FilterComponent: e
233
+ },
234
+ {
235
+ key: "messageChainId",
236
+ title: "Message Chain ID",
237
+ CellComponent: t,
238
+ minWidth: 150,
239
+ searchKey: "mci",
240
+ filterHelperText: "e.g. 123",
241
+ filterValidator: s,
242
+ FilterComponent: e
243
+ },
244
+ {
245
+ key: "requestSize",
246
+ title: "Request size",
247
+ CellComponent: ({ value: e, row: t }) => /* @__PURE__ */ _(V, {
248
+ size: e,
249
+ id: t.id,
250
+ type: "request"
251
+ }),
252
+ minWidth: 150,
253
+ searchKey: "rqs",
254
+ filterHelperText: "number - ?number",
255
+ filterValidator: u,
256
+ FilterComponent: e
257
+ },
258
+ {
259
+ key: "responseSize",
260
+ title: "Response size",
261
+ CellComponent: ({ value: e, row: t }) => /* @__PURE__ */ _(V, {
262
+ size: e,
263
+ id: t.id,
264
+ type: "response"
265
+ }),
266
+ minWidth: 150,
267
+ searchKey: "rps",
268
+ filterHelperText: "number - ?number",
269
+ filterValidator: u,
270
+ FilterComponent: e
271
+ },
272
+ {
273
+ key: "metadata",
274
+ title: "Metadata",
275
+ CellComponent: d,
276
+ minWidth: 150,
277
+ searchKey: "md",
278
+ filterHelperText: "A=a, B=b",
279
+ FilterComponent: e
280
+ }
281
+ ], U = ({ id: e }) => e, W = (e) => ({
282
+ appVersion: e.get("v") ?? "",
283
+ messageType: e.get("m") ?? "",
284
+ protocol: e.get("p") ?? "",
285
+ startTime: e.get("s") ?? "",
286
+ durationMs: e.get("d") ?? "",
287
+ statusCode: e.get("c") ?? "",
288
+ messageChainId: e.get("mci") ?? "",
289
+ requestSize: e.get("rqs") ?? "",
290
+ responseSize: e.get("rps") ?? "",
291
+ metadata: e.get("md") ?? "",
292
+ requestingSystem: e.get("rqsn") ?? "",
293
+ respondingSystem: e.get("rpsn") ?? ""
294
+ }), G = () => {
295
+ let e = m(), [t, a] = h(), o = p();
296
+ return /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ v(f, {
297
+ method: "get",
298
+ children: [/* @__PURE__ */ _(y, {
299
+ sx: { height: "calc(100vh - 130px)" },
300
+ children: /* @__PURE__ */ _(r, {
301
+ columns: H,
302
+ rows: o.content,
303
+ getRowId: U,
304
+ onRowClick: (t) => e(`./${t.id}`, { relative: "path" }),
305
+ defaultFilter: W(t)
306
+ })
307
+ }), /* @__PURE__ */ _("input", {
308
+ type: "submit",
309
+ hidden: !0
310
+ })]
311
+ }), /* @__PURE__ */ _(n, {
312
+ page: o.number,
313
+ rowsPerPage: o.size,
314
+ total: o.totalElements,
315
+ onPageChange: (e) => {
316
+ a(i(t, e));
317
+ }
318
+ })] });
319
+ }, K = ({ client: e }) => {
320
+ let t = m();
321
+ return /* @__PURE__ */ _(b, {
322
+ message: p(),
323
+ backAction: () => t("..", { relative: "path" }),
324
+ downloadDataAction: async function(t, n) {
325
+ try {
326
+ let r = n === "response" ? "response" : "request", { blob: i, contentType: a } = await O(t, r, e), o = new Blob([i], { type: a }), s = window.URL.createObjectURL(o), c = document.createElement("a");
327
+ c.href = s, c.download = `log-${t}-${r}.txt`, document.body.appendChild(c), c.click(), document.body.removeChild(c), window.URL.revokeObjectURL(s);
328
+ } catch (e) {
329
+ console.error("Failed to download log data:", e);
330
+ }
331
+ }
332
+ });
333
+ };
334
+ //#endregion
335
+ export { O as a, D as c, B as i, G as n, E as o, z as r, T as s, K as t };
336
+
337
+ //# sourceMappingURL=message-log-BdrJtbsP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-log-BdrJtbsP.js","names":[],"sources":["../src/routes/message-log/api.ts","../src/routes/message-log/loader.ts","../src/routes/message-log/messageLogColumns.tsx","../src/routes/message-log/MessageLogRoute.tsx","../src/routes/message-log/SingleLogMessageRoute.tsx"],"sourcesContent":["import type { ApiClient } from \"../../client\";\nimport type { paths } from \"../../types/openapiTypes\";\n\ntype OpenApiFetchMessageLogsQuery = NonNullable<paths[\"/log\"][\"get\"][\"parameters\"][\"query\"]>;\n\nexport type FetchMessageLogsQuery = OpenApiFetchMessageLogsQuery;\nexport type MessageLogStringFilterValue = NonNullable<FetchMessageLogsQuery[\"v\"]>[number];\nexport type MessageLogIntFilterValue = NonNullable<FetchMessageLogsQuery[\"mci\"]>[number];\n\nconst serializeFilterValue = ({\n value,\n null: isNull,\n inverted,\n}: MessageLogStringFilterValue | MessageLogIntFilterValue): string =>\n `${inverted ? \"!\" : \"\"}${isNull ? \"null\" : value}`;\n\nconst appendFilterValues = (\n params: URLSearchParams,\n key: string,\n values: MessageLogStringFilterValue[] | MessageLogIntFilterValue[] | undefined,\n) => {\n values?.forEach((value) => {\n params.append(key, serializeFilterValue(value));\n });\n};\n\nconst appendQueryParam = (\n params: URLSearchParams,\n key: string,\n value: number | string | undefined,\n) => {\n if (value !== undefined) {\n params.set(key, String(value));\n }\n};\n\nconst serializeMessageLogsQuery = (query: FetchMessageLogsQuery): string => {\n const params = new URLSearchParams();\n\n appendFilterValues(params, \"v\", query.v);\n appendFilterValues(params, \"srv\", query.srv);\n appendFilterValues(params, \"m\", query.m);\n appendFilterValues(params, \"p\", query.p);\n appendFilterValues(params, \"c\", query.c);\n appendFilterValues(params, \"mci\", query.mci);\n appendFilterValues(params, \"rqsn\", query.rqsn);\n appendFilterValues(params, \"rpsn\", query.rpsn);\n appendQueryParam(params, \"s.min\", query[\"s.min\"]);\n appendQueryParam(params, \"s.max\", query[\"s.max\"]);\n appendQueryParam(params, \"d.min\", query[\"d.min\"]);\n appendQueryParam(params, \"d.max\", query[\"d.max\"]);\n appendQueryParam(params, \"rqs.min\", query[\"rqs.min\"]);\n appendQueryParam(params, \"rqs.max\", query[\"rqs.max\"]);\n appendQueryParam(params, \"rps.min\", query[\"rps.min\"]);\n appendQueryParam(params, \"rps.max\", query[\"rps.max\"]);\n appendQueryParam(params, \"md\", query.md);\n appendQueryParam(params, \"page\", query.page);\n appendQueryParam(params, \"size\", query.size);\n query.sort?.forEach((sort) => {\n params.append(\"sort\", sort);\n });\n\n return params.toString();\n};\n\nexport const fetchMessageLogs = async (query: FetchMessageLogsQuery, client: ApiClient) => {\n const result = await client.GET(\"/log\", {\n params: {\n query,\n },\n querySerializer: serializeMessageLogsQuery,\n });\n\n if (\"error\" in result) {\n throw new Error(`Failed to fetch logs: ${result.response.status}`);\n }\n\n return result.data;\n};\n\nexport const fetchMessageLogById = async (id: number, client: ApiClient) => {\n const result = await client.GET(\"/log/{id}\", {\n params: {\n path: { id },\n },\n });\n\n if (\"error\" in result) {\n throw new Error(`Failed to fetch log message: ${result.response.status}`);\n }\n\n return result.data;\n};\n\nexport const getLogBodyUrl = (id: number, type: \"request\" | \"response\"): string => {\n // TODO: add some apiBaceUrl with Vite env value\n return `/log/${id}/${type}?pretty=true`;\n};\n\nexport const downloadLogBody = async (\n id: number,\n type: \"request\" | \"response\",\n client: ApiClient,\n) => {\n if (type === \"request\") {\n const result = await client.GET(\"/log/{id}/request\", {\n params: {\n path: { id },\n query: { pretty: true },\n },\n parseAs: \"blob\",\n });\n\n if (\"error\" in result) {\n throw new Error(`Failed to download log request: ${result.response.status}`);\n }\n\n return {\n blob: result.data,\n contentType: result.response.headers.get(\"content-type\") ?? \"application/octet-stream\",\n };\n }\n\n const result = await client.GET(\"/log/{id}/response\", {\n params: {\n path: { id },\n query: { pretty: true },\n },\n parseAs: \"blob\",\n });\n\n if (\"error\" in result) {\n throw new Error(`Failed to download log response: ${result.response.status}`);\n }\n\n return {\n blob: result.data,\n contentType: result.response.headers.get(\"content-type\") ?? \"application/octet-stream\",\n };\n};\n","import type { LoaderFunctionArgs } from \"react-router\";\nimport type {\n FetchMessageLogsQuery,\n MessageLogIntFilterValue,\n MessageLogStringFilterValue,\n} from \"./api\";\nimport { fetchMessageLogById, fetchMessageLogs } from \"./api\";\nimport { mapMetadata } from \"../../components/metadata/utils\";\nimport type { ApiClient } from \"../../client\";\nimport { getPagingValuesFromSearchParams } from \"../../common/pagination\";\n\nconst getTrimmedParam = (params: URLSearchParams, key: string): string | undefined => {\n const value = params.get(key)?.trim();\n return value ? value : undefined;\n};\n\nconst parseNumberRange = (value: string): { min?: number; max?: number } => {\n const normalized = value.replace(/\\s+/g, \"\");\n\n if (!normalized.includes(\"-\")) {\n const exact = Number(normalized);\n return Number.isNaN(exact) ? {} : { min: exact, max: exact };\n }\n\n const [rawMin, rawMax] = normalized.split(\"-\", 2);\n const min = rawMin ? Number(rawMin) : undefined;\n const max = rawMax ? Number(rawMax) : undefined;\n\n return {\n min: min !== undefined && !Number.isNaN(min) ? min : undefined,\n max: max !== undefined && !Number.isNaN(max) ? max : undefined,\n };\n};\n\nconst parseDateRange = (value: string): { min?: string; max?: string } => {\n const splitBySpacedDash = value.split(/\\s-\\s/, 2);\n\n if (splitBySpacedDash.length === 2) {\n const min = splitBySpacedDash[0]?.trim();\n const max = splitBySpacedDash[1]?.trim();\n\n return {\n min: min || undefined,\n max: max || undefined,\n };\n }\n\n const exact = value.trim();\n return exact ? { min: exact, max: exact } : {};\n};\n\nconst parseFilterToken = (\n rawValue: string,\n): { isInverted: boolean; isNull: boolean; value: string } => {\n const trimmedValue = rawValue.trim();\n const isInverted = trimmedValue.length > 1 && trimmedValue.startsWith(\"!\");\n const value = isInverted ? trimmedValue.slice(1) : trimmedValue;\n\n return {\n isInverted,\n isNull: value.toLowerCase() === \"null\",\n value,\n };\n};\n\nconst parseStringFilterValue = (rawValue: string): MessageLogStringFilterValue => {\n const { isInverted, isNull, value } = parseFilterToken(rawValue);\n\n return {\n ...(isNull ? { null: true } : { value }),\n ...(isInverted ? { inverted: true } : {}),\n };\n};\n\nconst parseIntFilterValue = (rawValue: string): MessageLogIntFilterValue | undefined => {\n const { isInverted, isNull, value } = parseFilterToken(rawValue);\n const parsedValue = Number(value);\n\n if (!isNull && Number.isNaN(parsedValue)) {\n return undefined;\n }\n\n return {\n ...(isNull ? { null: true } : { value: parsedValue }),\n ...(isInverted ? { inverted: true } : {}),\n };\n};\n\nconst splitFilterValues = (value: string): string[] =>\n value\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean);\n\nconst parseStringFilterValues = (value: string): MessageLogStringFilterValue[] | undefined => {\n const values = splitFilterValues(value).map(parseStringFilterValue);\n return values.length > 0 ? values : undefined;\n};\n\nconst parseIntFilterValues = (value: string): MessageLogIntFilterValue[] | undefined => {\n const values = splitFilterValues(value).flatMap((filterValue) => {\n const parsedValue = parseIntFilterValue(filterValue);\n return parsedValue ? [parsedValue] : [];\n });\n\n return values.length > 0 ? values : undefined;\n};\n\nconst buildMessageLogQuery = (params: URLSearchParams): FetchMessageLogsQuery => {\n const query: FetchMessageLogsQuery = {};\n\n const v = getTrimmedParam(params, \"v\");\n if (v) query.v = parseStringFilterValues(v);\n\n const srv = getTrimmedParam(params, \"srv\");\n if (srv) query.srv = parseStringFilterValues(srv);\n\n const m = getTrimmedParam(params, \"m\");\n if (m) query.m = parseStringFilterValues(m);\n\n const p = getTrimmedParam(params, \"p\");\n if (p) query.p = parseStringFilterValues(p);\n\n const c = getTrimmedParam(params, \"c\");\n if (c) query.c = parseStringFilterValues(c);\n\n const rqsn = getTrimmedParam(params, \"rqsn\");\n if (rqsn) query.rqsn = parseStringFilterValues(rqsn);\n\n const rpsn = getTrimmedParam(params, \"rpsn\");\n if (rpsn) query.rpsn = parseStringFilterValues(rpsn);\n\n const md = getTrimmedParam(params, \"md\");\n if (md) query.md = md;\n\n const mci = getTrimmedParam(params, \"mci\");\n if (mci) query.mci = parseIntFilterValues(mci);\n\n const startTime = getTrimmedParam(params, \"s\");\n if (startTime) {\n const { min, max } = parseDateRange(startTime);\n if (min) query[\"s.min\"] = min;\n if (max) query[\"s.max\"] = max;\n }\n\n const durationMs = getTrimmedParam(params, \"d\");\n if (durationMs) {\n const { min, max } = parseNumberRange(durationMs);\n if (min !== undefined) query[\"d.min\"] = min;\n if (max !== undefined) query[\"d.max\"] = max;\n }\n\n const requestSize = getTrimmedParam(params, \"rqs\");\n if (requestSize) {\n const { min, max } = parseNumberRange(requestSize);\n if (min !== undefined) query[\"rqs.min\"] = min;\n if (max !== undefined) query[\"rqs.max\"] = max;\n }\n\n const responseSize = getTrimmedParam(params, \"rps\");\n if (responseSize) {\n const { min, max } = parseNumberRange(responseSize);\n if (min !== undefined) query[\"rps.min\"] = min;\n if (max !== undefined) query[\"rps.max\"] = max;\n }\n\n const { page, size } = getPagingValuesFromSearchParams(params);\n query.page = page;\n query.size = size;\n\n return query;\n};\n\nexport const getMessageLogLoader =\n (client: ApiClient) =>\n async ({ request }: LoaderFunctionArgs) => {\n try {\n const requestUrl = new URL(request.url);\n const filter = buildMessageLogQuery(requestUrl.searchParams);\n\n const logs = await fetchMessageLogs(filter, client);\n return logs;\n } catch (error) {\n console.error(error);\n throw error;\n }\n };\n\nexport const getSingleLogMessageLoader =\n (client: ApiClient) =>\n async ({ params }: LoaderFunctionArgs) => {\n if (!params.id) {\n throw new Error(\"No message id provided\"); // shouldn't route here without an id\n }\n try {\n const id = Number.parseInt(params.id, 10);\n\n if (Number.isNaN(id)) {\n throw new Error(\"Invalid message id provided\");\n }\n\n const message = await fetchMessageLogById(id, client);\n return mapMetadata(message);\n } catch (error) {\n console.error(error);\n throw error;\n }\n };\n","import { getLogBodyUrl } from \"./api\";\nimport { formatDateTime } from \"../../common/format\";\nimport {\n datetimeRangeValidator,\n numberRangeValidator,\n numberValidator,\n} from \"../../common/validation\";\nimport { FilterLink } from \"../../components/filter/FilterLink\";\nimport { TextFilter } from \"../../components/filter/TextFilter\";\nimport { TableMetadataDisplay } from \"../../components/metadata/TableMetadataDisplay\";\nimport type { ColumnDefinitions } from \"../../components/table/types\";\nimport type { LogFilter, LogMessage } from \"./types\";\n\n// oxlint-disable-next-line react/only-export-components\nconst LogBodyLink = ({\n size,\n id,\n type,\n}: {\n size: number;\n id: number;\n type: \"request\" | \"response\";\n}) =>\n size ? (\n <a href={getLogBodyUrl(id, type)} onClick={(e) => e.stopPropagation()}>\n {size}\n </a>\n ) : (\n size\n );\n\nexport const messageLogColumns: ColumnDefinitions<LogMessage, LogFilter> = [\n {\n key: \"startTime\",\n title: \"Start time\",\n CellComponent: ({ value }) => formatDateTime(value),\n minWidth: 250,\n searchKey: \"s\",\n filterHelperText: \"yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss\",\n filterValidator: datetimeRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"durationMs\",\n title: \"Duration, ms\",\n minWidth: 100,\n searchKey: \"d\",\n filterHelperText: \"number - ?number\",\n filterValidator: numberRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"messageType\",\n title: \"Type\",\n minWidth: 100,\n searchKey: \"m\",\n filterHelperText: \"e.g. ControlValue/list\",\n FilterComponent: TextFilter,\n },\n {\n key: \"protocol\",\n title: \"Protocol\",\n minWidth: 100,\n searchKey: \"p\",\n filterHelperText: \"e.g. http\",\n FilterComponent: TextFilter,\n },\n {\n key: \"requestingSystem\",\n title: \"Requesting System\",\n minWidth: 100,\n searchKey: \"rqsn\",\n FilterComponent: TextFilter,\n },\n {\n key: \"respondingSystem\",\n title: \"Responding System\",\n minWidth: 100,\n searchKey: \"rpsn\",\n FilterComponent: TextFilter,\n },\n {\n key: \"statusCode\",\n title: \"Status\",\n minWidth: 100,\n searchKey: \"c\",\n filterHelperText: \"e.g. 400\",\n FilterComponent: TextFilter,\n },\n {\n key: \"messageChainId\",\n title: \"Message Chain ID\",\n CellComponent: FilterLink,\n minWidth: 150,\n searchKey: \"mci\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"requestSize\",\n title: \"Request size\",\n CellComponent: ({ value, row }) => <LogBodyLink size={value} id={row.id} type=\"request\" />,\n minWidth: 150,\n searchKey: \"rqs\",\n filterHelperText: \"number - ?number\",\n filterValidator: numberRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"responseSize\",\n title: \"Response size\",\n CellComponent: ({ value, row }) => <LogBodyLink size={value} id={row.id} type=\"response\" />,\n minWidth: 150,\n searchKey: \"rps\",\n filterHelperText: \"number - ?number\",\n filterValidator: numberRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"metadata\",\n title: \"Metadata\",\n CellComponent: TableMetadataDisplay,\n minWidth: 150,\n searchKey: \"md\",\n filterHelperText: \"A=a, B=b\",\n FilterComponent: TextFilter,\n },\n];\n","import { Form, useLoaderData, useNavigate, useSearchParams } from \"react-router\";\n\nimport { TableContainer } from \"@mui/material\";\nimport { getSearchParamsWithPage } from \"../../common/pagination\";\nimport { Pagination } from \"../../components/table/Pagination\";\nimport { Table } from \"../../components/table/Table\";\nimport { messageLogColumns } from \"./messageLogColumns\";\nimport type { LogFilter, LogMessageResponse } from \"./types\";\n\nconst getRowId = ({ id }: { id: number }) => id;\n\nconst searchParamsToFilter = (params: URLSearchParams): LogFilter => ({\n appVersion: params.get(\"v\") ?? \"\",\n messageType: params.get(\"m\") ?? \"\",\n protocol: params.get(\"p\") ?? \"\",\n startTime: params.get(\"s\") ?? \"\",\n durationMs: params.get(\"d\") ?? \"\",\n statusCode: params.get(\"c\") ?? \"\",\n messageChainId: params.get(\"mci\") ?? \"\",\n requestSize: params.get(\"rqs\") ?? \"\",\n responseSize: params.get(\"rps\") ?? \"\",\n metadata: params.get(\"md\") ?? \"\",\n requestingSystem: params.get(\"rqsn\") ?? \"\",\n respondingSystem: params.get(\"rpsn\") ?? \"\",\n});\n\nconst MessageLogRoute = () => {\n const navigate = useNavigate();\n const [searchParams, setSearchParams] = useSearchParams();\n const logMessageResponse = useLoaderData() as LogMessageResponse;\n\n return (\n <>\n <Form method=\"get\">\n <TableContainer sx={{ height: \"calc(100vh - 130px)\" }}>\n <Table\n columns={messageLogColumns}\n rows={logMessageResponse.content}\n getRowId={getRowId}\n onRowClick={(row) => navigate(`./${row.id}`, { relative: \"path\" })}\n defaultFilter={searchParamsToFilter(searchParams)}\n />\n </TableContainer>\n <input type=\"submit\" hidden />\n </Form>\n <Pagination\n page={logMessageResponse.number}\n rowsPerPage={logMessageResponse.size}\n total={logMessageResponse.totalElements}\n onPageChange={(page) => {\n setSearchParams(getSearchParamsWithPage(searchParams, page));\n }}\n />\n </>\n );\n};\n\nexport default MessageLogRoute;\n","import type { LogMessage } from \"@evolver-fi/evolver-basics/message-log\";\nimport { LogMessageComponent } from \"@evolver-fi/evolver-basics/message-log\";\nimport { useLoaderData, useNavigate } from \"react-router\";\nimport { downloadLogBody } from \"./api\";\nimport type { ApiClient } from \"../../client\";\n\ntype SingleMessageRouteProps = {\n client: ApiClient;\n};\n\nconst SingleMessageRoute = ({ client }: SingleMessageRouteProps) => {\n const navigate = useNavigate();\n const message = useLoaderData() as LogMessage; // TODO: cast to <typeof [loader]> later\n\n return (\n <LogMessageComponent\n message={message}\n backAction={() => navigate(\"..\", { relative: \"path\" })}\n downloadDataAction={async function (id: number, type: string): Promise<void> {\n try {\n const safeType = type === \"response\" ? \"response\" : \"request\";\n const { blob, contentType } = await downloadLogBody(id, safeType, client);\n const typedBlob = new Blob([blob], {\n type: contentType,\n });\n const url = window.URL.createObjectURL(typedBlob);\n\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = `log-${id}-${safeType}.txt`;\n document.body.appendChild(link);\n link.click();\n\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n } catch (error) {\n console.error(\"Failed to download log data:\", error);\n }\n }}\n />\n );\n};\n\nexport default SingleMessageRoute;\n"],"mappings":"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"}
@@ -1,10 +1,2 @@
1
- import { M as a, S as g, f as t, a as M, g as o, b as d } from "../SingleMessageRoute-fC94BR1C.js";
2
- export {
3
- a as MessageSendingRoute,
4
- g as SingleMessageRoute,
5
- t as fetchMessageById,
6
- M as fetchMessages,
7
- o as getMessageListLoader,
8
- d as getSingleMessageLoader
9
- };
10
- //# sourceMappingURL=index.js.map
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../message-sending-dvTw2fFm.js";
2
+ export { n as MessageSendingRoute, a as SingleMessageRoute, e as fetchMessageById, r as fetchMessages, i as getMessageListLoader, t as getSingleMessageLoader };
@@ -0,0 +1,181 @@
1
+ import { t as e } from "./TextFilter-CLOKjiSd.js";
2
+ import { t } from "./EnumSelectFilter-DDWIjz5i.js";
3
+ import { n, t as r } from "./Table-IciQttr3.js";
4
+ import { n as i } from "./pagination-C4QUYRMf.js";
5
+ import { a, i as o, n as s, o as c, r as l, t as u } from "./TableMetadataDisplay-BM61EulC.js";
6
+ import { t as d } from "./exhaustiveValues-BYWkg9M1.js";
7
+ import { Form as f, useLoaderData as p, useNavigate as m, useSearchParams as h } from "react-router";
8
+ import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
9
+ import { TableContainer as y } from "@mui/material";
10
+ import { filterFromUrlSearchParams as b } from "@evolver-fi/evolver-basics";
11
+ import { MessageComponent as x } from "@evolver-fi/evolver-basics/messages";
12
+ //#region src/routes/message-sending/api.ts
13
+ var S = async (e, t) => {
14
+ let n = await t.GET("/message", { params: { query: e } });
15
+ if ("error" in n) throw Error(`Failed to fetch messages: ${n.response.status}`);
16
+ return n.data;
17
+ }, C = async (e, t) => {
18
+ let n = await t.GET("/message/{id}", { params: { path: { id: e } } });
19
+ if ("error" in n) throw Error(`Failed to fetch message by id: ${n.response.status}`);
20
+ return n.data;
21
+ }, w = (e) => async ({ params: t }) => {
22
+ try {
23
+ if (!t.id) throw Error("No message id provided");
24
+ let n = Number.parseInt(t.id, 10);
25
+ if (Number.isNaN(n)) throw Error("Invalid message id provided");
26
+ return await C(n, e);
27
+ } catch (e) {
28
+ throw console.error(e), e;
29
+ }
30
+ }, T = (e) => async ({ request: t }) => {
31
+ try {
32
+ return c(await S(b(new URL(t.url).searchParams, [
33
+ "s",
34
+ "mci",
35
+ "ct",
36
+ "lut",
37
+ "fc",
38
+ "mgi",
39
+ "p",
40
+ "md",
41
+ "page",
42
+ "size"
43
+ ]), e));
44
+ } catch (e) {
45
+ throw console.error(e), e;
46
+ }
47
+ }, E = (e) => (n) => /* @__PURE__ */ _(t, {
48
+ ...n,
49
+ enumValues: e
50
+ }), D = d()([
51
+ "DELAYED",
52
+ "PENDING",
53
+ "SENDING",
54
+ "SENT",
55
+ "FAILED",
56
+ "DISABLED"
57
+ ]).map((e) => ({
58
+ label: e,
59
+ value: e
60
+ })), O = [
61
+ {
62
+ key: "creationTime",
63
+ title: "Creation time",
64
+ CellComponent: ({ value: e }) => a(e),
65
+ minWidth: 250,
66
+ searchKey: "ct",
67
+ filterHelperText: "yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss",
68
+ filterValidator: s,
69
+ FilterComponent: e
70
+ },
71
+ {
72
+ key: "lastUpdatedTime",
73
+ title: "Last updated time",
74
+ CellComponent: ({ value: e }) => a(e),
75
+ minWidth: 250,
76
+ searchKey: "lut",
77
+ filterHelperText: "yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss",
78
+ filterValidator: s,
79
+ FilterComponent: e
80
+ },
81
+ {
82
+ key: "state",
83
+ title: "State",
84
+ minWidth: 130,
85
+ searchKey: "s",
86
+ filterHelperText: "e.g. SENT",
87
+ FilterComponent: E(D)
88
+ },
89
+ {
90
+ key: "messageChainId",
91
+ title: "Message Chain ID",
92
+ minWidth: 150,
93
+ searchKey: "mci",
94
+ filterHelperText: "e.g. 123",
95
+ filterValidator: o,
96
+ FilterComponent: e
97
+ },
98
+ {
99
+ key: "messageGroupId",
100
+ title: "Message Group ID",
101
+ minWidth: 150,
102
+ searchKey: "mgi",
103
+ filterHelperText: "e.g. 123",
104
+ filterValidator: o,
105
+ FilterComponent: e
106
+ },
107
+ {
108
+ key: "failCount",
109
+ title: "Fail count",
110
+ minWidth: 150,
111
+ searchKey: "fc",
112
+ filterHelperText: "number - ?number",
113
+ filterValidator: l,
114
+ FilterComponent: e
115
+ },
116
+ {
117
+ key: "priority",
118
+ title: "Priority",
119
+ minWidth: 150,
120
+ searchKey: "p",
121
+ filterHelperText: "e.g. 123",
122
+ filterValidator: o,
123
+ FilterComponent: e
124
+ },
125
+ {
126
+ key: "metadata",
127
+ title: "Metadata",
128
+ CellComponent: u,
129
+ minWidth: 150,
130
+ searchKey: "md",
131
+ filterHelperText: "A=a, B=b",
132
+ FilterComponent: e
133
+ }
134
+ ], k = ({ id: e }) => e, A = (e) => ({
135
+ state: e.get("s") ?? "",
136
+ messageChainId: e.get("mci") ?? "",
137
+ creationTime: e.get("ct") ?? "",
138
+ lastUpdatedTime: e.get("lut") ?? "",
139
+ failCount: e.get("fc") ?? "",
140
+ messageGroupId: e.get("mgi") ?? "",
141
+ priority: e.get("p") ?? "",
142
+ metadata: e.get("md") ?? ""
143
+ }), j = () => {
144
+ let e = m(), [t, a] = h(), o = p();
145
+ return /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ v(f, {
146
+ method: "get",
147
+ children: [/* @__PURE__ */ _(y, {
148
+ sx: { height: "calc(100vh - 130px)" },
149
+ children: /* @__PURE__ */ _(r, {
150
+ columns: O,
151
+ rows: o.content,
152
+ getRowId: k,
153
+ onRowClick: (t) => e(`./${t.id}`, { relative: "path" }),
154
+ defaultFilter: A(t)
155
+ })
156
+ }), /* @__PURE__ */ _("input", {
157
+ type: "submit",
158
+ hidden: !0
159
+ })]
160
+ }), /* @__PURE__ */ _(n, {
161
+ page: o.number,
162
+ rowsPerPage: o.size,
163
+ total: o.totalElements,
164
+ onPageChange: (e) => {
165
+ a(i(t, e));
166
+ }
167
+ })] });
168
+ }, M = () => {
169
+ let e = p(), t = m();
170
+ return e ? /* @__PURE__ */ _(x, {
171
+ message: e,
172
+ backAction: () => {
173
+ t(-1);
174
+ },
175
+ downloadDataAction: (e, t) => {}
176
+ }) : /* @__PURE__ */ _("div", { children: "Loading..." });
177
+ };
178
+ //#endregion
179
+ export { C as a, w as i, j as n, S as o, T as r, M as t };
180
+
181
+ //# sourceMappingURL=message-sending-dvTw2fFm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-sending-dvTw2fFm.js","names":[],"sources":["../src/routes/message-sending/api.ts","../src/routes/message-sending/loader.ts","../src/components/filter/createEnumSelectFilter.tsx","../src/routes/message-sending/types.ts","../src/routes/message-sending/messageSendingColumns.tsx","../src/routes/message-sending/MessageSendingRoute.tsx","../src/routes/message-sending/SingleMessageRoute.tsx"],"sourcesContent":["import type { ApiClient } from \"../../client\";\nimport type { paths } from \"../../types/openapiTypes\";\n\n// TODO: NonNullable or not?\nexport type MessageQuery = paths[\"/message\"][\"get\"][\"parameters\"][\"query\"];\n\nexport const fetchMessages = async (query: MessageQuery, client: ApiClient) => {\n const result = await client.GET(\"/message\", {\n params: {\n query: query,\n },\n });\n\n if (\"error\" in result) {\n throw new Error(`Failed to fetch messages: ${result.response.status}`);\n }\n\n return result.data;\n};\n\nexport const fetchMessageById = async (id: number, client: ApiClient) => {\n const result = await client.GET(\"/message/{id}\", {\n params: {\n path: { id },\n },\n });\n\n if (\"error\" in result) {\n throw new Error(`Failed to fetch message by id: ${result.response.status}`);\n }\n\n return result.data;\n};\n","import { filterFromUrlSearchParams } from \"@evolver-fi/evolver-basics\";\nimport type { MessageFilter } from \"@evolver-fi/evolver-basics/messages\";\nimport type { LoaderFunctionArgs } from \"react-router\";\nimport { mapMetadata } from \"../../components/metadata/utils\";\nimport type { MessageQuery } from \"./api\";\nimport { fetchMessageById, fetchMessages } from \"./api\";\nimport type { ApiClient } from \"../../client\";\n\nexport const getSingleMessageLoader =\n (client: ApiClient) =>\n async ({ params }: LoaderFunctionArgs) => {\n try {\n if (!params.id) {\n throw new Error(\"No message id provided\"); // shouldn't route here without an id\n }\n const id = Number.parseInt(params.id, 10);\n\n if (Number.isNaN(id)) {\n throw new Error(\"Invalid message id provided\");\n }\n\n return await fetchMessageById(id, client);\n } catch (error) {\n console.error(error);\n throw error;\n }\n };\n\nexport const getMessageListLoader =\n (client: ApiClient) =>\n async ({ request }: LoaderFunctionArgs) => {\n try {\n const requestUrl = new URL(request.url);\n const query = filterFromUrlSearchParams<MessageFilter>(\n requestUrl.searchParams,\n [\"s\", \"mci\", \"ct\", \"lut\", \"fc\", \"mgi\", \"p\", \"md\", \"page\", \"size\"], // TODO: should sort be included?\n );\n\n const data = await fetchMessages(query as MessageQuery, client); // TODO: filterFromUrlSearchParams should use MessageQuery type\n\n return mapMetadata(data);\n } catch (error) {\n console.error(error);\n throw error;\n }\n };\n","import { EnumSelectFilter } from \"./EnumSelectFilter\";\nimport type { GenericFilterProps } from \"./types\";\n\nexport const createEnumSelectFilter = (enumValues: { label: string; value: string }[]) => {\n return (props: GenericFilterProps<string>) => (\n <EnumSelectFilter {...props} enumValues={enumValues} />\n );\n};\n","import type { PagedResponse } from \"../../common/types\";\nimport { exhaustiveStringValues } from \"../../common/exhaustiveValues\";\nimport type { components } from \"../../types/openapiTypes\";\n\nexport type MessageStatus = NonNullable<components[\"schemas\"][\"MessageLite\"][\"state\"]>;\n\nexport const messageStatuses = exhaustiveStringValues<MessageStatus>()([\n \"DELAYED\",\n \"PENDING\",\n \"SENDING\",\n \"SENT\",\n \"FAILED\",\n \"DISABLED\",\n]);\n\nexport type MessageData = {\n creationTime: string;\n failCount: number;\n id: number;\n lastUpdatedTime: string;\n messageChainId: number;\n messageGroupId: string;\n messageTargetConfig: MessageTargetConfig;\n messageType: string;\n metadata: Record<string, string>;\n priority: number;\n state: MessageStatus;\n targetSystem: string;\n targetUri: string;\n};\n\nexport type MessageTargetConfigStatus = NonNullable<\n components[\"schemas\"][\"MessageTargetConfig\"][\"state\"]\n>;\n\nexport type MessageTargetConfig = {\n filters: string | null;\n id: number;\n messageType: string;\n properties: Record<string, string>;\n retryDelayMs: number;\n retryLimit: number;\n state: MessageTargetConfigStatus;\n targetSystem: string;\n throttling: string | null;\n uri: string;\n};\n\nexport type MessageFilter = {\n state: string;\n messageChainId: string;\n creationTime: string;\n lastUpdatedTime: string;\n failCount: string;\n messageGroupId: string;\n priority: string;\n metadata: string;\n};\n\nexport type MessageResponse = PagedResponse<MessageData>;\n","import { formatDateTime } from \"../../common/format\";\nimport {\n datetimeRangeValidator,\n numberRangeValidator,\n numberValidator,\n} from \"../../common/validation\";\nimport { createEnumSelectFilter } from \"../../components/filter/createEnumSelectFilter\";\nimport { TextFilter } from \"../../components/filter/TextFilter\";\nimport { TableMetadataDisplay } from \"../../components/metadata/TableMetadataDisplay\";\nimport type { ColumnDefinitions } from \"../../components/table/types\";\nimport { messageStatuses, type MessageData, type MessageFilter } from \"./types\";\n\nconst messageStatusFilterOptions = messageStatuses.map((status) => ({\n label: status,\n value: status,\n}));\n\nexport const messageSendingColumns: ColumnDefinitions<MessageData, MessageFilter> = [\n {\n key: \"creationTime\",\n title: \"Creation time\",\n CellComponent: ({ value }) => formatDateTime(value),\n minWidth: 250,\n searchKey: \"ct\",\n filterHelperText: \"yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss\",\n filterValidator: datetimeRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"lastUpdatedTime\",\n title: \"Last updated time\",\n CellComponent: ({ value }) => formatDateTime(value),\n minWidth: 250,\n searchKey: \"lut\",\n filterHelperText: \"yyyy-MM-dd HH:mm:ss - ?yyyy-MM-dd HH:mm:ss\",\n filterValidator: datetimeRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"state\",\n title: \"State\",\n minWidth: 130,\n searchKey: \"s\",\n filterHelperText: \"e.g. SENT\",\n FilterComponent: createEnumSelectFilter(messageStatusFilterOptions),\n },\n {\n key: \"messageChainId\",\n title: \"Message Chain ID\",\n minWidth: 150,\n searchKey: \"mci\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"messageGroupId\",\n title: \"Message Group ID\",\n minWidth: 150,\n searchKey: \"mgi\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"failCount\",\n title: \"Fail count\",\n minWidth: 150,\n searchKey: \"fc\",\n filterHelperText: \"number - ?number\",\n filterValidator: numberRangeValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"priority\",\n title: \"Priority\",\n minWidth: 150,\n searchKey: \"p\",\n filterHelperText: \"e.g. 123\",\n filterValidator: numberValidator,\n FilterComponent: TextFilter,\n },\n {\n key: \"metadata\",\n title: \"Metadata\",\n CellComponent: TableMetadataDisplay,\n minWidth: 150,\n searchKey: \"md\",\n filterHelperText: \"A=a, B=b\",\n FilterComponent: TextFilter,\n },\n];\n","import { TableContainer } from \"@mui/material\";\nimport { Form, useLoaderData, useNavigate, useSearchParams } from \"react-router\";\nimport { getSearchParamsWithPage } from \"../../common/pagination\";\nimport { Pagination } from \"../../components/table/Pagination\";\nimport { Table } from \"../../components/table/Table\";\nimport { messageSendingColumns } from \"./messageSendingColumns\";\nimport type { MessageFilter, MessageResponse } from \"./types\";\n\nconst getRowId = ({ id }: { id: number }) => id;\n\nconst searchParamsToFilter = (params: URLSearchParams): MessageFilter => ({\n state: params.get(\"s\") ?? \"\",\n messageChainId: params.get(\"mci\") ?? \"\",\n creationTime: params.get(\"ct\") ?? \"\",\n lastUpdatedTime: params.get(\"lut\") ?? \"\",\n failCount: params.get(\"fc\") ?? \"\",\n messageGroupId: params.get(\"mgi\") ?? \"\",\n priority: params.get(\"p\") ?? \"\",\n metadata: params.get(\"md\") ?? \"\",\n});\n\nconst MessageSendingRoute = () => {\n const navigate = useNavigate();\n const [searchParams, setSearchParams] = useSearchParams();\n const messageResponse = useLoaderData() as MessageResponse;\n\n return (\n <>\n <Form method=\"get\">\n <TableContainer sx={{ height: \"calc(100vh - 130px)\" }}>\n <Table\n columns={messageSendingColumns}\n rows={messageResponse.content}\n getRowId={getRowId}\n onRowClick={(row) => navigate(`./${row.id}`, { relative: \"path\" })}\n defaultFilter={searchParamsToFilter(searchParams)}\n />\n </TableContainer>\n <input type=\"submit\" hidden />\n </Form>\n <Pagination\n page={messageResponse.number}\n rowsPerPage={messageResponse.size}\n total={messageResponse.totalElements}\n onPageChange={(page) => {\n setSearchParams(getSearchParamsWithPage(searchParams, page));\n }}\n />\n </>\n );\n};\n\nexport default MessageSendingRoute;\n","import type { Message } from \"@evolver-fi/evolver-basics/messages\";\nimport { MessageComponent } from \"@evolver-fi/evolver-basics/messages\";\nimport { useLoaderData, useNavigate } from \"react-router\";\n\nconst SingleMessageRoute = () => {\n const message = useLoaderData() as Message; //TODO: cast to <typeof [loader]> later\n\n const navigate = useNavigate();\n\n const handleBackAction = () => {\n navigate(-1);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleDownloadDataAction = (_id: number, _type: string) => {\n // download data from /messages/:id/download\n // TODO: download not implemented in the component library\n };\n\n if (!message) {\n return <div>Loading...</div>; // TODO: handle 404, maybe in the loader?\n }\n\n // TODO: insert some messages into the backend and actually test this\n return (\n <MessageComponent\n message={message}\n backAction={handleBackAction}\n downloadDataAction={handleDownloadDataAction}\n />\n );\n};\n\nexport default SingleMessageRoute;\n"],"mappings":"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"}
@@ -1,15 +1,2 @@
1
- import { M as s, a as g, c as t, d as r, f as M, b as T, g as o, e as d, h as c, i as f, u as i } from "../loader-CrveWlGb.js";
2
- export {
3
- s as MessageTargetFormRoute,
4
- g as MessageTargetsRoute,
5
- t as createMessageTarget,
6
- r as deleteMessageTarget,
7
- M as fetchMessageTargetById,
8
- T as fetchMessageTargets,
9
- o as getInitialMessageTarget,
10
- d as getMessageTargetAction,
11
- c as getMessageTargetFormLoader,
12
- f as getMessageTargetsLoader,
13
- i as updateMessageTarget
14
- };
15
- //# sourceMappingURL=index.js.map
1
+ import { a as e, c as t, d as n, i as r, l as i, n as a, o, r as s, s as c, t as l, u } from "../message-targets-8EppIJde.js";
2
+ export { o as MessageTargetFormRoute, e as MessageTargetsRoute, c as createMessageTarget, t as deleteMessageTarget, i as fetchMessageTargetById, u as fetchMessageTargets, l as getInitialMessageTarget, r as getMessageTargetAction, a as getMessageTargetFormLoader, s as getMessageTargetsLoader, n as updateMessageTarget };